yum menginstal kernel-devel yang berbeda dari versi kernel saya

32

Saya mencoba menginstal VMWare player di Fedora 19. Saya mengalami masalah yang dialami banyak pengguna di mana VMware player tidak dapat menemukan header kernel. Saya telah menginstal kernel-headersdan kernel-develpaket melalui yumdan file yang muncul di /usr/src/kernelsadalah:

3.12.8-200.fc19.x86_64

Namun, ketika saya melakukan uname -rversi kernel Fedora saya adalah:

3.9.5-301.fc19.x86_64

yang merupakan versi yang berbeda. Ini sepertinya berarti bahwa ketika saya mengarahkan VMware player di jalur kernel, saya mendapatkan kesalahan ini:

C header files matching your running kernel were not found.  
Refer to your distribution's documentation for installation instructions.

Bagaimana saya bisa menginstal Kernel yang benar dan di mana saya harus menunjuk VMware jika tidak /usr/src/kernels/<my-kernel>?

Tuan Fox yang luar biasa
sumber
Hanya ingin tahu ... Mengapa Anda tidak menjalankan kernel terbaru di Fedora 19?
rickhg12hs
Bukan dengan keputusan saya sendiri. Saya menginstal dari webiste build terbaru yang saya bisa. Apakah ada cara untuk memperbarui kernel?
Fantastic Mr Fox
Sebagian besar menjaga semua paket saat ini dengan menggunakan Package Manager atau sebagai root mengeksekusi yum updatedari baris perintah. Sering dilakukan, dan dengan koneksi Internet yang baik, tidak butuh waktu lama, tetapi Anda masih harus mengejar ketinggalan. Untuk menggunakan kernel baru, Anda harus melakukan reboot setelah pembaruan selesai.
rickhg12hs

Jawaban:

33

Anda dapat menginstal file header kernel yang benar seperti:

$ sudo yum install "kernel-devel-uname-r == $(uname -r)"

Contoh

Perintah ini akan selalu menginstal versi yang benar.

$ sudo yum install "kernel-devel-uname-r == $(uname -r)"
Loaded plugins: auto-update-debuginfo, changelog, langpacks, refresh-packagekit
No package kernel-devel-uname-r == 3.12.6-200.fc19.x86_64 available.
Error: Nothing to do

Atau Anda dapat mencari mereka seperti ini:

$ yum search "kernel-headers-uname-r == $(uname -r)" --disableexcludes=all
Loaded plugins: auto-update-debuginfo, changelog, langpacks, refresh-packagekit
Warning: No matches found for: kernel-headers-uname-r == 3.12.6-200.fc19.x86_64
No matches found

Namun saya juga telah memperhatikan masalah ini di mana versi header spesifik tidak ada di repositori. Anda mungkin harus menjangkau ke Koji untuk menemukan versi khusus bangunan.

Halaman itu mencakup semua aset untuk versi Kernel tertentu itu.

slm
sumber
2
Mengapa ini lebih baik daripada yum install "kernel-devel-$(uname -r)"? Dari teladan Anda, itu bahkan tampaknya tidak berhasil ...
drs
1
@ drs - Tidak berfungsi b / c tidak ada pkg yang cocok yang menyediakan header untuk versi kernel saya. Menggunakan for -uname-r` adalah cara yang lebih portabel untuk melakukan pekerjaan dengan pkg yang terkait dengan versi kernel. Ini digunakan pada kebanyakan repo jika Anda melihat contohnya juga: rpmfusion.org/Howto/nVidia
slm
Ini sangat membantu. Saya pikir saya telah menginstal versi yang benar dari header kernel, perbedaan yang sangat kecil dalam nama, tetapi itu tidak benar dan gagal dibangun. Perintah di atas membantu saya mendapatkan yang sebenarnya dan juga memberi saya wawasan yang lebih baik tentang pencarian paket. Terima kasih +1
fkl
Apakah ada cara kita dapat membuat yum / dnf secara otomatis menginstal header kernel baru juga setiap kali pembaruan kernel?
Shankar Narayanan
2
@slm mana saya dapat menemukan informasi / dokumentasi pada sintaks ini: "kernel-devel-uname-r == $(uname -r)"?
Vadim Kotov
8

Sinkronisasi Distribusi

Masalah Anda mungkin "sinkronisasi distribusi". Menjalankan perintah ini memecahkan masalah saya.

yum distro-sync

Menyinkronkan paket yang terinstal dengan paket terbaru yang tersedia, ini dilakukan dengan menghapus, memperbarui atau menurunkan versi yang sesuai. ( http://man7.org/linux/man-pages/man8/yum.8.html )

harum
sumber
4

Anda dapat menginstal versi spesifik suatu paket dengan menentukan versi beserta nama paketnya yum. Misalnya, untuk menginstal file pengembangan kernel untuk kernel spesifik yang Anda jalankan, ketik

yum install kernel-devel-3.9.5-301.fc19

Anda dapat melakukan perintah serupa untuk mendapatkan kernel-headerspaket yang tepat .

drs
sumber
0

Itu terjadi beberapa kali juga bagi saya, menginstal VMBoxAdditions setelah pembaruan sistem.

Saya harus menghapus kernel-devs:

yum remove kernel-devel

lalu instal ulang:

yum install kernel-devel

Dan kemudian secara ajaib bekerja.

Andrea
sumber
0

Saya menemukan hal yang sama setelah memperbarui kernel dan jawaban Jim banyak membantu. Untuk mengaktifkan repo [elrepo-kerne] , buka /etc/yum.repos.d/elrepo.repofile dan atur enabled=1(daripada enabled=0) untuk [elrepo-kernel] , lalu lakukan pembaruan yang diinformasikan oleh jawaban slm. Setelah itu, balikkan ke enabled=0, sehingga yum tidak akan berinteraksi dengan repo ini. Untuk menunjukkan, perintah yum repolist allakan menunjukkan semua repo yang diaktifkan dan dinonaktifkan.

João Paulo
sumber
-2

Setelah mengikuti saran setiap orang, saya menemukan satu hal di ujung saya yang membantu memperbaikinya. Saya harus mengaktifkan repo [elrepo-kernel]. Kemudian saya dapat menginstal header dan kernel-devel yang benar

Jim
sumber
Ini bukan jawaban yang lengkap untuk pertanyaan itu. Anda harus meningkatkan jawaban Anda dengan lebih detail, atau menambahkan ini sebagai komentar.
Fantastic Mr Fox
@FantasticMrFox Ini adalah jawaban untuk pertanyaan, meskipun jawaban singkat tanpa penjelasan tentang mengapa prosedur ini diperlukan, dan itu menduplikasi apa yang sudah dikatakan orang lain.
Kusalananda