То, как я могу воспроизвести ошибку “пакет …, должно быть переустановлено, но я не могу найти архив для него” для тестирования?

Время от времени пользователи 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.

5
задан 7 December 2017 в 15:16

1 ответ

Ошибка "Потребности Кв. / Синаптические потребности переустановить пакет, но не может найти, что архив для него" является время от времени неопределенным.

Наиболее распространенное время я вижу эту ошибку, при обновлении 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 / способные выполнения пред / отправляют сценарии установки и другие функции. Если они установка / сбой сценариев удаления по ряду причин, пакет будет отмечен, как "полуустановлено" (или некоторое состояние кроме не установленный / установленный). В том грязном состоянии Вы можете иногда также видеть ошибку "Потребности Кв. / Синаптические потребности переустановить пакет, но не можете найти архив для него". В этом примере проблемой не является недостающий архив, а проблема в пред/сообщение сценарии установки, которые не могут быть разрешены ре, выполняющим их. Таким образом ошибка время от времени не конкретна.


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

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

    Затем печально известное

    sudo apt-get install -f
    

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

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

    sudo dpkg --configure -a
    

    Это запустит скрипты конфигурации. Можно указать пакет, а не-a, но-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
    

    Необходимо затем смочь использовать склонный

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

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


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

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

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

Отредактируйте Строку состояния, таким образом, она читает

Состояние: произведите чистку полуустановленного reinstreq

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

Если это не работает, устанавливает пакет от ppa, работает склонный - становятся чистыми, удаляют ppa и затем пытаются переустановить или реконфигурировать пакет.

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

5
ответ дан 23 November 2019 в 09:20

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

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