很久之后,我尝试更新 Ubuntu 20.04,但由于某些 MySQL 错误而失败。我在网上搜索,建议的答案是rm
mysql 目录。我照做了,但仍然没有解决问题。
我试过了dpkg --remove --force-all mysql-server-8.0
,但是它说:
Unit mysql.service could not be found. dpkg: error while cleaning up:
...post-installation script subprocess returned error
apt purge/upgrade/remove 失败,
The package mysql-server-8.0 needs to be reinstalled
我不记得安装过 MySQL,但即使我安装了,我也不需要 MySQL。我根本不关心它。我怎样才能彻底清除 MySQL 并让 apt 再次工作?
test@ubuntu:~$ sudo apt install --reinstall mysql-server-8.0
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: The package mysql-server-8.0 needs to be reinstalled, but an archive for it can't be found.
test@ubuntu: $ sudo apt purge mysql-server-8.0
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: The package mysql-server-8.0 needs to be reinstalled, but an archive for it can't be found.
test@ubuntu:~$ sudo apt install mysql-server --reinstall
Reading state information... Done
Reading package lists... Done
Building dependency tree
E: The package mysql-server-8.0 needs to be reinstalled, but an archive for it can't be found.
~$ sudo apt purge mysql-server-core-8.0 -f
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
galera-3 libaio1 libcgi-fast-perl libcgi-pm-perl libconfig-inifiles-perl
libevent-core-2.1-7 libevent-pthreads-2.1-7 libfcgi-perl
libhtml-template-perl libllvm10 libllvm11 libmecab2 libreadline5
libterm-readkey-perl linux-headers-5.4.0-42 linux-headers-5.4.0-42-generic
linux-image-5.4.0-42-generic linux-modules-5.4.0-42-generic
linux-modules-extra-5.4.0-42-generic mecab-ipadic mecab-ipadic-utf8
mecab-utils socat
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED
mysql-server-8.0* mysql-server-core-8.0*
0 to upgrade, 0 to newly install, 2 to remove and 3 not to upgrade.
1 not fully installed or removed.
After this operation, 137 MB disk space will be freed.
Do you want to continue? [Y/n]
dpkg: error processing package mysql-server-8.0 (--remove):
package is in a very bad inconsistent state; you should
reinstall it before attempting a removal
dpkg: too many errors, stopping
Errors were encountered while processing:
mysql-server-8.0
Processing was halted because there were too many errors.
E: Sub-process /usr/bin/dpkg returned an error code (1)
和
$ sudo dpkg -i --force-all mysql-server-8.0_8.0.27-0ubuntu0.20.04.1_amd64.deb
(Reading database ... 471728 files and directories currently installed.)
Preparing to unpack mysql-server-8.0_8.0.27-0ubuntu0.20.04.1_amd64.deb ...
Failed to stop mysql.service: Unit mysql.service not loaded.
invoke-rc.d: initscript mysql, action "stop" failed.
dpkg: warning: old mysql-server-8.0 package pre-removal script subprocess returned error exit status 1
dpkg: trying script from the new package instead ...
Failed to stop mysql.service: Unit mysql.service not loaded.
invoke-rc.d: initscript mysql, action "stop" failed.
dpkg: error processing archive mysql-server-8.0_8.0.27-0ubuntu0.20.04.1_amd64.deb (--install):
new mysql-server-8.0 package pre-removal script subprocess returned error exit status 1
Failed to stop mysql.service: Unit mysql.service not loaded.
invoke-rc.d: initscript mysql, action "stop" failed.
Failed to preset unit: File mysql.service: Link has been severed
/usr/bin/deb-systemd-helper: error: systemctl preset failed on mysql.service: No such file or directory
Failed to start mysql.service: Unit mysql.service not found.
invoke-rc.d: initscript mysql, action "start" failed.
Unit mysql.service could not be found.
dpkg: error while cleaning up:
installed mysql-server-8.0 package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
mysql-server-8.0_8.0.27-0ubuntu0.20.04.1_amd64.deb
答案1
如果您找不到 Mysql 的存档,请尝试手动安装该存档。
首先,尝试下载 deb 文件是否有效:
sudo apt download mysql-server-8.0
现在,使用dpkg
编译档案:
sudo dpkg -i --force-all ./*.deb
如果上述方法不起作用,请尝试:
首先,点击这里,然后 deb 文件就会开始下载。
之后使用dpkg -i
命令安装.deb
文件。
我不确定,但您也可以运行以下命令来下载 deb 并安装它:
wget https://dev.mysql.com/get/mysql-apt-config_0.8.20-1_all.deb && sudo dpkg -i *.deb
之后,运行上述代码:
sudo apt install mysql-server-8.0
如果上述方法不起作用那么purge
MySQL:
sudo dpkg -P mysql*
以下是删除 MySQL 的另一种方法:
sudo mv /var/lib/dpkg/info/mysql* ~/ && sudo apt -f install
如果以上方法均无效,那么最后要尝试的是:
首先,将内容改为/etc/apt/sources.list
:
deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
deb http://archive.canonical.com/ubuntu focal partner
deb-src http://archive.canonical.com/ubuntu focal partner
apt update
然后运行:
sudo apt download mysql-server-8.0
sudo dpkg -i --force-all ./*.deb
如果这也不起作用那么
如果上述方法不起作用那么我建议重新安装 Ubuntu。