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 파이프라인의 일부로 수행하려면 다음을 살펴보세요.푸디에이는 공식 저장소에서 사용하는 것과 동일한 빌드 도구입니다.