메인 패키지가 의존하는 특정 버전의 패키지를 설정할 수 있습니까?


10

FreeBSD 10.3에 개발 환경이 있습니다. FreeBSD는 그런 방식으로 패키지 의존성을 관리한다고 들었습니다. 메인 패키지가 의존하는 모든 패키지의 최신 버전을 항상 찾습니다. 그리고 그것은 사실처럼 보입니다. 그래서 내 질문은 :

  1. 이것이 사실입니까? 그것을 증명하는 공식 문서가 있습니까?
  2. 이 문제를 극복하는 가장 좋은 방법은 무엇입니까?

7
필자는 먼저 필요한 특정 버전의 패키지 pkg lock를 설치 한 다음 원하는 다른 모든 것을 설치할 수 있다고 생각합니다.
화살표

1
또한 원하는 포트 / 패키지 및 버전에 따라 다릅니다. 예를 들어 다른 python / postgresql / php 버전을 가질 수 있습니다. 때로는 소프트웨어에 사용할 수있는 여러 패키지가있을 수 있으며 때로는 포트에서 특수 패키지를 빌드 할 수도 있습니다.
Raphael Ahrens

3
맹목적으로 freebsd 업데이트 (또는 pkg upugrade)를 실행하면 최신 버전을 찾아 설치하려고 시도합니다. arrowd가 말했듯이, 지금 (9.2 이후) pkg lock <pkg>를 사용하면 설치 한 내용과 그 종속성을 수정하지 못하도록 보호 할 수 있습니다. YMMV.
quadruplebucky

답변:


1

FreeBSD가 패키지를 빌드하는 방법

FreeBSD 프로젝트는 릴리즈와 때로는 STABLE 브랜치를 위해 패키지를 빌드하는 데 사용되었습니다. 이전 패키지 빌더는 Portbuild라는 분산 시스템을 사용했습니다. 더 작은 2GB-4GB 시스템의 큰 클러스터를 사용하여 패키지를 빌드합니다. 대부분 오래된 컴퓨터로 인해 오류가 발생하기 쉽고 느려졌습니다. 전체 빌드에는 여전히 일주일이 걸릴 수 있습니다. 오늘날 패키지는 Poudriere를 사용하는 단일 대형 머신을 사용하여 빌드됩니다. ( Brian Drewery의 웹 페이지 에서 ).

참조 : FreeBSD의에 패키지와 포트의 혼합을 업데이트하는 방법

FreeBSD는 Solaris 및 Windows와 마찬가지로 진화하는 ABI (및 API)를 가지고 있으며 Linux는 안정적인 (안정적인?) ABI (및 API)를 가지고 있으므로 Linux를 사용하면 오래된 바이너리는 Linux가 아닌 OS에서는 최신 OS 버전으로 계속 실행됩니다. 항상 그렇습니다 (때로는 그러합니다).

사용 pkg lock여전히 수 있습니다 두통으로 이어질 는 반면, 고정 사용 업그레이드하려고하면 (경고를 제공) pkg upgrade가 여전히 높은 번호의 버전은 가정 보다 가 권한을 요구하므로, - (바람직한) 그리고 당신이 원하는 무언가이다 허용 할 수는 있지만 다른 것이 깨지지 않는다는 보장은 없습니다. 위의 URL 또는이 토론을 참조하십시오 : " OS 버전의 경우 pkg을 통해 배포 된 바이너리 패키지 버전을 FreeBSD에서 잠그기를 원하십니까? ".

하나 개의 패키지가 잠겨 있으면 때때로 그 반면 당신은 업그레이드를 잠금을 해제하고 할 수있는 권한을 부여해야 할 일을 뭔가 다른 새로운 라이브러리와 호환되지 않을 것이라는 확신이 없다 하나의 패키지 (모든 종속성 () 따라서 현재 사용 가능한 경우 업그레이드가 필요합니다 ).

Brian Drewery의 블로그 : " FreeBSD Journal : Poudriere "opines :

"서버에서 포트 마스터, 포트 업그레이드 및 포트 사용을 중지하고 패키지로 전환하십시오.

Poudriere로 자신 만의 패키지 빌드를 설정하는 데 몇 분 밖에 걸리지 않으며 앞으로 많은 시간을 절약 할 수 있습니다.

...

