Setiap kali saya mengetik sudo apt-get remove
dan kemudian tekan Tabtombol untuk pelengkapan otomatis saya mendapatkan pesan berikut:
grep-status: /var/lib/dpkg/status:15945: expected a colon
.
Saya tidak melihat sesuatu yang aneh pada baris 15945 di file status. Ini adalah karakter titik di bidang deskripsi paket perpustakaan mono dan menyisipkan tanda titik dua tidak membantu. Menghapus garis yang mengandung titik juga tidak berhasil. Menimpa file dengan status lama menghasilkan pesan yang sama.
Apakah ada cara untuk membangun kembali file status?
status
file: itu adalah sumber informasi utama, dan sementara banyak yang berlebihan, tidak semuanya. Namun mungkin untuk memperbaiki file secara manual. Posting potongan file di sekitar baris bermasalah, katakan 20-40 baris termasuk setidaknya satuPackage:
baris sebelum dan sesudah baris 15945.apt-get
,dpkg
dan teman-teman masih bekerja dengan benar, dan apa yang erroring out adalah auto-completion?Jawaban:
Saya akhirnya memperbaiki sistem saya ini. Mengembalikan cadangan file status tidak berfungsi karena saya sudah memiliki masalah begitu lama, ada di semua cadangan saya.
Perbaikan ini melibatkan pengambilan untuk istirahat pemformatan yang sebenarnya dan memperbaikinya secara manual. Tidak sesulit kedengarannya.
http://thepcspy.com/read/fixing-dpkg-status-corruption/
sumber
missing package name
dan saya menemukan bahwa, untuk beberapa alasan aneh saya lebih baik tidak membuang waktu untuk mencari tahu, saya memiliki garisPackaga: landscape-common
yang diperbaiki secara ortografis dan tetapi masalah diselesaikan. Masalahnya, saya tidak pernah menyentuh file ini, juga tidak ada orang lain. Bagaimana komputer bisa mengacaukan kesalahan pengejaan?.
ke baris kosong itu].Anda harus dapat bekerja dengan file status bagus yang dikenal sebelumnya dan memperbarui dari sana. Setiap kali Anda menginstal atau memperbarui, file status disimpan ke cadangan yang di-gzip di / var / backup . Melakukan ls -l dpkg * pada direktori menunjukkan:
Ada juga cadangan file yang dibuat di direktori / var / lib / dpkg / yang bernama status-old. Melakukan status ls -l * pada direktori menunjukkan:
Jadi, untuk pulih dari korupsi, Anda harus dapat melakukan hal berikut:
1. Buat cadangan file status rusak :
2. Salin file status dpkg terakhir ke tempatnya dari salah satu sumber di atas:
antara
atau
3. Kemudian jalankan pembaruan apt-get:
Itu harus dilakukan.
sumber
sudo apt update && sudo apt dist-upgrade
harus memperbaiki sebagian besar masalah yangstatus
mungkin disebabkan oleh file lama . Jika sistem Anda memiliki kekacauan yang lebih besar,sudo aptitude dist-upgrade
alih-alihsudo apt ...
kadang-kadang menyarankan cara yang lebih baik untuk memperbaiki kerusakan.Saya dapat memperbaiki masalah ini dengan menghapus paket yang entri yang rusak dalam file status.
Solusi yang diterima melalui pcregrep tidak berfungsi (pcregrep tidak menemukan apa pun).
sumber
Coba "dpkg -P" untuk paket yang menyinggung. Itu akan membersihkannya dari repositori lokal, menghapus semua jejak. Di sistem saya, itu adalah perbaikan untuk paket yang dihapus (tetapi belum dibersihkan) yang menghasilkan kesalahan itu.
sumber
Dalam hal ini saya akan membuat cadangan
/var/lib/dpkg/status
file yang rusak dan kemudian memperbaikinya secara manual (sekitar baris 1888 dan 9550) menggunakan informasi darisumber
Ini telah menjadi bug (seharusnya diperbaiki): Launchpad Bug 613018
Hulu: Bug Debian 590885
Ini harus menjadi solusi (cadangan, string versi "perbaiki"):
sumber
Anak dari...
Oke, kesalahan sebenarnya ada di saluran 15266 meskipun sedang dilaporkan sekitar 700 baris lebih jauh ke bawah. Entri yang bermasalah dalam file status disebabkan oleh deb yang saya instal agar printer Lexmark saya berfungsi sejak lama. Entri itu untuk paket
lexmark-inkjet-08-driver
. Bidang Deskripsi tidak memiliki.
tempat jeda baris. Ini menyebabkan kesalahan penguraian.Untuk menemukan ini, saya menggunakan metode pemecahan masalah senapan dan mulai mencoba berbagai hal secara acak. Salah satu upaya konyol saya adalah
grep-status -P e
membayangkan bahwa e adalah huruf paling umum dalam alfabet. Bodoh, aku tahu, tetapi catatan status terakhir yang dicetak sebelum mengeluh tentang titik dua yang hilang adalah untuk paket lexmark dan aku memperhatikan kurangnya.
karakter setelah beberapa menit menatap layar.Jika memungkinkan, saya ingin jawaban lain yang dapat menjelaskan metode yang lebih baik untuk menemukan masalah semacam ini jika seseorang mengalami masalah serupa di masa mendatang. Terima kasih.
sumber
grep-status -r -P ^
harus selalu cocok dengan paket apa pun sehingga harus mem-parsing seluruh file dan batalkan jika tidak dapat menguraikannya.Karena status lama saya terlalu bermasalah bahkan dengan
apt-get update
,Ini bekerja cukup baik untuk saya:
(sebagai root)
KREDIT: http://alvinalexander.com/blog/post/linux-unix/how-remove-non-printable-ascii-characters-file-unix
Jika Anda penasaran apa yang berubah atau di mana kerusakannya: (mungkin lama)
sumber