Как удалить битые пакеты в Ubuntu

Я не могу удалить сломанную упаковку. Используйте следующую команду: sudo apt-get -f installно я получаю следующий ответ:

Preparing to unpack .../nodejs_0.10.28-1chl1~trusty1_amd64.deb ...
Unpacking nodejs (0.10.28-1chl1~trusty1) over (0.10.25~dfsg2-2ubuntu1) ...
dpkg: error processing archive /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb (--unpack):
 trying to overwrite '/usr/share/man/man1/node.1.gz', which is also in package nodejs-legacy 0.10.25~dfsg2-2ubuntu1
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Processing triggers for man-db (2.6.7.1-1) ...
Errors were encountered while processing:
 /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Я пробовал различные команды, такие как

 2015  sudo apt-get clean
 2020  sudo dpkg --configure -a
 2023  sudo apt-get autoremove
 2034  sudo apt-get upgrade && sudo apt-get -f install

Но я не получил никакого результата. Не могу установить синаптик. Любые идеи, как я могу удалить сломанный пакет?

11 ответов

Решение

Это исправило мою проблему:

sudo dpkg -i --force-overwrite /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb

Запустите эту команду, чтобы удалить битые пакеты в Ubuntu.

sudo dpkg --remove --force-remove-reinstreq package_name 

после удаления пакета обновите вашу систему командой

sudo apt-get update

перезагрузите систему после успешного обновления.

Откройте свой терминал и используйте следующую команду

sudo dpkg --purge nodejs-legacy
sudo apt-get install -f

Это должно решить вашу проблему.

Я обнаружил, что:

sudo dpkg --remove --force-remove-reinstreq <packagename>

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

force-remove-reinstreq это "ядерный вариант" удаления пакета. Сбой возможен только в том случае, если есть другой пакет, зависящий от того, который вы собираетесь удалить. Опять же, в этом случае также удалили зависимый пакет.

Если у вас нарушена зависимость (с которой я столкнулся с openjdk), вам нужно очистить пакет и заставить его пропустить проблемы с зависимостями:

sudo dpgk -P --force-depends package_name

Нашел ответ на другом форуме

rm /var/lib/dpkg/info/<package_name>.*

пример:

rm /var/lib/dpkg/info/elasticsearch.*

Ничего из вышеперечисленного не помогло мне. в конце концов я отредактировал файл /var/lib/dpkg/status и удалил оттуда пакеты.

Хотя я бы не советовал это делать, просто если что-то не получится...

Вот один из них:

обновить список пакетов, как это

 sudo apt-get update

затем очистите все частичные пакеты

 sudo apt-get autoclean

Теперь почистите apt кеш

 sudo apt-get clean

Теперь удалите все ненужные зависимости

 sudo apt-get autoremove

с помощью приведенной выше команды вы можете определить любые поврежденные пакеты и принудительно удалить их следующим образом.

 sudo dpkg --remove --force-remove-reinstreq package_name

Наконец, зачистите любые другие пакеты с зависимостями

 sudo apt-get -f install 

Скажи мне, как это происходит.

Та же ошибка повторяется, если мы делаем apt-get clean а также apt-get -f install если мы не удалим ненужные данные из /var/lib/dpkg/status файл в Ubuntu.

Предположим, нам нужно удалить поврежденный пакет apache. Изначально мы должны открыть файл состояния и найти пакет apache. Удалите полное описание пакета и сохраните файл состояния. Тогда попробуйте использовать apt-get -f install а также apt-get clean,

Откройте свой терминал и вставьте эти строки после строки

sudo rm -rf  /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
sudo apt-get autoclean
sudo apt-get update
sudo apt-get upgrade

затем попробуйте еще раз

Ничто из вышеперечисленного не помогло мне

я использовал sudo aptitude,

Он сразу нашел ошибку и предложил варианты. Вы выбираете, и это исправляет это.

У меня была проблема со сломанным пакетом коди. Я открыл менеджер пакетов synaptic и использовал "сломанный" фильтр, чтобы найти пакет и пометил его для полного удаления. Это работало как чемпион.

  1. запросить все пакеты, которые установлены сегодня или вчераawk -v foo=$(date '+%Y-%m-%d') -v bar=$(date -d "yesterday" '+%Y-%m-%d') '($1==foo || $1==bar) && $3~/^install$/ { print $4 }' /var/log/dpkg.log
  2. wine-qqintl:i386 вызвал проблему, поэтому я удаляю пакетsudo dpkg -r wine-qqintl:i386

  3. сделанный.

Другие вопросы по тегам