Sistem Ubuntu rusak setelah secara tidak sengaja menghapus banyak paket

20

Saya tidak sengaja menghapus semua paket yang dimulai dengan nama jpegdengan:

sudo apt-get remove jpeg*

Ini mengacaukan banyak hal, menghapus Unity, Firefox, Flash player dll.

Saya entah bagaimana berhasil memulihkan desktop dan persatuan tetapi kemudian banyak hal masih buggy. Misalnya .rpmfile dan .tag.gztidak mau terbuka sama sekali.

Yang saya inginkan adalah cara untuk memperbaiki semua yang salah. Sesuatu yang setara dengan 'instalasi perbaikan' dengan disk windows.

Ada tips, siapa saja?

Pemrograman Noob
sumber
1
Saya sangat merekomendasikan instalasi baru. Cukup backup / home / (termasuk file yang tidak terlihat) dan masukkan ke instalasi baru.
Paul Woitaschek

Jawaban:

35

Anda dapat menginstal ubuntu-desktoptugas:

sudo apt-get install ubuntu-desktop^

Ini akan menginstal semua paket Desktop Ubuntu standar yang telah Anda hapus. Itu tidak akan mengembalikan paket yang telah Anda instal yang bukan bagian dari desktop standar (yaitu akan menginstal ulang Unity dan Firefox, tetapi bukan Flash player).

Untuk menginstal paket-paket itu, Anda dapat melihat /var/log/apt/history.logdan melihat dengan tepat apa yang telah Anda hapus.

Catatan: menginstal ubuntu-desktop^ tugas tidak sama dengan menginstal ubuntu-desktop paket . Yang pertama akan memberi APT beberapa petunjuk untuk menyelesaikan dependensi yang melibatkan paket virtual, yang terakhir akan memberi APT kebebasan untuk memilih paket (dan akhirnya menginstal hal-hal yang tidak berguna seperti ubiquity).

Mengapa masalahnya terjadi? tidakapt-get remove jpeg* akan menghapus semua paket yang dimulai dengan . Sebagai gantinya akan menghapus semua paket yang mengandung nama mereka. Ini karena apt-get bekerja dengan ekspresi reguler, sehingga jpeg * berarti: semua yang mengandung jpe diikuti oleh nol atau lebih g .jpegjpe

Andrea Corbellini
sumber
1
Ide bagus, saya tidak memikirkan itu. Saya akan tertarik untuk melihat apakah itu akan berhasil di sini!
Eliah Kagan
@EliahKagan: Saya sudah mencoba chroot. Paket jpeg * hanya memengaruhi beberapa aplikasi grafis, sehingga 'bahan' yang diperlukan (yaitu NetworkManager untuk konektivitas Internet, APT, emulator terminal, dan sebagainya) masih menggunakan sistem OP.
Andrea Corbellini
@ ElliKagan: tentu saja, saya membuat asumsi (tidak jelas) bahwa OP belum menghapus yang lain.
Andrea Corbellini
2
Harap sertakan peringatan untuk tidak pernah menggunakan taskseluntuk menghapus tugas - lihat tugas -bug jahat
guntbert
1
@ Attilio: Saya telah menjelaskan perbedaan dalam jawabannya. Lihat "Catatan: menginstal tugas ubuntu-desktop ^ tidak sama dengan menginstal paket ubuntu-desktop ..."
Andrea Corbellini
8

Cara terbaik bagi Anda untuk memperbaiki masalah ini adalah menginstal ulang Ubuntu. (Anda harus membuat cadangan dokumen Anda terlebih dahulu, bahkan jika Anda berencana untuk menginstal ulang tanpa memformat ulang.)

Jika Anda ingin mencoba memperbaiki sistem di tempat, maka lihat file log manajer paket untuk melihat paket apa yang dihapus, dan instal ulang:

  • /var/log/dpkg.log (informasi lengkap, tetapi sulit dibaca)
  • /var/log/apt/history.log (disingkat dengan akan memberi tahu Anda setiap paket dihapus atau dimodifikasi - kemungkinan taruhan terbaik Anda)
  • /var/log/apt/term.log(jika Anda menghapus paket dengan apt-getdi terminal, ini akan menunjukkan apa yang Anda lihat kemudian, termasuk daftar paket apa yang akan dihapus - jadi ini mungkin cara terbaik)

