APT, çekirdek sürümü uyumsuzluğu tarafından kamalandı


18

Apt benim için yararlı bir şey yapamıyor gibi görünüyor, tekrar tekrar bu formun mesajlarını veriyor:

dpkg: dependency problems prevent configuration of linux-server:
 linux-server depends on linux-image-server (= 3.2.0.37.44); however:
  Version of linux-image-server on system is 3.2.0.37.45.
 linux-server depends on linux-headers-server (= 3.2.0.37.44); however:
  Version of linux-headers-server on system is 3.2.0.37.45.
dpkg: error processing linux-server (--configure):
 dependency problems - leaving unconfigured

Bu temelde kapatıldı herhangi bir paket (linux-görüntü-sunucu, linux-sunucu bağımlılıkları hataları) yükleyemiyorum aynı sorun Bu durum için tamamen işe yaramaz bir cevabın çoğaltın. Bağımlılıklarla ilgili bu çok genel cevaptaki tavsiyelerin hiçbiri yardımcı olmaz.

Açıkça:

sudo apt-get clean
sudo apt-get autoclean
sudo apt-get update

hepsinin etkisi yoktur. Süre

sudo apt-get -f install
sudo dpkg --configure -a
sudo apt-get -u dist-upgrade
sudo apt-get -o Debug::pkgProblemResolver=yes dist-upgrade

tümü yukarıdaki hata mesajının bir biçimini verir.

Yanıtlar:


20

Sen koştun sudo apt-get updateve sorun hala devam ediyor. Muhtemelen sadece daha yeni bir sürümü var Yani linux-image-serverve linux-headers-serverhepsinden daha linux-servermüsait paketin yapılandırılmış yazılım kaynaklarından .

