私は独自のPortageプロファイルを作成しています。
私のプロファイルを正常に追加しました。次のコマンドを実行すると、プロファイルが表示されます。
eselect profile list
にアイテムを追加しました/usr/portage/profiles
。設定ファイルはディレクトリモードに属します。
architecture/profile_name/version/{stable, dev}/
このオプションを変更するとどうなりますか?これの目的は何ですか?
答え1
まず最初に読んでくださいマニュアル:AMD64/Portage/Document部分。
プロフィールを追加するのは簡単な作業ではないことを理解してください。 Portage設定ファイルは3つの原則に従います。
- 変数/文字列拡張 - シェルから提供
- 変数の継承/階層
- ロゴの使用
要約:要約にスキップ
ほとんどの読者は文字列拡張が何であるかを知っているので、これをスキップして項目2から始めます。遺産適切な作成階層データベースモデル、ディレクトリにテキストファイルとして保存されます/usr/portage/profiles/
。
覚えておくべきことがいくつかあります。
- すべての設定ファイルは標準のPortage動作に従います。
/usr/portage/profiles
新しい設定ファイルを作成していない限り、設定ファイルを手動で編集しないでください。使用中のプロファイルをオーバーライドするすべてのカスタマイズ/etc/portage
は、ツリーが同期されるたびに削除されます。- すべてのファイルには、ファイルの目的と各エントリの存在理由を示す標準のLinuxスタイルのコメントが含まれています。
- すべてのプロファイルは、デフォルトプロファイルからプロジェクトを継承します。 (原則2)
Gentooはローリング配布なので、各ファイルにはコミットヘッダーが含まれています。
# Copyright 1999-2014 Gentoo Foundation. # Distributed under the terms of the GNU General Public License, v2 # $Header: /var/cvsroot/gentoo-x86/profiles/base/packages,v 1.67 2014/11/02 18:17:04 vapier Exp $ # Gentoo Base Profile # NOTE: THIS IS THE BASE PROFILE FOR *ANY* GENTOO BASED OPERATING SYSTEM. # NO MODIFICATIONS MAY BE MADE TO THIS FILE WITHOUT PRIOR DISCUSSION. IF # YOU ARE CREATING A NEW PROFILE, YOU SIMPLY NEED TO INHERIT THIS BASE # PROFILE IN YOUR PROFILE DIRECTORY'S "parent" FILE. # OK, you're staring at this file and you have no idea what these stars are # for. Here's the scoop. An initial "*" marks a package that is part of # the official BASE system profile. If there is a "*" then `emerge system` # will use the line in its calculations of what should be installed for the # base profile. Lines without a "*" prefix will be ignored for profile # system calculations. # Please note that this file is rarely used as a package inclusion mask # file, because it affects EVERY SINGLE gentoo profile. As can be seen, # we've limited the inclusion mask to a version of portage which supports # cascaded profiles, but apart from that, there should be no version # specific information in here. This file serves as a high level description # of the minimum set of packages needed for any Gentoo based system. *>=sys-apps/baselayout-2 *app-arch/bzip2 *app-arch/gzip *app-arch/tar *app-arch/xz-utils *app-shells/bash #*dev-lang/perl #*dev-lang/python *net-misc/iputils *net-misc/rsync *net-misc/wget *sys-apps/coreutils #*sys-apps/debianutils *sys-apps/diffutils *sys-apps/file *sys-apps/findutils *sys-apps/gawk *sys-apps/grep *sys-apps/kbd # temporary bugfix for #398295 *sys-apps/less # stopgap solution for functions.sh #373219 and #504116 *sys-apps/openrc #*>=sys-apps/portage-2.0.51.22 *sys-process/procps *sys-process/psmisc *sys-apps/sed *sys-apps/which #*sys-devel/autoconf #*sys-devel/automake *sys-devel/binutils #*sys-devel/bison #*sys-devel/flex *sys-devel/gcc *sys-devel/gnuconfig #*sys-devel/libtool #*sys-devel/m4 *sys-devel/make *>=sys-devel/patch-2.6.1 *sys-fs/e2fsprogs *virtual/dev-manager *virtual/editor *virtual/libc *virtual/man *virtual/modutils *virtual/os-headers *virtual/package-manager *virtual/pager *virtual/service-manager *virtual/shadow *virtual/ssh
基本設定ファイルから始めて、次の内容を読みます。
新しいプロファイルを作成するには、プロファイルディレクトリの「親」ファイルからこのデフォルトプロファイルを継承するだけです。
たとえば、amd64
親ファイルに移動して次のことを確認します。
../base
../../features/multilib/lib32
さて、1つのプロファイルが複数のプロファイルから継承される可能性があります。それではもう少し詳しく見てみましょう../../features/multilib/lib32
。後ろに/usr/portage/profiles
、私たちはディレクトリを見ますfeatures
。これはamd64
元のプロファイルの2つのディレクトリでもあります。これは..
親ディレクトリを表すことを忘れないでください。構成ファイルlib32
ディレクトリで、次をmultilib
探します。
- コンテンツを含む他の親ファイル
..
- eapiファイル
- 1つの
make.defaults
文書
親ファイルは、multilib
USEフラグの継承をすぐに開始するディレクトリに私たちを置きます。 eapiファイルには5が含まれており、これはサポートされているPortageバージョンが必要であることを意味します。API 5が表示されます、~の一部パッケージマネージャの仕様。 EAPI 5が必要であることに注意してください。 EAPI 5が必要だと教えてください。Portageバージョン> = 2.1.11.19。 make.defaults ファイルを見ると、次のようになります。
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/profiles/features/multilib/lib32/make.defaults,v 1.2 2011/03/21 04:39:31 vapier Exp $
# Let baselayout create the lib symlink.
SYMLINK_LIB="yes"
# 32-bit LIBDIR
LIBDIR_ppc="lib32"
LIBDIR_x86="lib32"
LIBDIR_x86_fbsd="lib32"
LIBDIR_sparc32="lib32"
LIBDIR_s390="lib32"
まあ、ドキュメントでは原則1を使用してライブラリのインストールとメンテナンスとアーキテクチャ固有の違いを管理しているようです/lib32
。そのファイルに戻ると、次のことがわかります。/lib64
parent
multilib
- 親ファイルがない場合は、正しい場所にUSEフラグを継承する必要があります。
- もう一方には
eapi
まだ5が含まれています。 - その他の
make.defaults
ファイル - 1つの
.force
文書 .mask
2ファイル# Copyright 1999-2013 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/profiles/features/multilib/make.defaults,v 1.12 2014/03/27 01:55:29 vapier Exp $ # Jorge Manuel B. S. Vicetto <[email protected]> (16 Nov 2011) # Rename STAGE1_USE to BOOTSTRAP_USE and stack it to the parent value # This is so we build with multilib from the start BOOTSTRAP_USE="${BOOTSTRAP_USE} multilib" # Default USE=multilib to on. This rarely impact packages as they should be # using the multilib eclass anyways. #435094 USE="multilib" # FEATURES="multilib-strict" specific settings. MULTILIB_STRICT_DIRS="/lib32 /lib /usr/lib32 /usr/lib /usr/kde/*/lib32 /usr/kde/*/lib /usr/qt/*/lib32 /usr/qt/*/lib /usr/X11R6/lib32 /usr/X11R6/lib" MULTILIB_STRICT_DENY="64-bit.*shared object" MULTILIB_STRICT_EXEMPT="(perl5|gcc|gcc-lib|binutils|eclipse-3|debug|portage|udev|systemd|clang|python-exec)" # 64-bit LIBDIR LIBDIR_amd64="lib64" LIBDIR_amd64_fbsd="lib64" LIBDIR_arm64="lib64" LIBDIR_n64="lib64" # MIPS n64 LIBDIR_ppc64="lib64" LIBDIR_s390x="lib64" LIBDIR_sparc64="lib64" # 32-bit LIBDIR LIBDIR_arm="lib" LIBDIR_x86="lib" LIBDIR_x86_fbsd="lib" LIBDIR_o32="lib" # MIPS o32 LIBDIR_ppc="lib" LIBDIR_s390="lib" LIBDIR_sparc32="lib" # Somewhere in-between! LIBDIR_x32="libx32" # x86-64 x32 LIBDIR_n32="lib32" # MIPS n32
その他の変数の設定と拡張(原則1).force
ファイルでは、次のように検索します。
# Copyright 2004-2014 Gentoo Foundation.
# Distributed under the terms of the GNU General Public License, v2
# $Header: /var/cvsroot/gentoo-x86/profiles/features/multilib/package.use.force,v 1.1 2014/03/21 18:57:15 vapier Exp $
# These packages must have multilib turned on in order to work sanely.
sys-apps/sandbox multilib
sys-devel/gcc multilib
sys-libs/glibc multilib
これは言葉になります。multilib
構成ファイルには、他のすべてを構築するためにmultilibシンボルなどを含む3つのパッケージが必要です。この場合はmultilib
USEフラグです(原則3)。つまり、このリストのUSEフラグとパッケージは強制的にこのファイルの設定を使用します。必須設定は括弧内のUSEフラグです。
これらの.mask
ファイルは同じ方法で動作します。簡潔さのためにここに投稿しません。その後、デフォルトの設定ファイルに戻り、files .force
、make.defaults
files、および.use
ファイルのUSEフラグを継承します。
仕上げる
Arch 構成ファイルから設定を継承し、Arch 構成ファイルはデフォルト構成ファイルから設定を継承します。注文するには、以下のリストをご覧ください。
- Make.defaultsの設定、
.force
選択されたArchのUSEフラグとファイル。.use
- Make.defaults の設定、
.force
基本設定ファイルの USE フラグ、ファイル。.use
.force
Make.defaultsの設定、USEフラグ、およびファイルにリストされている他の設定ファイルのファイル。.use
parent
- フラグの設定と使用
/etc/portage/make.conf
これらすべての設定が実際に機能していることを確認するには、次の手順を実行します。
emerge --info
これにより、各ファイルのほとんどの変数とその値が拡張されます。