1

ubuntu upgrade 不升级某些包

 1 year ago
source link: https://xujinzh.github.io/2023/02/02/ubuntu-apt-mark/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

使用 ubuntu 的更新命令 sudo apt upgrade -y 时总是会升级所有的包,但是有些包是不能或不便升级的,如 GPU 驱动程序等,升级后可能会导致无法使用。有时升级某些软件后会导致系统重启失败等。本篇介绍如何抑制某些包不升级。

update & upgrade

当使用一段时间后,或需要更新某个软件包时,总会运行如下的命令,检查更新:

sudo apt update

当运行上面的命令后,会提示我们有多少包需要更新,使用如下命令,可以查看详细信息:

sudo apt list --upgradable

当我们想要升级罗列的所有软件包时,我们可以使用如下命令:

sudo apt upgrade -y

当我们想要只升级某一个软件包时,我们可以使用如下命令:

sudo apt install --only-upgrade [packagename]
# or
sudo apt install [packagename]

但是,如果我们需要升级的软件比较多,但又不是所有软件都想要升级,那么我们不能够使用 sudo apt upgrade,但使用 sudo apt install --only-upgrade [packagename] 又有些繁琐,我们可以采用下面的方法。

apt-mark

apt-mark 可以对软件包进行设置安装标记,如手动(manual)、自动(auto)、不安装(hold)等。以 vim 为例,我们可以如下设置:

# vim 自动升级
sudo apt-mark auto vim
# vim 手动升级,即当手动 apt update, apt upgrade 时会升级
sudo apt-mark manual vim
# vim 不升级,只有当 apt update 且 apt install vim 时才会升级。hold 会组织软件自动升级
sudo apt-mark hold vim
# 取消阻止升级
sudo apt-mark unhold vim

查看所有软件的标记状态:

# 查看自动升级的软件包
sudo apt-mark showauto
# 查看手动升级的软件包
sudo apt-mark showmanual
# 查看不升级的软件包
sudo apt-mark showhold
# 查看所有软件包状态
sudo dpkg --get-selections

当我们把不想要自动升级的软件设置为 hold 状态时,这是我们就可以方向的使用如下命令升级想要升级的软件了:

sudo apt update
sudo apt upgrade -y

此时,在使用如下命令查看,发现 hold 状态的软件虽然列出来了,但是没有被升级:

sudo apt list --upgradable

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK