yum ติดตั้ง kernel-devel ต่างจากรุ่น kernel ของฉัน


32

ฉันกำลังพยายามติดตั้งเครื่องเล่น VMWare ใน Fedora 19 ฉันพบปัญหาที่ผู้ใช้หลายคนมีซึ่งผู้เล่น VMware ไม่สามารถค้นหาส่วนหัวของเคอร์เนลได้ ฉันได้ติดตั้งkernel-headersและkernel-develแพ็คเกจผ่านyumแล้วและไฟล์ที่ปรากฏ/usr/src/kernelsคือ:

3.12.8-200.fc19.x86_64

อย่างไรก็ตามเมื่อฉันทำuname -rรุ่นเคอร์เนล Fedora ของฉันคือ:

3.9.5-301.fc19.x86_64

ซึ่งเป็นรุ่นที่แตกต่าง ดูเหมือนว่าจะหมายความว่าเมื่อฉันชี้ผู้เล่น VMware ที่เส้นทางของเมล็ดฉันได้รับข้อผิดพลาดนี้:

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

ฉันจะติดตั้งเคอร์เนลที่ถูกต้องได้อย่างไรและฉันจะชี้ตำแหน่ง VMware ได้ที่/usr/src/kernels/<my-kernel>ใด?


แค่อยากรู้อยากเห็น ... ทำไมคุณไม่ใช้เคอร์เนลล่าสุดใน Fedora 19
rickhg12hs

ไม่ใช่โดยการตัดสินใจของฉันเอง ฉันติดตั้งจาก webiste รุ่นล่าสุดที่ฉันสามารถทำได้ มีวิธีอัปเดตเคอร์เนลหรือไม่
Fantastic Mr Fox

ส่วนใหญ่รักษาแพคเกจทั้งหมดที่เป็นปัจจุบันโดยใช้ Package Manager หรือเป็นรากดำเนินการyum updateจากบรรทัดคำสั่ง เสร็จสิ้นบ่อยครั้งและด้วยการเชื่อมต่ออินเทอร์เน็ตที่ดีก็ใช้เวลาไม่นาน แต่คุณก็ต้องรีบทำ ในการใช้เคอร์เนลใหม่คุณจะต้องบูตเครื่องใหม่หลังจากการอัปเดตเสร็จสิ้น
rickhg12hs

คำตอบ:


33

คุณสามารถติดตั้งไฟล์ส่วนหัวเคอร์เนลที่ถูกต้องเช่น:

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

ตัวอย่าง

คำสั่งนี้จะติดตั้งเวอร์ชันที่ถูกต้องเสมอ

$ 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

หรือคุณสามารถค้นหาพวกเขาเช่นนี้

$ 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

อย่างไรก็ตามฉันได้สังเกตเห็นปัญหานี้เช่นกันว่าไม่มีส่วนหัวเฉพาะในที่เก็บ คุณอาจต้องเข้าไปที่ Koji เพื่อค้นหาบิวด์เวอร์ชันเฉพาะ

หน้านั้นมีเนื้อหาทั้งหมดสำหรับเคอร์เนลเวอร์ชันนั้น


2
นี่คือเหตุผลที่ดีกว่าyum install "kernel-devel-$(uname -r)"? จากตัวอย่างของคุณดูเหมือนว่ามันจะไม่ทำงานแม้แต่ ...
drs

