APT terjepit oleh ketidakcocokan versi kernel

18

Apt tampaknya tidak dapat melakukan sesuatu yang berguna bagi saya, berulang kali memberikan pesan dari formulir ini:

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

Ini pada dasarnya masalah yang sama karena saya tidak dapat menginstal paket apa pun (linux-image-server, kesalahan dependensi linux-server) yang ditutup Duplikat ke jawaban yang sama sekali tidak berguna untuk situasi ini. Tidak ada saran dalam jawaban yang sangat umum tentang dependensi yang membantu.

Secara eksplisit:

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

semua tidak memiliki efek. Sementara

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

semua memberikan beberapa bentuk pesan kesalahan di atas.

Leopd
sumber

Jawaban:

20

Anda berlari sudo apt-get update, dan masalahnya masih terjadi. Jadi, Anda mungkin hanya memiliki versi yang lebih baru linux-image-serverdan linux-headers-serverdari linux-serverpaket apa pun yang tersedia dari sumber perangkat lunak yang dikonfigurasi .

Ini dapat terjadi untuk waktu yang sangat singkat bahkan jika Anda menggunakan server pusat (atau untuk waktu yang lebih lama jika ada masalah memperbaruinya). Pemahaman saya adalah bahwa hal itu dapat terjadi untuk periode waktu yang lebih lama jika Anda menggunakan cermin. Itu tidak berarti Anda tidak boleh menggunakan mirror - server pusat ( http://archive.ubuntu.com) biasanya sangat lambat, dan mirror nasional, regional, atau lainnya jauh lebih cepat.

Sebuah pencarian paket mengungkapkan bahwa versi 3.2.0.37.45 baik linux-image-serverdan linux-serveryang ada untuk Ubuntu 12.04. Jadi itu mungkin terkait dengan cermin Anda.

Berikut ini beberapa alternatif:

Abaikan itu

Jika Anda dapat menggunakan manajer paket untuk tujuan lain, misalnya, untuk menginstal paket lain, maka Anda bisa mengabaikannya saja. Ketika mirror Anda diperbarui, Anda mungkin hanya akan mendapatkan paketnya.

Ini bukan masalah untuk tidak memiliki linux-serverpaket terbaru , karena ini adalah paket metap yang tidak menyediakan perangkat lunak yang sebenarnya. Hanya ada sehingga dapat mencantumkan tiga paket sebagai dependensi , memastikan mereka tetap diinstal:

Anda sudah memiliki versi terbaru linux-headers-serverdan linux-image-server. Dugaan saya adalah bahwa ini adalah sistem 64-bit, itulah sebabnya tidak ada pesan linux-generic-paeyang ditampilkan. Sepertinya semuanya baik-baik saja.

Namun:

  • Jika masalahnya mencegah memperbarui dan menginstal paket lain agar tidak berfungsi (bukan hanya menunjukkan pesan-pesan itu setiap kali Anda melakukannya tetapi tidak mengganggu itu), maka Anda harus menerapkan beberapa solusi lain.
  • Anda mungkin juga ingin melakukannya, jika Anda tidak suka melihat pesan-pesan ini sepanjang waktu dan ingin menyingkirkannya.
  • Agak aneh Anda tidak mendapatkan paket ini, bahkan jika Anda menggunakan mirror yang sedikit tertinggal dari server unduhan utama, karena paket ini juga disediakan oleh http://security.ubuntu.com. Server itu harus selalu diaktifkan di /etc/apt/sources.list. Jadi saya sarankan memeriksa untuk memastikan itu diaktifkan. Anda mungkin ingin mencadangkan sources.listsebelum mengeditnya ( sudo cp /etc/apt/sources.list /etc/apt/sources.list.old). Masalahnya juga bisa menjadi konsekuensi dari proxy web caching (jika Anda menggunakannya) dengan data basi. (Solusi di bawah ini akan mengatasi itu juga.)

Ubah ke Server Unduhan yang Berbeda

Saya kira Anda menjalankan sistem Ubuntu Server dan mungkin tidak memiliki GUI yang diinstal. Jadi, lihat:

Setelah mengubah cermin Anda, jalankan:

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

Jika suka, Anda dapat mengubah server kembali setelah linux-serverdiperbarui.

Unduh dan Instal .debFile Paket Secara Manual

Anda dapat mengunduh dan menginstal .debfile secara manual untuk versi terbaru dari linux-servermetapackage di Ubuntu 12.04.

cd ke mana pun Anda ingin mengunduh paket.

Jika ini adalah sistem 64-bit, jalankan:

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

Jika ini adalah sistem 32-bit, jalankan ini sebagai gantinya:

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

(Saya mendapatkan kedua tautan itu di halaman Launchpad untuk linux-metapaket sumber di Ubuntu .)

Sekarang (untuk 64-bit dan 32-bit), jalankan perintah ini untuk menginstal paket:

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

(Atau cukup ketik nama paket dan gunakan Tabuntuk menyelesaikannya.)

Hapus Paket

Karena ini adalah metapackage yang menyediakan perangkat lunak yang sudah Anda miliki, Anda dapat menghapus paket. Maka Anda tidak akan mendapatkan kesalahan lagi. Anda dapat menginstalnya lagi nanti jika suka (Anda dapat menjalankan secara berkala apt-get update && apt-cache policy linux-serveruntuk melihat apakah versi baru tersedia).

Ada dua langkah, jika Anda ingin menghapusnya. Yang pertama adalah menghapus instalasi linux-server. yang kedua adalah memastikan bahwa paket tidak akan dihapus secara otomatis nanti.

Ketergantungan tidak akan segera dihapus . Jadi tidak masalah langkah mana dari yang Anda lakukan pertama kali.

1. Copot pemasangan linux-server.

Untuk menghapus instalasi linux-server, jalankan:

sudo apt-get remove linux-server

2. Tandai Ketergantungan sebagai Dipasang Secara Manual

Untuk memberi tahu APT (manajer paket) tentang paket yang ingin Anda instal meskipun tidak ada yang menyatakan dependensi, tandai sebagai diinstal secara manual.

Untuk melakukannya, jalankan perintah ini, jika ini adalah sistem 64-bit:

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

Jika ini sistem 32-bit, jalankan ini sebagai gantinya:

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

(Seharusnya Anda memiliki apt-marktetapi jika Anda tidak dan Anda tidak dapat menginstal perangkat lunak, Anda dapat menggunakan apt-get installbukannya - apt-mark manualmenentukan paket secara manual untuk instalasi menyebabkan itu ditandai sebagai diinstal secara manual bahkan jika jika sudah diinstal.)

Sumber: Tandai paket deb seperti yang digunakan, jadi tidak disarankan untuk autoremoval
(Terutama, jawaban Lekensteyn .)

Eliah Kagan
sumber
3
Terima kasih atas respon yang mendetail. Mengubah cermin tidak mengubah situasi sama sekali. Tetapi secara manual menginstal versi terbaru dari linux-server ( linux-server_3.2.0.37.45) memang memperbaiki masalah.
Leopd
2
Dalam kasus saya, saya tidak bisa menggunakan apt-get untuk apa pun. Saya selalu menerima kesalahan ketergantungan yang belum terpenuhi untuk linux-server. Terinspirasi oleh saran Anda, saya mencoba yang berikut ini, yang bekerja dan lebih sederhana:sudo apt-get remove linux-server && sudo apt-get install linux-server
Andrew Ensley
4

Jika Anda memiliki instalasi full / boot dan pemutakhiran keamanan otomatis gagal, Anda mungkin berada di kapal yang sama seperti saya.

Saya tidak bisa melakukan apa pun sehingga saran full / boot tradisional tidak berfungsi. Saya secara manual menghapus data kernel lama. Jangan hapus kernel yang berjalan saat ini, periksa dengan 'uname -a'. Saya menghapus dengan 'sudo rm / boot / -3.2.0- {23,24,25,26} - .

Kemudian saya harus menjalankan 'sudo apt-get remove linux-server' dan 'sudo apt-get install linux-server' untuk memperbaiki kekacauan dari masalah kernel yang terinstal 1/2. Setelah semua itu, saya akhirnya bisa 'sudo apt-get upgrade' dan membuat semuanya bergerak lagi.

Sebagai tambahan, saya melemparkan 'sudo update-grub' dan 'sudo apt-get autoremove' untuk memastikan menu booting akurat dan paket-paket lain dibersihkan.

flickerfly
sumber
Saya menulis sedikit lebih banyak tentang proses ini di sini: askubuntu.com/a/430944/47461 Sebagai kontraktor saya sering mengalami masalah ini.
flickerfly