Yanlışlıkla birçok paketi kaldırdıktan sonra Ubuntu sistemi bozuluyor


20

Adı jpegile başlayan bütün paketleri yanlışlıkla kaldırdım :

sudo apt-get remove jpeg*

Bu bir çok şeyi mahvetti, Unity, Firefox, Flash player vb. Kaldırıldı.

Her nasılsa masaüstünü ve birliği kurtarmayı başardım ama daha sonra bir sürü şey hala sıkıcı. Örneğin .rpmdosyalar ve .tag.gzsadece hiç açılmıyor.

İstediğim şey, yanlış olan her şeyi düzeltmenin bir yolu. Windows diskli bir 'onarım kurulumunun' karşılığı olan bir şey.

Herhangi bir ipucu, kimse?


1
Gerçekten yeni bir kurulum tavsiye ederim. Sadece / home / (görünmez dosyalar dahil) yedeklerini yedekle ve yeni yüklemeye ekle
Paul Woitaschek

Yanıtlar:


35

ubuntu-desktopGörevi yükleyebilirsiniz :

sudo apt-get install ubuntu-desktop^

Bu, kaldırdığınız standart Ubuntu Masaüstü'nün tüm paketlerini yükleyecektir. Taktığınız standart masaüstünün bir parçası olmayan paketleri geri yüklemez (yani Unity ve Firefox'u yeniden yükler, ancak Flash oynatıcısını yeniden yüklemez).

Bu paketleri kurmak için /var/log/apt/history.logneleri kaldırdığınızı tam olarak inceleyebilir ve görebilirsiniz.

Not: yükleme ubuntu-desktop^ görevi yüklerken aynı değildir ubuntu-desktop paketi . Birincisi APT'ye sanal paketleri içeren bağımlılıkları çözmek için bazı ipuçları verecek, ikincisi APT'ye paketleri seçme özgürlüğü verecek (ve bunun gibi işe yaramaz şeyler yüklemeye başlayacak ubiquity).

Sorun neden oldu? apt-get remove jpeg*olacak değil başlayarak tüm paketleri kaldırmak jpeg. Bunun yerine jpe, adlarında bulunan tüm paketleri kaldıracaktır . Bunun sebebi apt-get 'in düzenli ifadeyle çalışmasıdır, böylece jpeg * şu anlama gelir: jpe içeren her şey sıfır veya daha fazla g .


1
İyi fikir, bunu düşünmedim. Burada çalışıp çalışmayacağını görmek isterim!
Eliah Kagan,

@EliahKagan: Bir chroot içinde test ettim. jpeg * paketleri yalnızca bazı grafik uygulamaları etkiler, bu nedenle gerekli 'içerikler' (yani Internet bağlantısı için Ağ Yöneticisi, APT, terminal emülatörleri vb.) hala OP sistemindedir.
Andrea Corbellini,

@EliahKagan: Tabii ki, OP'nin başka bir şeyi kaldırmadığı (açık olmayan) varsayımını yaptım.
Andrea Corbellini,

2
Lütfen bir görevi kaldırmak için asla kullanmayacağınız bir uyarı ekleyin tasksel- iğrenç
guntbert 14

1
@Attilio: Cevaptaki farkı açıkladım. Bkz. "Not: ubuntu-desktop ^ 'u kurmak görev ubuntu-desktop paketini kurmakla aynı değildir ..."
Andrea Corbellini

8

Bu sorunu çözmenin en iyi yolu Ubuntu'yu yeniden yüklemek olabilir. (Yeniden biçimlendirmeden yeniden yüklemeyi planlasanız bile, ilk önce belgelerinizi yedeklemelisiniz.)

Sistemi yerinde düzeltmeyi denemek istiyorsanız, hangi paketlerin kaldırıldığını görmek için paket yöneticisinin günlük dosyalarına bakın ve yeniden yükleyin:

  • /var/log/dpkg.log (tam bilgi, ancak okunması zor)
  • /var/log/apt/history.log (kısaltması size her paketin kaldırıldığını ya da değiştirildiğini söyleyecektir - muhtemelen en iyi bahis)
  • /var/log/apt/term.log( apt-getterminaldeki paketleri çıkardıysanız, hangi paketlerin kaldırılacağının listeleri de dahil olmak üzere, o zaman ne gördüğünüzü göstermelisiniz - bu en iyi yol olabilir )

Sadece adlarıyla başlayan paketleri yeniden yüklemekjpeg işe yaramaz, çünkü kaldırılan paketlerin çoğu (neredeyse kesinlikle çoğu) bu paketlere güvendiklerinden kaldırılmıştır .

Gelecekte , bir paketi kaldırmanın sonuçlarını dikkatlice kontrol etmenizi öneririm. Komut satırından çalışıyorsanız, her zaman haberdar olun. (Bu -yseçeneği kullanmazsanız, bu durumda, genellikle kullanmazsınız. Ne yaptığınızı, özellikle de kaldırma işlemlerini yapmadığınız sürece, bu seçeneği kullanmamanızı öneririm.)

İle yürütülen bir paket yönetim operasyonun sonuçlarını kontrol etmenin bir yolu apt-getonları oluyor riske atmadan, çalıştırmaktır apt-get -syerine sudo apt-get. Bu sadece belirtilen eylemi simüle eder ve sonuç olarak hangi paketlerin etkileneceğini ve nasıl etkileneceğini rapor eder.


1

Ben koşmak sudo apt-get purge wine*sadece terminali giriş seçeneği açılışta, Ubuntu 15.10 üzerinde hiçbir grafik arayüzü.

Eliah Kagan'ın önerdiği gibi, /var/log/apt/history.log nano'yu history.log'da çalıştırdığımdan gelen bilgileri kullandım sudo apt-get installve satırda bulduğum tüm tasfiye edilmiş paketleri içeren basit bir senaryo yazdım:

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

Ancak önce aralarında metni kaldırmak için el ile vardı: ve:

Bu aşamada paketler yüzlerce olduğu için yeni bir betik faydalı olacaktır. ondan sonra betiği çalıştırdım ve birkaç tane kaldırdım Unable to locate packages(ki bu manuel olarak kurdum). betiği tekrar çalıştırın ve bu. Her şey yolunda gidiyor ... neyse ki


0

Ubuntu-desktopUbuntu-desktop'ı yükleyin paketini kurun

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

Sisteminiz için gerekli paketleri kuracak.


ubuntu-desktop bağımlılıkları yüklenmediğinden bu benim için başarısız oluyor.
kevinkaya,

0

Yanlışlıkla çıkarıldım libssl1.0.0ve makinem sakatlandı. Geri yüklemek için yaptım:

  1. Kaldırılanın günlüklerini yedekle cp /var/log/apt/term.log ~/libssl.term.log
  2. Libssl eylemiyle ilgisiz satırları silin vi ~/libssl.term.log
  3. Ağ bağlantısı eksikse (olamaz ping google.com), kurtarma modunda yeniden başlatın ve ağı etkinleştirin
  4. Kaldırılan paketleri yeniden yükle 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

0

İşte (kullanılamaz) paketi dizesini yazdığınız toplu kaldırma işleminden yazabileceğiniz küçük bir python betiği /var/log/apt/history.log. Kaldırılan tüm paketleri kolayca yüklemek için yapıştırmayı apt-get install komutuna kopyalayabileceğiniz bir dize çıkarır.

import re

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

match =  re.findall(r'([\w\d\.-]+).+? \(.+?\)', apt_str)
print " ".join(match)

Virgül? Tırnak mı demek istiyorsun?
wjandrea

@wjandrea Evet tırnak demek
joaoroque
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.