directory.py 文件源码

python
阅读 23 收藏 0 点赞 0 评论 0

项目:solaris-ips 作者: oracle 项目源码 文件源码
def remove(self, pkgplan):
                path = self.get_installed_path(pkgplan.image.get_root())
                try:
                        os.rmdir(path)
                except OSError as e:
                        if e.errno == errno.ENOENT:
                                pass
                        elif e.errno in (errno.EEXIST, errno.ENOTEMPTY):
                                # Cannot remove directory since it's
                                # not empty.
                                pkgplan.salvage(path)
                        elif e.errno == errno.ENOTDIR:
                                # Either the user or another package has changed
                                # this directory into a link or file.  Salvage
                                # what's there and drive on.
                                pkgplan.salvage(path)
                        elif e.errno == errno.EBUSY and os.path.ismount(path):
                                # User has replaced directory with mountpoint,
                                # or a package has been poorly implemented.
                                if not self.attrs.get("implicit"):
                                        err_txt = _("Unable to remove {0}; it is "
                                            "in use as a mountpoint. To "
                                            "continue, please unmount the "
                                            "filesystem at the target "
                                            "location and try again.").format(
                                            path)
                                        raise apx.ActionExecutionError(self,
                                            details=err_txt, error=e,
                                            fmri=pkgplan.origin_fmri) 
                        elif e.errno == errno.EBUSY:
                                # os.path.ismount() is broken for lofs
                                # filesystems, so give a more generic
                                # error.
                                if not self.attrs.get("implicit"):
                                        err_txt = _("Unable to remove {0}; it "
                                            "is in use by the system, another "
                                            "process, or as a "
                                            "mountpoint.").format(path)
                                        raise apx.ActionExecutionError(self,
                                            details=err_txt, error=e,
                                            fmri=pkgplan.origin_fmri)
                        elif e.errno != errno.EACCES: # this happens on Windows
                                raise
评论列表


问题


面经


文章

微信
公众号

扫码关注公众号