mar*_*oju 14 upgrade updates apt
执行sudo apt update
结束于
Reading package lists... Done
Building dependency tree
Reading state information... Done
2 packages can be upgraded. Run 'apt list --upgradable' to see them.
Run Code Online (Sandbox Code Playgroud)
执行apt list --upgradable
给了我
Listing... Done
onionshare/bionic,bionic 2.2.ppa1-1 all [upgradable from: 2.1-1]
ring-all/unknown 20190927.2.c2af011~dfsg1-1 amd64 [upgradable from: 20190629.2.c07ef23~dfsg1-1]
Run Code Online (Sandbox Code Playgroud)
但执行sudo apt upgrade
不会升级可升级包:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Run Code Online (Sandbox Code Playgroud)
更新:请参阅此 pastebin以获取完整的成绩单。
mar*_*oju 35
在这种情况下,\xe2\x80\x9cupgradable 包\xe2\x80\x9d 实际上是不可升级的,因为它们具有未满足的依赖关系。
\n重现:尝试通过执行来更新有问题的特定包(请参阅如何在 Ubuntu 中更新特定包)sudo apt-get install --only-upgrade <packagename>
。如果任何软件包具有未满足的依赖关系,则升级将由于以下原因而失败
E: Unable to correct problems, you have held broken packages.
升级这些包需要解决未满足的依赖关系。有关信息可以在\xe2\x80\x9c 添加 PPA 后如何解决未满足的依赖关系?\xe2\x80\x9d和\xe2\x80\x9c的答案中找到xe2\x80\x9d。
\nuse*_*788 13
您的情况中缺少的包名称不一定与本示例中的相同。但这显示了如何解决该问题。无论您在输出中看到什么名称,该技术都有效。因此,请将 ubuntu-advantage-tools 或 libnfsidmap1 等实际文件名替换为您的计算机显示需要升级的任何文件名。
所有这些命令都需要以 root 身份运行。我们通过使用 sudo 更改终端中的用户来实现此目的,而无需实际以 root 身份登录到会话。为此,请键入:
sudo su
Run Code Online (Sandbox Code Playgroud)
...并在出现提示时输入您的 root 密码。su 部分将切换用户。当输入后没有任何其他内容时,默认切换到 root。现在你已经获得了彻底搞砸计算机的权限,所以要小心“root”!
否则,您必须在所有这些命令前面单独键入 sudo。一些 Linux 纯粹主义者认为 sudo su 是错误的,但我向你保证,这与为每个命令一遍又一遍地输入 sudo 完全相同。
跑步:
apt update
Run Code Online (Sandbox Code Playgroud)
进而
apt upgrade
Run Code Online (Sandbox Code Playgroud)
...您可能会得到如下输出:
1 upgraded, 0 newly installed, 0 to remove and 8 not upgraded.
Run Code Online (Sandbox Code Playgroud)
...显示八个未升级的软件包。
其他更新相关命令可能会提供类似以下的消息:
The following packages have been kept back: evolution evolution-common evolution-plugin-bogofilter evolution-plugin-pstimport evolution-plugins libevolution libnfsidmap1 ubuntu-advantage-tools
Run Code Online (Sandbox Code Playgroud)
您需要修复这些列出的软件包,这些软件包可能缺少依赖项,导致它们无法以简单的方式升级。没有人想到在 apt Upgrade 中包含一个子例程来自动处理这些问题。所以我们只能自己做。
要列出软件包,您应该运行:
apt list --upgradable
Run Code Online (Sandbox Code Playgroud)
然后您应该手动安装这些列出的软件包。
apt install evolution evolution-common evolution-plugin-bogofilter evolution-plugin-pstimport evolution-plugins libevolution libnfsidmap1
Run Code Online (Sandbox Code Playgroud)
请注意,您可以仅输入名称之间带有空格的所有软件包,而不是单独为每个软件包运行 apt install。您可以直接在终端中从之前未升级的输出中复制此列表。在终端中处理内容时,您必须右键单击并选择“复制”或“粘贴”。Ctrl C 和 Ctrl V 键盘命令不适用于终端输出。
当然,完成所有这些可能仍然无法解决所有问题。您可能会得到如下输出:
6 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
Run Code Online (Sandbox Code Playgroud)
或者
2 packages can be upgraded. Run 'apt list --upgradable' to see them.
Run Code Online (Sandbox Code Playgroud)
然后您可以运行:
apt-get --with-new-pkgs upgrade
Run Code Online (Sandbox Code Playgroud)
...显示剩余的包。这应该输出类似的内容
The following packages have been kept back: libnfsidmap1 ubuntu-advantage-tools
Run Code Online (Sandbox Code Playgroud)
然后你只需要出于某种不正当的原因单独手动安装它们。就我而言,我输入:
apt install ubuntu-advantage-tools
Run Code Online (Sandbox Code Playgroud)
和
apt install libnfsidmap1
Run Code Online (Sandbox Code Playgroud)
同样,此处安装的名称应替换为您的计算机显示未升级的名称。
这应该可以解决其余两个在之前的 list 命令中无法安装的问题。运行 apt update 然后 apt update 应该输出:
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Run Code Online (Sandbox Code Playgroud)
完毕!
您可能还想运行:
sudo apt-get --with-new-pkgs upgrade
Run Code Online (Sandbox Code Playgroud)
进而
sudo apt autoremove
Run Code Online (Sandbox Code Playgroud)
正如我在其他地方看到的建议。但仅此一点并没有解决我的问题。
小智 7
您可以运行下面的命令行来升级所有可升级的软件包及其依赖项:
sudo apt-get dist-upgrade
归档时间: |
|
查看次数: |
18824 次 |
最近记录: |