卸载最后n个端口/软件包

在编译某个端口时,我意识到它取决于其他1000个以上的端口,并将永久安装直到我死亡或我的磁盘已满(我的硬盘非常小)。

我中断了make install clean

我该如何uninstallclean那些已经构build和安装的依赖关系? (至less有100多个)

在这种情况下, pkg_cutleaves无法工作,因为主端口尚未注册。

请帮忙。

FreeBSD 9.0-RELEASE amd64

编辑:另一种方法来问这个问题:我怎么能看到所有依赖关系的一个非注册的端口,以及这些依赖关系的所有子依赖关系,独立于以前安装的端口或其[依赖关系?

下一次运行make all-depends-list 然后开始构build端口。
如果你不喜欢你在名单上看到的东西,不要再往前走了。
这个和其他的gem可以在/usr/ports/Mk/bsd.port.mkfind。 虽然不友善的阅读。

你在清理这个烂摊子方面有些轻率。
你真的有两个select,我可以想到:

  • 选项1 – 运行上面的命令,找出你不需要的东西,然后卸载它。
    这可能是最痛苦的select。

  • 选项2 – 运行pkg_info -aR并查找没有依赖关系的包。
    确定哪些你不需要和卸载它们。
    (这是一个很好的家务实践每年左右恕我直言,但它很烦人。)

就清理构build碎片而言,在违规端口目录中进行简单make clean应该会触发清除依赖关系。 你也可以在/usr/ports做一个make clean ,但是如果你想去那个路由,可能会更快地吹走树并用portsnap重新提取它。


作为另一个(更脏)的选项,这是非常具体的这种情况:如果你知道你没有安装任何其他端口,因为“错误”和上次安装端口刚才你可以使用目录的创builddate/var/db/pkg – 简单地删除在中止安装时创build数据库条目的包。

与上面的其他选项一样,你仍然需要看看你正在移除的包,以确保你没有吹走任何重要的东西,但是如果它工作的话,这应该是比其他两个选项更短的列表为你的情况。

如果您知道开始make install的date/时间,该解决scheme非常简单:

  • 获取所有已安装软件包的列表,并按修改datesorting: ls -ltr /var/db/pkg
  • 将结果复制到您喜欢的文本编辑器
  • 删除包含你需要保留的行
  • 删除除文件名以外的所有列
  • 在每个文件名之前添加pkg_delete
  • 将结果复制到您的SSH控制台多次***直到选定的软件包将被删除。

***运行一次是不够的,因为在你生成的软件包列表中,有相互依赖的软件包。

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安装它。)