在编译某个端口时,我意识到它取决于其他1000个以上的端口,并将永久安装直到我死亡或我的磁盘已满(我的硬盘非常小)。
我中断了make install clean
。
我该如何uninstall
并clean
那些已经构build和安装的依赖关系? (至less有100多个)
在这种情况下, pkg_cutleaves
无法工作,因为主端口尚未注册。
请帮忙。
FreeBSD 9.0-RELEASE amd64
编辑:另一种方法来问这个问题:我怎么能看到所有依赖关系的一个非注册的端口,以及这些依赖关系的所有子依赖关系,独立于以前安装的端口或其[依赖关系?
下一次运行make all-depends-list
然后开始构build端口。
如果你不喜欢你在名单上看到的东西,不要再往前走了。
这个和其他的gem可以在/usr/ports/Mk/bsd.port.mk
find。 虽然不友善的阅读。
你在清理这个烂摊子方面有些轻率。
你真的有两个select,我可以想到:
选项1 – 运行上面的命令,找出你不需要的东西,然后卸载它。
这可能是最痛苦的select。
选项2 – 运行pkg_info -aR
并查找没有依赖关系的包。
确定哪些你不需要和卸载它们。
(这是一个很好的家务实践每年左右恕我直言,但它很烦人。)
就清理构build碎片而言,在违规端口目录中进行简单make clean
应该会触发清除依赖关系。 你也可以在/usr/ports
做一个make clean
,但是如果你想去那个路由,可能会更快地吹走树并用portsnap
重新提取它。
作为另一个(更脏)的选项,这是非常具体的这种情况:如果你知道你没有安装任何其他端口,因为“错误”和上次安装端口刚才你可以使用目录的创builddate/var/db/pkg
– 简单地删除在中止安装时创build数据库条目的包。
与上面的其他选项一样,你仍然需要看看你正在移除的包,以确保你没有吹走任何重要的东西,但是如果它工作的话,这应该是比其他两个选项更短的列表为你的情况。
如果您知道开始make install
的date/时间,该解决scheme非常简单:
ls -ltr /var/db/pkg
***运行一次是不够的,因为在你生成的软件包列表中,有相互依赖的软件包。
make install clean
在开始clean
之前完成所有依赖项的install
。 如果您的ports树在启动时是干净的,那么刚刚安装的依赖项就是那些在子目录中有work
子目录和.install_done*
文件的依赖项。
find /usr/ports -mindepth 3 -maxdepth 3 -type d -name work -print | while read wrkdir; do ls -1a "$wrkdir" | grep -q '^\.install_done' && dirname "$wrkdir" done
给portmaster -s
试试看。 它会为您提供删除您的系统上没有任何依赖的端口。 (如果您没有安装它,请先从ports-mgmt / portmaster安装它。)