Назад | Перейти на главную страницу

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

Я получаю это предупреждение для нескольких пакетов каждый раз при установке любой упаковать или выполнить apt-get upgrade. Не уверен, что вызывает это; это новая установка Debian на моем сервере OpenVZ, и я не менял никаких настроек dpkg.

Вот пример:

root@debian:~# apt-get install cowsay
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Suggested packages:
  filters
The following NEW packages will be installed:
  cowsay
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 21.9 kB of archives.
After this operation, 91.1 kB of additional disk space will be used.
Get:1 http://ftp.us.debian.org/debian/ unstable/main cowsay all 3.03+dfsg1-4 [21.9 kB]
Fetched 21.9 kB in 0s (70.2 kB/s)
Selecting previously unselected package cowsay.
dpkg: warning: files list file for package 'libssh2-1:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libkrb5-3:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libwrap0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libcap2:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libpam-ck-connector:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libc6:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libtalloc2:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libselinux1:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libp11-kit0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libavahi-client3:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libbz2-1.0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libpcre3:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libgpm2:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libgnutls26:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libavahi-common3:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libcroco3:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'liblzma5:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libpaper1:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libsensors4:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libbsd0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libavahi-common-data:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libss2:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libblkid1:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libslang2:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libacl1:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libcomerr2:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libkrb5support0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'e2fslibs:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'librtmp0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libidn11:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libpcap0.8:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libattr1:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libdevmapper1.02.1:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'odbcinst1debian2:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libexpat1:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libltdl7:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libkeyutils1:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libcups2:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libsqlite3-0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libck-connector0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'zlib1g:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libnl1:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libfontconfig1:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libudev0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libsepol1:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libmagic1:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libk5crypto3:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libunistring0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libgpg-error0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libusb-0.1-4:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libpam0g:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libpopt0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libgssapi-krb5-2:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libgeoip1:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libcurl3-gnutls:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libtasn1-3:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libuuid1:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libgcrypt11:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libgdbm3:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libdbus-1-3:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libsysfs2:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libfreetype6:amd64' missing; assuming package has no files currently installed
(Reading database ... 21908 files and directories currently installed.)
Unpacking cowsay (from .../cowsay_3.03+dfsg1-4_all.deb) ...
Processing triggers for man-db ...
Setting up cowsay (3.03+dfsg1-4) ...
root@debian:~# 

Все работает нормально, но эти предупреждающие сообщения довольно раздражают. Кто-нибудь знает, как это исправить?

ls -la /var/lib/dpkg/info | grep libssh:

-rw-r--r-- 1 root root    327 Sep 21 15:51 libssh2-1.list
-rw-r--r-- 1 root root    359 Aug 15 06:06 libssh2-1.md5sums
-rwxr-xr-x 1 root root    135 Aug 15 06:06 libssh2-1.postinst
-rwxr-xr-x 1 root root    132 Aug 15 06:06 libssh2-1.postrm
-rw-r--r-- 1 root root     20 Aug 15 06:06 libssh2-1.shlibs
-rw-r--r-- 1 root root   4377 Aug 15 06:06 libssh2-1.symbols

Он исправил переустановку файлов, которые там появились. Так что вы можете попробовать что-то вроде этого:

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

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

В некоторых случаях apt upgrade не отображает ошибки, поэтому вы можете переустановить один пакет (например, x), который выдает ошибку, и выполнить его следующим образом:

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

Вышеуказанный ответ не сработал для меня полностью. Пара пакетов, а именно libc6, все еще показывала эту ошибку.

Я нашел решение на одном форуме. Ошибка в том, что новая версия libc не отображала список файлов для исправления файла. Вместо того, чтобы повторять это /var/lib/dpkg/info/libc6:amd64.list это повторило это /var/lib/dpkg/info/libc6.list

Это можно исправить, запустив (настройте вашу последнюю версию и арку libc6):

dpkg-deb -c /var/cache/apt/archives/libc6_2.13-38_amd64.deb | awk {'print $6'} | cut -f2- -d. | sed 's|^/$|/.|' | sed 's|/$||' > /var/lib/dpkg/info/libc6:amd64.list

