Як видалити зламані пакети в ubuntu


38

Не можу видалити зламаний пакет. Використовуйте таку команду: 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

Але я не отримав жодного результату. Не можу встановити синаптик. Будь-які ідеї, як я можу видалити зламаний пакет?


Тут кілька відповідей запропонували --force-remove-reinstreqі --force-overwrite. Зверніть увагу, що ви повинні використовувати ці два (особливо перший), лише якщо ви експерт Linux, оскільки це може повністю зламати вашу систему.
g_p

Відповіді:


55

запустіть цю команду, щоб видалити зламані пакети в ubuntu.

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

після видалення пакета оновіть вашу систему командою

sudo apt-get update

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


5
Цій команді завжди слід уникати, оскільки вона зламає вашу систему більше, ніж вона ремонтує
ранчо

2
@rancho залежить від пакету.
Філіп

хороший один, як ви Гас завжди записи імяпакета_, але я бачу список 900 рядків в божевільному форматі, наприклад: Broken libopencv-highgui2.4v5:amd64 Conflicts on libopencv-highgui2.4 [ amd64 ] < 2.4.8+dfsg1-2ubuntu1 > ( libs ). чекаючи на LTS справді зробив для мене цей шалений трюк.
nyxee

@rancho "Ви зламаєте вашу систему більше, ніж ремонтуєте", чи можете ви допрацювати? man dpkgне дуже допомагає.
Стефан Гурішон

Це було єдине, що працювало на мене. Я зламав MySQL під час оновлення пакету. Тепер я не міг очистити чи перевстановити. Так це врятувало мені життя.
Анкіт Сінганія

11

Відкрийте свій термінал і використовуйте наступну команду

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

Це має вирішити вашу проблему.


11

Я виявив, що:

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

Працює найкраще. Якщо він дає вам помилку, що він не видалить пакет, оскільки від цього залежить інший пакет, видаліть і інший пакет. Вам доведеться повторити цей крок кілька разів, а потім перевстановити видалені пакети.

Це force-remove-reinstreq"ядерний варіант" видалення пакету. Це не вдається лише за наявності іншого пакета, залежно від того, який ви збираєтесь видалити. Знову ж, у цьому випадку також видалили залежний пакет.


Ядерний варіант працював там, де очищався, очищається, перевстановлюється, авторемонтується через обидва dpkgі apt-getне виходить із ладу. Дякую.
LAFK повідомляє, що повернеться до Моніки

Це краще рішення , якщо ви просто хочете , щоб всю ядерну зброю і почати все спочатку. Економив мені багато часу! (Я також використовував --purge after --remove)
andersevenrud

plase, чи можете ви дати нам підказки, як це заповнити, package_nameколи у файлах журналу apt у нас є, як 1000+ рядків (кілька дублікатів)?
nyxee

4

Це вирішило мою проблему:

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

Тож будь ласка, позначте його як правильну відповідь тоді.
jarno

Працює чудово.
Shubham Patel

3

Відкрийте свій термінал і вставте ці рядки за рядком

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

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


2

Повторюється та ж помилка Якщо ми робимо, apt-get cleanі apt-get -f installякщо не видалимо непотрібні дані з /var/lib/dpkg/statusфайлу в Ubuntu.

Припустимо, нам потрібно видалити розбитий пакет apache. Спочатку ми маємо відкрити файл статусу та шукати апаратний пакет. Видаліть весь опис пакета та збережіть файл статусу. Потім спробуйте використовувати apt-get -f installі apt-get clean.


2

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

Мені важко, я б не радив цього робити, лише якщо щось інше не вдасться ...


Це здається єдиним, що працювало на мене. Навіть так звана "ядерна опція" --force-remove-reinstreq не могла видалити пакет, що порушує право. Спасибі пане.
алекс

1

Ніщо з вищезазначеного не працювало для мене

Я звик sudo aptitude.

Він знайшов помилку негайно і запропонував варіанти. Ви вибираєте і це виправляє.


також виправили це для мене на debian - це було єдине робоче рішення для мене. Жоден із коментарів раніше не працював для мене! Спасибі!
Гірбод

0

Ось один:

оновіть список ваших пакетів так

 sudo apt-get update

потім очистіть будь-які часткові пакети

 sudo apt-get autoclean

Тепер очистіть влучний кеш

 sudo apt-get clean

Тепер видаліть зайві залежності

 sudo apt-get autoremove

з команди вище, ви можете ідентифікувати будь-які зламані пакети та насильно видалити її так

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

Нарешті, скопіюйте будь-які інші пакети із залежностями

 sudo apt-get -f install 

Розкажи, як це йде.


Я думаю, що ця команда неправильна: `sudo dpkg --remove -force --force-remove-reinstreq package_name.
Хуан Сімон

Джи ... так який з них є правильним?
Олу Сміт

0
  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. зроблено.


1
ок, ми можемо отримати нещодавно встановлені такі пакети, але це не відповідає на запитання, яке задає питання про те, як видалити зламані пакунки
Zanna

0

У мене виникла проблема зі зламаним пакетом kodi. Я відкрив диспетчер синаптичних пакетів і використав "розбитий" фільтр, щоб знайти пакунок і позначив його для повного видалення. Це працювало, як чемпіон.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.