Как исправить ошибку «пакет находится в очень плохом состоянии. несовместимое состояние »?

Недавно я попытался установить пакет mysql-server-8.0 на свой компьютер, используя Ubuntu 20.04. У меня возникли некоторые проблемы, и я решил полностью отключить и снова переустановить mysql.

Итак, если я попытаюсь удалить его с помощью sudo apt-get remove mysql-server-8.0 , я получу следующее вывод:

sudo apt-get remove mysql-server-8.0
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  linux-headers-5.4.0-54 linux-headers-5.4.0-54-generic linux-image-5.4.0-54-generic linux-modules-5.4.0-54-generic linux-modules-extra-5.4.0-54-generic mecab-ipadic mecab-ipadic-utf8 mecab-utils python3-imdbpy
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
  mysql-server-8.0
0 upgraded, 0 newly installed, 1 to remove and 3 not upgraded.
2 not fully installed or removed.
After this operation, 1465 kB disk space will be freed.
Do you want to continue? [Y/n] y
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 apt install --reinstall mysql-server-8.0
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  linux-headers-5.4.0-54 linux-headers-5.4.0-54-generic linux-image-5.4.0-54-generic linux-modules-5.4.0-54-generic linux-modules-extra-5.4.0-54-generic python3-imdbpy
Use 'sudo apt autoremove' to remove them.
Suggested packages:
  mailx tinyca
The following packages will be upgraded:
  mysql-server-8.0
1 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
2 not fully installed or removed.
Need to get 0 B/1261 kB of archives.
After this operation, 1024 B of additional disk space will be used.
Preconfiguring packages ...
(Reading database ... 751683 files and directories currently installed.)
Preparing to unpack .../mysql-server-8.0_8.0.22-0ubuntu0.20.04.3_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 /var/cache/apt/archives/mysql-server-8.0_8.0.22-0ubuntu0.20.04.3_amd64.deb (--unpack):
 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:
 /var/cache/apt/archives/mysql-server-8.0_8.0.22-0ubuntu0.20.04.3_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Интересная часть вот эта строка:

Failed to stop mysql.service: Unit mysql.service not loaded.

Служба mysql не запущена:

systemctl status mysql
Unit mysql.service could not be found.

Похоже, что она не работает, потому что служба mysql не запущена. Я тоже не могу запустить его.

systemctl start mysql 
Failed to start mysql.service: Unit mysql.service not found.

Теперь я застрял здесь и не смог снова удалить / переустановить mysql. Я также попытался удалить пакет с помощью synaptic и sudo dpkg --purge --force-all mysql-server-8.0 , которые я нашел в Интернете. Все они выводят сообщение о том, что пакет находится в плохом состоянии.

dpkg -l | egrep -v '^ ii | rc' дает следующий результат:

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
+++-===========================================================-==========================================================-============-======================================================================================================
it  desktop-file-utils                                          0.24+linuxmint1                                            amd64        Utilities for .desktop files
it  gnome-menus                                                 3.36.0-1ubuntu1                                            amd64        GNOME implementation of the freedesktop menu specification
it  hicolor-icon-theme                                          0.17-2                                                     all          default fallback theme for FreeDesktop.org icon themes
it  man-db                                                      2.9.1-1                                                    amd64        tools for reading manual pages
it  mime-support                                                3.64ubuntu1                                                all          MIME files 'mime.types' & 'mailcap', and support programs
pU  mysql-client-8.0                                            8.0.22-0ubuntu0.20.04.3                                    amd64        MySQL database client binaries
pi  mysql-common                                                5.8+1.0.5ubuntu2                                           all          MySQL database common files, e.g. /etc/mysql/my.cnf
rFR mysql-server-8.0                                            8.0.22-0ubuntu0.20.04.2                                    amd64        MySQL database server binaries and system database setup
it  shared-mime-info                                            1.15-1                                                     amd64        FreeDesktop.org shared MIME database and spec
iU  xserver-common                                              2:1.20.8-2ubuntu2.6                                        all          common files used by various X servers
iU  xserver-xephyr                                              2:1.20.8-2ubuntu2.6                                        amd64        nested X server
iU  xserver-xorg-core                                           2:1.20.8-2ubuntu2.6                                        amd64        Xorg X server - core server
iU  xserver-xorg-legacy                                         2:1.20.8-2ubuntu2.6                                        amd64        setuid root Xorg server wrapper
iU  xwayland                                                    2:1.20.8-2ubuntu2.6                                        amd64        Xwayland X server

ls -al /etc/init.d/ | grep mysql дает:

-rwxr-xr-x   1 root root  5607 Nov  6  2019 mysql
2
задан 3 December 2020 в 21:23

4 ответа

Мне удалось исправить мою конкретную проблему, хотя, вероятно, это был не самый чистый способ сделать это. Поскольку сценарий удаления завершился неудачно из-за того, что служба mysql не существует, я попробовал следующее:

  1. Перейдите в / var / lib / dpkg / info /

  2. Открыл файл mysql-server-8.0-prerm как root (например, с gedit), это сценарий предварительного удаления

  3. Я прокомментировал строки, которые пытались остановить службу:

    #if [-x "/etc/init.d/mysql "]; then # invoke-rc.d mysql stop || exit 1 #fi

  4. Затем я запустил sudo dpkg --purge --force-all mysql-server-8.0

  5. Это выдало несколько предупреждений, но переключатель - force принудительно пакет, который нужно удалить

  6. После удаления пакета у меня был установлен один поврежденный пакет (mysql-client-8.0), который я мог удалить с помощью графического интерфейса пользователя Synaptic Package Manager (apt-get remove, вероятно, тоже сработал бы)

Это устранило проблему, по крайней мере, для меня, и я снова смог установить другие пакеты. Невозможно было установить новые пакеты, даже если они не нуждались в mysql из-за нестабильного статуса.

Большое спасибо всем, кто пытался мне здесь помочь. Мне жаль, что вы потратили свое время на меня, но, возможно, кто-то еще сочтет ваши ответы полезными!

1
ответ дан 3 January 2021 в 22:47

Создана символическая ссылка /etc/systemd/system/multi-user.target.wants/mysql.service → / lib /systemd/system/mysql.service.

Я предполагаю, что если вы создадите символическую ссылку на этот файл, он исправит ее, у меня сам был этот баг. это приведет к удалению половины вашей ОС, если вы избавитесь от этого).

И заметил создание символической ссылки при переустановке.

Может спасти некоторых людей от удара головой по столу.

0
ответ дан 3 January 2021 в 22:47

Чтобы удалить MySQL, сначала выполните команду:

sudo apt remove -y mysql-*

, а затем:

sudo apt purge -y mysql-*

Теперь, чтобы снова установить mysql , обновите список пакетов и используйте команду

sudo apt update
sudo apt install mysql-server
0
ответ дан 3 January 2021 в 22:47
wget -c http://security.ubuntu.com/ubuntu/pool/main/m/mysql-8.0/mysql-server-8.0_8.0.22-0ubuntu0.20.04.3_amd64.deb

Установите пакет напрямую с помощью dpkg.

sudo dpkg -i mysql-server-8.0_8.0.22-0ubuntu0.20.04.3_amd64.deb

Только при отсутствии ошибок.

software-properties-gtk

и выберите загрузку из главный сервер.

sudo apt update && sudo dpkg --configure -a && sudo apt -f install

Затем обновите вашу систему.

sudo apt full-upgrade
1
ответ дан 3 January 2021 в 22:47

Другие вопросы по тегам:

Похожие вопросы: