手册:IA64/使用Portage/定制Portage树
使用 Gentoo 存储库的子集
不含包和类别
可以有选择地更新某些类别/包而忽略其他类别/包。这可以通过在 emerge --sync 步骤中使用 rsync 排除类别/包来实现。
为了使此方法起作用,必须禁用清单验证,这会降低存储库的安全性。要禁用验证,可以在 sys-apps/portage 上禁用 rsync-verify USE 标志或在 Gentoo 存储库的 repos.conf 条目中设置 sync-rsync-verify-metamanifest=no。
在 /etc/portage/make.conf 的 PORTAGE_RSYNC_EXTRA_OPTS 变量中定义包含排除模式的文件的名称:
PORTAGE_RSYNC_EXTRA_OPTS="--exclude-from=/etc/portage/rsync_excludes"
games-*/*
但是请注意,这可能会导致依赖性问题,因为新的、允许的包可能依赖于新的但排除在外的包。
添加非官方 ebuild
定义自定义 ebuild 存储库
Manual creation
It is possible to instruct Portage to use ebuilds that are not officially available through the Gentoo ebuild repository. In order to do so, create a new directory (for instance /var/db/repos/localrepo) in which to store the 3rd party ebuilds. This new repository will require the same directory structure as the official Gentoo repository.
root #
mkdir -p /var/db/repos/localrepo/{metadata,profiles}
root #
chown -R portage:portage /var/db/repos/localrepo
Next, pick a sensible name for the repository. The next example uses "localrepo" as the name:
root #
echo 'localrepo' > /var/db/repos/localrepo/profiles/repo_name
Then define the EAPI used for the profiles within the repository:
root #
echo '8' > /var/db/repos/localrepo/profiles/eapi
Tell Portage that the repository master is the main Gentoo ebuild repo, and that the local repository should not be automatically synchronized (as it is not backed by an external source such as an rsync server, git mirror, or other repository type):
masters = gentoo
auto-sync = false
thin-manifests = true
sign-manifests = false
Finally, enable the repository on the local system by creating a repository configuration file inside /etc/portage/repos.conf. This will inform Portage of where the custom local repository can be found:
[localrepo]
location = /var/db/repos/localrepo
Optional: Creating a repo using eselect repository
Alternatively, a custom ebuild repository can be quickly created using the eselect repository module (from app-eselect/eselect-repository). In the following example, substitute localrepo
with a name of choice:
root #
eselect repository create localrepo
Adding localrepo to /etc/portage/repos.conf/eselect-repo.conf ... Repository <ebuild_repository_name> created and added
A bare repository named "localrepo" will be made available at /var/db/repos/localrepo.
使用多个overlay
For those desiring to develop several ebuild repos, test packages before they hit the Gentoo repository, or who want to use unofficial ebuilds from various sources, the app-eselect/eselect-repository package also provides tooling to aid in keeping repositories up to date. See also eselect repository article.
eselect 存储库
例如,要启用 hardened-development overlay:
root #
eselect repository enable hardened-development
root #
emerge --sync
非 Portage 维护的软件
使用自维护的 Portage 软件
Sometimes users want to configure, install, and maintain software individually without having Portage automate the process, even though Portage can provide the software titles. Known cases are packages like kernel sources and Nvidia drivers. It is possible to configure Portage so it knows that a certain package is manually installed on the system (and thus take this information into account when calculating dependencies). This process is called injecting and is supported by Portage through the /etc/portage/profile/package.provided file.
For instance, to inform Portage about gentoo-sources-6.6.21 which has been installed manually, add the following line to /etc/portage/profile/package.provided:
sys-kernel/gentoo-sources-6.6.21
这是一个使用没有
=
运算符的描述版本的文件。