Как восстановить поврежденную установку пакета (mysql)

15

После обновления до 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

Это была ошибка. Никогда не пытайтесь сделать это. Теперь MySQL даже не будет правильно установлен. Я попытался переустановить зависимости:

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

И сами пакеты:

sudo apt install mysql-workbench mysql-server --reinstall

Но я получаю всевозможные загадочные ошибки, такие как:

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

И удаление

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.

Или если я перенастроить

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

Или, если я заставлю установить:

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)

Или если я сделаю чистку:

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)

Apt не может восстановиться после частичной установки? Нужно ли переустанавливать ОС?

Джонатан
источник
Вы пытались сделать более простой подход sudo apt-get install --reinstall mysql?
Видеонавт
Я обновил, чтобы включить ошибки от тех
Джонатан
Может быть, вы хотите войти в чат, и мы посмотрим, сможем ли мы с этим разобраться.
Видеонавт

Ответы:

22

Сделайте следующее, чтобы очистить сломанные пакеты:

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 

После этого переустановите его:

sudo apt-get install mysql mysql-client* mysql-server*
Videonauth
источник
большое спасибо!! удаление зависимостей одна за другой - единственный способ выйти из
залипшего
+1 за это. Спасибо за упоминание полного стека пакетов, которые будут удалены для удаления MySQL. У меня это тоже сработало.
Парвин Верма
На моем Ubuntu 18.04 попытка удалить mysqlclient (запуск 3-й команды) привела к тому, что: проблемы с зависимостями препятствуют удалению mysql-client-5.7: mysql-server-5.7 зависит от mysql-client-5.7 (> = 5.7.26-0ubuntu0.18.04. 1). dpkg: пакет обработки ошибок mysql-client-5.7 (--remove): проблемы с зависимостями - не устранены Ошибки при обработке: mysql-client-5.7, но выполняется чистка sudo apt mysql-server mysql-server-5.7 mysql-server- core-5.7 как отсюда askubuntu.com/questions/760724/16-04-upgrade-broke-mysql-server кажется, что удалил экземпляр
Кармин
теперь я получил кучу ошибок, когда пытался установить sudo apt install openjdk-8-jre openjdk-8-jdk.
Кармин
Я смог найти процесс, который ранее блокировал любую мою попытку очистить обновление mysql, на самом деле я остановил экземпляр, работающий в моей системе, а затем удалил его, как и из другого связанного решения. После этого я убедился, что моя система была обновлена. Действительно я как-то узнал, что пропускаю много обновлений. После этого, теперь пока что установка java sdk, которая требует наличия экземпляра mysql, кажется, прошла хорошо
Кармин
13

Благодаря @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

Затем работает:

sudo apt-get purge mysql\* mariadb\* libmysql\* libmariadb\*

Если что-то не получается, просто запустите sudo dpkg -r <failedpackage>и, если это не удалось, просто удалите пакет, который зависит от него. Если вы повторите, в конце концов, apt-get снова заработает.

Смотрите также В чем разница между dpkg и aptitude / apt-get?

Джонатан
источник
Удаление этих пакетов libmysqlclient, хотя другие пакеты полагаются на них, и очистка всего, сделали свое дело. Хотя сейчас я получаю ошибки mysql_upgrade.
скерит
Я никогда не получал ошибки mysql_upgrade. Но вам, возможно, придется удалить еще больше пакетов. Я полагаю, это зависит от того, какой пакет был поврежден. Есть способ поиска всех установленных пакетов, связанных с mysql, но я забыл, как. Я думаю, что это команда списка dpkg, переданная через grep
Джонатан
9

Попробуй это,

запустите эту команду для очистки 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

запустите это, чтобы очистить и обновить пакеты

sudo apt update && sudo apt dist-upgrade && sudo apt autoremove && sudo apt -f install

наконец установить MySQL

sudo apt install mysql-server

это сработало для меня.

Рахул
источник
1
Это сработало для меня, где выбранный ответ не (не удалось sudo dpkg -r mysql-client-5.7)
Jeff-H
Спасибо! Я искал решение в течение нескольких часов, и это единственный ответ, который работает!
Мирза
1
Это сработало для меня. Этот урок также помог.
nwaweru
4

После очистки, mysqlкак было показано выше, вы должны установить mysql следующим образом:

sudo apt-get install mysql-common 
sudo apt-get install mysql-server

При установке таким способом у вас не будет ошибки установки.

Томек
источник
это работает для меня
user1735921
2

Я не знаю точную причину, но все эти методы не сработали для меня. В моем случае процедура, которая исправила проблему:

sudo apt-get purge mysql-*
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get dist-upgrade

sudo rm -rf /etc/mysql
sudo rm -rf /var/lib/mysql*

и перезагрузите компьютер !

наконец я смог бежать sudo apt-get install mysql-server!

s1l3n0
источник
Спасибо, это сработало для меня
Нидзё
1

Это сработало для меня

sudo apt-get purge mysql*
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get dist-upgrade

затем после этого я установил mysql снова с

sudo apt-get install mysql-server и теперь работает нормально.

Джаякришнан Менон
источник
0

Команда sudo dpkg -r у меня не работает ..

Я использовал, sudo apt-get purge mysql-*чтобы удалить все опубликованные страницы, а затем переустановить их

Руджи Юань
источник