9

Когда я пытаюсь сделать следующее:

sudo apt-get update
sudo apt-get upgrade

на моем Ubuntu Server 10.04 он висит в следующей строке:

Preparing to replace mysql-server-5.1 5.1.41-3ubuntu12.1 (using .../mysql-server-5.1_5.1.41-3ubuntu12.3_i386.deb)

Я не могу даже CTRL-C из этого! Я заканчиваю тем, что вынужден был прекратить сеанс и войти в систему с другого терминала, а процесс обновления все еще выполняется. Я перезагружал его несколько раз, и когда я возвращаюсь и пытаюсь снова, он говорит мне:

E: dpkg was interrupted, you must manually run 'sudo --configure -a' to correct the problem.

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

6 ответов6

6

Очевидно, обновление ожидает запуска сервера, и по какой-то причине этого не происходит. Для решения проблемы есть несколько возможностей.

Самый легкий:

  1. Откройте новый терминал и запустите:

    sudo services mysql start
    

Более сложный, но иногда необходимый: (это удобно, когда у вас нет доступа к другому терминалу):

  1. Нажмите «^ z» (Ctrl + Z), чтобы "ОСТАНОВИТЬ" вашу работу. Затем запустите:

    sudo services mysql start
    
  2. После запуска сервера введите следующее и нажмите Enter:

    fg 
    

    Это поместит задание "ОСТАНОВЛЕНО" обратно на передний план и продолжит с того места, на котором оно остановилось.

2

У меня была эта проблема, потому что это была копия виртуальной машины, поэтому я изменил IP-адрес сервера, но не изменил bind-адрес в файле my.cnf. Как только я изменил привязанный адрес, обновление не зависло и завершилось успешно.

2

Попробуйте перейти на уровень ниже apt после резервного копирования ваших баз данных:

sudo dpkg -r mysql-server
sudo apt-get check    # verify that apt's metadata is okay
sudo apt-get install mysql-server

добавлено:

Поскольку dpkg -r задыхается, попробуйте dpkg --purge и, в случае неудачи, получите содержимое пакета с помощью dpkg -L mysql-server-5.1 запустите их, а затем загляните в /var/lib/dpkg .

Я никогда не видел, чтобы все становилось таким волосатым, прости.

если сначала вам не удастся

Сорта, я думаю здесь вслух, прости меня. Метапакет mysql-server содержит или требует следующие пакеты:

libdbd-MySQL-Perl
libdbi жемчужно
libhtml-шаблон жемчужно
ЛИБНЕТ-демон жемчужно
libplrpc жемчужно
MySQL-клиент-5,1
MySQL-клиент-ядро-5,1
MySQL-сервер
MySQL-сервер-5,1
MySQL-сервер ядро-5,1

Метаданные для управления пакетами восхитительно отделены, есть центральные репозитории, но пакеты стоят отдельно. /var/cache/apt/archives установленные файлы *.deb .

Во-первых, вынудите dpkg забыть об этих пакетах (рискуя потерять некоторые файлы, которые мы собираемся заменить в любом случае).

for i in mysql-server-core-5.1 mysql-server-5.1 ... ; do
    sudo dpkg -r --force-remove-reinstreq $i
done

Затем получите файлы .deb, необходимые для полной установки:

sudo apt-get install --download-only mysql-server

а затем попробуйте установить их один за другим:

cd /var/cache/apt/archives
sudo dpkg -i mysql-server-core-5.1_5.1.41-3ubuntu12.3_i386.deb

если у вас есть проблемы, попробуйте:

sudo dpkg -D77777 -i mysql-server-core-5.1... > 2>&1 /tmp/dpkg.log.$$

И попробуйте найти соответствующие строки из zillion в лог-файле и разместите их здесь. Удачи и бога.

1

Я столкнулся с той же проблемой и потратил больше одного дня на ее устранение.

Когда я удалил каталог базы данных /var/lib/mysql/ , установка прошла гладко.

1

У меня возникла именно эта проблема, но ни одно из существующих решений не показалось мне подходящим. Предполагается, что принудительное удаление не требуется в любом * nix и определенно не является KISS. В моем случае я обнаружил, что причина была проста. MySQL отказывался запускаться, потому что он все еще работал! Когда apt пытался остановить MySQL, он был активен и фактически никогда не останавливался.

Как всегда, убедитесь, что у вас есть резервные копии!

Остановить службу:

sudo service mysql stop

Убедитесь, что служба больше не работает:

sudo ps ax | grep mysql

Если он все еще работает, дайте ему некоторое время:

sudo kill <pid>

Но в конце концов, если он все еще работает, вы должны убить его агрессивно:

sudo kill -9 <pid>

Как только вы подтвердите, что он больше не работает, вы можете продолжить обновление.

После завершения обновления, особенно если вам нужно было убить -9, обязательно запустите mysqlcheck, чтобы убедиться, что все, что могло вызвать остановку службы, не является поврежденной или испорченной таблицей. Также убедитесь, что у вас есть регулярные резервные копии (и убедитесь, что эти резервные копии действительно работают!).

0

В моем случае была проблема с существующим /etc/mysql/my.cnf. Проверка журнала ошибок в /var/log/mysql/error.log выявила:

150112  5:45:47 [ERROR] Can't start server: Bind on TCP/IP port: Cannot assign requested address
150112  5:45:47 [ERROR] Do you already have another mysqld server running on port: 3306 ?
150112  5:45:47 [ERROR] Aborting

150112  5:45:47  InnoDB: Starting shutdown...
150112  5:45:52  InnoDB: Shutdown completed; log sequence number 0 1883376705
150112  5:45:52 [Note] /usr/sbin/mysqld: Shutdown complete

Очевидно, что с my.cnf может быть другая проблема, но в моем случае мы пытались привязать старый IP-адрес. Изменение на:

bind 127.0.0.1

исправил, и это не проблема.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .