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

apt-получить проблему и зависнуть. DPKG был прерван после ошибки

Когда я пытаюсь установить пакет на свой сервер ubuntu (10.10) на amazon ec2 с «альтернативами обновления» для JRE, apt-get больше не отвечает.

Я уже 20 минут ждал этого зависания с такой строкой текста:

   update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/lib/jexec to provide /usr/bin/jexec (jexec) in auto mode.

И если я попытаюсь остановить это и перезагрузить систему. в следующий раз, когда я использую apt-get или aptitude, это дает мне

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

В котором команда не решает проблему, оставляя меня с неработающим файлом apt-get.

Есть способ снова запустить dpkg. Увы, я до сих пор не знаю, как установить jre на свой debian, поскольку при каждой попытке установки jre происходит одно и то же.

Вкратце, вам нужно удалить не полностью установленные пакеты после того, как вы убили dpkg и java-процессы (java-процесс потреблял 100% ЦП на моем компьютере). Тогда ваш dpkg должен снова работать.

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

  1. откройте другой сеанс console / ssh и завершите процессы java и dpkg (используйте ps -A |grep -E "(java|dpkg)" найти их)
  2. бегать dpkg -l |grep -v -E "^ii" - это список всех пакетов, которые либо не установлены идеально; либо не полностью установлены, либо у которых остались файлы конфигурации после удаления (или какой-либо другой вариант). Вы можете отличить их по значению в первом столбце. (rc = удаленные & conf-файлы; iU = установить и распаковать). См. Заголовок листинга (dpkg -l | head для подробных значений).
  3. бегать dpkg -P package_name [package_name2] [package_name3 ...] чтобы очистить эти неполные пакеты. Лично я удалил все перечисленные пакеты (так как все они были связаны с неработающей установкой jre), после чего dpkg работал.
  4. при желании перезагрузите систему, чтобы избавиться от этого несуществующего java-процесса (он продолжал зависать в списке процессов после того, как я его убил)

Обновить: после еще нескольких исследований выясняется, что эта ошибка связана исключительно с запуском 32-разрядного экземпляра t1.micro AMI на основе Debian на Amazon EC2.

Решение, которое сработало для меня (приписывается DanielDaniel - спасибо, @Yuval), это:

  1. остановить (или остановить) работающий экземпляр (до этого необходимо убедиться, что он не завершится при остановке)
  2. изменить тип экземпляра на m1.small (либо с помощью консоли EC2, либо с помощью CLI)
  3. запустить экземпляр
  4. установите пакет Java, который вы хотите
  5. остановить экземпляр (снова)
  6. изменить тип экземпляра обратно на t1.micro
  7. запустить экземпляр (снова)

Это будет стоить вам, вероятно, ровно столько, сколько стоит запуск экземпляра m1.small в течение 1 часа. Должен быть запущен в кратчайшие сроки.

Обновление 2: Пройдя через все проблемы, похоже, что Java вообще не будет работать на экземпляре t1.micro. Запуск чего-либо, основанного на java, повлияет на вашу систему так же, как и установка jre / jdk. Итак, чтобы использовать java на t1.micro, либо используйте какой-нибудь другой дистрибутив, не основанный на debian (однако я не уверен на 100%, что это сработает), либо обновите экземпляр до m1.small или лучше.

Обновление 3: по состоянию на 11.08.2011 проблема не решена. Видеть https://bugs.launchpad.net/ubuntu/+source/linux-ec2/+bug/634487 для дальнейших обновлений. Прямо сейчас Amazon должен рассмотреть предложенный патч ... В принципе, они исправят его, когда сделают ...

Чтобы исправить dpkg: http://lydonchandra.com/content/failure-installing-jre-java-runtime-env-ec2-ubuntu-10


У меня такая же проблема, зона ami-00067852 ap-southeast-1a. Что, черт возьми, происходит?

Ты бежал dpkg --configure -a как вам сказали? Если да, то что вы получили в результате?

ОБНОВИТЬ:

Затем запустите: strace -s100 -f -o /tmp/debug.out dpkg --configure -a подождите несколько минут и загрузите куда-нибудь файл. Или прикрепите сюда, скажем, последние 200 строк.

ОБНОВЛЕНИЕ2:

Файл с именем /tmp/debug.out нужно. Вывод на консоль не меняется.

У меня был 32-битный ami-ccf405a5, который вызывал у меня проблемы с jre. Тогда я использовал 64-битную ami (ami-cef405a7), и это решило мою проблему.