Intereting Posts
Dell Chromebook 11 – не может установить подсветку и / sys / class / backlight / folder пуст Совместное использование рабочего стола за пределами Empathy Что такое GSettings и для чего Unity использует его? Как мне предоставить доступ к / var / www для создания и редактирования файлов и папок в нем без «sudo»? снятие снимков экрана с помощью меню, активированного с помощью клавиатуры Как загрузить с youtube-dl, чтобы получить название видео как имя файла? Требуется драйвер принтера Lexmark X7675 SSH – перераспределение дискового пространства Geany или Gedit предоставляют протокол браузера способом Textmate с txmt: //? Карта клавиатуры неверна при использовании NX-клиента Есть ли способ установить сочетания клавиш для определенных открытых окон в Gnome? Ethernet-соединение не работает Atheros AR8152 OS 12.04 Отдельные значки для Chrome и Hangouts в Unity Как настроить прокси без GUI? не может установить ничего из программного центра (ненадежные пакеты)

Как я могу воспроизвести ошибку «пакет … нужно переустановить, но я не могу найти для него архив» для тестирования?

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


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

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

Ошибка «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

http://manpages.ubuntu.com/manpages/zesty/man8/apt-get.8.html

чистый

  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 вызывается либо пользователем, либо обновлением, либо в какой-то момент пользователь пытается переустановить пакет, будет переустановлен sudo apt-get --reinstall foo или какой-либо вариант.

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


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

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

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

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

  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. 

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


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

  1. Сначала попробуйте исправить зависимости сначала, убедившись, что соответствующие ppa / repositories включены, например, юниверс или какие-либо репозитории.

    Как включить репозиторий «Вселенная»?

    Что такое PPAs и как их использовать?

    Тогда печально известный

    sudo apt-get install -f

    ПРОЧИТАЙТЕ любые сообщения о выходе и ошибках и после этого отправьте команду и выведите здесь, если вам нужна помощь.

  2. Попробуйте переконфигурировать

     sudo dpkg --configure -a 

    Это запустит скрипты config. Вы можете указать пакет, а не -a, но – более полезно, когда у вас возникают проблемы.

    ПРОЧИТАЙТЕ любые сообщения о выходе и ошибках и после этого отправьте команду и выведите здесь, если вам нужна помощь.

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

  3. Попытайтесь удалить оскорбительный пакет, при необходимости, силой. Вы должны быть очень осторожны здесь, вы можете принудительно удалить критическую упаковку или еще худший набор важных пакетов. Следующие команды идут от вежливого до менее вежливого к прямой силе. Попробуйте их по порядку.

     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 .

  4. Если это не удается, вам придется вручную удалить пакеты. Это может включать поиск всех компонентов в вашей системе и их ручное удаление.

    Используйте следующую процедуру

    Удалите информацию dpkg (см. Выше)

     cd /var/lib/dpkg/info sudo rm -i package_name* 

    Будьте осторожны, вы не удаляете больше, чем нужно здесь.

    Наконец, удалите оскорбительный пакет

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

    Затем вы сможете использовать apt

     sudo apt-get update sudo apt-get install -f sudo apt-get upgrade 
  5. Только при необходимости найдите и вручную удалите все файлы, оставшиеся в системе. Это ручная процедура и может включать конфигурационные файлы на / etc или man-страницах или совместно используемые данные. Используйте поиск или найдите, чтобы определить потенциальные оставшиеся файлы.

    Очевидно, что вы должны проявлять большую осторожность при удалении системных файлов. Не удаляйте вещи, которые вы не понимаете, и не используйте rm -Rf не понимая, что сделает эта команда. rm -i , вероятно, лучше, поскольку опция -i запрашивает подтверждение.


Восстановить эту проблему

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

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

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

Состояние: очистка

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

Если это не сработает, установите пакет из ppa, запустите apt-get clean, удалите ppa, а затем попробуйте переустановить или перенастроить пакет.

Извините за длинный пост, но я надеюсь, что это даст вам представление о причине и разрешении этого сложного сообщения об ошибке «Apt / Synaptic необходимо переустановить пакет, но не может найти для него архив»