屏蔽不想安装的软件包
Gentoo 的优越性在于可以让用户随心所欲且方便地对系统进行定制,但是有时候也会碰到某些我们可能一生都用不到的软件包会被其它软件包自动依赖安装,这让我很不痛快。譬如我的桌面环境是 Gnome,安装 Gnome 时,gnome-games、gedit、totem 之类的软件包是“必选”的,但是我根本就不需要它们。很长一段时间我拿这些必选的软件包没有办法,因为即使一时可以将它们删掉,但是系统一升级,它们又回来了。为了彻底的干掉它们,我在网上逡巡了好久,最后发现利用 package.provided 与 rsync_excludes 配置文件可以很 Easy 地解决这个问题。下面以彻底卸载 gnome-games 为例,讲一下做法。我对 Gentoo 很喜欢,但并不很熟悉,也可能有更好的我所不知的解决方法,恳请路人指点一下。
1 查看哪些软件包对欲卸载的软件包有所依赖
使用 gentoolkit 软件包提供的 equery 命令可以查看已安装包的信息。要查看 gnome-games 被哪些软件包依赖,可使用如下命令:
$ equery d gnome-games
[ Searching for packages depending on gnome-games... ]
gnome-base/gnome-2.20.3 (>=gnome-extra/gnome-games-2.20.2)
输出信息显示 gnome-2.20.3 依赖 gnome-games,这里显示的 gnome 软件包只是一个虚拟的概念,表示 gnome 桌面软件包的一个总类。对于 equery 命令输出的信息,只要所查询的软件包没有被某些具体的而且对你确实有用的软件包所依赖,就可以放心地删除:
$ sudo emerge -C gnome-games
2 欺骗 Gentoo
在删除 gnome-games 软件包之后,需要欺骗一下 Gentoo,告诉它你已经安装了最新版本的 gnome-games。做法是打开 /etc/portage/profile/package.provided 文件,如果没有该文件,可以自行创建。在 package.provided 文件中填写如下信息:
gnome-extra/gnome-games-2.20.3
这样就相当于告诉了 Gentoo:“我已经安装了最新版本的 gnome-games”。一定要保证在 package.provided 文件中出现的软件包是你当前系统中的最新版本。
3 阻断对所删除的软件包的更新
下一步工作就是要阻断 gnome-games 的 portage 树的同步,让你的系统的 portage 树永远都只存在着 gnome-games-2.20.3 的版本信息,这样可以防止因为gnome的更新会依赖安装大于 2.20.3 版本的 gnome-games。
打开 /etc/portage/rsync_excludes 文件,如果没有该文件,可以自行创建。在 rsync_excludes 文件中添加如下信息:
gnome-extra/gnome-games
最后还需要在 /etc/make.conf 文件中添加 rsync_excludes 文件的位置:
PORTAGE_RSYNC_EXTRA_OPTS="--exclude-from=/etc/portage/rsync_excludes"
这样在同步 Gentoo Portage 树之时,可以读取 rsync_excludes 文件中的软件包信息,对相应的 portage 分枝停止同步了。
注意事项
这种方法只适应那些比较独立的软件包卸载,也就是说要确定自己不需要该软件包,而且删除该软件包对你的系统运行无影响。
2008年3月10日 13:03
在 package.provided 里面用 > 符号可行不?
2008年3月11日 22:07 不行。