Leo*_*opd 18 package-management apt 12.04
Apt 似乎无法为我做任何有用的事情,反复给出这种形式的消息:
dpkg: dependency problems prevent configuration of linux-server:
linux-server depends on linux-image-server (= 3.2.0.37.44); however:
Version of linux-image-server on system is 3.2.0.37.45.
linux-server depends on linux-headers-server (= 3.2.0.37.44); however:
Version of linux-headers-server on system is 3.2.0.37.45.
dpkg: error processing linux-server (--configure):
dependency problems - leaving unconfigured
Run Code Online (Sandbox Code Playgroud)
这基本上是相同的问题,因为我无法安装任何已关闭的包(linux-image-server、linux-server 依赖项错误)复制到对这种情况完全无用的答案。关于依赖项的非常通用的答案中的任何建议都没有帮助。
明确:
sudo apt-get clean
sudo apt-get autoclean
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)
都没有效果。尽管
sudo apt-get -f install
sudo dpkg --configure -a
sudo apt-get -u dist-upgrade
sudo apt-get -o Debug::pkgProblemResolver=yes dist-upgrade
Run Code Online (Sandbox Code Playgroud)
都给出了上述错误消息的某种形式。
Eli*_*gan 20
你跑了sudo apt-get update
,问题依旧。所以,你可能只是有一个新版本linux-image-server
,并linux-headers-server
比任何linux-server
可用的包从配置的软件的来源。
即使您正在使用中央服务器,这也可能会在很短的时间内发生(如果更新出现问题,则可能会发生更长的时间)。我的理解是,如果您使用镜子,它可能会发生更长的时间。这并不意味着您不应该使用镜像——中央服务器 ( http://archive.ubuntu.com
) 通常非常慢,而国家、地区或其他镜像要快得多。
一个软件包搜索发现,两者的3.2.0.37.45版本linux-image-server
,并linux-server
为Ubuntu 12.04存在。所以它可能与你的镜子有关。
以下是一些替代方案:
如果您能够将包管理器用于其他目的,例如安装其他包,那么您可以忽略这一点。当您的镜像更新时,您可能只会获得该软件包。
没有最新的linux-server
包不是问题,因为它是一个不提供任何实际软件的元包。它的存在只是为了可以列出三个包作为依赖项,确保它们保持安装:
你已经有最新版本的linux-headers-server
和linux-image-server
。我的猜测是这是一个 64 位系统,这就是为什么没有显示关于的消息linux-generic-pae
。似乎一切都很好。
然而:
http://security.ubuntu.com
. 该服务器应始终在/etc/apt/sources.list
. 所以我建议检查以确保已启用。您可能需要sources.list
在编辑之前进行备份( sudo cp /etc/apt/sources.list /etc/apt/sources.list.old
)。该问题也可能是缓存 Web 代理(如果您使用)与陈旧数据的结果。(下面的解决方案也可以解决这个问题。)我猜您正在运行 Ubuntu Server 系统并且可能没有安装 GUI。所以,请看:
更改镜像后,运行:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
Run Code Online (Sandbox Code Playgroud)
如果您愿意,您可以在linux-server
更新后更改您的服务器。
.deb
包文件您可以在 Ubuntu 12.04 中手动下载并安装.deb
最新版本的linux-server
元包文件。
cd
到任何你想下载包的地方。
如果这是 64 位系统,请运行:
wget https://launchpad.net/ubuntu/+archive/primary/+files/linux-server_3.2.0.23.25_amd64.deb
Run Code Online (Sandbox Code Playgroud)
如果这是 32 位系统,请改为运行:
wget https://launchpad.net/ubuntu/+archive/primary/+files/linux-server_3.2.0.23.25_i386.deb
Run Code Online (Sandbox Code Playgroud)
(我linux-meta
在 Ubuntu 中的源包的 Launchpad 页面上获得了这两个链接。)
现在(对于 64 位和 32 位),运行以下命令来安装软件包:
sudo dpkg -i linux-server_3.2.0.23.25_*.deb
Run Code Online (Sandbox Code Playgroud)
(或者只是开始输入包的名称并使用Tab它来完成它。)
由于它是一个提供您已有软件的元软件包,您可以删除该软件包。然后你就不会再收到错误了。如果您愿意,可以稍后重新安装(您可以定期运行apt-get update && apt-cache policy linux-server
以查看新版本是否可用)。
如果要删除它,有两个步骤。首先是卸载linux-server
。第二个是确保以后不会自动删除这些包。
依赖将不会被删除,立即。因此,您先执行这些步骤中的哪一个并不重要。
linux-server
。要卸载linux-server
,只需运行:
sudo apt-get remove linux-server
Run Code Online (Sandbox Code Playgroud)
要告诉 APT(包管理器)您打算安装的包,即使没有任何声明它们是依赖项,请将它们标记为手动安装。
为此,如果这是 64 位系统,请运行以下命令:
sudo apt-mark manual linux-image-server linux-headers-server
Run Code Online (Sandbox Code Playgroud)
如果是 32 位系统,请改为运行:
sudo apt-mark manual linux-image-server linux-headers-server linux-generic-pae
Run Code Online (Sandbox Code Playgroud)
(你应该有,apt-mark
但如果你没有并且你不能安装软件,你可以使用apt-get install
而不是apt-mark manual
--specifying 一个包手动安装,即使已经安装,它也会被标记为手动安装。)
来源: 将 deb 包标记为已使用,因此不建议自动删除
(特别是Lekensteyn 的回答。)
归档时间: |
|
查看次数: |
10675 次 |
最近记录: |