Ошибка Imagemagick предотвращает обновление apt [duplicate]

Время от времени пользователи Ubuntu сталкиваются с ошибками из apt или apt-get формы: The package some-package needs to be reinstalled, but I can't find an archive for it.

Я хочу знать, что вызывает эту ошибку, чтобы я мог ее воспроизвести и попробуйте найти безопасные способы его исправления, даже если разбитый пакет важен и имеет множество зависимостей. apt исходного кода APT может дать немного ключ, но я не знаю, как пакеты получают статус, вызывающий ошибку.

Как я могу создать эта ошибка для тестирования моей (Ubuntu MATE 17.10) системы?

Это вызвано этим недавним вопросом Ask Ubuntu, и мой давний дискомфорт с закрытием вопросов об этой ошибке против Apt / Synaptic требует переустановки пакета, но не может найти для него архив, ответ которого использует dpkg --force-all для удаления нарушившего пакета. Анонимная обратная связь предполагает, что это решение сработало для многих пользователей, но я не уверен, что использование --force-all не вызовет более поздних проблем или что это хорошая идея использовать этот метод для удаления важных пакетов, таких как APT.

5
задан 8 December 2017 в 02:16

2 ответа

Ошибка «Apt / Synaptic требует переустановки пакета, но не может найти архив для него» порой неспецифична.

Самое распространенное время, когда я вижу эту ошибку, - это обновление Ubuntu с одна версия в другую.

Примечание: Ubuntu конвертирует с apt-get в apt, но я использую apt-get в этом сообщении. Дополнительную информацию см. В man apt и https://www.debian.org/doc/manuals/debian-reference/ch02.en.html

. Наиболее распространенной причиной этой ошибки является то, что пользователь имеет установил пакет, а затем удалил .deb, как правило, с помощью sudo apt-get clean

https://www.debian.org/doc/manuals/debian-reference/ch02.en.html [ ! d4]

clean clean clears out the local repository of retrieved package files. It removes everything but the lock file from /var/cache/apt/archives/ and /var/cache/apt/archives/partial/

Затем в какой-то момент dpkg --reconfigure вызывается либо пользователем, либо обновлением, либо в какой-то момент пользователь пытается

Если apt не может найти .deb в репозитории, либо потому, что пакеты были удалены (редки), репозиторий удален из системы, либо обновлен и пакет не находится в новом репозитории, вы получите сообщение об ошибке «Apt / Synaptic необходимо переустановить пакет, но не может найти архив для него»

Но ошибка может исходить из других причин.

