使用apt upgrade
和apt dist-upgrade
很容易令人困惑,因为输出通常看起来像这样。是否有选项或可能性可以使输出更具可读性?
$ sudo apt upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
apache2 apache2-bin apache2-data apache2-utils apport apt apt-utils bind9-host bsdutils dnsutils e2fsprogs fdisk grub-common grub-pc grub-pc-bin
grub2-common irqbalance kmod landscape-common libapt-inst2.0 libapt-pkg5.0 libbind9-160 libblkid1 libcom-err2 libcups2 libcupsimage2
libdns-export1100 libdns1100 libdrm-common libdrm2 libext2fs2 libfdisk1 libglib2.0-0 libglib2.0-data libirs160 libisc-export169 libisc169
libisccc160 libisccfg160 libkmod2 libldap-2.4-2 libldap-common liblwres160 liblxc-common liblxc1 libmount1 libnss-systemd libpam-systemd
libparted2 libpython3-stdlib libpython3.6 libpython3.6-minimal libpython3.6-stdlib libsmartcols1 libss2 libsystemd0 libudev1 libuuid1
linux-firmware lxcfs lxd lxd-client mount open-iscsi open-vm-tools parted psmisc python-apt-common python3 python3-apport python3-apt
python3-distupgrade python3-gdbm python3-minimal python3-problem-report python3-software-properties python3-update-manager python3.6
python3.6-minimal snapd software-properties-common sosreport systemd systemd-sysv tar tmux ubuntu-keyring ubuntu-release-upgrader-core udev
unattended-upgrades update-manager-core update-notifier-common util-linux uuid-runtime
94 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 115 MB of archives.
After this operation, 14.1 MB of additional disk space will be used.
Do you want to continue? [Y/n]
从此我必须决定是否可以安全升级。软件包列表实在是太丑陋和混乱了。我希望对将要升级的内容有一个更好的概述。
例如,yum
(来自 CentOS)在升级时提供了更清晰的视图。可以轻松查看哪些软件包将升级、升级到哪个版本(例如,是小版本还是大版本跳转)以及要下载的软件包有多大。
$ sudo yum update
Loaded plugins: changelog, fastestmirror
Setting up Update Process
Loading mirror speeds from cached hostfile
* base: centos.mirrors.as250.net
* epel: ftp.plusline.net
* extras: ftp.hosteurope.de
* updates: ftp.plusline.net
Resolving Dependencies
--> Running transaction check
---> Package geoipupdate.x86_64 0:2.2.1-2.el6 will be updated
---> Package geoipupdate.x86_64 0:3.1.1-2.el6 will be an update
---> Package gsoap.x86_64 0:2.7.16-6.el6 will be updated
---> Package gsoap.x86_64 0:2.7.16-7.el6 will be an update
--> Finished Dependency Resolution
Dependencies Resolved
============================================================================================================
Package Arch Version Repository Size
============================================================================================================
Updating:
geoipupdate x86_64 3.1.1-2.el6 epel 37 k
gsoap x86_64 2.7.16-7.el6 epel 199 k
Transaction Summary
============================================================================================================
Upgrade 2 Package(s)
Total size: 236 k
Is this ok [y/N]:
答案1
您可以通过请求更详细的版本输出来获得更好的输出(-V
,,--verbose-versions
请参阅男人apt-get
):
# apt upgrade -V
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
apt (1.6.2 => 1.6.8)
base-files (10.1ubuntu2 => 10.1ubuntu2.3)
bsdutils (1:2.31.1-0.4ubuntu3.1 => 1:2.31.1-0.4ubuntu3.3)
[...]
util-linux (2.31.1-0.4ubuntu3.1 => 2.31.1-0.4ubuntu3.3)
26 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 8002 kB of archives.
After this operation, 46.1 kB of additional disk space will be used.
Do you want to continue? [Y/n]
另请参阅apt list --upgradable
(已突出显示输出!):
$ apt list --upgradable
Listing... Done
apt/bionic-updates 1.6.8 amd64 [upgradable from: 1.6.2]
base-files/bionic-updates 10.1ubuntu2.3 amd64 [upgradable from: 10.1ubuntu2]
[...]
util-linux/bionic-updates 2.31.1-0.4ubuntu3.3 amd64 [upgradable from: 2.31.1-0.4ubuntu3.1]
答案2
我看到两种解决方案:
apt
在/中使用模拟apt-get
:$ sudo apt dist-upgrade --simulate Reading package lists... Done Building dependency tree Reading state information... Done Calculating upgrade... Done The following packages were automatically installed and are no longer required: linux-headers-4.15.0-20 linux-headers-4.15.0-20-generic linux-image-4.15.0-20-generic linux-modules-4.15.0-20-generic linux-modules-extra-4.15.0-20-generic Use 'sudo apt autoremove' to remove them. The following NEW packages will be installed: libllvm7 libwayland-egl1 The following packages will be upgraded: apt apt-utils bsdutils cups cups-bsd cups-client cups-common cups-core-drivers cups-daemon cups-ipp-utils cups-ppdc cups-server-common deja-dup e2fsprogs fdisk gir1.2-nma-1.0 gir1.2-totem-1.0 gjs gnome-shell-extension-ubuntu-dock grub-common grub-pc grub-pc-bin grub2-common gvfs gvfs-backends gvfs-bin gvfs-common gvfs-daemons gvfs-fuse gvfs-libs irqbalance kmod libapt-inst2.0 libapt-pkg5.0 libasound2 libasound2-data libblkid1 libcairo-gobject2 libcairo2 libcom-err2 libcups2 libcupscgi1 libcupsimage2 libcupsmime1 libcupsppdc1 libdrm-amdgpu1 libdrm-common libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libdrm2 libegl-mesa0 libegl1-mesa libext2fs2 libfdisk1 libgbm1 libgjs0g libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libglx-mesa0 libkmod2 libmount1 libnma0 libnss-myhostname libnss-systemd libpam-systemd libsmartcols1 libsmbclient libss2 libsystemd0 libtotem0 libudev1 libuuid1 libwayland-client0 libwayland-cursor0 libwayland-egl1-mesa libwayland-server0 libwbclient0 libxatracker2 linux-firmware mesa-va-drivers mesa-vdpau-drivers mount network-manager-gnome python-apt-common python3-apt python3-distupgrade python3-update-manager rfkill samba-libs snapd systemd systemd-sysv tar thermald totem totem-common totem-plugins ubuntu-release-upgrader-core ubuntu-release-upgrader-gtk udev update-manager update-manager-core update-notifier update-notifier-common util-linux uuid-runtime 108 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Inst bsdutils [1:2.31.1-0.4ubuntu3.2] (1:2.31.1-0.4ubuntu3.3 Ubuntu:18.04/bionic-updates [amd64]) Conf bsdutils (1:2.31.1-0.4ubuntu3.3 Ubuntu:18.04/bionic-updates [amd64]) Inst libext2fs2 [1.44.1-1ubuntu1] (1.44.1-1ubuntu1.1 Ubuntu:18.04/bionic-updates [amd64]) [e2fsprogs:amd64 on libext2fs2:amd64] [e2fsprogs:amd64 ] Conf libext2fs2 (1.44.1-1ubuntu1.1 Ubuntu:18.04/bionic-updates [amd64]) [e2fsprogs:amd64 ] Inst e2fsprogs [1.44.1-1ubuntu1] (1.44.1-1ubuntu1.1 Ubuntu:18.04/bionic-updates [amd64]) ...
使用 Aptitude 的交互式形式,而不是简单的
apt
/apt-get
注意:我已折叠需要升级的软件包部分以提高其他部分的可读性。
答案3
我正在用这个
groot@debian:~# apt list --upgradable | column -t | awk '{print $1"\t"$2"\t"$6}' | column -t | tr -d "]"
Listing...
e2fslibs/stable 1.44.5-1+deb10u2 1.44.5-1+deb10u1
e2fsprogs-l10n/stable 1.44.5-1+deb10u2 1.44.5-1+deb10u1
e2fsprogs/stable 1.44.5-1+deb10u2 1.44.5-1+deb10u1
gir1.2-ibus-1.0/stable 1.5.19-4+deb10u1 1.5.19-4
libcom-err2/stable 1.44.5-1+deb10u2 1.44.5-1+deb10u1
libexpat1/stable 2.2.6-2+deb10u1 2.2.6-2
libext2fs2/stable 1.44.5-1+deb10u2 1.44.5-1+deb10u1
libibus-1.0-5/stable 1.5.19-4+deb10u1 1.5.19-4
libibus-1.0-dev/stable 1.5.19-4+deb10u1 1.5.19-4
libss2/stable 1.44.5-1+deb10u2 1.44.5-1+deb10u1
libssl1.1/stable 1.1.1d-0+deb10u2 1.1.1c-1
linux-image-4.19.0-6-amd64/stable 4.19.67-2+deb10u1 4.19.67-2
linux-libc-dev/stable 4.19.67-2+deb10u1 4.19.67-2
openssh-client/stable 1:7.9p1-10+deb10u1 1:7.9p1-10
openssh-server/stable 1:7.9p1-10+deb10u1 1:7.9p1-10
openssh-sftp-server/stable 1:7.9p1-10+deb10u1 1:7.9p1-10
openssl/stable 1.1.1d-0+deb10u2 1.1.1c-1
tzdata/stable-updates 2019c-0+deb10u1 2019b-0+deb10u1
wpasupplicant/stable 2:2.7+git20190128+0c1e29f-6+deb10u1 2:2.7+git20190128+0c1e29f-6
答案4
虽然我更喜欢很多答案而不是我自己的解决方案,但是几年前我创建了一个更新命令,它通过终端转义代码和一些管道修改了包文本(以及任何其他缩进的文本,通常不多):
function update() {
sudo apt update 2> >(sed 's/^WARNING.*//' | tr -d '\n' >&2) | tail -n1 && sudo apt upgrade -y 2>/dev/null | sed 's/^ \(.*\)/\x1b\[38;5;81m \1\x1b\[0m/' && sudo -k
}
笔记:
- 这
sed ... WARNING
部分是因为否则你会看到“警告:apt 没有稳定的 CLI 界面。在脚本中请谨慎使用。”在输出中。您可能希望保留此警告。我不希望。>2 [dest]
如果您不希望 stderr 被抑制或重新路由,请删除任何行。 apt update | tail -n1
只显示摘要,而不是全部“命中:X ftps://mirror.wherever/ubuntu miasmic-backports InRelease”和“正在执行下一组后台任务...完成”apt upgrade
行,后者无论如何都会重复- 您可以修改
sed
命令以将每个包拆分到其自己的行上,方法是用换行符替换空格,或者使用此处的其他答案之一(例如,更改详细程度,将每个包放在自己的行上) \x1b\[38;5;81m \1\x1b\[0m
就是魔法(颜色变化)发生的地方。如果你对正则表达式不太了解,\1
请粘贴之前剪切的文本(s/^ \(.*\)/
)。之前的内容\1
是颜色的 ANSI 代码。您可能需要不同的转义码(MacOS?旧色彩空间?)并且可以自定义颜色和格式在这里使用不同的数字。- 这
sudo -k
将清除您的 sudo 授权,因此如果您不喜欢这样,请删除。 -y
跳过验证。OP 可能更愿意删除它,因为既定目标是有选择地更新软件包。