Не могу переустановить mysql-сервер после его очистки

Недавно я сделал новую установку Ubuntu 16.04. Я также установил mysql-server и mysql-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)
29
задан 27 April 2016 в 08:21

6 ответов

Попробуйте apt-get -f install , чтобы исправить ваш сломанный пакет SQL, и если у вас все еще есть проблемы с менеджером пакетов, загрузите исходный код SQL-сервера и скомпилируйте его !! Но попробуйте команду выше, а также используйте dpkg -l | grep sql , чтобы узнать, что менеджер пакетов все еще думает, что вы SQL или нет ..

-2
ответ дан 27 April 2016 в 18:21
  • 1
    Спасибо я забыл упоминать, что я хотел, чтобы он был открытым исходным кодом, но Спасибо! – Didan974 25 September 2017 в 08:19

Я видел в этом

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
ответ дан 27 April 2016 в 18:21
  • 1
    Спасибо я забыл упоминать, что я хотел, чтобы он был открытым исходным кодом, но Спасибо! я думаю I' d придерживаются Office Libre! – Didan974 25 September 2017 в 08:19

Отредактировано 10 января 2017 г. : Это основной обзор этого сообщения для исправления серьезных проблем в этот пост.

Основная ошибка

Проблема в том, что пакет все еще находится в системе в наполовину установленном и наполовину настроенном состоянии и должен быть явно удален.

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 , уже установлен, но не настроен. Поэтому вам необходимо очистить его, чтобы удалить те хлебные крошки, оставленные mysql-server-5.7 .

sudo apt purge mysql-server mysql-server-5.7

Обоснование

При установке программного обеспечения с помощью apt , он также автоматически обрабатывает зависимости для вас.

Когда вы удаляете определенные пакеты, он может не обрабатывать те же самые зависимости. В случае с этим сообщением эта зависимость - mysql-server-5.7 .

Вы можете проверить состояние пакета, выполнив следующую команду.

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

Обычно, если вы видите код ] un или rc слева от имени пакета, вы сможете определить, действительно ли это неработающий пакет.

Когда я столкнулся с этой проблемой, это было с 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 ) в моей системе.

Когда вы сообщаете apt to удалить что-то, он может оставить пакеты, файлы конфигурации и другие элементы, которые могут быть проблематичными во время автоматической установки.

Когда вы сообщаете apt очистить что-то, он лучше всего удаляет все хлебные крошки, которые удаление могли оставить.

Первоначально я сказал, что Я предположил, что процесс все еще запущен, но, скорее всего, он был Неактивен или мертв.

Лучший способ проверить, мешает ли служба удалению вашего пакета, - сначала проверить эту службу.

1) Исследование mysql service

Используя системную ошибку, предоставленную нам apt , мы можем фактически использовать systemctl , чтобы исследовать ошибку, проверяя состояние ] mysql service

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 с использованием [113 3334] systemctl

примечание: [шаблон] должен быть именем, указанным в service или initctl . причина, по которой я использую шаблон , заключается в том, что systemctl использует сопоставление регулярных выражений, поэтому будьте осторожны, если вы должны использовать аргумент kill .

sudo systemctl stop [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 для установки оттуда (не так болезненно, как кажется, поскольку все происходит автоматически).

87
ответ дан 27 April 2016 в 18:21
  • 1
    Я протестирую это на своей машине завтра и приму ответ, если это будет работать. – Atnas 25 September 2017 в 07:45

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

Скажите use;

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

сделано.

7
ответ дан 27 April 2016 в 18:21
  • 1
    Подтверждение, что преобразование / начальная загрузка к ext4 сделало вещи лучше (теперь требуется 3-4 секунды) - спасибо. Интересный отметить, что замедление только произошло после того, как мои недавние переустанавливают - тот же ПК раньше загружался быстро с перенаходкой, когда начальная загрузка / была ext2, таким образом, проблема определенно не связывается с ПК. – fstanis 9 October 2017 в 07:29

Это правильное решение для вас

Во-первых, вам необходимо удалить все пакеты mysql-server:

ВНИМАНИЕ: следующие шаги удалят ваши данные! Сначала сделайте резервную копию!

sudo rm -rf /var/lib/mysql

Затем установите:

sudo apt-get install lamp-server^

Или вы можете сделать:

sudo apt-get install mysql-server
4
ответ дан 27 April 2016 в 18:21
  • 1
    It' s интересный, что переустанавливание инициированного эта проблема. Вы вытирали /boot чистый раздел? Возможно, это раньше было ext4fs, и Вы случайно изменили его на ext2fs? Или возможно создание новой ext2 файловой системы изменило что-то о своем формате данных, который взаимодействовал со встроенным микропрограммным обеспечением и/или проблемами драйвера EFI для инициирования проблемы. – Rod Smith 10 October 2017 в 08:21

Эта ошибка также возникала при переключении с 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 .

0
ответ дан 23 November 2019 в 00:48

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

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