APT/Aptitude가 실제 패키지보다 최신 가상 패키지를 선호하도록 만드는 방법

APT/Aptitude가 실제 패키지보다 최신 가상 패키지를 선호하도록 만드는 방법

저는 최근에 여러 가상 패키지, 특히 libsnmp-base, libsnmp30 등을 제공하는 snmp를 제공하는 패키지를 만들었습니다.

 - Version: 5.8~git20160427.8d07349f-14
 - Depends: ...
 - Provides:
   snmp,libsnmp-base,libsnmp-dev,libsnmp30,python-snmp,snmpd,snmptrapd,tkmib
 - Conflicts:
   libsnmp-base,libsnmp-dev,libsnmp30,python-snmp,snmpd,snmptrapd,tkmib
 - Replaces:
   libsnmp-base,libsnmp-dev,libsnmp30,python-snmp,snmpd,snmptrapd,tkmib

내 시스템에 설치되고 내 온라인 PPA에 제공됩니다. libsnmp30 및 libsnmp-base에 의존하는 다른 패키지(php7.0-snmp)를 설치하려고 하면 APT는 필요한 종속성을 설치하기 위해 snmp를 제거하는 옵션을 제공합니다.

APT는 다음과 같은 사실에도 불구하고 항상 가상 패키지보다 실제 패키지를 선호하는 것으로 보입니다.

  • 가상 버전에는 최신 버전이 있습니다.
  • 이미 설치되어 있어요

Aptitude는 더 많은 솔루션을 제공하지만 가장 선호되고 가장 논리적인 솔루션은 포함되지 않습니다. 가장 최근에 필요한 종속성을 이미 제공하므로 snmp를 유지하십시오.

sudo aptitude install php7.0-snmpThe following NEW packages will be installed:
  libsnmp30{a} php7.0-snmp 
0 packages upgraded, 2 newly installed, 0 to remove and 1 not upgraded.
Need to get 832 kB of archives. After unpacking 3,382 kB will be used.
The following packages have unmet dependencies:
 snmp : Conflicts: libsnmp30 but 5.7.3+dfsg-1ubuntu4 is to be installed.
The following actions will resolve these dependencies:

     Remove the following packages:               
1)     snmp                                       

     Install the following packages:              
2)     libsnmp-base [5.7.3+dfsg-1ubuntu4 (xenial)]

Accept this solution? [Y/n/q/?] n
The following actions will resolve these dependencies:

     Keep the following packages at their current version:
1)     libsnmp30 [Not Installed]                          
2)     php7.0-snmp [Not Installed]                        

Accept this solution? [Y/n/q/?] n
The following actions will resolve these dependencies:

     Install the following packages:                                           
1)     libsnmp-base [5.7.3+dfsg-1ubuntu4 (xenial)]                             

     Downgrade the following packages:                                         
2)     snmp [5.8~git20160427.8d07349f-14 (now) -> 5.7.3+dfsg-1ubuntu4 (xenial)]

Accept this solution? [Y/n/q/?] n

*** No more solutions available ***

php7.0-snmp를 어떻게 설치하나요?snmp를 제거하지 않고도?

답변1

여기서는 가상 패키지가 도움이 될 수 없습니다. 에서데비안 정책 매뉴얼:

관계 필드에 버전 번호가 첨부된 경우 관계가 충족되는지(또는 충돌이나 파손으로 인해 금지 사항을 위반했는지) 확인하기 위해 실제 패키지만 고려됩니다. 즉, 버전 번호가 지정되면 해당 패키지 이름에 대한 모든 제공을 무시하고 실제 패키지만 고려하라는 요청입니다. 패키지 관리자는 해당 가상 패키지를 제공하는 패키지가 "올바른" 버전이 아니라고 가정합니다. 제공 필드에는 버전 번호가 포함될 수 없으며 특정 가상 패키지를 제공하는 구체적인 패키지의 버전 번호는 가상 패키지 이름에 대한 종속성 또는 충돌을 고려할 때 고려되지 않습니다.

한 가지 방법은 제공된 각 패키지에 대해 실제 snmp패키지에 따라 달라지는 최소 패키지를 만드는 것입니다(과도기 패키지). 더 높은 버전이 되며 자동으로 선호됩니다.

관련 정보