Как удалить битые пакеты в 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 и использовал "сломанный" фильтр, чтобы найти пакет и пометил его для полного удаления. Это работало как чемпион.
- запросить все пакеты, которые установлены сегодня или вчера
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
wine-qqintl:i386 вызвал проблему, поэтому я удаляю пакет
sudo dpkg -r wine-qqintl:i386
сделанный.