Предупреждение dpkg: файл списка файлов для пакета отсутствует.

Вопрос или проблема

Я пытался установить пакет, и он установился, и, похоже, работает нормально. Однако при установке я получил несколько предупреждений о том, что некоторые пакеты отсутствуют.

dpkg: предупреждение: файл списка файлов для пакета '...' отсутствует, предполагаем, что пакет в данный момент не имеет установленных файлов.

Поскольку это всего лишь предупреждение и, похоже, всё равно работает, я предположил, что это не имеет значения, но хотел бы, чтобы кто-то это подтвердил.

Отсутствующие пакеты – это те, которые я намеренно удалил, потому что они были несущественными и занимали много места.

ИЗМЕНЕНИЕ: Пакет – tzdata. Использую dpkg -i для установки файла .deb. И вышеуказанное – это, по сути, всё предупреждение. Просто вместо … перечисляются пакеты: python2.7-minimal, libsqlite3-0, libaprutill-dbd-sqlite3, python-minimal.

ИЗМЕНЕНИЕ: “Что именно вы сделали?” Я выполнил команду

dpkg -i tzdata_2017b-2_all.deb

чтобы установить пакет tzdata.

“Что вы хотели добиться?” Я хотел, чтобы пакет установился.

“Что произошло вместо этого? Вы столкнулись с какими-либо предупреждениями или сообщениями об ошибках?” Пакет установился и работал нормально. Однако появилось вышеуказанное предупреждение для вышеуказанных пакетов.

Я не могу скопировать и вставить, так как это происходит на отдельном сервере. Но я перепишу это здесь:

dpkg: предупреждение: файл списка файлов для пакета python2.7-minimal отсутствует, предполагаем, что пакет в данный момент не имеет установленных файлов.
dpkg: предупреждение: файл списка файлов для пакета libsqlite3-0 отсутствует, предполагаем, что пакет в данный момент не имеет установленных файлов.
dpkg: предупреждение: файл списка файлов для пакета libaprutill-dbd-sqlite3, предполагаем, что пакет в данный момент не имеет установленных файлов.
dpkg: предупреждение: файл списка файлов для пакета python-minimal, предполагаем, что пакет в данный момент не имеет установленных файлов.

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

Посмотрите на этот вопрос на Serverfault.

Вы можете попробовать что-то подобное:

for package in $(apt-get upgrade 2>&1 |\
                 grep "warning: files list file for package '" |\
                 grep -Po "[^'\n ]+'" | grep -Po "[^']+"); do
    apt-get install --reinstall "$package";
done

Готовый к копированию/вставке в одной строке:

for package in $(apt-get upgrade 2>&1 | grep "warning: files list file for package '" | grep -Po "[^'\n ]+'" | grep -Po "[^']+"); do apt-get install --reinstall "$package"; done

Имейте в виду, что выполнение этой команды занимает некоторое время, так как она проходит через каждый пакет.

Я хотел предложить что-то подобное принятому ответу, прежде чем нашел это. И у меня недостаточно репутации, чтобы добавить это в качестве комментария.

К сожалению, я не могу ответить на вопрос, почему это происходит. У меня была эта проблема после dist-upgrade, и я исправил ее, переустановив пакеты.

У нас был сбой RAID5, который, похоже, сопровождался некоторой порчей базы данных dpkg, так что я столкнулся с этой проблемой недавно, однако вышеуказанное решение не сработало, так как apt-get install --reinstall xxx выдало больше ошибок с поврежденными файлами списков. Тем не менее, мне удалось решить это в моем случае, вот процесс, который я использовал.


В конце концов, процесс, который сработал для меня, заключался в удалении всех файлов, соответствующих этому пакету, из базы данных, и затем переустановке после обновления самого dpkg.

В качестве примера вот одна из таких ошибок (замените antlr на название вашего отсутствующего пакета с этого момента):

dpkg: предупреждение: файл списка файлов для пакета antlr отсутствует, предполагаем, что пакет в данный момент не имеет установленных файлов.

Для меня решение было:

sudo mv /var/lib/dpkg/info/antlr* ~/var   # Резервное копирование на случай других проблем
                                          # Альтернативно: sudo rm /var/lib/dpkg/info/antlr*

Затем,

sudo dpkg --configure -a

Ключевым моментом, похоже, было выполнение команды конфигурации каждый раз, когда удалялся список пакетов (в отличие от некоторых других предложений, которые я видел, о том, чтобы удалить все файлы списка и затем выполнить apt-get update/upgrade).

Затем, наконец, sudo apt-get install --reinstall antlr завершился успешно.

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

sudo apt reinstall <package_name_1> <package_name_2>

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

