![dpkg / apt-get 想要安装并覆盖不同的包](https://linux22.com/image/50700/dpkg%20%2F%20apt-get%20%E6%83%B3%E8%A6%81%E5%AE%89%E8%A3%85%E5%B9%B6%E8%A6%86%E7%9B%96%E4%B8%8D%E5%90%8C%E7%9A%84%E5%8C%85.png)
我想安装磅。这样做:
apt-get install pound
产生这个:
root@myhost:~# apt-get install pound
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
linux-headers-3.2.0-23-generic linux-headers-3.2.0-23
Use 'apt-get autoremove' to remove them.
The following NEW packages will be installed:
pound
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
2 not fully installed or removed.
Need to get 98.3 kB of archives.
After this operation, 226 kB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com/ubuntu/ precise/universe pound amd64 2.5-1.1 [98.3 kB]
Fetched 98.3 kB in 0s (418 kB/s)
Selecting previously unselected package pound.
(Reading database ... 102644 files and directories currently installed.)
Unpacking pound (from .../pound_2.5-1.1_amd64.deb) ...
Processing triggers for ureadahead ...
ureadahead will be reprofiled on next reboot
Processing triggers for man-db ...
Setting up mysql-server-5.5 (5.5.32-0ubuntu0.12.04.1) ...
Configuration file `/etc/apparmor.d/usr.sbin.mysqld'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
mysql-server 已安装并正在运行。我不想尝试重新安装这个。
Pound 包不需要 mysql-server 作为任何依赖项。
我该如何解决?
我不想升级它,因为这会导致生产系统崩溃。似乎有什么东西卡住了dpkg
,强制安装任何软件包来强制 mysql 服务器重新安装或升级。
答案1
听起来您会升级 mysql-server-5.5 软件包。该版本与中给出的版本匹配USN-1909-1,看来您还没有安装安全更新。
您应该查看配置文件的各个版本中的不同之处(D例如,通过按提示)。然后,正如提示所示,您可以使用 保留(该文件的)当前版本N,使用 接受 Ubuntu 的版本Y,或者使用 启动 shell 自己处理它(例如,合并更改)Z。
响应您的更新:
在过去的某个时刻,某人(您或此机器上的其他管理员)可能没有注意到就开始了 MySQL 升级。或者系统可能配置为自动应用安全更新,但 MySQL 由于某种原因出现故障。您可以在apt-get
输出中看到这一点:
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
2 not fully installed or removed.
毫无疑问,如果您检查过dpkg -s mysql-server-5.5
,状态行不会是install ok installed
。
不管怎样,第一次发生的事情是 dpkg 实际上从新包中解压了文件(可能也停止了 MySQL,也许这就是它被中止的原因)。它尝试“配置”MySQL,但要么在此期间出错,要么被中止。
apt
正在尝试通过配置包来解决这个问题。您也许可以dpkg -i
直接使用来绕过它(尽管dpkg
也可以尝试配置它,我不确定)
真正的解决方法是您需要安排一些停机时间并完成 MySQL 升级(并注意可能存在配置错误)。特别是因为您正在运行的版本有(根据甲骨文)可能损害机密性和完整性的远程漏洞。
答案2
2 not fully installed or removed
在你开始 apt 运行之前你就已经收到了这条消息。这是不是普通的。这通常意味着您的包数据库处于损坏或不一致的状态。如果你曾经看到过这个,立即中止。你应该先尝试跑步apt-get -f install
来解决这个问题。如果这不起作用,您可以执行其他操作,但如果您看到消息包含诸如 之类的单词,则切勿继续执行涉及包数据库的其他操作not fully installed or removed
。先解决问题。
实际上,我对 apt 让您在这种情况下继续进行感到有点惊讶。我不经常遇到这种情况,但我记得 apt 不会让你继续,直到你解决了问题。
无论如何,正如您所看到的,当您安装时pound
,apt 尝试完成 mysql 软件包的安装,这些软件包是 apt 首先警告您的软件包,并带有上述2 not fully installed or removed
消息。
注意:@derobert 在他的回答中从稍微不同的角度涵盖了相同的基础。既然你显然不理解他,我想我应该补充两分钱。