清除后无法重新安装mysql-server


29

我最近重新安装了Ubuntu 16.04。我还通过安装了mysql-servermysql-client(其默认版本为5.7.12)apt-get install

因为5.7.12出现了一些问题,所以我决定将其卸载。我apt-get remove mysql-server mysql-client先尝试了一下,但发现类似的东西/etc/mysql/var/lib/mysql没有被删除。

然后apt-get --purge removed mysql-server mysql-client,我尝试了一下,但仍然没有区别。

因此,我通过手动删除了它们rm -rf。我还手动删除了所有来自诸如的依赖包的*mysql*文件。/usr/mysql-*mysql-common

但是,现在,当我希望重新安装时mysql-server and -client,我发现我不能。

实际上,现在我处在既不能apt-get remove mysql-server也不可以apt-get install mysql-server

如何解决我所处的状况?如果我的本地软件包存储库元数据已损坏,该如何修复?

我不愿意将所有受祝福的操作系统与其他所有应用程序和环境重新安装,仅一次是因为mysql-server

例如,以下是我尝试删除时遇到的错误mysql-server

$ apt-get remove  mysql-server
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-common mysql-server-5.7 mysql-server-core-5.7
Use 'apt autoremove' to remove them.
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] 
(Reading database ... 237601 files and directories currently installed.)
Removing mysql-server (5.7.12-0ubuntu1) ...
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
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)

当尝试安装时,出现此错误:

$ apt-get -f install mysql-server
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  mysql-server
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
Need to get 0 B/10.1 kB of archives.
After this operation, 159 kB of additional disk space will be used.
Selecting previously unselected package mysql-server.
(Reading database ... 237599 files and directories currently installed.)
Preparing to unpack .../mysql-server_5.7.12-0ubuntu1_all.deb ...
Unpacking mysql-server (5.7.12-0ubuntu1) ...
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
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)

这是的输出apt-get install -f

$ apt-get install -f 
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) ...
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
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)

看起来mysql-server-5.7状态很糟,请尝试重新安装它:sudo apt-get install --reinstall mysql-server-5.7
fkraiem '16

没关系,我得到相同的错误行:... invoke-rc.d: initscript mysql, action "start" failed. ...我正在使用其他类型的安装命令。
哈里

尝试删除它,然后... sudo apt-get remove --purge mysql-server-5.7。请注意,这实际上是mysql-server-5.7我们在谈论的内容,而不是mysql-server
fkraiem '16

@Harry很多次,我重新启动系统以摆脱这种类型的错误。
雏菊

我的问题通过关注此职位
Raizal IN Daughtera

Answers:


80

2017年1月10日编辑:这是对本帖子的主要评论,以纠正本帖子中的严重问题。

内心的错误

问题是该软件包仍处于半安装和半配置状态,并且需要显式删除。

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)

它的真正含义是该软件包mysql-server-5.7是的依赖项mysql-server,已经安装但未配置。因此,您需要purge删除留下的那些面包屑mysql-server-5.7

sudo apt purge mysql-server mysql-server-5.7

基本原理

使用来安装软件时apt,它也会自动为您处理依赖性。

当您删除某些程序包时,它可能无法处理那些相同的依赖项。在这篇文章中,这种依赖关系是mysql-server-5.7

您可以通过发出以下命令来检查包状态。

dpkg-query -l [package-name-here]

通常,如果您看到代码unrc包名称的左侧,就可以知道它是否实际上是损坏的包。

当我遇到此问题时,它与libapache2-mod-php和在一起libapache2-mod-php7.0。这是我的输出。

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                        Version            Architecture       Description
+++-===========================-==================-==================-============================================================
un  libapache2-mod-php          <none>             <none>             (no description available)

就我而言,它声称我的软件包状态未知并且尚未安装(代码 un在系统上)。

当你告诉aptremove的东西,它可以离开包,配置文件和其他项目,可以在自动安装问题。

当你告诉aptpurge东西它确实是最好的,以消除任何面包屑即remove可能会留下。

最初,我以为我假设该进程仍在运行,但很可能是非活动状态或已死。

检查服务是否干扰您的包裹移除的最好方法是首先检查该服务。

1)调查 mysql服务

使用所提供给我们的系统错误apt,我们实际上可以systemctl通过检查mysql服务状态来调查错误

sudo systemctl status [pattern]

在我们的例子中,我们想查看mysql是否正在运行,因此可以输入

systemctl status mysql.service

如果服务正在运行,您应该看到此输出

systemctl status mysql
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2017-01-10 23:10:06 EST; 1h 3min ago
 Main PID: 1206 (mysqld)
   CGroup: /system.slice/mysql.service
           └─1206 /usr/sbin/mysqld

注意:如果该服务已失效,您将看到一条短消息,指示该名称的服务没有运行,然后跳至步骤3。

