dpkg: uyarı: 'x' paketi için dosya listesi dosyası eksik


20

Her paketi kurduğumda veya gerçekleştirdiğimde bu paketi birkaç paket için alıyorum apt-get upgrade. Neye sebep olduğundan emin değilim; OpenVZ sunucumda yeni bir Debian yüklemesi var ve dpkg ayarlarını değiştirmedim.

İşte bir örnek:

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

Her şey iyi çalışıyor, ancak bu uyarı mesajları oldukça can sıkıcı. Bunu nasıl düzeltebileceğimi bilen var mı?

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

Soruya çıktı eklendi.
Mark

Basit denedin apt-get updatemi?
Ben Lessani - Sonassi

Evet, birçok paket yükledim ve birkaç kez güncelleme yaptım.
Mark

Yanıtlar:


18

Orada görünen dosyaları yeniden yükleyerek düzeltti. Yani böyle bir şey denemek isteyebilirsiniz:

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

Tek satırda kopyala yapıştır:

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

Her pakette dolaşırken bu komutu çalıştırmanın biraz zaman aldığını unutmayın .

Bazı durumlarda apt upgradehataları göstermez, bu nedenle hatayı veren bir paketi (örneğin x) yeniden yükleyebilir ve aşağıdaki gibi çalıştırabilirsiniz:

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'. Bash'ta iyi değil; lütfen düzeltir misiniz?
Mark

Mark: Burada iyi for, bir önceki satırın başlangıcını kaçırır mısın?
Exic

Ne yazık ki bu komuta ederken benim için hiçbir şey yapmıyor. Ama fikrini seviyorum
Jamie Hutber

1
komut dosyası oldukça işe yaramadı, ancak yeniden yükleme fikri sudo apt-get install hile yaptı --reinstall "paket adı"
AllGamer

ilk çalıştırma sudo bashsonra senaryoyu yapıştır
Soliman

7

Yukarıdaki cevap benim için tamamen işe yaramadı. Birkaç paket, yani libc6, hala bu hatayı gösteriyordu.

Bir forumda bir çözüm buldum. Hata, libc'nin yeni sürümünün dosya listesini düzeltmek için yankılamadığıdır. Bunun yerine onu yankılanan için /var/lib/dpkg/info/libc6:amd64.listonu bunu yankılandı/var/lib/dpkg/info/libc6.list

Çalıştırarak düzeltilebilir (libc6'nın en son sürümüne ve kemerine göre ayarlayın):

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

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

Gelecekte bunu okuyacak herkese iyi şanslar ve kullanılabilir.


Çalışmıyor, dpkg-deb -c /var/cache/apt/archives/libc6_2.13-38_amd64.debsembolik bağlantıları olan girişler varsa , örneğin dpkg-deb -c /var/cache/apt/archives/mc_3%3a4.8.13-3_amd64.deb | grep mc.cshdöndürür./usr/share/mc/bin/mc.csh -> ../../../lib/mc/mc.csh
AB

@AB bilmiyordum. Debian'ı terk ettim ve elimden geldiğince tamamen FreeBSD'ye gittim.
dzhi

2

Bu komut dosyasını kaydetmeyi deneyin:

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

Ardından,

sudo /bin/bash ./scriptname

Bu biraz ekstra iş ve diğer bazı komutları da aldı.

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

bazı paketleri kaldırıp yeniden kurabilirsiniz.

Bu oldukça zaman ve çaba gerektirir, yine de apt-getbirkaç hata gösterecektir.


1

Yorum yapmak için yeterli sayıda yanıt yok: @exic / @mark, paket adının başında bir backtick kullandığını ve daha sonra bir quotemark kullandığını buldum, bu nedenle farklı noktalama işaretlerinin kontrol edilmesi gerekiyor. Bunun ilgili olup olmadığından emin değilim. Çözümüm:

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

0

Hata mesajını bir dosyaya kopyalayın, örneğin 111.txt. Sonra komutu çalıştırın

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

Buradaki diğer tüm yanıtlar paketleri yeniden yüklemek istediğinizi varsayar. Benim durumumda bunu yapmak istemedim. locateOnların apt dosya listeleri de dahil olmak üzere tüm izlerini kaldırmak için kullanılan vardı .

İlk adım, paketlerin paket yöneticisi kullanılarak kaldırıldığından emin olmaktır:

sudo apt remove <package list>

Sonra apt, temizlemek için çalıştırabileceğiniz bir komut içerir. Bu, paketleri kaldırırken hala uyarıdan kurtulacaktır:

sudo apt autoclean

Ask Ubuntu'da Kaynak: Paket eksik dosyalar listesi dosyası


ne yazık ki bu benim için işe yaramadı :(
Hayden Thring

@HaydenThring Hangi paket size sorun veriyor?
Stephen Ostermiller

bir demet var.
Hayden Thring

Cevabı düzenledim - önce onları kaldırdığınızdan emin olmalısınız
Stephen Ostermiller

0

Deepin linux işletim sistemini kullanıyorum, yukarıdaki komutları çalışmak için değiştirdim. Çince dilini kullanıyorum. for package in $(sed "s/.*\ \(.*\)\ .*/\1/" error.txt); do apt-get install -y --reinstall "$package"; done eğer ingilizce kullanırsan

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


-1

Yukarıdaki komutlardan hiç çalışmadım ama bu hata mesajı error.txt dosyasına gönderildikten sonra benim için çalıştı

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

Umarım başka birine yardımcı olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.