데비안 패키징: mk-build-deps는 Build-Depends 패키지의 특정 버전을 설치할 수 없습니다.

데비안 패키징: mk-build-deps는 Build-Depends 패키지의 특정 버전을 설치할 수 없습니다.

타사 라이브러리의 특정 버전에 의존하는 프로젝트를 빌드해야 합니다.

➜  cat debian/control 
Source: libhole-cpp
Priority: optional
Maintainer: Vitaly Isaev <[email protected]>
Build-Depends: debhelper (>= 9), cmake, 
    flatbuffers (= 1.2.0-1),
    libboost-dev,
    libboost-system-dev,
    catch
Standards-Version: 3.9.5

그러나 저장소에는 flatbuffers최신 패키지를 포함하여 여러 패키지가 있습니다.

➜  apt-cache policy flatbuffers
flatbuffers:
  Installed: (none)
  Candidate: 1.4.0-17
  Version table:
     1.4.0-17 500
        500 http://repo12.mailbuild-2.embarce.ro xenial/local amd64 Packages
     1.2.0-1 500
        500 http://repo12.mailbuild-2.embarce.ro xenial/local amd64 Packages

이 경우 mk-build-deps필수 버전의 패키지 설치가 거부됩니다.

➜  sudo mk-build-deps --install debian/control
dh_testdir
dh_testroot
dh_prep
dh_testdir
dh_testroot
dh_install
dh_installdocs
dh_installchangelogs
dh_compress
dh_fixperms
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dpkg-deb: building package 'libhole-cpp-build-deps' in '../libhole-cpp-build-deps_1.0.1ubuntu1_all.deb'.

The package has been created.
Attention, the package has been created in the current directory,
not in ".." as indicated by the message above!
Selecting previously unselected package libhole-cpp-build-deps.
(Reading database ... 68846 files and directories currently installed.)
Preparing to unpack libhole-cpp-build-deps_1.0.1ubuntu1_all.deb ...
Unpacking libhole-cpp-build-deps (1.0.1ubuntu1) ...
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies...Starting pkgProblemResolver with broken count: 1
Starting 2 pkgProblemResolver with broken count: 1
Investigating (0) libhole-cpp-build-deps [ amd64 ] < 1.0.1ubuntu1 > ( devel )
Broken libhole-cpp-build-deps:amd64 Depends on flatbuffers [ amd64 ] < none -> 1.4.0-17 > ( devel ) (= 1.2.0-1)
  Considering flatbuffers:amd64 0 as a solution to libhole-cpp-build-deps:amd64 -2
  Removing libhole-cpp-build-deps:amd64 rather than change flatbuffers:amd64
Done
 Done
Starting pkgProblemResolver with broken count: 0
Starting 2 pkgProblemResolver with broken count: 0
Done
The following packages will be REMOVED:
  libhole-cpp-build-deps
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 9216 B disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 68850 files and directories currently installed.)
Removing libhole-cpp-build-deps (1.0.1ubuntu1) ...
mk-build-deps: Unable to install libhole-cpp-build-deps at /usr/bin/mk-build-deps line 402.
mk-build-deps: Unable to install all build-dep packages
➜  libhole-cpp git:(v12) ✗ sudo apt-get -f install
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

누구든지 내 빌드 툴체인에 어떤 문제가 있는지 명확히 할 수 있습니까? 운영체제는 우분투 16.04입니다.

답변1

보기에는 너무 길다.

aspcud다음을 통해 솔버에 위임합니다 apt-cudf-get.

mk-build-deps \
    --install \
    --remove \
    --tool \
    'apt-cudf-get --solver aspcud -o APT::Get::Assume-Yes=1 -o Debug::pkgProblemResolver=0 -o APT::Install-Recommends=0' \
    debian/control

설명하다

이 솔루션은 다음과 다릅니다.요하네스 사우어(Johannes Sauer)거기에...

  • apt-cudf-get대신에 사용합니다apt-get
  • 다음 옵션이 생략되었습니다(내 테스트에서는 작동하지 않음).
    • -o APT::Solver::Strict-Pinning=false
    • -o APT::Solver::aspcud::Preferences="-new,-removed,-changed"
  • 다음 옵션이 추가됩니다.
    • -o APT::Get::Assume-Yes=1(비대화형으로 패키지 설치)
    • -o Debug::pkgProblemResolver=1( mk-build-deps --tool기본)
    • -o APT::Install-Recommends=0( mk-build-deps --tool기본)

인용하다:

관련 정보