안정적인 패키지 빌드 및 설치

안정적인 패키지 빌드 및 설치

노트: 이 질문을 좀 더 구체적으로 설명하기 위해 패키지 설치를 rustc예로 들어보겠습니다. 그럼에도 불구하고 이 질문은 주로 일반적인 소프트웨어 패키지에 적용됩니다.

Debian Stable 시스템을 사용하고 있습니다. rustc불안정한 배포판에서 이 패키지를 설치하고 싶습니다 (현재 안정 배포판에는 존재하지 않습니다). 내 /etc/apt/sources.list파일 에 불안정한 소스를 추가했습니다.

# Unstable
deb http://ftp.debian.org/debian unstable main contrib non-free
deb-src http://ftp.debian.org/debian unstable main contrib non-free

을 실행한 apt update다음 yes 를 실행합니다 apt install rustc. 예상대로 APT는 종속성 문제로 인해 설치를 거부합니다.

The following packages have unmet dependencies:
 rustc : Depends: libstd-rust-dev (= 1.12.0+dfsg1-1) but it is not going to be installed
         Depends: binutils (>= 2.26) but 2.25-5 is to be installed
         Recommends: rust-gdb but it is not going to be installed or
                     rust-lldb but it is not going to be installed

저장소에 패키지를 설치하기 위해 제가 생각할 수 있는 유일한 방법은 소스에서 패키지를 빌드하는 것입니다. 나는 읽었다이 페이지데비안 위키에서는 다음 프로세스를 사용하여 Unstable의 패키지를 빌드할 수 있다고 제안합니다:

  1. source.list에 sid에 대한 deb-src 줄을 추가하세요.
  2. apt-get update
  3. apt-get build-dep PACKAGE_NAME
  4. apt-get -b source PACKAGE_NAME

그러나 3단계는 충족되지 않은 종속성으로 인해 실패합니다.

그래서 제 질문은 불안정한 시스템에서 패키지를 빌드하여 안정적인 시스템에 설치하는 것이 가능한지 여부입니다. 그렇다면 어떻게 해야 합니까? 모든 종속성을 빌드/다운로드하고 이를 내가 원하는 패키지의 최종 바이너리에 병합하는 방법이 있어야 한다고 생각합니다. 그런 다음 패키지를 설치하십시오.

답변1

첫째, 당신처럼 안정적인 시스템에 불안정한 시스템을 추가하는 것입니다.진짜나쁜 생각: 배포 도구는 불안정한 패키지를 유효한 업그레이드 대상으로 처리하며 조심하더라도 일반적으로 널리 사용되는 라이브러리를 업그레이드해야 하며 대부분의 패키지는 패키지에서 불안정한 소프트웨어를 추적하게 됩니다. 단기 주문. (꼭 필요한 경우 고정 기능을 사용하세요.)

귀하의 질문과 관련하여 일반적으로 다음을 수행하여 안정 버전에서 불안정한 소스 패키지를 빌드할 수 있습니다.당신이 연결한 프로그램. 지적하신 대로 종속성을 백포트하거나 안정적으로 빌드할 수 있도록 소스 패키지를 조정하는 작업이 포함될 가능성이 높습니다. 이 apt-get build-dep단계가 실패할 경우 그 이유는 불안정한 소스 패키지의 일부 빌드 종속성을 안정 버전에서 충족할 수 없기 때문입니다. 필요한 모든 항목이 백포트되고 결과 패키지가 설치될 때까지 이 프로세스를 반복해야 합니다. 인기 있는 패키지의 경우 버그를 신고하여 공식 웹사이트에 요청하는 것이 좋습니다.백포트.

이것이 실패 하면 apt-get build-dep빌드 종속성을 수동으로 설치해야 합니다. dpkg-buildpackage무엇이 누락되었는지 알려줄 것입니다. 이는 빌드 종속성을 백포트할 때 유용합니다. 백포트된 빌드 종속성을 추가하면 보고된 누락 패키지 목록이 dpkg-buildpackage줄어들고 불평이 멈추면 완료된 것입니다. 이는 또한 빌드 종속성에 대한 모든 변경 사항을 고려합니다 debian/control(그렇지 않습니다 apt-get build-dep).

~을 위한rustc물건은많은더 복잡합니다. rustc직접 빌드해야 하므로 "부트스트랩"이 필요합니다. 이것은 몇 달 전에 불안정한 FTP 전문가의 도움으로 수행되었습니다. 안정적인 시스템에서 이를 깨끗한 방식으로 복제하는 것은 쉽지 않습니다.

실제로 rustc안정적인 시스템에 설치하려면 다음을 수행합니다.

  1. 백포트됨 binutils( DEB_BUILD_OPTIONS=nocross,nomult,nogold크로스 툴체인 빌드를 방지하고 goldJessie로 빌드할 수 없음 g++)
  2. libllvm3.8Jessie의 백포트 설치.
  3. 설치하다libstd-rust-dev,libstd-rust-1.12그리고rustc불안정성에서.

답변2

귀하의 의견을 읽었지만, 정말로 Rustc를 원할 경우에는 테스트/스트레치 버전을 설치해 볼 수 있습니다:https://packages.debian.org/stretch/rustc

테스트/스트레치(Test/Stretch)는 불안정한 것만큼 새로운 것은 아니지만 확실히 안정적인 것보다 새로운 것입니다.

apt-get 소스를 사용하여 소스 코드를 가져오고 특정 버전이 필요하지 않도록 ./debian/control 파일을 수정할 수 있지만 빌드될지는 확실하지 않습니다. 또한 이 위키에 나열된 다른 방법 대신 sudo dpkg-buildpackage -B -us -uc를 사용하는 것이 더 쉽습니다.

관련 정보