dpkg: cảnh báo: tệp danh sách tệp cho gói 'x' bị thiếu


20

Tôi nhận được cảnh báo này cho một số gói mỗi lần tôi cài đặt bất kỳ gói nào hoặc thực hiện apt-get upgrade. Không chắc chắn những gì gây ra nó; đó là bản cài đặt Debian mới trên máy chủ OpenVZ của tôi và tôi đã không thay đổi bất kỳ cài đặt dpkg nào.

Đây là một ví dụ:

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:~# 

Mọi thứ đều hoạt động tốt, nhưng những thông điệp cảnh báo này khá khó chịu. Có ai biết làm thế nào tôi có thể sửa lỗi này?

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

ls -la /var/lib/dpkg/info | grep libssh?
lượng tử

Đã thêm đầu ra cho câu hỏi.
Đánh dấu

Bạn đã thử một cách đơn giản apt-get update?
Ben Lessani - Sonassi

Có, tôi đã cài đặt nhiều gói và chạy cập nhật nhiều lần.
Đánh dấu

Câu trả lời:


18

Anh sửa nó cài đặt lại các tập tin xuất hiện ở đó. Vì vậy, bạn có thể muốn thử một cái gì đó như thế này:

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

Sao chép-dán thân thiện trong một dòng:

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

Xin lưu ý rằng việc chạy lệnh này sẽ mất một chút thời gian , khi chúng ta quay vòng qua mọi gói.

Trong một số trường hợp apt upgradekhông hiển thị lỗi do đó bạn có thể cài đặt lại một gói (ví dụ x) sẽ báo lỗi và thực thi như sau:

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

-bash: syntax error near unexpected token ``do'. Không giỏi bash; bạn có thể vui lòng sửa nó không?
Đánh dấu

Mark: Ở đây ổn, có thể là bạn đã bỏ lỡ phần đầu forcủa dòng trước không?
exic

Đáng buồn thay, điều này không làm gì cho tôi trong khi chạy trong lệnh. Nhưng tôi thích ý tưởng này
Jamie Hutber

1
kịch bản không hoạt động tốt, tuy nhiên ý tưởng cài đặt lại đã thực hiện thủ thuật sudo apt-get install --reinstall "tên gói"
AllGamer

chạy đầu tiên sudo bashsau đó dán tập lệnh
Soliman

7

Câu trả lời trên không làm việc cho tôi hoàn toàn. Một vài gói, cụ thể là libc6, vẫn hiển thị lỗi này.

Tôi tìm thấy một giải pháp trên một diễn đàn. Lỗi là phiên bản mới của libc không lặp lại danh sách các tệp để sửa tệp. Thay vì lặp lại nó, /var/lib/dpkg/info/libc6:amd64.listnó lặp lại/var/lib/dpkg/info/libc6.list

Nó có thể được sửa bằng cách chạy (điều chỉnh cho phiên bản mới nhất và vòm 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

Nguồn: http://forums.debian.net/viewtopic.php?f=5&t=93201

Chúc may mắn cho bất cứ ai sẽ đọc điều này trong tương lai và tìm thấy nó có thể sử dụng.


Không hoạt động, nếu dpkg-deb -c /var/cache/apt/archives/libc6_2.13-38_amd64.debcó các mục có liên kết tượng trưng, ​​ví dụ dpkg-deb -c /var/cache/apt/archives/mc_3%3a4.8.13-3_amd64.deb | grep mc.cshtrả về./usr/share/mc/bin/mc.csh -> ../../../lib/mc/mc.csh
AB

@AB Sẽ không biết. Tôi đã bỏ Debian và đi hoàn toàn FreeBSD bất cứ nơi nào tôi có thể.
d chi

2

Hãy thử lưu tập lệnh này:

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

Sau đó, thực hiện nó với

sudo /bin/bash ./scriptname

Điều này cần thêm một chút công việc và một số lệnh khác nữa

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

cùng với việc gỡ bỏ và cài đặt lại một số gói cụ thể.

Điều này cần một chút thời gian và nỗ lực, tuy nhiên apt-getsẽ vẫn có một vài lỗi.


1

Không đủ đại diện để nhận xét : @exic / @mark, tôi thấy rằng nó sử dụng backtick ở đầu tên gói và dấu ngoặc kép sau đó, do đó cần phải kiểm tra các dấu câu khác nhau. Tôi không chắc điều này có liên quan hay không. Giải pháp của tôi:

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

0

Sao chép thông báo lỗi vào một tập tin, ví dụ 111.txt. Sau đó chạy lệnh

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

0

Tất cả các câu trả lời khác ở đây cho rằng bạn muốn cài đặt lại các gói. Trong trường hợp của tôi, tôi không muốn làm như vậy. Tôi đã từng locatecố gắng xóa tất cả dấu vết của chúng kể cả danh sách tệp apt của chúng.

Bước đầu tiên là đảm bảo các gói được loại bỏ bằng trình quản lý gói:

sudo apt remove <package list>

Sau đó apt có một lệnh bạn có thể chạy để làm sạch nó. Điều này sẽ thoát khỏi cảnh báo trong khi vẫn gỡ cài đặt các gói:

sudo apt autoclean

Nguồn trên Hỏi Ubuntu: Tệp danh sách tệp cho gói bị thiếu


thật không may, điều này không làm việc cho tôi :(
Hayden Thring

@HaydenThring Gói nào đang gây rắc rối cho bạn?
Stephen Ostermiller

Có một bó.
Hayden Thring

Tôi đã chỉnh sửa câu trả lời - bạn phải chắc chắn rằng bạn xóa chúng trước
Stephen Ostermiller

0

Tôi sử dụng hệ điều hành linux deepin, tôi đã thay đổi các lệnh trên để làm việc. Tôi sử dụng tiếng Trung Quốc. for package in $(sed "s/.*\ \(.*\)\ .*/\1/" error.txt); do apt-get install -y --reinstall "$package"; done nếu bạn sử dụng tiếng anh

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


-1

Không bao giờ có bất kỳ lệnh nào ở trên hoạt động nhưng điều này cuối cùng cũng có hiệu quả với tôi sau khi xuất thông báo lỗi sang tệp error.txt

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

Hy vọng nó sẽ giúp người khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.