1
@drs - มันไม่ทำงาน b / c ไม่มี pkgs ที่ตรงกันใด ๆ ที่ให้ส่วนหัวสำหรับเคอร์เนลเวอร์ชันของฉัน การใช้สำหรับ -uname-r` เป็นวิธีพกพาในการทำงาน w / pkgs ที่เชื่อมโยงกับเคอร์เนลเวอร์ชัน มันใช้กับ repos ส่วนใหญ่ถ้าคุณดูตัวอย่างของพวกเขาด้วยเช่นกัน: rpmfusion.org/Howto/nVidia
slm

มันมีประโยชน์จริงๆ ฉันคิดว่าฉันได้ติดตั้งเคอร์เนลส่วนหัวเวอร์ชันที่ถูกต้องมีความแตกต่างเล็กน้อยในชื่อ แต่มันไม่ถูกต้องและล้มเหลวในการสร้าง คำสั่งข้างต้นช่วยให้ฉันได้ของจริงและให้ข้อมูลเชิงลึกเกี่ยวกับการค้นหาแพ็คเกจ ขอบคุณ +1
fkl

มีวิธีที่เราสามารถทำให้ yum / dnf ติดตั้งเคอร์เนลใหม่โดยอัตโนมัติเมื่อใดก็ตามที่มันอัพเดตเคอร์เนล?
Shankar Narayanan

2
@slm ที่ฉันสามารถหาข้อมูลใด ๆ / เอกสารเกี่ยวกับรูปแบบนี้: "kernel-devel-uname-r == $(uname -r)"?
Vadim Kotov

8

การประสานการกระจาย

ปัญหาของคุณอาจเป็น "การประสานการกระจาย" การเรียกใช้คำสั่งนี้แก้ไขปัญหาของฉัน

yum distro-sync

ซิงโครไนซ์ชุดแพ็กเกจที่ติดตั้งกับแพ็คเกจล่าสุดที่มีอยู่ซึ่งทำได้โดยการยกเลิกการอัปเกรดหรือการอัปเกรดตามความเหมาะสม ( http://man7.org/linux/man-pages/man8/yum.8.html )


4

yumคุณสามารถติดตั้งรุ่นที่เฉพาะเจาะจงของแพคเกจโดยระบุรุ่นพร้อมกับชื่อแพคเกจที่มี ตัวอย่างเช่นหากต้องการติดตั้งไฟล์พัฒนาเคอร์เนลสำหรับเคอร์เนลที่คุณใช้งานอยู่ให้พิมพ์

yum install kernel-devel-3.9.5-301.fc19

คุณสามารถทำคำสั่งที่คล้ายกันเพื่อรับkernel-headersแพ็คเกจที่ถูกต้อง


0

มันเกิดขึ้นกับฉันบางครั้งการติดตั้ง VMBoxAdditions หลังจากการอัปเดตระบบ

ฉันต้องลบ kernel-devs:

yum remove kernel-devel

จากนั้นติดตั้งใหม่:

yum install kernel-devel

และจากนั้นได้อย่างน่าอัศจรรย์ก็ทำงาน


0

ฉันเจอสิ่งเดียวกันหลังจากอัปเดตเคอร์เนลและคำตอบของจิมช่วยได้มาก หากต้องการเปิดใช้งาน[elrepo-kerne] repo ให้ไปที่/etc/yum.repos.d/elrepo.repoไฟล์และตั้งค่าenabled=1(แทนenabled=0) สำหรับ[elrepo-kernel]จากนั้นทำการอัปเดตที่แจ้งโดยคำตอบของ slm หลังจากนั้นให้ย้อนกลับไปenabled=0ที่ yum เพื่อไม่ให้มีปฏิสัมพันธ์กับ repo นี้ เพียงแค่ชี้ให้เห็นคำสั่งyum repolist allจะแสดง repos ที่เปิดใช้งานและปิดการใช้งานทั้งหมด


-2

หลังจากทำตามคำแนะนำทุกคนฉันพบสิ่งหนึ่งที่สิ้นสุดที่ช่วยแก้ไขปัญหานี้ ฉันต้องเปิดใช้งาน [elrepo-kernel] repo จากนั้นฉันก็สามารถติดตั้งส่วนหัวและ kernel-devel ที่ถูกต้องได้


นี่ไม่ใช่คำตอบที่สมบูรณ์ของคำถาม คุณควรปรับปรุงคำตอบด้วยรายละเอียดเพิ่มเติมหรือเพิ่มเป็นความคิดเห็น
ยอดนายฟ็อกซ์

@FantasticMrFox นี่คือคำตอบสำหรับคำถามแม้ว่าจะมีคำตอบสั้น ๆ โดยไม่มีคำอธิบายว่าทำไมขั้นตอนนี้จึงมีความจำเป็นและเป็นสิ่งที่ผู้อื่นพูดซ้ำ
Kusalananda
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.