둘 이상의 FreeBSD 시스템을 유지 관리하고 있고 이미 패키지를 사용하고 있지 않다면해야합니다. 서버는 20 대만 유지하지만 각 시스템에 포트를 구축하는 데 많은 시간이 걸리고 생산 시스템의 리소스를 낭비했습니다. 여러 서버에서 포트를 구축 할 때 옵션 또는 버전을 동기화하지 않는 것이 매우 쉽습니다. 한 시스템에 패키지를 한 번 구축함으로써 시스템의로드를 줄이고 필요한 작업량을 줄이고 모든 시스템의 일관성을 유지했습니다. 각 시스템에서 동일한 실패를 처리하는 대신 빌드 시스템에서만 처리해야합니다.

그러나 장애는 ...

왜 공식 패키지에서 벗어나야합니까? 포트 프레임 워크는 빌드 시간 구성을 변경하기 위해 포트에 대한 옵션 지원을 제공합니다. 모든 응용 프로그램이 런타임 구성을 지원하지는 않습니다. 사용 가능한 기능에 따라 일부 응용 프로그램을 다르게 컴파일해야합니다. 다른 포트에는 기본 포트의 기능 및 종속성의 양을 줄이는 옵션이 있습니다. 서버 관리자의 경우 이로 인해 일부 기본 패키지가 요구 사항을 충족하지 못하는 것을 빠르게 발견 할 수 있습니다.

그래서 ...

사용자 정의 패키지를 얻는 몇 가지 방법이 있습니다. Pkg는 여러 리포지토리 사용을 지원합니다. 공식 FreeBSD 저장소를 기본으로 사용하고 사용자 정의 저장소를 보조로 사용하도록 설정할 수 있습니다. Pkg는 추적 할 수있는 리포지토리 수에 의해 제한되지 않으며 우선 순위에 따라 재정렬 할 수 있습니다. 여러 리포지토리의 문제는 현재 유지 관리가 어렵다는 것입니다. Pkg가 설치된 패키지에 추적중인 저장소와 다른 옵션 또는 종속성이 있음을 발견하면 잠재적으로 모든 원격 버전에서 패키지가 다시 설치됩니다. pkg lock PKGNAME 및 pkg unlock PKGNAME을 사용하여 업그레이드하는 동안 패키지를 잠 그거나 pkg annotate -A PKGNAME repository REPONAME을 사용하여 특정 저장소에 바인딩 할 수 있습니다. 또한 사용자 정의 저장소의 포트 트리를 FreeBSD 패키지와 동기화하는 미묘한 문제가 있습니다. 패키지는 일주일에 한 번 작성된 포트 트리 스냅 샷에서 빌드되므로 사용자 정의 저장소가 일치하지 않으면 충돌이 발생할 수 있습니다. 원하는 옵션으로 필요한 것의 전체 패키지 세트를 작성하는 것이 훨씬 간단합니다.

해결책:

Poudriere (대략 poo-dree-year, 프랑스어 "파우더 통")는 Tinderbox의 더 빠르고 간단한 대체물로 작성되었습니다. 이 책은 Pkg 작가 Baptiste Daroussin이 작성했으며 현재 Baptiste 및 다른 기고자들과 함께 주로 관리하고 있습니다. 사실상 사실상 FreeBSD 포트 테스트 및 패키지 구축 도구가되었습니다. 공식 빌드 클러스터 도구이며 FreeBSD Ports 프로젝트 에서도“exp-runs”에서 스위핑 패치 를 테스트하는 데 사용됩니다 . POSIX 쉘로 작성되었으며 천천히 C 구성 요소로 이동합니다. Tinderbox와 달리 종속성없으며 데이터베이스가 필요하지 않습니다.. 모든 작업에서 평행이되도록 크게 최적화되었습니다. 매우 엄격한 조건에서 감옥을 사용하여 샌드 박스 환경에서 포트를 만듭니다. 감옥 만들기는 간단한 명령으로 한 번만 수행됩니다. 빌드하는 동안 포트를 깨끗하게 구축 할 수있는 포트를 제공하는 데 사용되는 각 CPU에 대해 감옥이 자동으로 복제됩니다. "

poudriere를 사용 하여 자체 저장소를 설정 하면 포트의 유연성과 패키지 관리가 쉬워집니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.