Menginstal ulang hanya paket yang namanya mulai jpegtidak akan berfungsi, karena banyak (hampir pasti sebagian besar) paket yang dihapus dihapus karena mereka mengandalkan paket-paket itu.

Di masa depan , saya merekomendasikan untuk memeriksa konsekuensi dari menghapus paket. Jika Anda bekerja dari baris perintah, Anda akan selalu diberi tahu. (Kecuali jika Anda menggunakan -yopsi, dalam hal ini, biasanya tidak. Saya sarankan untuk tidak menggunakan opsi itu kecuali Anda tahu apa yang Anda lakukan, terutama untuk pemindahan.)

Salah satu cara untuk memeriksa konsekuensi dari operasi manajemen paket dilakukan dengan apt-get, tanpa risiko mereka terjadi, adalah dengan menjalankan apt-get -sbukannya sudo apt-get. Ini hanya mensimulasikan tindakan yang ditentukan, dan melaporkan paket apa yang akan terpengaruh sebagai hasilnya dan bagaimana.

Eliah Kagan
sumber
1

Saya menjalankan sudo apt-get purge wine*pada Ubuntu 15.10, jadi tidak ada antarmuka grafis pada boot hanya opsi login terminal.

Seperti yang disarankan Eliah Kagan, saya menggunakan info dari /var/log/apt/history.log saya menjalankan nano di history.log dan membuat skrip sederhana yang berisi sudo apt-get installsemua paket yang dibersihkan yang saya temukan di baris:

Purge: evolution:amd64 (3.16.5-1ubuntu3.1), libtotem-plparser18:amd64 (3.10.5-1) ...... etc

Tapi pertama-tama saya harus menghapus teks secara manual di antara semua: dan, termasuk:,

pada langkah ini skrip baru akan sangat membantu karena paketnya ratusan. setelah itu saya menjalankan skrip dan menghapus beberapa Unable to locate packages(yang saya instal secara manual). jalankan skrip lagi dan hanya itu. Semuanya bekerja dengan baik ... untungnya

kominato
sumber
0

Instal paket ubuntu-desktopInstal ubuntu-desktop

sudo apt-get update && sudo apt-get install ubuntu-desktop

Ini akan menginstal paket yang diperlukan untuk sistem Anda.

Tachyons
sumber
ini gagal untuk saya karena dependensi dari ubuntu-desktop tidak diinstal.
kevinkayaks
0

Saya tidak sengaja melepas libssl1.0.0dan mesin saya lumpuh. Untuk memulihkan, saya lakukan:

  1. Cadangkan log dari apa yang telah dihapus cp /var/log/apt/term.log ~/libssl.term.log
  2. Hapus garis yang tidak terkait dengan tindakan libssl vi ~/libssl.term.log
  3. Jika jaringan tidak ada (tidak bisa ping google.com), maka reboot dalam mode pemulihan dan aktifkan jaringan
  4. Instal ulang paket yang dihapus cat ~/libssl.term.log | grep ^Removing | sed -e 's/^Removing //g;s/ (.*$//g;/diversion of/d;/dangling symlinks/d' | xargs sudo apt-get -y install
Eric Landry
sumber
0

Berikut ini adalah skrip python kecil tempat Anda dapat menulis string paket (tidak dapat digunakan) dari pencopotan massal yang diaktifkan /var/log/apt/history.log. Ini akan menampilkan string yang dapat Anda salin tempel ke perintah apt-get install untuk menginstal dengan mudah semua paket yang dihapus.

import re

apt_str = u"INSERT YOUR PACKAGE STRING HERE, BETWEEN THE QUOTES"

match =  re.findall(r'([\w\d\.-]+).+? \(.+?\)', apt_str)
print " ".join(match)
joaoroque
sumber
Koma? Apakah maksud Anda kutipan?
wjandrea
@wjandrea Ya maksud saya kutipan
joaoroque