安裝特定版本的 debian 包
使用包管理器(例如
npm
(對於 javascript)或pip
(對於 python)安裝包)教會我對包版本非常具體,以避免我正在編寫的軟體中出現奇怪的行為甚至意外錯誤。我知道
apt
包管理器是一個非常不同的動物,但我認為非常精確不會有什麼壞處。我錯了!直到幾天前,以下命令才起作用:
我創建了一個腳本,它安裝在“步驟”中,特定版本的 apt 包。步驟的一個範例類似於:
apt-get install git=1:2.20.1-2+deb10u1
但現在我得到:
Reading package lists... Done Building dependency tree Reading state information... Done E: Version '1:2.20.1-2+deb10u1' for 'git' was not found
為了完成安裝,我需要安裝以下版本:
apt-get install git=1:2.20.1-2+deb10u3
必須有一種方法可以使用相同的腳本在不同的機器上安裝相同的軟體,對嗎?也許:
apt-get install git=1:2.20.1-2*
請幫助以正確的方式完成此操作。
提前致謝。
您提到的工具之間存在根本的哲學差異,或者更確切地說,它們提供訪問的儲存庫之間存在根本差異。
等所定址的儲存庫
npm
提供pip
對它們分發的包的所有已發布版本的訪問。作為依賴這些包的項目的開發人員,您可以選擇適合您項目的版本——無論是范圍、特定版本還是“最新”,都由您決定,一切由您決定由您承擔該選擇的責任。在 Debian 等發行版中使用的由 定址的儲存庫
apt
僅提供對其分發的軟體包的少數(在大多數情況下為一個)版本的訪問。發行版的開發人員為您選擇版本,他們承擔了選擇的責任。選擇伴隨著一些承諾,或者至少是意圖;具體來說,當您使用大多數基於發行版的發行版時,安裝給定軟體包將始終在發行版的整個生命週期內提供相同的功能。因此,由於您使用的是 Debian 10,因此適當的咒語是
apt install git
在 Debian 10 的整個生命週期中,這將安裝一個
git
具有相同功能的版本。唯一的更改將解決嚴重的錯誤和安全問題(就是這種情況git
:您列出的兩個版本之間的更改解決了兩個安全問題)。當然會發生錯誤,但是一旦發生錯誤,發行版就會認真對待它們。如果您送出一個錯誤,描述由給定發行版中的軟體包升級引起的回歸,我希望它會在短時間內得到處理。(並且給定軟體包在穩定版本中升級的事實意味著有人沒有在方向盤上睡著。)
(如果你真的想承擔所有的責任,你可以使用snapshot.debian.org來安裝特定版本的包。)