dpkg: चेतावनी: संकुल 'x' के लिए फाइल सूची फ़ाइल गायब है


20

मुझे हर बार किसी भी पैकेज को स्थापित करने या प्रदर्शन करने के लिए कई पैकेजों के लिए यह चेतावनी मिलती है apt-get upgrade। निश्चित नहीं है कि यह क्या कारण है; यह मेरे 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?
क्वांटा

सवाल करने के लिए उत्पादन जोड़ा गया।
मार्क

क्या आपने एक सरल कोशिश की apt-get update?
बेन लेसानी - सोनासी

हां, मैंने कई पैकेज स्थापित किए हैं और कई बार अपडेट चलाया है।
मार्क

जवाबों:


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पिछली पंक्ति पर शुरुआत को याद कर सकते हैं ?
विदेशी

अफसोस की बात है कि यह मेरे लिए कुछ भी नहीं है, जबकि कमांड में चल रहा है। लेकिन मुझे इस विचारक से प्यार है
जेमी हटबर

1
स्क्रिप्ट काफी काम की नहीं थी, हालाँकि पुनर्स्थापना के विचार ने चाल सुडोकू को स्थापित कर दिया था - स्थापित करें "पैकेज का नाम"
AllGamer

पहली बार चलाने sudo bashतो स्क्रिप्ट पेस्ट
Soliman

7

ऊपर जवाब मेरे लिए पूरी तरह से काम नहीं किया। पैकेज के जोड़े, अर्थात् 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

जो कोई भी भविष्य में इसे पढ़ेगा और इसे प्रयोग करने योग्य पाएगा, उसके लिए शुभकामनाएँ।


क्या नहीं काम करता है, अगर 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 पता नहीं चलेगा मैंने डेबियन को खाई और जहाँ भी मैं पूरी तरह से फ्रीबीएसडी चला गया।
दिजी

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, मैंने पाया कि यह पैकेज के नाम की शुरुआत में एक बैकटिक का उपयोग करता है और बाद में एक शेयरमार्क, इस प्रकार विभिन्न विराम चिह्नों की जाँच की जानी चाहिए। मुझे यकीन नहीं है कि यह संबंधित था। मेरा समाधान:

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उनकी उपयुक्त फ़ाइल सूचियों सहित उन सभी निशानों को हटाने का प्रयास किया था ।

पहला कदम यह सुनिश्चित करना है कि पैकेज प्रबंधक का उपयोग करके पैकेज हटा दिए गए हैं:

sudo apt remove <package list>

फिर apt में एक कमांड है जिसे आप इसे साफ करने के लिए चला सकते हैं। अनइंस्टॉल किए गए पैकेज को छोड़ते समय यह चेतावनी से छुटकारा दिलाएगा:

sudo apt autoclean

उबंटू पूछने पर स्रोत: पैकेज सूची के लिए फाइल सूची गायब है


दुर्भाग्य से मेरे लिए यह काम नहीं किया :(
हेडन थ्रिंग

@ हेयडेनरिंग आपको कौन सा पैकेज परेशान कर रहा है
स्टीफन ओस्टरमिलर

एक गुच्छा है।
हेडन थ्रिंग

मैंने उत्तर को संपादित किया - आपको यह सुनिश्चित करना होगा कि आप उन्हें पहले हटा दें
स्टीफन ओस्टरमिलर

0

मैं डीप लाइनक्स ऑपरेटिंग सिस्टम का उपयोग करता हूं, मैंने उपरोक्त कमांड को काम करने के लिए बदल दिया है। मैं चीनी भाषा का उपयोग करता हूं। 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

आशा है कि यह किसी और की मदद करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.