Цитирование соответствующих разделов на странице руководства dpkg (см. http://manpages.ubuntu.com/manpag es / trusty / man1 / dpkg.1.html)

clean

Состояние пакета not-installed The package is not installed on your system. config-files Only the configuration files of the package exist on the system. half-installed The installation of the package has been started, but not completed for some reason. unpacked The package is unpacked, but not configured. half-configured The package is unpacked and configuration has been started, but not yet completed for some reason. triggers-awaited The package awaits trigger processing by another package. triggers-pending The package has been triggered. installed The package is unpacked and configured OK. ДЕЙСТВИЯ -i, --install package-file... Install the package. If --recursive or -R option is specified, package-file must refer to a directory instead. Installation consists of the following steps: 1. Extract the control files of the new package. 2. If another version of the same package was installed before the new installation, execute prerm script of the old package. 3. Run preinst script, if provided by the package. 4. Unpack the new files, and at the same time back up the old files, so that if something goes wrong, they can be restored. 5. If another version of the same package was installed before the new installation, execute the postrm script of the old package. Note that this script is executed after the preinst script of the new package, because new files are written at the same time old files are removed. 6. Configure the package. See --configure for detailed information about how this is done. - сконфигурировать пакет ... | -a | - -pending Configure a package which has been unpacked but not yet configured. If -a or --pending is given instead of package, all unpacked but unconfigured packages are configured. To reconfigure a package which has already been configured, try the dpkg-reconfigure(8) command instead. Configuring consists of the following steps: 1. Unpack the conffiles, and at the same time back up the old conffiles, so that they can be restored if something goes wrong. 2. Run postinst script, if provided by the package. /var/lib/dpkg/status Statuses of available packages. This file contains information about whether a package is marked for removing or not, whether it is installed or not, etc. See section INFORMATION ABOUT PACKAGES for more info.

ИНФОРМАЦИЯ О ПАКЕТЕ dpkg поддерживает некоторую полезную информацию о доступных пакетах. Информация делится на три класса: состояния, состояния выбора и флаги. Эти значения предназначены для изменения в основном с помощью dselect.

Как управлять сломанными пакетами

Сначала попробуйте исправить зависимости сначала, убедившись, что соответствующие ppa / репозитории включены, например, юниверс или какие-либо репозитории. Как включить «Вселенную»? хранилище? Что такое PPAs и как их использовать? Затем печально известный sudo apt-get install -f Прочитайте все сообщения о выходе и ошибке, после чего отправьте команду и выведите здесь, если вам нужна помощь. Попробуйте перенастроить sudo dpkg --configure -a Это запустит скрипты конфигурации. Вы можете указать пакет, а не -a, но - более полезно, когда у вас возникают проблемы. Прочтите любые сообщения о выходе и ошибках и отправьте команду и выведите здесь, если вам нужна помощь. Попытайтесь просмотреть любой неудачный скрипт и, если возможно, исправить ошибку / проблему в скрипте. Попытайтесь удалить оскорбительный пакет, при необходимости, силой. Вы должны быть очень осторожны здесь, вы можете принудительно удалить критическую упаковку или еще худший набор важных пакетов. Следующие команды идут от вежливого до менее вежливого к прямой силе. Попробуйте их по порядку. sudo dpkg --remove $broken_package sudo dpkg --remove --force-remove-reinstreq $broken_package sudo dpkg --remove --force-all $broken_package Если какой-либо из них работает, запустите sudo apt-get update && sudo apt-get upgrade, вам может потребоваться запустить sudo apt-get -f install и / или sudo dpkg --configure -a. Если это не удается, вам придется вручную удалить пакеты. Это может включать поиск всех компонентов в вашей системе и их ручное удаление. Используйте следующую процедуру. Удалите информацию dpkg (см. Выше). [F8] Будьте осторожны, вы не удаляете больше, чем это необходимо. Наконец, удалите оскорбительный пакет sudo dpkg --remove --force-remove-reinstreq package_name . Затем вы сможете использовать apt sudo apt-get update sudo apt-get install -f sudo apt-get upgrade . При необходимости найдите и вручную удалите все файлы, оставшиеся в системе. Это ручная процедура и может включать конфигурационные файлы на /etc или справочные страницы или общие данные. Используйте поиск или найдите, чтобы определить потенциальные оставшиеся файлы. Очевидно, что вы должны проявлять большую осторожность при удалении системных файлов. Не удаляйте вещи, которые вы не понимаете, и не используйте rm -Rf, не понимая, что сделает эта команда. rm -i, вероятно, лучше, поскольку опция -i запрашивает подтверждение.

Воссоздайте эту проблему

Если страница (-ы) man: tl; dr -> В качестве части установки, .deb / dpkg / apt run pre / post install и другие функции. Если эти сценарии установки / удаления не сработают по различным причинам, пакет будет помечен как «полуинсталляция» (или какое-то другое состояние, кроме установленного / установленного). В этом нечистом состоянии вы иногда также можете увидеть ошибку «Apt / Synaptic необходимо переустановить пакет, но не можете найти архив для него». В этом примере проблема не является отсутствующим архивом, а проблемой в сценариях pre / post install, которые не могут быть решены при повторном запуске. Таким образом, ошибка время от времени неспецифична.

sudo nano /var/lib/dpkg/info/some_package

Возможно, вы сможете воспроизвести это сообщение об ошибке, вручную отредактировав файл состояния dpkg любого пакета в /var/lib/dpkg/info и изменив статус на половину установленной [ ! d58]

Состояние пакета

Отредактируйте строку состояния, чтобы она читала

Состояние: очистка restreq half-installed

Затем попробуйте запустить apt-get.

3
ответ дан 18 July 2018 в 03:38

Ошибка «Apt / Synaptic требует переустановки пакета, но не может найти архив для него» порой неспецифична.

Самое распространенное время, когда я вижу эту ошибку, - это обновление Ubuntu с одна версия в другую.

Примечание: Ubuntu конвертирует с apt-get в apt, но я использую apt-get в этом сообщении. Дополнительную информацию см. В man apt и https://www.debian.org/doc/manuals/debian-reference/ch02.en.html

. Наиболее распространенной причиной этой ошибки является то, что пользователь имеет установил пакет, а затем удалил .deb, как правило, с помощью sudo apt-get clean

https://www.debian.org/doc/manuals/debian-reference/ch02.en.html [ ! d4]

clean clean clears out the local repository of retrieved package files. It removes everything but the lock file from /var/cache/apt/archives/ and /var/cache/apt/archives/partial/

Затем в какой-то момент dpkg --reconfigure вызывается либо пользователем, либо обновлением, либо в какой-то момент пользователь пытается

Если apt не может найти .deb в репозитории, либо потому, что пакеты были удалены (редки), репозиторий удален из системы, либо обновлен и пакет не находится в новом репозитории, вы получите сообщение об ошибке «Apt / Synaptic необходимо переустановить пакет, но не может найти архив для него»

Но ошибка может исходить из других причин.

Цитирование соответствующих разделов на странице руководства dpkg (см. http://manpages.ubuntu.com/manpag es / trusty / man1 / dpkg.1.html)

clean

Состояние пакета not-installed The package is not installed on your system. config-files Only the configuration files of the package exist on the system. half-installed The installation of the package has been started, but not completed for some reason. unpacked The package is unpacked, but not configured. half-configured The package is unpacked and configuration has been started, but not yet completed for some reason. triggers-awaited The package awaits trigger processing by another package. triggers-pending The package has been triggered. installed The package is unpacked and configured OK. ДЕЙСТВИЯ -i, --install package-file... Install the package. If --recursive or -R option is specified, package-file must refer to a directory instead. Installation consists of the following steps: 1. Extract the control files of the new package. 2. If another version of the same package was installed before the new installation, execute prerm script of the old package. 3. Run preinst script, if provided by the package. 4. Unpack the new files, and at the same time back up the old files, so that if something goes wrong, they can be restored. 5. If another version of the same package was installed before the new installation, execute the postrm script of the old package. Note that this script is executed after the preinst script of the new package, because new files are written at the same time old files are removed. 6. Configure the package. See --configure for detailed information about how this is done. - сконфигурировать пакет ... | -a | - -pending Configure a package which has been unpacked but not yet configured. If -a or --pending is given instead of package, all unpacked but unconfigured packages are configured. To reconfigure a package which has already been configured, try the dpkg-reconfigure(8) command instead. Configuring consists of the following steps: 1. Unpack the conffiles, and at the same time back up the old conffiles, so that they can be restored if something goes wrong. 2. Run postinst script, if provided by the package. /var/lib/dpkg/status Statuses of available packages. This file contains information about whether a package is marked for removing or not, whether it is installed or not, etc. See section INFORMATION ABOUT PACKAGES for more info.

ИНФОРМАЦИЯ О ПАКЕТЕ dpkg поддерживает некоторую полезную информацию о доступных пакетах. Информация делится на три класса: состояния, состояния выбора и флаги. Эти значения предназначены для изменения в основном с помощью dselect.

Как управлять сломанными пакетами

Сначала попробуйте исправить зависимости сначала, убедившись, что соответствующие ppa / репозитории включены, например, юниверс или какие-либо репозитории. Как включить «Вселенную»? хранилище? Что такое PPAs и как их использовать? Затем печально известный sudo apt-get install -f Прочитайте все сообщения о выходе и ошибке, после чего отправьте команду и выведите здесь, если вам нужна помощь. Попробуйте перенастроить sudo dpkg --configure -a Это запустит скрипты конфигурации. Вы можете указать пакет, а не -a, но - более полезно, когда у вас возникают проблемы. Прочтите любые сообщения о выходе и ошибках и отправьте команду и выведите здесь, если вам нужна помощь. Попытайтесь просмотреть любой неудачный скрипт и, если возможно, исправить ошибку / проблему в скрипте. Попытайтесь удалить оскорбительный пакет, при необходимости, силой. Вы должны быть очень осторожны здесь, вы можете принудительно удалить критическую упаковку или еще худший набор важных пакетов. Следующие команды идут от вежливого до менее вежливого к прямой силе. Попробуйте их по порядку. sudo dpkg --remove $broken_package sudo dpkg --remove --force-remove-reinstreq $broken_package sudo dpkg --remove --force-all $broken_package Если какой-либо из них работает, запустите sudo apt-get update && sudo apt-get upgrade, вам может потребоваться запустить sudo apt-get -f install и / или sudo dpkg --configure -a. Если это не удается, вам придется вручную удалить пакеты. Это может включать поиск всех компонентов в вашей системе и их ручное удаление. Используйте следующую процедуру. Удалите информацию dpkg (см. Выше). [F8] Будьте осторожны, вы не удаляете больше, чем это необходимо. Наконец, удалите оскорбительный пакет sudo dpkg --remove --force-remove-reinstreq package_name . Затем вы сможете использовать apt sudo apt-get update sudo apt-get install -f sudo apt-get upgrade . При необходимости найдите и вручную удалите все файлы, оставшиеся в системе. Это ручная процедура и может включать конфигурационные файлы на /etc или справочные страницы или общие данные. Используйте поиск или найдите, чтобы определить потенциальные оставшиеся файлы. Очевидно, что вы должны проявлять большую осторожность при удалении системных файлов. Не удаляйте вещи, которые вы не понимаете, и не используйте rm -Rf, не понимая, что сделает эта команда. rm -i, вероятно, лучше, поскольку опция -i запрашивает подтверждение.

Воссоздайте эту проблему

Если страница (-ы) man: tl; dr -> В качестве части установки, .deb / dpkg / apt run pre / post install и другие функции. Если эти сценарии установки / удаления не сработают по различным причинам, пакет будет помечен как «полуинсталляция» (или какое-то другое состояние, кроме установленного / установленного). В этом нечистом состоянии вы иногда также можете увидеть ошибку «Apt / Synaptic необходимо переустановить пакет, но не можете найти архив для него». В этом примере проблема не является отсутствующим архивом, а проблемой в сценариях pre / post install, которые не могут быть решены при повторном запуске. Таким образом, ошибка время от времени неспецифична.

sudo nano /var/lib/dpkg/info/some_package

Возможно, вы сможете воспроизвести это сообщение об ошибке, вручную отредактировав файл состояния dpkg любого пакета в /var/lib/dpkg/info и изменив статус на половину установленной [ ! d58]

Состояние пакета

Отредактируйте строку состояния, чтобы она читала

Состояние: очистка restreq half-installed

Затем попробуйте запустить apt-get.

3
ответ дан 24 July 2018 в 17:53

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

Похожие вопросы: