
FreeBSD 패키지는 일반적으로 매니페스트에 다음과 같이 종속성을 지정합니다.
deps:
# python39, version 3.9 or higher
python39: {origin: lang/python39, version: 3.9}
# bind-tools, any version
bind-tools: {origin: dns/bind-tools}
이렇게 하면 패키지 관리자가 원하는 버전의 두 종속성이 모두 존재하는지 확인하고, 누락된 경우 종속성을 무시하라는 지시가 없는 한 해당 종속성을 추가하거나 오류와 함께 중단합니다.
반면 Linux의 Debian 스타일 패키지(.deb)는 다음과 같은 기능을 제공합니다.
- 권장 사항: 이는 소프트웨어의 특정 기능만 권장 사항으로 나열된 패키지에 의존한다는 것을 패키지 관리자에게 나타냅니다(반면 종속성이 누락된 경우 패키지는 대부분 쓸모가 없습니다). 패키지 관리자 구성 방법에 따라 권장 사항은 종속성으로 처리되거나 권장 사항 없이 패키지가 설치될 수 있습니다.
- 대안: 예를 들어 패키지는 에 의존할 수 있습니다
curl | wget
. 이 경우 소프트웨어는 두 패키지 중 어느 것이 설치되어 있고 사용 가능한 모든 것과 작동하는지 런타임에 알아내기 때문에 두 패키지 중 하나만 존재하면 특정 종속성을 충족할 수 있습니다.
.pkg도 이러한 기능을 제공합니까? 매니페스트에 어떻게 지정되나요?
답변1
FreeBSD 패키지는 바이너리 패키지입니다(참조:패키지(7)). 이론적으로는 상향식 바이너리 패키지를 만들 수 있지만 이는 매우 드문 일입니다. 당신은 차라리포트(7)소스 기반 "포트"를 사용하고 이를 패키지 원본으로 사용합니다. 바이너리 소스만 있는 경우에도 마찬가지입니다.
이는 다음 문서에 매우 잘 문서화되어 있습니다.FreeBSD 포터 핸드북.
원하는 경우 고유한 로컬 패키지를 만들 수 있습니다. 바닐라 FreeBSD 시스템을 사용하는 경우 바이너리 패키지는 기본 FreeBSD 저장소에서 설치됩니다. 이 패키지는 모두 포트 트리에서 만들어집니다.기본구성 옵션.
명령줄 도구를 사용할 수 있지만 쉬운 지름길은 찾아보는 것입니다.프레쉬포트. 우리가 보면바인드 도구다음과 같은 기본값이 표시됩니다.
===> The following configuration options are available for bind-tools-9.18.24:
FIXED_RRSET=off: Enable fixed rrset ordering
IDN=on: International Domain Names support
JSON=on: JSON file/format/parser support
LARGE_FILE=off: 64-bit file support
====> GSSAPI Security API support: you have to select exactly one of them
GSSAPI_BASE=off: Using Heimdal in base (nsupdate is broken)
GSSAPI_HEIMDAL=off: Using security/heimdal (nsupdate is broken)
GSSAPI_MIT=off: Using security/krb5
GSSAPI_NONE=on: Disable
===> Use 'make config' to modify these settings
따라서 로컬에서 포트를 구축하는 경우 make config
. 로컬에서만 사용하려면 make install
. 하지만 이 변형의 바이너리 패키지를 갖고 싶다면 간단히 make package
.
포트/패키지를 처음부터 수행하는 경우 설정 방법을 볼 수 있습니다.메이크파일 옵션. 위의 GSSAPI와 마찬가지로 라디오 선택 항목으로 그룹화할 수도 있습니다.
일반적인 공유 종속성은 일반적으로 다음을 사용하여 처리됩니다.매크로 사용~와 같은파이썬.
역사적으로 당신이 만든슬레이브 포트불변성을 처리합니다. 하지만 더 현대적인 접근 방식을 취할수록풍미. 이는 특히 다음과 같은 경우에 일반적입니다.파이썬하지만 최대한 자유로워야 한다는 점을 기억하세요.버전 선택가능한 한.
아키텍처는 데비안과 다릅니다. 그러한 "권장 사항"은 없습니다. 최소한의 실행 가능한 패키지를 만든 다음 옵션을 사용하여 포트에서 선택적 종속성을 선택할 수 있도록 만드는 것이 좋습니다. "대안"은 옵션을 사용하여 포트에서 다시 처리됩니다. 그러면 귀하의 예는 라디오 그룹에서 또는 중 하나를 허용하는 것 curl
입니다 wget
. 이를 바이너리 패키지에 반영하려면 플레이버를 생성해야 합니다.
자신만의 저장소를 만들고 싶거나 CI 파이프라인의 일부로 이 작업을 수행하고 있다면 다음을 살펴보세요.푸디에르이는 공식 저장소에 사용되는 것과 동일한 구축 도구입니다.