Если вы попробовали ответ @fronk, но apt-get upgrade не возвращает никаких предупреждений от dpkg, но apt-get install <некоторый пустой пакет> --reinstall возвращает ошибки от dpkg, замените apt-get upgrade на apt-get install <некоторый пустой пакет> --reinstall следующим образом:

for package in $(apt-get install <некоторый пустой пакет> --reinstall 2>&1 | grep "warning: files list file for package '" | grep -Po "[^'\n ]+'" | grep -Po "[^']+"); do apt-get install --reinstall "$package"; done

Это сработало для меня:

$ dpkg -S dummy query 2>/tmp/warnings
$ cat /tmp/warnings | awk -F "'" '{print $2}' > /tmp/packages
# затем выполните следующее:
$ for package in $(cat /tmp/packages); do echo apt-get install --reinstall $package; apt-get install --reinstall $package; done;

Источник: https://forums.debian.net/viewtopic.php?t=119371

Для дополнительной информации я установил digikam на pop_os 22.04, используя графический интерфейс “Приложения”, и он функционировал корректно и запускался из ярлыка.

Если выполнить цикл “apt update/upgrade” после этого, приложение не запускалось ни из ярлыка, ни из графического меню “Приложения”. В том графическом интерфейсе оно отображалось как установленное, но ничего не происходило, когда я пытался запустить его.

Удаление и затем повторная установка решали проблему, пока не произойдет действие ‘update/upgrade’, которое снова нарушало его работу.

Я заметил, что во время ‘upgrade’ было предупреждение “файл списка файлов для пакета digikam отсутствует”, которое я решил исследовать, и таким образом обнаружил этот вопрос.

Мой ответ на вопрос “Мне просто любопытно, имеет ли значение предупреждение от dpkg в такой ситуации” – да, это предупреждение может привести к тому, что приложение будет неправильно переконфигурировано после каждого обновления.

Ответ или решение

Получая предупреждение от dpkg о том, что файл списка файлов для пакета отсутствует, многие пользователи могут недоумевать о серьезности этой проблемы и ее возможных последствиях. Давайте рассмотрим эту ситуацию подробнее, чтобы прояснить, действительно ли это предупреждение важно и на что следует обратить внимание.

1. Контекст проблемы

Ваша ситуация связана с установкой пакета tzdata с помощью команды dpkg -i, после чего были выданы предупреждения о том, что некоторые пакеты, такие как python2.7-minimal, libsqlite3-0, и другие, имеют отсутствующие файлы списка. Эти пакеты были удалены по вашей инициативе, так как они не были критически важными для функционирования вашей системы.

2. Понимание сообщения dpkg

Сообщение:

dpkg: warning files list file for package '...' missing, assuming package has no files currently installed.

указывает на то, что dpkg не может найти файл, который обычно содержит информацию о файлах, установленных данным пакетом. Это может произойти в следующих случаях:

  • Пакет был удален вручную, что привело к его неполной чистке.
  • Установленная версия пакета была повреждена или файлы базы данных dpkg стали недоступными.
  • Эта проблема может возникнуть в результате сбоя, например, после отключения питания или возможных повреждений файловой системы.

3. Значимость предупреждения

Хотя dpkg и успешно завершает установку tzdata, предупреждение о пропавших файлах списка файлов может иметь долгосрочные последствия:

  • Некорректная переустановка: В будущем, если вы попытаетесь переустановить или обновить пакеты, базовая информация о файлах может быть недостаточной. Это может привести к ошибкам или некорректному поведению программного обеспечения.
  • Управление зависимостями: Если пакеты, которые вызывают предупреждения, необходимы для других установленных программ, отсутствие правильной информации может привести к сбоям в функционировании этих программ.

4. Действия для устранения предупреждения

Если вы хотите устранить это предупреждение, не прибегая к его исправлению, существует несколько вариантов:

  • Переустановка проблемных пакетов. Это можно сделать с помощью команды:

    sudo apt-get install --reinstall python2.7-minimal libsqlite3-0 libaprutill-dbd-sqlite3 python-minimal

    Это восстановит недостающие файлы и обновит записи в базах данных.

  • Очистка базы данных dpkg. Если переустановка не помогла или возникли ошибки, может потребоваться ручное редактирование файлов, связанных с проблемными пакетами:

    sudo dpkg --remove --force-remove-reinstreq <имя_пакета>

    Замените <имя_пакета> на соответствующий пакет, чтобы удалить испорченную запись.

5. Заключение

Таким образом, предупреждение dpkg о недостающих файлах списка является сигналом, который следует учитывать. Хотя на данный момент ваша установка tzdata функционирует корректно, для поддержания целостности системы и предотвращения потенциальных проблем с зависимостями в будущем рекомендуется провести инвентаризацию и восстановление всех проблемных пакетов. Путь к стабильной системе лежит через внимательное управление пакетами и их зависимостями.

Оцените материал
Добавить комментарий

Капча загружается...