yum cài đặt kernel-devel khác với phiên bản kernel của tôi


32

Tôi đang cố gắng cài đặt trình phát VMWare trong Fedora 19. Tôi đang gặp phải vấn đề mà nhiều người dùng gặp phải khi trình phát VMware không thể tìm thấy các tiêu đề kernel. Tôi đã cài đặt kernel-headerskernel-develcác gói thông qua yumvà tệp xuất hiện /usr/src/kernelslà:

3.12.8-200.fc19.x86_64

Tuy nhiên, khi tôi thực hiện uname -rphiên bản kernel Fedora của mình là:

3.9.5-301.fc19.x86_64

đó là một phiên bản khác nhau. Điều này có nghĩa là khi tôi trỏ trình phát VMware vào đường dẫn của hạt nhân, tôi gặp lỗi này:

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

Làm cách nào tôi có thể cài đặt Kernel chính xác và tôi nên trỏ VMware ở đâu nếu không /usr/src/kernels/<my-kernel>?


Chỉ tò mò thôi ... Tại sao bạn không chạy kernel mới nhất trong Fedora 19?
rickhg12hs

Không phải bởi một quyết định của riêng tôi. Tôi đã cài đặt từ webiste bản dựng mới nhất mà tôi có thể. Có cách nào để cập nhật kernel không?
Mr Mr tuyệt vời

Hầu hết giữ tất cả các gói hiện tại bằng cách sử dụng Trình quản lý gói hoặc dưới dạng thực thi gốc yum updatetừ một dòng lệnh. Thực hiện thường xuyên và với một kết nối Internet tốt, sẽ không mất nhiều thời gian, nhưng bạn đã có một chút bắt kịp để làm. Để sử dụng kernel mới, bạn sẽ cần khởi động lại sau khi cập nhật xong.
rickhg12h

Câu trả lời:


33

Bạn có thể cài đặt các tệp tiêu đề kernel chính xác như vậy:

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

Thí dụ

Lệnh này sẽ luôn cài đặt đúng phiên bản.

$ 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

Hoặc bạn có thể tìm kiếm chúng như thế này:

$ 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

Tuy nhiên, tôi cũng nhận thấy vấn đề này khi các phiên bản tiêu đề cụ thể không có trong kho. Bạn có thể phải tiếp cận Koji để tìm phiên bản cụ thể của bản dựng.

Trang đó bao gồm tất cả các tài sản cho phiên bản Kernel cụ thể đó.


2
Tại sao điều này tốt hơn yum install "kernel-devel-$(uname -r)"? Từ ví dụ của bạn, nó thậm chí không dường như làm việc thậm chí ...
DRS

1
@drs - Nó không hoạt động b / c không có bất kỳ pkg phù hợp nào cung cấp các tiêu đề cho phiên bản kernel của tôi. Sử dụng for -uname-r` là một cách dễ dàng hơn để thực hiện công việc w / pkgs được gắn với phiên bản kernel. Nó được sử dụng trên hầu hết các repos nếu bạn cũng xem các ví dụ của họ: rpmfusion.org/Howto/nVidia
slm

Điều này thực sự hữu ích. Tôi nghĩ rằng tôi đã cài đặt phiên bản chính xác của tiêu đề kernel, một sự khác biệt rất nhỏ về tên, nhưng nó không chính xác và không xây dựng được. Lệnh trên đã giúp tôi có được cái thực tế cũng như giúp tôi hiểu rõ hơn về tìm kiếm gói. Cảm ơn bạn +1
fkl

Có cách nào để chúng ta có thể làm cho yum / dnf tự động cài đặt các tiêu đề kernel mới bất cứ khi nào nó cập nhật kernel không?
Shankar Narayanan

2
@slm tôi có thể tìm thấy bất kỳ thông tin / tài liệu nào về cú pháp này : "kernel-devel-uname-r == $(uname -r)"?
Vadim Kotov

8

Đồng bộ hóa phân phối

Vấn đề của bạn có thể là "đồng bộ hóa phân phối". Chạy lệnh này đã giải quyết vấn đề của tôi.

yum distro-sync

Đồng bộ hóa gói đã cài đặt với các gói mới nhất hiện có, điều này được thực hiện bằng cách lỗi thời, nâng cấp hoặc hạ cấp khi thích hợp. ( http://man7.org/linux/man-pages/man8/yum.8.html )


4

Bạn có thể cài đặt một phiên bản cụ thể của gói bằng cách chỉ định phiên bản cùng với tên gói với yum. Ví dụ: để cài đặt các tệp phát triển kernel cho kernel cụ thể bạn đang chạy, hãy nhập

yum install kernel-devel-3.9.5-301.fc19

Bạn có thể thực hiện một lệnh tương tự để có được kernel-headersgói đúng .


0

Nó cũng xảy ra đôi khi với tôi, cài đặt VMBoxAdditions sau khi cập nhật hệ thống.

Tôi phải xóa kernel-devs:

yum remove kernel-devel

và sau đó cài đặt lại nó:

yum install kernel-devel

sau đó kỳ diệu nó hoạt động.


0

Tôi bắt gặp điều tương tự sau khi cập nhật kernel và câu trả lời của Jim đã giúp ích rất nhiều. Để kích hoạt repo [elrepo-kerne] , hãy đi tới /etc/yum.repos.d/elrepo.repotệp và đặt enabled=1(chứ không phải enabled=0) cho [elrepo-kernel] , sau đó thực hiện cập nhật theo câu trả lời của slm. Sau đó, đảo ngược lại enabled=0, để yum sẽ không tương tác với repo này. Chỉ cần chỉ ra, lệnh yum repolist allsẽ hiển thị cho bạn tất cả các repos được kích hoạt và vô hiệu hóa.


-2

Sau khi làm theo gợi ý của mọi người, tôi đã tìm thấy một điều giúp tôi khắc phục điều này. Tôi đã phải kích hoạt repo [elrepo-kernel]. Sau đó, tôi đã có thể cài đặt các tiêu đề chính xác và kernel-devel


Đây không phải là một câu trả lời đầy đủ cho câu hỏi. Bạn nên cải thiện câu trả lời của mình với nhiều chi tiết hơn hoặc thêm câu này dưới dạng nhận xét.
Mr Fox tuyệt vời

@FantasticMrFox Đây là một câu trả lời cho câu hỏi, mặc dù một câu trả lời ngắn mà không có lời giải thích tại sao thủ tục này là cần thiết, và nó trùng lặp với những gì người khác đã nói.
Kusalananda
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.