나는 나만의 포티지 프로필을 만드는 중입니다.
내 프로필을 성공적으로 추가했으며 다음 명령을 실행하면 프로필이 표시됩니다.
eselect profile list
에 항목을 추가했습니다 /usr/portage/profiles
. 구성 파일은 디렉터리 모드에 속합니다.
architecture/profile_name/version/{stable, dev}/
이 옵션을 변경하면 어떻게 되나요? 이것의 목적은 무엇입니까?
답변1
먼저 먼저 읽어보세요매뉴얼: AMD64/포티지/문서부분.
프로필을 추가하는 것은 간단한 작업이 아니라는 점을 이해하시기 바랍니다. 포티지 구성 파일은 3가지 원칙을 따릅니다:
- 변수/문자열 확장 - 쉘에서 제공
- 변수 상속/계층
- 로고 사용
요약: 요약으로 건너뛰기
대부분의 독자는 문자열 확장이 무엇인지 알고 있으므로 이를 건너뛰고 항목 2부터 시작하겠습니다.유산적절한 생성계층적 데이터베이스 모델, 디렉토리에 텍스트 파일로 저장됩니다 /usr/portage/profiles/
.
기억해야 할 몇 가지 사항이 있습니다.
- 모든 구성 파일은 표준 포티지 동작을 따릅니다.
/usr/portage/profiles
새 구성 파일을 생성하는 경우가 아니면 구성 파일을 수동으로 편집해서는 안 됩니다. 사용 중인 프로필을 재정의하는 모든 사용자/etc/portage
정의는 트리가 동기화될 때마다 삭제됩니다.- 모든 파일에는 파일의 목적과 각 항목의 존재 이유를 나타내는 표준 Linux 스타일 주석이 포함되어 있습니다.
- 모든 프로필은 기본 프로필에서 프로젝트를 상속합니다. (원칙 2)
젠투는 롤링 배포이므로 각 파일에는 커밋 헤더가 포함됩니다.
# 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
글쎄요, 하나의 프로필이 여러 프로필에서 상속될 수 있는 것 같습니다. 그럼 조금 더 자세히 살펴보겠습니다 ../../features/multilib/lib32
. 뒤로 /usr/portage/profiles
, 우리는 디렉토리를 봅니다 features
. 이는 amd64
원래 프로필의 두 디렉터리 이기도 합니다 . 이는 ..
상위 디렉토리를 나타냄을 기억하세요. 구성 파일 lib32
디렉터리에서 다음을 multilib
찾습니다.
- 내용이 있는 다른 상위 파일
..
- eapi 파일
- 하나의
make.defaults
문서
상위 파일은 multilib
USE 플래그 상속을 즉시 시작할 디렉터리에 우리를 넣습니다. eapi 파일에는 5가 포함되어 있으며 이는 지원되는 포티지 버전이 필요하다는 의미입니다.API 5가 나타납니다, ~의 일부패키지 관리자 사양. EAPI 5가 필요하다는 사실을 알아두세요. EAPI 5가 필요하다고 알려주세요.포티지 버전 >= 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
파일 - 하나의
.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
그러면 각 파일의 대부분의 변수와 해당 값이 확장됩니다.