升级 mysql-server-5.1 时 apt-get 挂起

Rob*_*Rob 9 aptitude ubuntu ubuntu-10.04

当我尝试执行以下操作时:

sudo apt-get update
sudo apt-get upgrade
Run Code Online (Sandbox Code Playgroud)

在我的 Ubuntu Server 10.04 安装中,它挂在以下行:

Preparing to replace mysql-server-5.1 5.1.41-3ubuntu12.1 (using .../mysql-server-5.1_5.1.41-3ubuntu12.3_i386.deb)
Run Code Online (Sandbox Code Playgroud)

我什至不能 CTRL-C 退出它!我最终不得不终止我的会话并从不同的终端登录,并且升级过程仍在运行。我已经重新启动了几次,当我回去再试时,它告诉我:

E: dpkg was interrupted, you must manually run 'sudo --configure -a' to correct the problem.
Run Code Online (Sandbox Code Playgroud)

一旦我这样做了,我就回到了第一阶段,当我尝试升级 mySQL 时它会冻结。

小智 6

显然更新正在等待服务器启动,但由于某种原因它没有启动。要解决这个问题,有几种可能性。

最简单的:

  1. 打开一个新终端,然后运行:

    sudo services mysql start
    
    Run Code Online (Sandbox Code Playgroud)

更复杂但有时是必要的:(当您无法访问另一个终端时,这很方便):

  1. 按“^z”(Ctrl+ Z)这将“停止”您的工作。然后运行:

    sudo services mysql start
    
    Run Code Online (Sandbox Code Playgroud)
  2. 服务器启动后,键入以下内容并按 Enter:

    fg 
    
    Run Code Online (Sandbox Code Playgroud)

    这会将您的“已停止”工作放回前台并从停止的地方继续。


msw*_*msw 2

备份数据库后,尝试使用低于 apt 的级别:

sudo dpkg -r mysql-server
sudo apt-get check    # verify that apt's metadata is okay
sudo apt-get install mysql-server
Run Code Online (Sandbox Code Playgroud)

添加

因为dpkg -r令人窒息的尝试dpkg --purge和失败,用 zap 获取包内容dpkg -L mysql-server-5.1,然后在/var/lib/dpkg.

我从来没有见过事情变得如此毛茸茸的,抱歉。

如果一开始你没有成功

我在这里大声思考,请原谅我。mysql-server 元包包含或需要这些包:

libdbd-mysql-perl
libdbi-perl
libhtml-template-perl
libnet-daemon-perl
libplrpc-perl
mysql-client-5.1
mysql-client-core-5.1
mysql-server
mysql-server-5.1
mysql-server-core-5.1

包管理的元数据是令人愉快地解耦的,有中央存储库,但包是独立的。/var/cache/apt/archives*.deb已安装的文件所在的位置。

首先,强制 dpkg 忘记这些软件包(冒着无法删除我们无论如何都要替换的某些文件的风险)。

for i in mysql-server-core-5.1 mysql-server-5.1 ... ; do
    sudo dpkg -r --force-remove-reinstreq $i
done
Run Code Online (Sandbox Code Playgroud)

然后获取完整安装所需的 .deb 文件:

sudo apt-get install --download-only mysql-server
Run Code Online (Sandbox Code Playgroud)

然后尝试一一安装:

cd /var/cache/apt/archives
sudo dpkg -i mysql-server-core-5.1_5.1.41-3ubuntu12.3_i386.deb
Run Code Online (Sandbox Code Playgroud)

如果您在那里遇到问题,请尝试:

sudo dpkg -D77777 -i mysql-server-core-5.1... > 2>&1 /tmp/dpkg.log.$$
Run Code Online (Sandbox Code Playgroud)

并尝试从日志文件中的无数行中找到相关行并将其发布到此处。祝你好运,万事如意。