ebuild 스크립트에 관한 일련의 질문입니다. devrel의 원래 단락과 질문을 제공하십시오.

ebuild 스크립트에 관한 일련의 질문입니다. devrel의 원래 단락과 질문을 제공하십시오.

범위

ebuild를 얻을 때마다 스크립트 해석기는 해당 함수와 변수를 메모리에 로드합니다. 그러나 함수의 일부가 아닌 변수와 명령어만 해석됩니다. src_compile()과 같은 함수는 ebuild가 컴파일 단계에 도달할 때만 포티지에 의해 실행됩니다.

이 함수 내의 코드는 "로컬 범위"에 있는 것으로 간주되는 반면 함수 외부의 모든 것은 "전역 범위"에 있습니다. 즉, ebuild를 가져올 때마다 실행된다는 의미입니다.

성능상의 이유로 외부 애플리케이션(예: grep, sed 또는 awk)을 전역적으로 호출하면 안 되지만 내장된 bash 대체 사용과 같은 대안을 사용해야 합니다. 유용한 대안은 고급 Bash 스크립팅 가이드에서 찾을 수 있습니다.

또한 전역적으로 호출할 수 있는 외부 응용 프로그램이 시스템에 존재한다는 보장도 없습니다. 명령이 로컬 범위(예: pkg_setup()함수)에 배치되면 ebuild의 에 배치하여 이를 수행할 수 있습니다 ${DEPEND}.

  1. ebuild를 조달한다는 것은 무엇을 의미합니까? 소스 명령이 될 수 있습니까?(이해가 안 가네요. 책에 나온 내용이고 "man source"가 없습니다.

  2. 좋아요, 변수 - 어떻게 해석할까요? 어쨌든 나는 그 기능이 어떻게 작동하는지 이해합니다. 함수는 일종의 프로그래밍일 수 있습니다. 컴파일되거나 해석됩니다. ebuild 언어가 Gentoo Portage에서 널리 사용되는 Pearl이나 Python과 같은 스크립팅 언어(아마도 bash)라면 어떻게 ebuild에 컴파일 기능을 포함할 수 있습니까(학교에서 Pascal에서 했던 것을 기억합니다).

  3. 그렇다면 src_compile()함수란 무엇입니까? revdel에는 이에 대한 언급이 없습니다.

  4. "컴파일 단계" - 이 용어는 무엇을 의미합니까? ebuild 단계 또는 ebuild 단계는 무엇입니까?

  5. 로컬/글로벌 범위에서도 마찬가지입니다. 나는 일부 내부 응용 프로그램과 함께 그것을 전혀 이해하지 못합니다. 언급된 반대 아이디어도 이해할 수 없습니다(awk..).

  6. pkg_setup()함수 $DEPEND- 이것은 단지 예일 뿐인가요, 아니면 숨겨진 의미를 암시하는 것인가요?

답변1

Ebuild는 쉘 스크립트(실제로는 bash 스크립트)입니다. 따라서 그들은 변수를 갖고 함수를 정의하는 쉘 스크립트처럼 작동합니다. 하지만 ebuild는 직접 실행되지 않습니다. 필요한 순서에 따라 ebuild에서 적절한 함수를 호출하여 준비, 빌드 및 설치 프로세스를 emerge(또는 때로는 직접) 실행하여 구동합니다.ebuild

1분기: ebuild를 조달한다는 것은 무엇을 의미합니까?
2분기:변수 - 어떻게 해석하나요?
Q5:범위

source내장 명령을 사용하는 쉘 스크립트와 동일합니다 (참고 man bash자료 참조). 이는 스크립트(이 경우 ebuild)가 emerge현재 쉘(에 의해 구동되는)에 의해 읽혀지고 마치 호출 스크립트의 일부인 것처럼 처리된다는 것을 의미합니다.
이는 모든 변수 정의를 처리하고 호출 스크립트의 환경에 추가하며 ebuild에 정의된 모든 함수를 해결하지만 실행하지는 않습니다.
변수는 다음과 같이 매우 간단할 수 있습니다.

DEPEND=">=dev-foo/bar-42"

설명이 필요하지 않거나 다른 변수에 대한 참조가 포함될 수 있습니다. 예:

DEPEND=">=some-cat/related-${PV}"

변수 보간이 필요하거나 bash 내장 또는 외부 프로그램을 실행하여 해석해야 하는 더 복잡한 정의를 사용할 수 있습니다. 이것은 ebuild에 특정한 것이 아니라 일반적인 스크립트입니다.

ebuild의 범위에 대해서는 특별한 것이 없으며 일반 스크립트의 범위와 동일합니다.

4 분기:단계
3분기 및 6분기: src_compile, pkg_setup,${DEPEND}

소스에서 패키지를 설치하는 프로세스는 대략 준비(소스 다운로드, 압축 풀기 및 구성), 컴파일, 설치 및 설치 후 작업의 여러 단계로 나뉩니다. Ebuild 관리자는 각 단계에서 실행되는 기능을 제공하여 빌드를 사용자 정의할 수 있습니다. 단계 목록은 다음에서 확인할 수 있습니다.EAPI 사용법 및 지침개발자. 수동.
미리 정의된 변수와 ebuild 변수는변하기 쉬운같은 설명서의 일부입니다. ${DEPEND}그 중 하나입니다.

src_compile패키지를 설치하기 전에 소스 코드를 컴파일해야 한다면 ebuild가 (직접 또는 간접적으로) 제공해야 하는 기능 중 하나를 사용하세요. 모든 ebuild가 이를 요구하는 것은 아니지만(예: 컴파일이 필요하지 않은 아이콘/테마/이미지만 설치할 수 있음) 일반적으로 필요합니다. ebuild 관리자의 임무는 소스 패키지를 올바르게 빌드할 수 있도록 이 함수를 만드는 것입니다.
pkg_setup설치 초기 단계에서 호출되는 함수 중 하나입니다.

관련 정보