限制可從儲存庫安裝的軟體包
我有我的官方 Debian 儲存庫(比如
repo1
)。現在我從package X
(repo2
) 添加供應商的回購。軟體包 X 不在官方 Debian 儲存庫中。當然,repo 2
可以有一些重疊的包repo 1
,比如package Y
,有些甚至可能永遠不會,並且需要package X
執行(repo 1::package Y
hasversion 1.0
,repo 2::package Y
hasversion 2.0
)。我想知道,何時
package X
從repo 2
. 最好甚至阻止從 安裝任何軟體包repo 2
,以避免它弄亂我的系統。我目前的想法是限制
repo2
,所以只能package X
從那里安裝,但我不知道如何做到這一點。為什麼我可能想要這個:
- 我可能不完全信任
repo2
,我想跟踪來自那裡的包裹- 如果有包,除了
package X
來自之外repo2
,並且我不允許安裝這些包,它會中斷package X
,但這沒問題,我可以在那時決定是否允許來自該來源的那些包,但我會有一個預知正在發生的事情基本上我想
apt
告訴我,如果有任何其他內容,不是Package X
從repo 2
.我考慮過的一些解決方案:
適當固定:
- 我認為行不通,因為 if
package X
requiresversion 2.0
ofpackage Y
, andrepo1
hasversion 1.0
,repo 2
將被使用,不管固定調整
Packages.gz
來自repo 2
:
- 我不知道,這怎麼可能實現
apt
固定可以在這里工作。添加一個條目,例如Package: * Pin: origin repo2 Pin-Priority: 100
這將允許從 安裝
repo2
,但將確保兩者中都存在軟體包,repo1
並且repo2
首選repo1
版本進行升級。如果另一個包需要某個repo2
版本,則可以要求將其與適當的選項一起使用。這與用於反向移植儲存庫的設置相同。repo2``apt``-t
您最終會得到以下行為:
$ sudo apt install moosefs-client/bullseye-backports Reading package lists... Done Building dependency tree... Done Reading state information... Done Selected version '3.0.116-1~bpo11+1' (Debian Backports:bullseye-backports [amd64]) for 'moosefs-client' Starting pkgProblemResolver with broken count: 0 Starting 2 pkgProblemResolver with broken count: 0 Done The following packages were automatically installed and are no longer required: gconf2 libgsf-bin Use 'sudo apt autoremove' to remove them. The following additional packages will be installed: libmfsio1 The following NEW packages will be installed: libmfsio1 moosefs-client 0 upgraded, 2 newly installed, 0 to remove and 15 not upgraded. Need to get 504 kB of archives. After this operation, 1,580 kB of additional disk space will be used. Do you want to continue? [Y/n] Get:1 http://deb.debian.org/debian bullseye/main amd64 libmfsio1 amd64 3.0.115-1 [171 kB] Get:2 http://deb.debian.org/debian bullseye-backports/main amd64 moosefs-client amd64 3.0.116-1~bpo11+1 [333 kB] Fetched 504 kB in 0s (1,395 kB/s) ...
我詢問了 的向後移植版本
moosefs-client
,並apt
選擇了預設版本libmfsio1
而不是向後移植版本。如果我指定-t bullseye-backports
了 ,它會從 backports 中選擇兩者。對於僅在 中可用的包repo2
,您根本不需要指定/repo2
;並且如果該包是可解除安裝的,而無需從中提取repo2
具有舊版本的其他包,除非您指定repo1
,否則將失敗。apt``-t repo2