2)mysql使用停止服务systemctl

注意:[pattern]必须是service或列出的名称initctl。我使用的原因pattern是因为systemctl使用了正则表达式匹配,因此如果必须使用kill参数,请务必小心。

sudo systemctl stop [pattern]

其中pattern代表mysql守护程序/服务名称。如果停止不起作用,请尝试

sudo systemctl kill [pattern]

例如

sudo systemctl stop mysql

3)卸载/清除 mysql

如果您需要完全清除,请确保先停止服务或进程,然后确保删除了正确的文件和目录!

注意:确保您定位的是正确的mysql版本。例如,如果使用5.5,请适当调整版本号。

警告:以下步骤将删除您的数据!(必须执行第一个命令以进行备份)

来源:如何卸载MySQL?

tar -zcvf ~/msql_backup.tar.gz /etc/mysql /var/lib/mysql 
sudo apt purge mysql-server mysql-client mysql-common mysql-server-core-5.7 mysql-client-core-5.7
sudo rm -rfv /etc/mysql /var/lib/mysql
sudo apt autoremove
sudo apt autoclean

4)修复损坏的程序包并处理缺少的依赖项

如果前面的步骤没有为你工作,你可能需要运行apt--fix-broken维修所造成的损毁选项。

确保apt update先然后apt install

sudo apt update    
sudo apt install mysql-server mysql-client --fix-broken --fix-missing

5)当一切都失败了,编译和安装mysql你自己

如果以上方法均无效,则必须手动下载源代码,进行编译,并使用make或bash从此处进行安装(由于它是完全自动化的,因此听起来并不痛苦)。


“ 16.04目前正布满大量错误。” 适用于我,包括MySQL。在我看来,我们在这里看到的大多数问题都源于人们在做错事,例如尝试rm文件属于软件包。
fkraiem 2016年

1
优秀的工作伙伴!谢谢。我用一些愚蠢的指示浪费了我的一整天。现在这个工作了!
Renjith VR

我已按照您的指示进行操作,并且sudo systemctl stop mysql似乎正常工作。但是,重新启动后,它又被破坏了。启动或停止不起作用。mysql的sudo systemctl状态显示:活动:自星期一2016-06-27 11:05:22 BST起停用(stop-sigterm);8分钟前,我真的必须等待10分钟才能停止mysql吗?您是否对人们清除没有完全停止的服务感到惊讶?Ubuntu 16.04是否可以修复它?回到以前的LTS版本或其他发行版,有哪些选择?
ruby_object

感谢您删除并重新安装这种方式非常有效!
Louwki

5
注意:sudo rm -rf /var/lib/mysql将删除您在默认位置的所有数据库。首先备份!
奥古斯托

7

第一篇文章的问题是您不能很好地为SQL项目重新配置元软件包。您需要指定当前发布项目。

说使用;

apt search mysql-server

那应该显示软件包列表

“ mysql-server-5.7”“ mysql-server-core-5.7”或更高版本

然后;

dpkg-reconfigure --force mysql-server-5.7 mysql-server-core-5.7

完成。


4

这是适合您的正确解决方案

首先,您将必须删除所有mysql-server软件包:

警告:以下步骤将删除您的数据!请先备份!

sudo rm -rf /var/lib/mysql

然后安装:

sudo apt-get install lamp-server^

或者,您可以执行以下操作:

sudo apt-get install mysql-server

0

我看到了这个

Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.

提示仍然存在错误的启动脚本。

查找/etc/init.d/mysql及其任何符号链接。删除这些似乎可以解决我的重新安装后清除问题。


0

从MySQL切换到MariaDB(https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1490071)时也会发生此错误。

MySQL二进制数据文件与MariaDB不兼容,所以我切换回MySQL,因为我没有时间去弄乱mysqldump。

首先,我必须将MariaDB数据移开/var/lib/mysql,然后安装MySQL,然后将原始数据/var/lib/mysql-5.7(此备份是在错误发生之前自动创建的)从移到/var/lib/mysql


-2

尝试apt-get -f install修复损坏的SQL程序包,如果程序包管理器仍然存在问题,请下载SQL Server源代码并进行编译!!但是尝试上面的命令,并用于dpkg -l | grep sql找出程序包管理器是否仍然认为您是SQL ..


不工作。我还包括尝试安装软件包时遇到的错误。
哈里

@Harry您应该apt-get -f install自己运行,而不指定软件包名称。
fkraiem '16

正如fkraim所说,使用它时请不要使用包名...
Ali Ghasempour

附加的输出apt-get install -f,无变化。
哈里

尝试突触应用程序,并检查它是否表示软件包是否损坏(如果您使用的是台式机,则在左列)
Ali Ghasempour 2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.