Debian GNU/Linux 8.7 (jessie)
Хочу установить пакет mysql-server, выполняю команду:
apt-get install mysql-server
В результате получаю ошибку:
E: Sub-process /usr/bin/dpkg returned an error code (1)
Вот полный вывод:
root@dev:~# apt-get install mysql-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
mysql-server-5.5
Suggested packages:
tinyca
The following NEW packages will be installed:
mysql-server mysql-server-5.5
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/1,846 kB of archives.
After this operation, 32.5 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Preconfiguring packages ...
(Reading database ... 48232 files and directories currently installed.)
Preparing to unpack .../mysql-server-5.5_5.5.54-0+deb8u1_amd64.deb ...
Aborting downgrade from (at least) 10.1 to 5.5.
If are sure you want to downgrade to 5.5, remove the file
/var/lib/mysql/debian-*.flag and try installing again.
dpkg: error processing archive /var/cache/apt/archives/mysql-server-5.5_5.5.54-0+deb8u1_amd64.deb (--unpack):
subprocess new pre-installation script returned error exit status 1
Selecting previously unselected package mysql-server.
Preparing to unpack .../mysql-server_5.5.54-0+deb8u1_all.deb ...
Unpacking mysql-server (5.5.54-0+deb8u1) ...
Errors were encountered while processing:
/var/cache/apt/archives/mysql-server-5.5_5.5.54-0+deb8u1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Что эта ошибка означает, и как ее побороть?
Aborting downgrade from (at least) 10.1 to 5.5. If are sure you want to downgrade to 5.5, remove the file /var/lib/mysql/debian-*.flag and try installing again.
Собственно, вроде бы всё сказано. Пакетный менеджер обнаружил останки ранее стоявшей версии mysql (вероятно, форка, mariadb судя по номеру версии), при том численно более новой версии. Понижение версии может быть небезопасной операцией и может сломать имеющуюся базу, поэтому пакет отказывается ставиться и требует ручного вмешательства.
Поэтому сначала необходимо выяснить:
Если база не нужна - то сделайте бекап /var/lib/mysql
и /etc/mysql
- пригодятся, если вдруг выяснится, что да, база была нужна. Затем посмотрите в dpkg -l
, скорей всего есть куски пакетов от mysql или mariadb не удалённые. Эти пакеты можно удалить через apt-get purge имя_пакета
. После этого стоит удалить целиком /var/lib/mysql
, если что-то ещё останется. Затем ставить снова mysql.
Если же вы понимаете что делаете и знаете что делать при проблемах (очевидно это не так) - удалите указанные файлы и повторите попытку установки.
У меня эксперементальная система, поэтому можно удалять/устанавливать все что угодно, критических данных для потери нет.
Проблема была в том что в системе были остатки от старых установок других БД, таких как MariaDB, Percona, MySQL. И хотя все предыдущие перечисленные БД были удалены с помощью apt purge, в системе всеравно кое где остались некоторые файлы/директории/скрипты от этих БД. И эти "остатки" каким то образом конфликтовали при новой установки MySQL.
Поэтому я решил эту проблему так:
sudo apt-get purge .*mariadb.* .*mysql.*
sudo apt-get autoremove
Но самое главное, ищем и удаляем остатки:
sudo locate mysql
Эта команда выдаст список оставшихся после удаления файлов/директорий/скриптов прошлых БД. Всех их тоже надо удалить.
После этого можно устанавливать MySQL как обычно:
sudo apt install mysql-server mysql-client
Все должно пройти ОК, без всяких Errors.
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Функция проверяет про 3м параметрам на дубликаты и в соответствии вставляет или обновляет записиСуть в том, что если один из параметров приходит...