從apt升級中排除/保留/阻止特定軟件包的三種方法
有時,由于某些應(yīng)用依賴性,你可能會意外更新不想更新的軟件包。這在全系統(tǒng)更新或自動包升級時經(jīng)常會發(fā)生。如果發(fā)生這種情況,可能會破壞應(yīng)用的功能。這會造成嚴(yán)重的問題,你需要花費(fèi)大量時間來解決問題。
如何避免這種情況?如何從 apt-get
更新中排除軟件包?
如果你要從 Yum Update 中排除特定軟件包,請參考這篇。
是的,可以在 Debian 和 Ubuntu 系統(tǒng)上使用以下三種方法來完成。
- apt-mark 命令
- dpkg 命令
- aptitude 命令
我們將分別詳細(xì)展示。
方法 1:如何使用 apt-mark 命令排除 Debian/Ubuntu 系統(tǒng)上的軟件包更新
apt-mark
用于將軟件包標(biāo)記/取消標(biāo)記為自動安裝。
hold
選項用于將軟件包標(biāo)記為保留,以防止軟件包被自動安裝、升級或刪除。
unhold
選項用于取消先前面的設(shè)置,以允許重復(fù)執(zhí)行所有操作。
運(yùn)行以下命令以使用 apt-mark
命令保留指定的軟件包。
$ sudo apt-mark hold nano
nano set on hold.
保留軟件包后,請運(yùn)行以下 apt-mark
命令查看它們。
$ sudo apt-mark showhold
nano
這表明在執(zhí)行完整的系統(tǒng)更新時,不會升級 nano 包。
$ sudo apt update
Reading package lists… Done
Building dependency tree
Reading state information… Done
Calculating upgrade… Done
The following packages have been kept back:
nano
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
運(yùn)行以下命令,使用 apt-mark
命令取消保留 nano 包。
$ sudo apt-mark unhold nano
Canceled hold on nano.
方法 2:如何使用 dpkg 命令在 Debian/Ubuntu 系統(tǒng)上排除軟件包更新
dpkg
命令是一個 CLI 工具,用于安裝、構(gòu)建、刪除和管理 Debian 軟件包。dpkg
的主要且更用戶友好的前端是 aptitude
。
運(yùn)行以下命令使用 dpkg
命令阻止給定的軟件包。
語法:
$ echo "package_name hold" | sudo dpkg --set-selections
運(yùn)行以下 dpkg
命令以保留 apache2 包。
$ echo "apache2 hold" | sudo dpkg --set-selections
保留軟件包后,請運(yùn)行以下命令查看它們。
$ sudo dpkg --get-selections | grep "hold"
apache2 hold
它會顯示在執(zhí)行完整的系統(tǒng)更新時,不會升級 apache2包。
$ sudo apt update
Reading package lists… Done
Building dependency tree
Reading state information… Done
Calculating upgrade… Done
The following packages have been kept back:
apache2
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
運(yùn)行以下命令,使用 dpkg
命令取消對指定軟件包的保留。
語法:
$ echo "package_name install" | sudo dpkg --set-selections
運(yùn)行以下命令,使用 dpkg
命令取消保留 apache2 包。
$ echo "apache2 install" | sudo dpkg --set-selections
方法 3:如何使用 aptitude 命令排除 Debian/Ubuntu 系統(tǒng)上的軟件包更新
aptitude
命令是 Debian 及其衍生版本的基于文本的軟件包管理界面。
它允許用戶查看軟件包列表并執(zhí)行軟件包管理任務(wù),例如安裝、升級和刪除軟件包。它可以從可視界面或命令行執(zhí)行操作。
運(yùn)行以下命令,使用 aptitude
命令保留指定的軟件包。
$ sudo aptitude hold python3
保留某些軟件包后,請運(yùn)行以下命令查看它們。
$ sudo dpkg --get-selections | grep "hold"
或者
$ sudo apt-mark showhold
python3
這表明在執(zhí)行完整的系統(tǒng)更新時,不會升級 python3 軟件包。
$ sudo apt update
Reading package lists… Done
Building dependency tree
Reading state information… Done
Calculating upgrade… Done
The following packages have been kept back:
python3
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
使用 aptitude
命令運(yùn)行以下命令以解除對 python3 軟件包的保留。
$ sudo aptitude unhold python3