我无法列出系统本身保留的 apt 软件包。我知道有几个系统保留了软件包。
apt-get upgrade -s
显示:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
linux-image-amd64 openjdk-11-jre-headless
The following packages will be upgraded:
...
但是,当我运行的时候什么apt-mark showhold
都dpkg --get-selections | grep hold
没有返回。
有什么方法(除了使用apt-get upgrade
)来列出这些包吗?
apt-mark hold <package>
当使用或手动保留包时echo "<package> hold" | sudo dpkg --set-selections
,包做出现。
这对我来说是一个问题,因为 Ansible 使用的 python-apt 模块似乎不支持这些“自动”保留的包。
我的 Ubuntu 18.04.5 LTS 生产系统和 Debian 10.9 实验室系统都遇到了这个问题。Aptitude 未安装(并且从未安装过),并且所有系统都是无头服务器,因此没有发生可怕的 GUI 魔法。
有人熟悉这个问题吗?
答案1
问:“apt 模块...无法识别保留的包,并且仍然安装它们。dpkg_selections 使用 dpkg –get-selections 和 –set-selections 命令(根据文档),但在这种情况下也不起作用。“
答:我无法在 Ubuntu 20.04 和 Ansible 2.9.6 中重现该问题。当我选择要保留的包时,例如
- dpkg_selections:
name: tmux
selection: hold
tags: selection
该命令按预期工作
shell> dpkg --get-selections | grep tmux
tmux hold
shell> tmux -V
tmux 3.0a
当我尝试升级软件包时,例如
- apt:
name: tmux
state: latest
任务失败
致命:[localhost]:失败!=> 已更改=false cache_update_time:1621240502 cache_updated:false msg:|-'/usr/bin/apt-get -y -o“Dpkg::Options::=--force-confdef”-o“Dpkg::Options::=--force-confold”安装“tmux”失败:E:保留的软件包已更改,并且使用 -y 时没有使用 --allow-change-held-packages。rc:100 stderr:|- E:保留的软件包已更改,并且使用 -y 时没有使用 --allow-change-held-packages。stderr_lines:stdout:|- 正在读取软件包列表... 正在构建依赖关系树... 正在读取状态信息... 以下保留的软件包将被更改:tmux 以下软件包将被升级:tmux 升级了 1 个软件包,新安装了 0 个软件包,要删除 0 个软件包,未升级 68 个软件包。stdout_lines:
当选择设置回安装时
- dpkg_selections:
name: tmux
selection: install
该命令也按预期工作
shell> dpkg --get-selections | grep tmux
tmux install
并且可以升级该包,例如
- apt:
name: tmux
state: latest
register: result
- debug:
var: result
给出
ok: [localhost] =>
result:
cache_update_time: 1621240502
cache_updated: false
changed: true
diff: {}
failed: false
stderr: ''
stderr_lines: []
stdout: |-
Reading package lists...
Building dependency tree...
Reading state information...
The following packages will be upgraded:
tmux
1 upgraded, 0 newly installed, 0 to remove and 68 not upgraded.
...
- Preparing to unpack .../tmux_3.0a-2ubuntu0.3_amd64.deb ...
- Unpacking tmux (3.0a-2ubuntu0.3) over (3.0a-2ubuntu0.2) ...
- Setting up tmux (3.0a-2ubuntu0.3) ...
- Processing triggers for man-db (2.9.1-1) ...