如何修复损坏的软件包安装 (mysql)

Jon*_*han 17 mysql package-management apt

升级到 Ubuntu 16.04 后,我注意到 mysql 出现了令人难以置信的错误。确信这是一个损坏的设置,我尝试清除 mysql。这似乎并没有删除所有内容,所以我尝试自己做:

sudo rm -r /etc/mysql
sudo rm -r /usr/share/mysql-workbench
sudo rm -r /usr/share/mysql
sudo rm -r /usr/share/mysql-common
Run Code Online (Sandbox Code Playgroud)

这是一个错误。永远不要尝试这样做。现在 mysql 甚至无法正确安装。我试过重新安装依赖项:

sudo apt-get install --reinstall $(apt-cache depends mysql-server | grep -Po 'Depends:\s+\K[^ ]+$' | tr '\n' ' ' )
Run Code Online (Sandbox Code Playgroud)

和包本身:

sudo apt install mysql-workbench mysql-server --reinstall
Run Code Online (Sandbox Code Playgroud)

但是我收到了各种神秘的错误,例如:

sudo apt-get install --reinstall mysql-server
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not         upgraded.
2 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
E: Internal Error, No file name for mysql-server:amd64
Run Code Online (Sandbox Code Playgroud)

和卸载

sudo apt-get remove mysql-common
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 libmysqlclient20 : Depends: mysql-common (>= 5.5) but it is not going to be installed
 mariadb-client-core-10.0 : Depends: mariadb-common (>= 10.0.24-7) but it is not going to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.
Run Code Online (Sandbox Code Playgroud)

或者如果我重新配置

sudo dpkg --configure -a
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
/var/lib/dpkg/info/mysql-server-5.7.postinst: line 112: /usr/share/mysql-common/configure-symlinks: No such file or directory
dpkg: error processing package mysql-server-5.7 (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-server-5.7; however:
  Package mysql-server-5.7 is not configured yet.

dpkg: error processing package mysql-server (--configure):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 mysql-server-5.7
 mysql-server
Run Code Online (Sandbox Code Playgroud)

或者,如果我强制安装:

sudo apt-get -f install
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
2 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
/var/lib/dpkg/info/mysql-server-5.7.postinst: line 112: /usr/share/mysql-common/configure-symlinks: No such file or directory
dpkg: error processing package mysql-server-5.7 (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-server-5.7; however:
  Package mysql-server-5.7 is not configured yet.

dpkg: error processing package mysql-server (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
                                                                                                          Errors were encountered while processing:
 mysql-server-5.7
 mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)
Run Code Online (Sandbox Code Playgroud)

或者,如果我进行清除:

sudo apt-get -f purge mysql-server 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  mysql-server*
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
2 not fully installed or removed.
After this operation, 159 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 348226 files and directories currently installed.)
Removing mysql-server (5.7.12-0ubuntu1) ...
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
/var/lib/dpkg/info/mysql-server-5.7.postinst: line 112: /usr/share/mysql-common/configure-symlinks: No such file or directory
dpkg: error processing package mysql-server-5.7 (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 mysql-server-5.7
E: Sub-process /usr/bin/dpkg returned an error code (1)
Run Code Online (Sandbox Code Playgroud)

apt 无法从部分安装中恢复吗?我必须重新安装操作系统吗??

Vid*_*uth 28

执行以下操作清除损坏的包:

sudo apt-get clean
sudo apt-get update
sudo dpkg -r mysql-client-5.7
sudo dpkg -r mysql-server-5.7
sudo dpkg -r libmysqlclient20:i386
sudo dpkg -r libmysqlclient20:amd64
sudo dpkg -r libmysqlclient18:amd64
sudo dpkg -r mysql-common
sudo dpkg -r mysql 
Run Code Online (Sandbox Code Playgroud)

之后重新安装它:

sudo apt-get install mysql mysql-client* mysql-server*
Run Code Online (Sandbox Code Playgroud)


Jon*_*han 16

感谢@Videonauth

sudo dpkg -r mysql-client-5.7
sudo dpkg -r mysql-server-5.7
sudo dpkg -r libmysqlclient20:i386
sudo dpkg -r libmysqlclient20:amd64
sudo dpkg -r libmysqlclient18:amd64
sudo dpkg -r mysql-common
Run Code Online (Sandbox Code Playgroud)

然后运行:

sudo apt-get purge mysql\* mariadb\* libmysql\* libmariadb\*
Run Code Online (Sandbox Code Playgroud)

如果有任何失败,只需运行sudo dpkg -r <failedpackage>,如果失败,只需删除依赖于它的包。如果重复,最终 apt-get 将再次起作用。

另请参阅dpkg 和 aptitude/apt-get 有什么区别?


rah*_*hul 11

尝试这个,

运行此命令清除 mysql,用您安装的版本替换 5.7 版本

sudo apt purge mysql-client-5.7 mysql-client-core-5.7 mysql-common mysql-server-5.7 mysql-server-core-5.7 mysql-server
Run Code Online (Sandbox Code Playgroud)

运行它来清理和更新包

sudo apt update && sudo apt dist-upgrade && sudo apt autoremove && sudo apt -f install
Run Code Online (Sandbox Code Playgroud)

最后安装mysql

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

这对我有用。

  • 这对我有用,其中选择的答案没有(它在`sudo dpkg -r mysql-client-5.7`上失败) (2认同)