dpkg: คำเตือน: ไฟล์รายการไฟล์สำหรับแพ็คเกจ 'x' ขาดหายไป


20

ฉันได้รับการแจ้งเตือนนี้สำหรับแพคเกจหลายทุกครั้งที่ผมติดตั้งใด ๆ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

ls -la /var/lib/dpkg/info | grep libssh?
quanta

เพิ่มผลลัพธ์ให้กับคำถาม
ทำเครื่องหมาย

คุณลองง่ายๆapt-get updateไหม
Ben Lessani - Sonassi

ใช่ฉันได้ติดตั้งแพคเกจจำนวนมากและรันการอัปเดตหลายครั้ง
ทำเครื่องหมาย

คำตอบ:


18

เขาแก้ไขให้ติดตั้งไฟล์ที่ปรากฏขึ้นที่นั่นอีกครั้ง ดังนั้นคุณอาจต้องการลองแบบนี้:

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

-bash: syntax error near unexpected token ``do'. ไม่เก่งที่ทุบตี; คุณช่วยแก้ไขได้ไหม
ทำเครื่องหมาย

มาร์ค: ไม่เป็นไรที่นี่คุณจะพลาดจุดเริ่มต้นforของบรรทัดก่อนหน้าหรือไม่?
exic

น่าเศร้าที่นี่ไม่ทำอะไรเลยสำหรับฉันในขณะที่ทำงานในคำสั่ง แต่ฉันรักความคิด
เจมี่ฮัทเบอร์

1
สคริปต์ใช้งานไม่ได้ แต่ความคิดในการติดตั้งใหม่นั้นทำได้โดยติดตั้งเคล็ดลับ sudo apt-get install - ติดตั้งใหม่ "ชื่อแพ็คเกจ"
AllGamer

เรียกใช้ครั้งแรกsudo bashแล้ววางสคริปต์
Soliman

7

คำตอบข้างต้นไม่ได้ผลสำหรับฉันอย่างสมบูรณ์ คู่ของแพ็คเกจคือ libc6 ยังคงแสดงข้อผิดพลาดนี้อยู่

ฉันพบวิธีแก้ไขปัญหาในฟอรัมเดียว ข้อผิดพลาดคือ libc เวอร์ชันใหม่ไม่ได้สะท้อนรายการของไฟล์เพื่อแก้ไขไฟล์ แทนที่จะเป็นเสียง/var/lib/dpkg/info/libc6:amd64.listสะท้อน/var/lib/dpkg/info/libc6.list

สามารถแก้ไขได้โดยการเรียกใช้ (ปรับสำหรับเวอร์ชันล่าสุดและ arch of 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

ขอให้โชคดีกับใครก็ตามที่จะอ่านในอนาคตและพบว่ามันใช้งานได้


ใช้งานไม่ได้หากdpkg-deb -c /var/cache/apt/archives/libc6_2.13-38_amd64.debมีรายการที่มีลิงก์สัญลักษณ์เช่นdpkg-deb -c /var/cache/apt/archives/mc_3%3a4.8.13-3_amd64.deb | grep mc.cshผลตอบแทน./usr/share/mc/bin/mc.csh -> ../../../lib/mc/mc.csh
AB

@AB ไม่ทราบ ฉันทิ้ง Debian และไป FreeBSD ทุกที่ที่ทำได้
dzhi

2

ลองบันทึกสคริปต์นี้:

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ข้อผิดพลาดเล็กน้อย


1

ตัวแทนไม่เพียงพอที่จะแสดงความคิดเห็น : @exic / @mark ฉันพบว่ามันใช้ backtick ที่จุดเริ่มต้นของชื่อแพคเกจและ quotemark ภายหลังจากนั้นจึงต้องตรวจสอบเครื่องหมายวรรคตอนที่แตกต่างกัน ฉันไม่แน่ใจว่าสิ่งนี้เกี่ยวข้องหรือไม่ ทางออกของฉัน:

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

0

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

0

คำตอบอื่น ๆ ทั้งหมดที่นี่ถือว่าคุณต้องการติดตั้งแพ็กเกจอีกครั้ง ในกรณีของฉันฉันไม่ต้องการทำเช่นนั้น ฉันเคยlocateลองลบร่องรอยทั้งหมดรวมถึงรายการไฟล์ apt ของพวกเขา

ขั้นตอนแรกคือการทำให้แน่ใจว่าแพ็กเกจจะถูกลบออกโดยใช้ package manager:

sudo apt remove <package list>

จากนั้นฉลาดมีคำสั่งคุณสามารถเรียกใช้เพื่อทำความสะอาด การดำเนินการนี้จะกำจัดคำเตือนขณะที่ยังคงถอนการติดตั้งแพ็กเกจ:

sudo apt autoclean

แหล่งที่มาของ Ask Ubuntu: ไฟล์รายการไฟล์สำหรับแพ็คเกจหายไป


น่าเสียดายที่นี่ใช้งานไม่ได้สำหรับฉัน :(
Hayden Thring

@ HaydenThring แพ็คเกจไหนที่ทำให้คุณมีปัญหา?
สตีเฟ่น Ostermiller

มีพวง
Hayden Thring

ฉันแก้ไขคำตอบแล้ว - คุณต้องแน่ใจว่าคุณลบออกก่อน
Stephen Ostermiller

0

ฉันใช้ระบบปฏิบัติการ linux deepin ฉันเปลี่ยนคำสั่งข้างต้นเพื่อทำงาน ฉันใช้ภาษาจีน 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


-1

ไม่เคยมีคำสั่งใด ๆ ข้างต้นใช้งานได้ แต่ในที่สุดก็ใช้งานได้สำหรับฉันหลังจากส่งข้อความแสดงข้อผิดพลาดไปยังไฟล์ error.txt

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

หวังว่ามันจะช่วยคนอื่น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.