Bu çok , merkezi sunucuyu kullanıyor olsanız bile kısa bir süre için (veya güncelleme sırasında bir sorun olması durumunda daha uzun bir süre için) . Benim anlayışım, bir ayna kullanırsanız daha uzun süre olabileceğidir. Bu, bir ayna kullanmamanız gerektiği anlamına gelmez - merkezi sunucu ( http://archive.ubuntu.com) genellikle çok yavaştır ve ulusal, bölgesel veya diğer aynalar çok daha hızlıdır.

Bir paket arama ortaya her iki sürümü 3.2.0.37.45 linux-image-servervelinux-server Ubuntu 12.04 için mevcut . Yani muhtemelen aynanızla ilgilidir.

İşte bazı alternatifler:

Boşver

Paket yöneticisini başka amaçlar için (örneğin, diğer paketleri yüklemek için) kullanabiliyorsanız, bunu göz ardı edebilirsiniz. Aynanız güncellendiğinde, muhtemelen paketi alacaksınız.

En yeni linux-serverpakete sahip olmak bir sorun değil , çünkü gerçek bir yazılım sağlamayan bir meta paket . Yalnızca üç paketi bağımlı olarak listeleyebilmeleri için vardır , böylece bunların yüklü kalmasını sağlar:

Zaten en son sürümlerini linux-headers-serverve linux-image-server. Tahminimce bu 64-bit bir sistem, bu yüzden hakkında hiçbir mesaj linux-generic-paegösterilmedi. Her ţey yolunda gibi görünüyor.

Ancak:

  • Sorun, diğer paketlerin güncellenmesini ve yüklenmesini engelliyorsa (bunu yaptığınızda yalnızca bu iletileri göstermenin aksine, buna müdahale etmemek yerine), başka bir çözüm uygulamalısınız.
  • Bu mesajları her zaman görmek istemiyorsanız ve onlardan kurtulmak istiyorsanız, bunu da yapmak isteyebilirsiniz.
  • Ana indirme sunucusunun biraz gerisinde kalan bir ayna kullansanız bile bu paketi almamanız biraz garip, çünkü bu paket tarafından da sağlanıyor http://security.ubuntu.com. Bu sunucu her zaman etkin olmalıdır /etc/apt/sources.list. Bu yüzden etkinleştirildiğinden emin olmak için kontrol etmenizi öneririz. sources.listDüzenlemeden önce yedeklemek isteyebilirsiniz ( sudo cp /etc/apt/sources.list /etc/apt/sources.list.old). Sorun, eski verileri içeren bir önbelleğe alma web proxy'sinin (bir tane kullanıyorsanız) bir sonucu da olabilir. (Aşağıdaki çözümler de bu sorunu çözecektir.)

Farklı Bir İndirme Sunucusuna Geçme

Sanırım bir Ubuntu Sunucu sistemi çalıştırıyorsunuz ve muhtemelen bir GUI yüklü değil. Yani, bakınız:

Aynanızı değiştirdikten sonra çalıştırın:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

İsterseniz linux-server, güncellendikten sonra sunucunuzu değiştirebilirsiniz .

Manuel Olarak İndirin ve Yükleyin .debPaket Dosyasını

Ubuntu 12.04'te meta paketin .deben son sürümü için dosyayı manuel olarak indirip yükleyebilirsiniz linux-server.

cd paketi indirmek istediğiniz yere.

Bu 64 bit bir sistemse, şunu çalıştırın:

wget https://launchpad.net/ubuntu/+archive/primary/+files/linux-server_3.2.0.23.25_amd64.deb

Bu 32 bit bir sistemse, bunun yerine şunu çalıştırın:

wget https://launchpad.net/ubuntu/+archive/primary/+files/linux-server_3.2.0.23.25_i386.deb

( Ubuntu'daki kaynak paketin Launchpad sayfasındaki her iki bağlantıyı da aldımlinux-meta .)

Şimdi (hem 64 bit hem de 32 bit için) paketi yüklemek için bu komutu çalıştırın:

sudo dpkg -i linux-server_3.2.0.23.25_*.deb

(Veya paketin adını yazmaya başlayın ve Tab tamamlamak için .)

Paketi Kaldır

Zaten sahip olduğunuz bir metafor sağlayan yazılım olduğundan paketi kaldırabilirsiniz. Artık hatayı almayacaksınız. İsterseniz daha sonra tekrar yükleyebilirsiniz (düzenli olarak çalıştırabilirsinizapt-get update && apt-cache policy linux-server yeni sürümün mevcut olup olmadığını görmek için ).

Kaldırmak istiyorsanız iki adım vardır. Birincisi kaldırmaktır linux-server. ikincisi, paketlerin daha sonra otomatik olarak kaldırılmayacağından emin olmaktır.

Bağımlılıkları olacak değil kaldırılacak hemen . Dolayısıyla, bu adımlardan hangisini önce yaptığınız önemli değildir.

1. Kaldır linux-server .

Kaldırmak için şunu linux-serverçalıştırın:

sudo apt-get remove linux-server

2. Bağımlılıklarını Manuel Yüklü Olarak İşaretleyin

APT'ye (paket yöneticisi) bağımlılıklarını bildiren hiçbir şey kalmasa bile kurmayı planladığınız paketler hakkında bilgi vermek için bunları manuel olarak yüklendi olarak işaretleyin.

Bunu yapmak için, 64 bit bir sistemse bu komutu çalıştırın:

sudo apt-mark manual linux-image-server linux-headers-server

32 bit bir sistemse, bunun yerine şunu çalıştırın:

sudo apt-mark manual linux-image-server linux-headers-server linux-generic-pae

(Sahip olmalısınız, apt-markancak yazılım yükleyemiyorsanız ve yükleyemiyorsanız - yükleme için el ile bir paket belirtmek apt-get installyerine kullanabilirsiniz - apt-mark manualönceden yüklenmiş olsa bile el ile yüklenmiş olarak işaretlenmesine neden olur.)

Kaynak: Bir deb paketini kullanılmış olarak işaretleyin, bu nedenle otomatik kaldırma için önerilmez
(Özellikle Lekensteyn'in yanıtı .)


3
Detaylı cevap için teşekkürler. Aynaları değiştirmek durumu hiç değiştirmedi. Ancak, linux-server'ın ( linux-server_3.2.0.37.45) yeni sürümünü manuel olarak yüklemek sorunu çözdü.
Leopd

2
Benim durumumda, apt-get'i hiçbir şey için kullanamadım. Her zaman linux-server için karşılanmamış bağımlılık hatası aldım. Tavsiyenizden ilham alarak, aşağıdakileri çalıştım ve çok daha basitti:sudo apt-get remove linux-server && sudo apt-get install linux-server
Andrew Ensley

4

Tam / önyüklemeniz varsa ve otomatik güvenlik yükseltme yüklemeleri uygunsa, benimle aynı teknede olabilirsiniz.

Geleneksel tam / önyükleme tavsiye işe yaramadı bir şey yapmak için apt-get alamadım. Eski çekirdek verilerini manuel olarak kaldırdım. Çalışan çekirdeği kaldırmayın, 'uname -a' ile kontrol edin. ' Sudo rm / boot / -3.2.0- {23,24,25,26} - ile kaldırdım .

Sonra 'sudo apt-get linux-server'ı kaldır' ve 'sudo apt-get install linux-server'ı 1/2 kurulu çekirdek sorunundaki karışıklığı düzeltmek zorunda kaldım. Tüm bunlardan sonra, nihayet 'sudo apt-get upgrade' ve işleri tekrar hareket ettirmek olabilir.

İyi bir ölçü için, önyükleme menüsünün doğru olduğundan ve diğer paketlerin temizlendiğinden emin olmak için bir 'sudo update-grub' ve 'sudo apt-get autoremove' a attım.


Burada bu süreç hakkında biraz daha yazdım: askubuntu.com/a/430944/47461 Bir müteahhit olarak sık sık bu problemle karşılaşıyorum.
flickerfly

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.