내가 관리하지 않는(그리고 루트 액세스 권한도 없는) Gentoo Linux 상자에서 패키지 컴파일 옵션을 어떻게 찾을 수 있나요?
(나는 이전에 Gentoo를 사용해 본 적이 없지만 Debian 기반 배포판에 대한 실무 지식이 풍부하다는 점에 유의하십시오.)
답변1
/etc/make.conf
패키지가 설치된 이후에 정의된 현재 USE 플래그 및 기타 구성이 변경되었을 수 있습니다 . 구성 및 컴파일 옵션을 확인하는 보다 안정적인 방법은 var/db/pkg
.
Apache-2.2.22의 예:
$ cat /var/db/pkg/www-servers/apache-2.2.22-r1/CFLAGS
-mtune=native -O2 -pipe -g
답변2
make.conf
패키지가 어떻게 컴파일되었는지 확인하는 것은 전혀 신뢰할 수 없다는 점에 유의하는 것이 중요합니다 . 사실 이것도 그 중 하나일 뿐이에요다시 채우다프로필의 전체 목록입니다.
에서 man make.conf
:
USE_ORDER = "env:pkg:conf:defaults:pkginternal:repo:env.d"
Determines the precedence of layers in the incremental stacking of the USE
variable. Precedence decreases from left to right such that env overrides
pkg, pkg overrides conf, and so forth.
따라서 우선순위는 다음과 같이 처리됩니다.
- Emerge를 호출할 때의 쉘 환경
- /etc/portage/package.use의 패키지별 USE 설정
- 구성 파일 만들기
- 선택한 프로필의 기본값
.ebuild
패키지 파일에 설정된 기본값- 기본값 할당
- /etc/env.d에 정의된 설정
따라서 기본적으로 를 넣지 않고도 USE 플래그를 설정할 수 있습니다 make.conf
. CFLAGS도 마찬가지입니다(처리 순서는 고정되어 있지만 비슷하게 작동합니다).
마찬가지로, USE 플래그는 ebuild나 위에서 언급한 다른 소스의 플래그 없이 구성 파일에서 마스크될 수 있습니다. 즉, 구성 파일을 기반으로 할 수 없습니다.
결과를 알고 싶다면글로벌시스템이 현재 사용하고 있는 설정을 사용 emerge --info
하면 많은 세부 정보를 얻을 수 있습니다. 일반적으로 CFLAGS는 단일 패키지에 의해 자주 재정의되지 않으므로 이 출력이 결정적이라고 간주할 수 있습니다.
설치된 특정 패키지의 USE 플래그를 알고 싶다면 다음을 equery u <package>
사용할 수 있습니다.루트 키트패키지가 설치되었습니다.
답변3
/etc/make.conf
포티지 패키지 관리자를 사용하고 있다면(아마도) CFLAGS
as 및 에서 CPU 플래그를 찾을 수 있습니다 CXXFLAGS
. 개별 ebuild는 특정 플래그를 필터링할 수 있으므로 표시되는 플래그가 /etc/make.conf
패키지를 컴파일하는 데 사용된 플래그가 아닐 수도 있습니다. ebuild(아래)를 보면 /usr/portage/<category name>/<program name>/
이것이 사실인지 알 수 있습니다.
물론 이는 /etc/make.conf
컴파일 후에도 패키지 내용이 변경되지 않았다고 가정합니다.