Назад | Перейти на главную страницу

Невозможно обновить mySql на сервере Debian 6 с помощью apt-get

Я запускаю сервер Debian 6 и использую его для размещения десятка веб-сайтов на основе LAMP. Я настроил его на отправку электронной почты мне всякий раз, когда становится доступно обновление программного обеспечения, и сегодня утром я получил уведомление о 6 новых доступных обновлениях, связанных с mySql:

mysql-сервер, mysql-client, mysql-common

и несколько других зависимостей. Я пытался запустить

apt-get update apt-get update

и все шло нормально, пока процесс обновления не встретил mysql-client. Я получаю следующую ошибку:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following packages will be upgraded:
   mysql-client-5.5
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
Need to get 0 B/1,772 kB of archives.
After this operation, 7,049 kB of additional disk space will be used.
Do you want to continue [Y/n]? Y

Reading changelogs... Done

(Reading database ... 84121 files and directories currently installed.)
Preparing to replace mysql-client-5.5 5.5.38-1~dotdeb.0 (using .../mysql-client-5.5_5.5.46-0+deb6u1_amd64.deb) ...

Unpacking replacement mysql-client-5.5 ...
dpkg: error processing /var/cache/apt/archives/mysql-client-5.5_5.5.46-0+deb6u1_amd64.deb (--unpack):

 trying to overwrite '/usr/share/man/man1/mysql.1.gz', which is also in package mysql-client-core-5.5 5.5.38-1~dotdeb.0
configured to not write apport reports
                                  dpkg-deb: subprocess paste killed by signal (Broken pipe)

Processing triggers for man-db ...

Errors were encountered while processing:

 /var/cache/apt/archives/mysql-client-5.5_5.5.46-0+deb6u1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

У меня недостаточно опыта, чтобы полностью понять, что произошло. Я попытался запустить apt-get -f install, как было предложено в сообщении, но ничего не произошло. Я также попытался удалить mysql-client (идея была в том, «Я удаляю этот, а затем переустанавливаю его с нуля»), но эта операция не удалась с той же ошибкой. Я попытался очистить mysql, но система также не смогла выполнить эту операцию.

На данный момент я перезапустил службу, и теперь все вроде работает, но проблема с этим неудачным обновлением сохраняется.

Вот список всех пакетов, связанных с mysql, которые я установил на свой сервер:

~# dpkg -l | grep -i mysql
ii  libdbd-mysql-perl                     4.016-1                      Perl5 database interface to the MySQL database
ii  libmysqlclient16                      5.1.73-1+deb6u1              MySQL     database client library
ii  mysql-client                          5.5.46-0+deb6u1              MySQL database client (metapackage depending on the latest version)
ii  mysql-client-5.5                      5.5.38-1~dotdeb.0            MySQL database client binaries
ii  mysql-client-core-5.5                 5.5.38-1~dotdeb.0            MySQL database core client binaries
ii  mysql-common                          5.5.38-1~dotdeb.0            MySQL database common files, e.g. /etc/mysql/my.cnf
ii  mysql-common-5.5                      5.5.46-0+deb6u1              MySQL database common files, e.g. /etc/mysql/my.cnf
ii  mysql-server                          5.5.46-0+deb6u1              MySQL database server (metapackage depending on the latest version)
rc  mysql-server-5.1                      5.1.73-1+deb6u1              MySQL database server binaries and system database setup
iU  mysql-server-5.5                      5.5.46-0+deb6u1              MySQL database server binaries and system database setup
ii  mysql-server-core-5.5                 5.5.46-0+deb6u1              MySQL database server binaries
ii  php5-mysql                            5.4.45-1~dotdeb+6.1          MySQL module for php5
rc  php5-mysqlnd                          5.4.45-1~dotdeb+6.1          MySQL module for php5 (Native Driver)
ii  phpmyadmin                            4:3.3.7-10                   MySQL web administration tool

Добавление результата удаления apt-get

~# apt-get remove mysql-server-5.5
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
 mysql-server : Depends: mysql-server-5.1 but it is not going to be installed or
                         mysql-server-5.5 but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

Может ли кто-нибудь помочь мне понять, как это исправить? Заранее спасибо, Симона

Как объяснил @M Somerville, существует конфликт между пакетами, ранее установленными репозиторием dotdeb, который вы используете, и официальным репозиторием debian, который теперь содержит более новую версию mysql 5.5.

Что вам нужно сделать, так это полностью удалить mysql 5.5, а затем установить последнюю версию, доступную в ваших репозиториях.

Это решило проблему для меня без потери данных / конфигурации:

apt-get remove mysql-client-5.5 mysql-client-core-5.5 mysql-client mysql-server-5.5 mysql-server

затем

apt-get install mysql-client mysql-server

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

Удачи

9 декабря Debian осуществил обратный перенос MySQL 5.5.46 в squeeze-lts. Судя по тому, что вы говорите, похоже, что вы использовали репозиторий dotdeb, а также репозиторий Debian, а dotdeb содержит MySQL 5.5.38. Итак, теперь squeeze-lts содержит более поздний пакет для установленного вами пакета и пытается его установить. Но два репозитория, похоже, не согласны с именами пакетов / конфликтами / зависимостями, и поэтому обновление mysql-client-5.5 (присутствует в обоих репозиториях) конфликтует из-за пакета dotdeb mysql-client-core-5.5, который squeeze-lts ничего не знает (так что комментарий от wurtel не поможет, так как обновлять нечего).

В общем, я бы никогда не запустил принудительную установку, даже если что-то подсказывает, что вы должны это сделать :) Если вас устраивает версия 5.5.46 от squeeze-lts, то я предлагаю вам попробовать удалить любые пакеты версии 5.5.38, например, mysql-client-core-5.5, а не mysql-client, затем mysql-client-5.5, затем mysql-common - надеюсь, это будет возможно без конфликтов, хотя я не уверен, извините. Если это сработает, то ваша идея удаления и чтения действительно кажется хорошей, чтобы убедиться, что все установлено правильно.

Все это может произойти снова и снова, если dotdeb обновит свой репозиторий до более поздней версии, чем squeeze-lts, в общем, я бы посоветовал, если вы получаете что-то из стороннего репо, такого как dotdeb, закреплять пакеты оттуда, чтобы они не будет отменен изменениями в основном репозитории.