Виправити напівінсталяційний пакет


42

Я отримую помилку під час використання sudo apt-get upgradeзаяви:

dpkg: error processing libgfortran3:amd64 (--configure):
  package libgfortran3:amd64 is not ready for configuration
  cannot configure (current status `half-installed')
Errors were encountered while processing:
  libgfortran3:amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)

Схоже, це не блокує встановлення / оновлення інших програм. Я вважаю, що ця проблема виникла через пряме вимкнення мого ПК під час оновлення програми.

Як я можу це виправити?


Відповіді:


38
sudo dpkg --remove --force-remove-reinstreq --dry-run libgfortran3:amd64

Це просто сухий хід. Я не впевнений, що видалення libgfortran3буде брати з собою, але запустіть це і подивіться. Якщо припустити, що не збирається обдирати всю систему, запустіть її знову без, --dry-runі тоді ви зможете sudo apt-get install ...повернути потрібні вам пакети.


4
Опрацювали, дякую! Для запису я запустив його, і він сказав, dpkg: warning: package is in a very bad inconsistent state; you should reinstall it before attempting a removalтому я завантажив пакунок вручну з пакети Package.ubuntu.com і побіг sudo dpkg -i WHERE/THE/DOWNLOADED/PACKAGE/IS. Тоді стало все добре.
Бора М. Альпер

1
У моєму випадку, слідуючи цим інструкціям, просто запустівши "apt-get install -f", перевстановив пакет, а також виправив декілька інших із зламаними залежностями через нього. Це було для пакету даних libx11 на debian 7.
bchurchill

Без --dry-run, як ви сказали, це працювало на мене. Дякую!
форва

69

Для половини встановленої помилки пакета, - переустановка працювала для мене:

sudo apt-get install --reinstall packagename 

1
Так, але попередження про те, що після перевстановлення імені пакета, apt-get потім перейде до налаштування будь-яких напівконфігурованих пакетів.
лицар Седрик

5
це безпечніше, ніж прийнята відповідь.
Занна

sudo apt-get install --reinstal ncurses-base і пізніше я запустив оновлення sudo apt-get за допомогою користувача root (sudo -s), воно працювало так само ...
ArifMustafa

чудовий. тільки це рішення вирішило мою проблему
iWizard

це зробило це для мене. php-груша завдала мені головного болю. Дякую!
pcarvalho

6
sudo apt install --reinstall packagename

Це працює як шарм. Це вирішило проблему, яку я відчував місяцями. Моя справа була з пакетомlibmysqlcppconn7v5

Все, що я зробив, було бігом sudo apt install --reinstall libmysqlcppconn7v5


2

Якщо ви хочете виправити це через GUI, ви можете використовувати синаптичний. Synaptic - чудовий інструмент управління пакетами, який раніше включався в більш старі версії ubuntu. Щоб встановити його:

sudo apt-get install synaptic

натисніть на виправити зламані пакети.


Синаптик не перераховує пакунок у розбитій категорії :(
Barun

2

У мене виникла та сама проблема "напіввстановлений пакет" з пакетом кібани. Я отримав таку помилку:

dpkg: error processing kibana (--configure):
package kibana is not ready for configuration
cannot configure (current status 'half-installed')
Errors were encountered while processing:
  kibana
E: Sub-process /usr/bin/dpkg returned an error code (1)

Якщо хтось все ще стикається з подібною проблемою, то ви можете спробувати це:

sudo rm /var/lib/dpkg/info/kibana*
cd /var/cache/apt/archives
sudo rm kibana*
apt-get --reinstall install kibana

Це працює для мене. Вам просто потрібно замінити слово 'kibana' на вашу наполовину встановлену назву пакета.


2

Це має вирішити вашу проблему без повторної установки пакета.

sudo dpkg --force-remove-reinstreq --remove <package_name here>

Далі: sudo apt-get update


Чому --force-remove-reinstreq? Менеджер пакунків не зазначає, що потрібна повторна інсталяція. Як правило, регулярне видалення працює чудово для неконфігурованих пакетів. -1
Девід Фоерстер

Це просто те, що я роблю, коли sudo apt-get remove <packageнемає можливості, і я не хочу перевстановлювати цей напіввстановлений пакет. Тоді я використовую --force-remove-reinstreqдля видалення цих смітників. PS: Це на Linux Mint .. Сумніваюся, чи буде будь-який інший, оскільки Linux базується на Ubuntu ..
CodeGeass

1
Менеджер пакунків працює однаково у всіх дистрибутивах на базі Debian (саме це і dpkgозначає), але ви не повинні використовувати --force-*"на всякий випадок". Повідомлення про помилки є з причини і не повинні сприйматися недосвідченими користувачами, тому не слід пропонувати їм зайві --force-*варіанти. В іншому випадку ми можемо просто рекомендувати завжди використовувати --force-allабо, ще краще, видалити ці --force-*параметри dpkgвзагалі, і, якби це було поведінкою за замовчуванням, тому що це було б простіше і зручніше.
Девід Фоерстер

Гаразд, признайся ... Мене більше турбує робота, ніж те, що я знаю, що і як саме це робиться. Вибачення ..
CodeGeass

Гм ... Я просто бачу, що прийнята відповідь підказує те саме. Тож я можу помилятися з приводу --force-remove-reinstreqнепотрібності. Але це також означає, що ваша відповідь є (майже) його дублікатом. Пощастить наступного разу.
Девід Фоерстер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.