Источник: http://forums.debian.net/viewtopic.php?f=5&t=93201

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

Попробуйте сохранить этот скрипт:

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

Затем выполните его с помощью

sudo /bin/bash ./scriptname

Это потребовало дополнительной работы и некоторых других команд, например

sudo apt-get -f install
sudo apt-mark hold packagename
sudo dpkg -r --force-depends packagename

наряду с удалением и переустановкой некоторых конкретных пакетов.

Это требует немало времени и усилий, но все же apt-get хотя покажет несколько ошибок.

Недостаточно репутации для комментариев: @exic / @mark, я обнаружил, что он использует обратную кавычку в начале имени пакета и кавычку после него, поэтому необходимо проверить разные знаки препинания. Я не уверен, было ли это связано. Мое решение:

for package in $(apt-get upgrade 2>&1 | grep "warning: files list file" | sed "s/.*\`//; s/'.*//"); do apt-get install --reinstall "$package"; done

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

Первый шаг - убедиться, что пакеты удалены с помощью диспетчера пакетов:

sudo apt remove <package list>

Затем у apt есть команда, которую вы можете запустить, чтобы очистить его. Это избавит от предупреждения, оставив при этом пакеты неустановленными:

sudo apt autoclean

Источник на Ask Ubuntu: Файл списка файлов для пакета отсутствует

Скопируйте сообщение об ошибке в файл, например 111.txt. Затем запустите команду

for package in $(cat 111.txt | grep "warning: files list file" | sed "s/'//g" | sed "s/\`//g"|awk '{print $8}'); do apt-get purge "$package" -y; apt-get install "$package" -y;done

Я использую операционную систему Deepin Linux, я изменил приведенные выше команды для работы. Я использую китайский язык. for package in $(sed "s/.*\ \(.*\)\ .*/\1/" error.txt); do apt-get install -y --reinstall "$package"; done если вы используете английский

for package in $(sed "s/.*'\(.*\)'.*/\1/" error.txt); do apt-get install -y --reinstall "$package"; done

При установке проблемного пакета сообщение об ошибке исчезает, как уже было сказано, но я переустановил все пакеты вручную. При использовании сценария вы не получаете сообщение об ошибке и не знаете, действительно ли он работает. В моем случае у меня была еще одна ошибка, которая помешала переустановке пакетов. Сначала возьмите один из недостающих пакетов и переустановите его самостоятельно, чтобы убедиться, что переустановка работает. Желательно сделать это с последним отсутствующим в списке пакетом. Попробуйте переустановить любую программу из терминала, чтобы получить сообщение об ошибке с названием пакетов, что можно сделать с помощью команды sudo apt-get reinstall aNy_PrOgRaM. Сохраните сообщение об ошибке в файл с расширением сценария оболочки. file_name.sh и оставьте только названия пакетов через пробел. Это можно сделать с помощью опции замены текста из любого текстового редактора. Разрывы строк удаляются заменой \n для космоса. Просто с названием пакетов в руке поставьте sudo apt-get install команда в начале всего. Запустите команду chmod +x file_name.sh а затем запустить ./file_name.sh. Повторите процедуру, если проблема повторяется с другими пакетами. В моем случае для переустановки всех пакетов необходимо было загрузить более 4 ГБ. Все происходит в интерактивном режиме, поэтому вы не сомневаетесь, работает процедура или нет. У меня тоже были проблемы с lic6, как уже было сказано в ответах. Решить проблему было сложно, но synaptic Программа помогла мне с этой задачей. synaptic прост в использовании и используется для решения проблем со сломанными пакетами и подобных проблем. Мне пришлось удалить программу (виртуальный бокс), и у меня проблемы с debconf: DbDriver "config" но я решил проблему.

Ни одна из вышеперечисленных команд так и не заработала, но это, наконец, сработало для меня после вывода сообщения об ошибке в файл error.txt.

for package in $("s/.*'\(.*\)'.*/\1/" error.txt); do apt-get install --reinstall "$package"; done

Надеюсь, это поможет кому-то другому.