Я недавно сделал новую установку 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)
mysql-server-5.7
находится в плохом состоянии, попробуйте переустановить его:sudo apt-get install --reinstall mysql-server-5.7
.... invoke-rc.d: initscript mysql, action "start" failed. ...
что я получаю с другими разновидностями команд установки.sudo apt-get remove --purge mysql-server-5.7
. Обратите внимание, что это действительноmysql-server-5.7
то, о чем мы говорим, а неmysql-server
.Ответы:
Отредактировано 10 января 2017 : Это серьезный обзор этого поста для исправления серьезных проблем в этом посте.
Ошибка в глубине души
Проблема в том, что пакет все еще находится в системе в наполовину установленном и наполовину сконфигурированном состоянии и должен быть явно удален.
На самом деле он говорит о том, что пакет
mysql-server-5.7
является зависимостьюmysql-server
, уже установлен, но не настроен. Так что вам нужно, чтобыpurge
удалить те крошки, оставленные позадиmysql-server-5.7
.обоснование
Когда вы устанавливаете программное обеспечение с помощью
apt
, оно автоматически обрабатывает зависимости и для вас.Когда вы удаляете определенные пакеты, он может не обрабатывать те же зависимости. В случае с этим постом эта зависимость есть
mysql-server-5.7
.Вы можете проверить состояние пакета, выполнив следующую команду.
Обычно, если вы видите код
un
илиrc
слева от имени пакета, вы сможете определить, действительно ли он поврежден.Когда я столкнулся с этой проблемой, это было с
libapache2-mod-php
иlibapache2-mod-php7.0
. Это был мой вывод.В моем случае он утверждал, что состояние моего пакета неизвестно и что он не установлен (код
un
) в моей системе.Когда вы говорите ,
apt
чтобыremove
что - то, он может оставить пакеты, файлы конфигурации, а также другие предметы , которые могут быть проблематичными во время автоматизированных установок.Когда вы говорите ,
apt
чтобыpurge
что - то он делает это лучше , чтобы удалить любые сухари , которые ,remove
возможно , оставили позади.Первоначально я заявил, что предположил, что процесс все еще работает, но, скорее всего, он был неактивным или мертвым.
Лучший способ проверить, влияет ли служба на удаление вашего пакета, - сначала проверить эту службу.
1) Исследование
mysql
службыИспользуя системную ошибку, данную нам
apt
, мы можем использовать ееsystemctl
для проверки ошибки путем проверки состоянияmysql
службы.В нашем случае мы хотим посмотреть, запущен ли mysql, поэтому можно ввести
Вы должны увидеть этот вывод, если служба работает
примечание: если служба не работает, вы увидите короткое сообщение о том, что служба с таким именем не запущена, а затем перейдите к шагу 3.
2) Остановка
mysql
службы с помощьюsystemctl
примечание: [шаблон] должен быть именем, указанным
service
илиinitctl
. Я используюpattern
это потому, чтоsystemctl
использует сопоставление с регулярным выражением, поэтому будьте осторожны, если вы должны использоватьkill
аргумент.где
pattern
представляет имя демона / службы mysql. если остановка не работает, попробуйтеНапример
3) Удаление / очистка
mysql
если вам нужно полностью очистить, сначала убедитесь, что служба или процесс остановлены, а затем убедитесь, что вы удаляете нужные файлы и каталоги!
Примечание. Убедитесь, что вы указали правильную
mysql
версию. Например, если вы используете 5.5, измените номер версии соответствующим образом.ВНИМАНИЕ: следующие шаги удаляют ваши данные! (первая команда должна быть выполнена, чтобы сделать резервную копию)
Источник: Как мне удалить MySQL?
4) Исправление поврежденных пакетов и обработка отсутствующих зависимостей
Если предыдущие шаги не работают для вас, вы , возможно , придется работать
apt
с--fix-broken
возможностью отремонтировать любой ущерб , нанесенный.Обязательно
apt update
сначала, а потомapt install
5) Когда ничего не помогает, соберите и установите
mysql
самиЕсли ничего из вышеперечисленного не работает, вам придется вручную загрузить исходный код, скомпилировать и использовать make или bash для установки оттуда (не так больно, как кажется, поскольку все автоматизировано).
источник
rm
файлы, принадлежащие пакетам.sudo rm -rf /var/lib/mysql
удалит все ваши базы данных в расположении по умолчанию. Сделайте резервную копию в первую очередь!Проблема с первым постом в том, что вы не можете перенастроить метапакет хорошо, не для элементов sql. Вам необходимо указать текущий элемент выпуска.
Скажи использовать;
Это должно отобразить список пакетов, а именно
"mysql-server-5.7" "mysql-server-core-5.7" или более поздние выпуски
тогда;
сделанный.
источник
Это правильное решение для вас
Сначала вам придется удалить все пакеты mysql-сервера:
Затем установите:
Или вы можете сделать:
источник
я видел это
как подсказка, что все еще существует ошибочный сценарий запуска.
Ищите
/etc/init.d/mysql
и любые символические ссылки на него. Удаление этих файлов, по-видимому, исправило мои проблемы с переустановкой после очистки.источник
Эта ошибка также произошла при переключении с 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
.источник
Попробуйте
apt-get -f install
исправить ваш поврежденный пакет SQL и, если у вас все еще проблемы с менеджером пакетов, скачайте исходный код SQL сервера и скомпилируйте его !! Но попробуйте указанную выше команду, а также используйте,dpkg -l | grep sql
чтобы узнать, что менеджер пакетов все еще считает, что у вас SQL или нет ..источник
apt-get -f install
самостоятельно, без указания имени пакета.apt-get install -f
, без изменений.