Bagaimana cara menginstal ulang banyak paket yang dihapus sekaligus?

8

Saya menggunakan sudo apt-get remove pythonperintah dan secara tidak sengaja menghapus banyak paket yang diperlukan. Saya login melalui command line dan menginstal ubuntu-desktop lagi tetapi ada paket lain yang hilang, dan saya sedang mencari cara untuk menginstal ulang paket yang dihapus dengan mudah. Karena ada log di pusat perangkat lunak, saya ingin bertanya apa cara termudah untuk mengembalikan perubahan atau mengekstrak daftar paket yang dihapus dari pusat perangkat lunak ...

Catatan: Saya mengetik sudo apt-get install .... .... ... ...sekitar dua lusin program yang dihapus dalam daftar itu, tetapi ketika saya menekan enter tidak menginstal salah satu dari mereka karena beberapa nama paket tidak dapat ditemukan.

Program dihapus pada tanggal yang sama.

Logan
sumber
1
Lihat/var/log/apt/history.log
Lekensteyn

Jawaban:

16

Pertama-tama, izinkan saya mengatakan bahwa menghapus pythondapat menyebabkan banyak perintah mendasar tidak berfungsi lagi. Jadi saya tidak tahu apakah tindak lanjutnya akan berhasil.

Kedua, saya berasumsi bahwa package names couldn't be foundkesalahan yang Anda miliki, berasal dari nama yang salah eja pada baris perintah, atau dari paket yang diinstal secara lokal dan tidak tersedia di repositori.

Kemudian, untuk mendapatkan log paket yang dihapus, relatif ke dpkglog terakhir yang tersedia (saya pikir Anda tidak perlu memperhitungkan log yang lebih lama):

awk '$3 == "remove" { print $1, $2, $4 }' /var/log/dpkg.log | tee list

Kemudian edit listfile yang dibuat di direktori saat ini, dan hanya tinggalkan baris relatif terhadap paket yang ingin Anda instal ulang, berdasarkan pada timestamp baris. Katakanlah Anda menyimpan file yang dimodifikasi list-mod.

Untuk menginstal ulang paket itu, gunakan perintah berikut:

sudo apt-get --simulate install $(awk '{ print $3 }' list-mod)

Saya memasukkan --simulateopsi untuk melihat apa yang akan dilakukan perintah. Jika semuanya baik-baik saja, lakukan perintah lagi dengan opsi itu dihapus.

Jika perintah mengatakan beberapa paket tidak dapat ditemukan, cukup hapus list-moddan coba lagi.

enzotib
sumber
terima kasih, saya dapat menginstal ulang paket yang saya butuhkan! Namun satu pertanyaan, ada lebih dari 200 paket dihapus pada log pusat perangkat lunak, tetapi file daftar memiliki sekitar 150, apakah ini berarti bahwa dpkg.log tidak mengandung instalasi otomatis / paket tergantung? sekali lagi terima kasih atas solusi ini :)
Logan
1
Bahwa file log mengandung setiap diinstal, upgrade, dihapus atau dibersihkan paket, dan dengan setiap aplikasi dari dpkgke apt-get, aptitude, Synaptic, Software Center, gdebi, dll Anda dapat memberikan melihat lebih tua dpkg.logfile, lihat ls -lrt /var/log/dpkg.log*.
enzotib
1
@enzotib saya menjalankan skrip untuk membersihkan tajuk linux lama, dan saya pikir ekspresi regulernya cocok dengan banyak paket yang tidak ingin saya hapus (yang sangat penting !!). Jawaban Anda menyelamatkan saya dari bencana tertentu.
shivisuper
1
@enzotib Anda baru saja menyelamatkan saya dari menginstal ulang OS saya setelah menjalankan skrip yang buruk. Terima kasih!
brndn2k
katanya 0 ditingkatkan, 0 dipasang, 0 untuk dihapus dan 50 tidak ditingkatkan
James Casia
2

Jadi, saya melakukan kesalahan yang sama: sudo apt-get purge python3.6*bukannya sudo apt-get purge python3.6.*.

Saya dapat memperbaikinya dengan cukup cepat, dengan langkah-langkah berikut:

  1. Membuka log vim /var/log/history.log.
  2. Mencari perintah buruk saya menggunakan perintah vim /python3.6\*.
  3. Ada sebuah baris Purge: unity-control-center-signon:amd64 (0.1.7~+14.04.20140211.2-0ubuntu4), ...dengan daftar panjang paket-paket yang dibersihkan (dalam kasus penghapusan akan dimulai dengan Remove:), yang saya salin ke file lain tanpa Purge:bagian untuk bekerja dengannya.
  4. Dalam file itu saya menjalankan perintah vim:, %s/:[^,]*,//gyang menghapus bagian versi dan meninggalkan saya dengan daftar paket unity-control-center-signon lxc ....
  5. Akhirnya saya menyalin baris dari langkah sebelumnya dan berlari:, sudo apt-get install unity-control-center-signon lxc ...dan begitulah cara memperbaikinya.
Nikita
sumber
bagi saya itu/var/log/apt/history.log
Taylor