你可以有选择地更新特定的类别/软件包并且忽略其他类别/软件包。我们通过让emerge --sync在执行rsync的时候排除个别类别/软件包来实现这个功能。
你需要在/etc/make.conf中赋予--exclude-from变量一个文件名,该文件应包含你想要排除的软件包。
代码 1.1: 在/etc/make.conf中指定包含排除软件包条目的文件 |
PORTAGE_RSYNC_EXTRA_OPTS="--exclude-from=/etc/portage/rsync_excludes" |
代码 1.2: 在/etc/portage/rsync_excludes中设定排除所有游戏 |
games-*/* |
然而要注意的是这可能导致依赖性问题,因为新的、允许安装的软件包可能依赖于那些新的、但被排除的软件包。
可以让你的Portage使用官方Portage树里面没有的ebuild。创建一个新的目录(比如/usr/local/portage)用以存放第三方ebuild。请在新目录中使用跟官方Portage树一样的目录结构!
然后在/etc/make.conf中定义PORTDIR_OVERLAY变量,使它指向刚才创建的目录。现在,每当你用到Portage的时候,这些ebuilds也会被同时计算在内,并且当你下次运行emerge --sync时,不会删除/覆盖这些ebuild。
对于开发多个Overlay的许多高级用户而言,他们会在更新Portage树之前测试软件包或是想使用来源广泛的非官方ebuild。app-portage/gentoolkit-dev软件包提供了gensync工具,帮助你的overlay仓库时时都处于最新的状态。
可以用gensync一次更新所有的仓库,也可以选择更新其中的几个。每个仓库会有一个.syncsource文件于/etc/gensync/配置目录下,其内容包含仓库的存放位置、名字、ID等。
假设你有两个额外的仓库,分别名为java(存放开发中的java ebuild)和entapps(存放在家中为你给公司开发的应用程序)。那么可以通过以下命令来更新这些仓库:
代码 2.1: 使用gensync更新仓库 |
# gensync java entapps
|
尽管Portage已经提供了某些软件,但是某些情况下你还是想自己配置、安装和维护这些软件,而不是希望Portage为你自动完成这些过程。典型的例子是内核源码和nvidia驱动程序。你可以配置一下Portage让它知道某个软件包已经通过手动安装到系统中了。这个过程叫做注入”,Portage是通过/etc/portage/profile/package.provided文件来实现这个功能的。
举个例子,如果你想告诉Portage已经手动安装了gentoo-sources-2.6.11.6,那么把下面一行添加到/etc/portage/profile/package.provided文件里:
代码 3.1: package.provided范例 |
sys-kernel/gentoo-sources-2.6.11.6 |
本文档的内容遵循知识共享-署名-相同方式共享许可协议