Время от времени пользователи Ubuntu встречаются с ошибками от apt
или apt-get
, из формы:
The package some-package needs to be reinstalled, but I can't find an archive for it.
Я хочу знать то, что вызывает эту ошибку так, чтобы я мог воспроизвести ее и попытаться найти безопасные способы зафиксировать ее, даже когда поврежденный пакет важен и имеет много зависимостей. Этот бит исходного кода APT мог бы дать что-то вроде ключа к разгадке, но я не знаю, как пакеты получают состояние, которое вызывает ошибку.
Как я могу произвести эту ошибку для тестирования на моем (ПОМОЩНИК Ubuntu 17.10) система?
Это запрашивается этим недавним, Спрашивают вопрос о Ubuntu и мой давний дискомфорт с заключительными вопросами об этой ошибке против потребностей Кв. / Синаптических потребностей переустановить пакет, но не могут найти архив для него, ответ которого использует dpkg --force-all
удалить незаконный пакет. Анонимная обратная связь предполагает, что это решение работало на многих пользователей, но я не уверен то использование --force-all
не вызовет более поздние проблемы, или что это - хорошая идея использовать этот метод для удаления важных пакетов как APT.
Ошибка "Потребности Кв. / Синаптические потребности переустановить пакет, но не может найти, что архив для него" является время от времени неопределенным.
Наиболее распространенное время я вижу эту ошибку, при обновлении Ubuntu от одной версии до другого.
Примечание: Ubuntu преобразовывает из Кв. - добираются до Кв., но я использую склонный - входят в это сообщение. Поскольку дополнительная информация видит 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
или некоторое изменение.
Если склонный не может определить местоположение .deb в репозитории, или потому что пакеты были удалены (редкие), репозиторий был удален из системы, или обновление и пакет не находятся в новом репозитории, Вы получите ошибку "Потребности Кв. / Синаптические потребности переустановить пакет, но не можете найти архив для него"
Но ошибка может прибыть из других причин.
Заключение в кавычки соответствующих разделов из 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 | - ожидание
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.
Если страница (страницы) справочника является tl; доктор-> Как часть установки, .deb / dpkg / способные выполнения пред / отправляют сценарии установки и другие функции. Если они установка / сбой сценариев удаления по ряду причин, пакет будет отмечен, как "полуустановлено" (или некоторое состояние кроме не установленный / установленный). В том грязном состоянии Вы можете иногда также видеть ошибку "Потребности Кв. / Синаптические потребности переустановить пакет, но не можете найти архив для него". В этом примере проблемой не является недостающий архив, а проблема в пред/сообщение сценарии установки, которые не могут быть разрешены ре, выполняющим их. Таким образом ошибка время от времени не конкретна.
Сначала попытайтесь зафиксировать зависимости сначала путем проверки соответствующего ppa / репозитории включены, вселенная, например, или независимо от того, что репозитории необходимы.
Затем печально известное
sudo apt-get install -f
Считайте любые выходные сигналы и сообщения об ошибках и отправьте команду и произведите здесь, если Вы нуждаетесь в помощи.
Попытайтесь реконфигурировать
sudo dpkg --configure -a
Это запустит скрипты конфигурации. Можно указать пакет, а не-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 информацию (см. выше),
cd /var/lib/dpkg/info
sudo rm -i package_name*
Будьте осторожны, Вы не удаляете более, чем необходимый сюда.
Наконец удалите незаконный пакет
sudo dpkg --remove --force-remove-reinstreq package_name
Необходимо затем смочь использовать склонный
sudo apt-get update
sudo apt-get install -f
sudo apt-get upgrade
Только если необходимая находка и вручную удаляет любые файлы, остающиеся в системе. Это - ручная процедура и может включать файлы конфигурации в /etc
или страницы справочника или совместно используемые данные. Используйте находят или располагаются для идентификации файлов оставлений потенциала.
Очевидно, необходимо проявить большую заботу при удалении системных файлов. Не удаляйте вещи, которые Вы не понимаете и не используете rm -Rf
не понимая то, что сделает та команда. rm -i
вероятно, лучше как -i
опция просит подтверждение.
Вы можете воспроизводить это сообщение об ошибке путем ручного редактирования dpkg файла состояния любого пакета в /var/lib/dpkg/info
и изменение состояния к наполовину установленному
sudo nano /var/lib/dpkg/info/some_package
Отредактируйте Строку состояния, таким образом, она читает
Состояние: произведите чистку полуустановленного reinstreq
Затем попытайтесь работать apt-get
.
Если это не работает, устанавливает пакет от ppa, работает склонный - становятся чистыми, удаляют ppa и затем пытаются переустановить или реконфигурировать пакет.
Извините за длинное сообщение, но я надеюсь, что это дает Вам понимание причины и разрешения этого сложного сообщения об ошибке "Потребности Кв. / Синаптические потребности переустановить пакет, но не может найти архив для него"