tương đương linux-kernel-devel trong 12.04.2 LTS 3.5.0 là gì?


14

xin lỗi cho câu hỏi của Noob, nhưng khi tôi cố gắng

sudo apt-get install Linux-kernel-devel 

Tôi nhận được như sau:

sudo apt-get install linux-kernel-devel  
Reading package lists... Done  
Building dependency tree        
Reading state information... Done  
E: Unable to locate package linux-kernel-devel  

Tôi đã thử như sau:

sudo apt-get install linux-headers-$(uname -r)  
sudo apt-get install build-essentials  
sudo apt-get install Linux-headers-generic 

không có niềm vui ... bất kỳ đề nghị?


2
Bạn mong đợi gói linux-kernel-devel sẽ làm gì? Bạn đang tìm kiếm các tiêu đề, hoặc cái gì khác?
Robie Basak

Câu trả lời:


15

Tóm tắt

Bạn có thể muốn cài đặt gói được gọi linux-headers-generic.

Nếu việc chạy uname -rmang lại cho bạn thứ gì đó ngoài genericsố phiên bản, hãy thay thế genericbằng linux-headers-generic. (Điều này có thể là serverhoặc generic-paetrên một số cài đặt của một số bản phát hành Ubuntu và có một vài "hương vị" thỉnh thoảng khác của hạt nhân.)

Vì rất có thể bạn cần điều này để bạn có thể xây dựng trình điều khiển (có thể là tự động, bạn có thể không phải là "tự mình xây dựng"), nên cài đặt build-essentialquá tốt để có thể có tất cả các công cụ cần thiết .

Giải thích đầy đủ

Theo hiểu biết tốt nhất của tôi, không có hệ điều hành nào có một gói được gọi Linux-kernel-devel. Đây là vì hai lý do:

  • Tên gói bắt đầu bằng chữ in hoa là cực kỳ hiếm, đối với bất kỳ HĐH nào giống Unix.
  • Các hệ điều hành GNU / Linux thường đặt tên cho các gói liên quan đến kernel của chúng để các tên chứa kernel kernel hoặc từ linux , nhưng không phải cả hai. (Trên Ubuntu, đó là từ linux .)

Nó phổ biến cho các gói liên quan đến kernel trên các hệ thống sử dụng Trình quản lý gói Red Hat ( rpm) và các tiện ích liên quan để có kerneltên của gói. Ví dụ, Mageia có một số gói có tên bắt đầu kernelvà kết thúc devel. Các gói này hầu như luôn luôn (trên Mageia và bất kỳ HĐH nào có chúng) cung cấp các tệp tiêu đề cần thiết để xây dựng trình điều khiển từ nguồn để sử dụng với kernel. Họ cũng có thể cung cấp các tiện ích liên quan để tạo điều kiện. Các gói này:

  • làm không cung cấp mã nguồn đầy đủ của hạt nhân. Điều đó được cung cấp bởi các gói khác.
  • làm không cung cấp một hạt nhân có thể sử dụng trước khi biên dịch. Điều đó được cung cấp bởi các gói khác.
  • làm không cung cấp một trình biên dịch hoặc hầu hết các công cụ mục đích xây dựng khác. Những người cũng vậy, được cung cấp bởi các gói khác.

Trong Ubuntu, như có thể thấy trong danh sách ở đây , các gói cung cấp tiêu đề kernel có tên bắt đầu bằng linux-headers. Thông thường các gói chính xác để cài đặt là linux-headers-generic. Tuy nhiên, để chắc chắn gói nào sẽ được cài đặt để có được các tiêu đề tương ứng với kernel hiện đang chạy của bạn, hãy chạy:

uname -r

Bạn sẽ nhận được đầu ra trông giống như:

3.5.0-36-generic

Nghĩa là, bạn sẽ có một số phiên bản (sẽ bao gồm các .ký tự và thường có ít nhất một ký tự -), theo sau là một -, theo sau là một hoặc nhiều từ cho biết loại hạt nhân nào bạn đang chạy.

Nếu bạn chỉ muốn các tiêu đề cho phiên bản cụ thể bạn tình cờ được chạy ngay bây giờ, bạn có thể cài đặt các gói có tên linux-headers-*nơi *được thay thế bằng toàn bộ sản lượng uname -r. Ví dụ: trên hệ thống của tôi, tôi có thể chạy:

sudo apt-get update && sudo apt-get install linux-headers-3.5.0-36-generic

Tôi thậm chí có thể tự động hóa nó:

sudo apt-get update && sudo apt-get install linux-headers-`uname -r`

Những cách tiếp cận này là tương đương, nhưng chúng thường không phải là cách tốt nhất để đi.

Thay vào đó, bạn thường sẽ muốn cài đặt siêu dữ liệu luôn cung cấp các tiêu đề kernel mới nhất dưới dạng bản cập nhật (bằng cách tùy thuộc vào bất kỳ gói tiêu đề nào mới nhất). Điều này tương đồng với cách cài đặt kernel đã chạy, biên dịch của bạn và được cập nhật. Để làm điều đó, chỉ nhìn vào phần uname -rđầu ra sau số phiên bản. Đó là, nếu uname -rcung cấp cho bạn 3.5.0-36-generic, chỉ lấy genericmột phần.

Sau đó cài đặt gói được gọi là linux-headers-*nơi *được thay thế bởi phần đó. Vì vậy, trên hệ thống của tôi, nó sẽ là linux-headers-genericmột cách tôi có thể cài đặt nó là chạy:

sudo apt-get update && sudo apt-get install linux-headers-generic

Đối với hầu hết mọi người nó là linux-headers-generic, nhưng tùy thuộc vào những gì Ubuntu phát hành bạn đang chạy, những gì kiến trúc và loại thiết bị bạn đang chạy nó trên, và làm thế nào nó được cài đặt và cấu hình, khả năng khác bao gồm generic-pae, highbank, omap, server, và virtual.

Gói liên quan

Các tệp tiêu đề tạo điều kiện phát triển và biên dịch / xây dựng phần mềm sử dụng các tiện ích được cung cấp bởi phần mềm có tệp tiêu đề đang được sử dụng. Lý do phổ biến nhất bạn có thể cần các tiêu đề kernel là nếu bạn định xây dựng trình điều khiển (mô-đun kernel) từ mã nguồn. Một số ứng dụng, như VMware và VirtualBox, đôi khi sẽ yêu cầu điều này và sẽ tự động hóa bản dựng.

Ngoài các tệp tiêu đề, để xây dựng phần mềm, một trình biên dịch và các công cụ khác là cần thiết. Để tối đa hóa khả năng bạn có các công cụ cần thiết, bạn cũng nên cài đặt build-essentialgói.

Bất kỳ ai cũng cần mã nguồn hạt nhân đầy đủ thực tế (tất nhiên trừ khi bạn dự định xây dựng hạt nhân của mình từ nguồn). Nhưng nếu bạn cần điều đó, bạn cũng sẽ phải cài đặt một gói khác. Trong Ubuntu, gói mã nguồn hạt nhân đầy đủ được gọi linux-source. (Điều này phù hợp với quy ước đặt tên Debian / Ubuntu về các gói đặt tên cung cấp các phần thực chất của nhân Linux linuxchứ không phải kernel.)

Nếu bạn vẫn gặp rắc rối

Nếu bạn cố gắng cài đặt bất kỳ gói nào trong số các gói này nhưng gặp sự cố và bạn muốn được trợ giúp, thì bạn sẽ phải bao gồm văn bản đầy đủ và chính xác từ Terminal, bao gồm các dòng nơi bạn đã nhập lệnh. Cách tốt nhất để cung cấp điều này là bằng cách chỉnh sửa câu hỏi của bạn, nhưng nếu quá dài, bạn có thể dán nó ở đâu đó như http: //paste.ub Ubuntu.com và cung cấp cho chúng tôi URL nơi chúng tôi có thể truy cập.

Nếu bạn bình luận về câu hỏi này, tôi sẽ được thông báo. Bạn có thể chỉnh sửa câu hỏi của mình và cũng bình luận tại đây để thu hút sự chú ý đến thông tin bạn đã cung cấp trong câu hỏi của mình. (Thông tin quan trọng được lưu giữ tốt nhất trong các câu hỏi và câu trả lời.) Chúc may mắn!


0

Như báo cáo đã nói (E: Không thể định vị gói linux-kernel-devel) Không có gói nào như vậy. Bạn có thể cài đặt mọi phiên bản kernel mà bạn muốn bằng cách tải xuống các gói kernel debian từ đây

Ví dụ; chúng tôi muốn cài đặt kernel 3.9.8 (kiến trúc i386); Tải xuống tất cả các gói ** i386.deb và * * * all.deb vào một thư mục. Nhận được vào thư mục với lệnh cd trong terminal;

sudo dpkg -i *.deb
sudo update-grub2
sudo reboot

Điều này sẽ cài đặt phiên bản kernel mà bạn muốn. Bạn có thể phân tích các phiên bản của dòng chính và phiên bản dài hạn trong trang web này


0

Bạn sẽ phải tự vạch ra những vấn đề cụ thể mà bạn cần, nhưng có những cuộc tranh luận bạn sẽ cần trong các bản dựng kernel của Ubunut .

Thành thật trước tiên tôi sẽ kiểm tra sudo apt-get update và sau đó sudo apt-get dist-upgradeđể đảm bảo rằng bạn đang chạy kernel mới nhất và sẽ không cần phải làm điều này một lần nữa.

Tiếp theo xem qua danh sách xây dựng kernel cho phiên bản phù hợp với của bạn uname -r. Bạn cần xem xét từng bản dựng build.log để tìm ra phiên bản đầu mà chúng đang ánh xạ bản dựng đó. Tôi có 3.5.0-34 # 55 được liệt kê là hạt nhân của mình nhưng điều này thực sự vạch ra để xây dựng 3.5.7,14-quantal . Cài đặt tất cả các bản sửa lỗi tương ứng với phiên bản đó để nhận các tiêu đề của bạn và như vậy, và đảm bảo bạn đã có các công cụ xây dựng của mình vớisudo apt-get install build-essential

Số dặm của bạn có thể rất phụ thuộc vào những gì bạn dự định làm với các tệp phát.


0

linux-kernel-devel là tên của gói SUSE / Redhat cung cấp những thứ như genksyms.

Google rất nhanh chóng đề xuất rằng các tiêu đề chung của linux cung cấp các genksym trên Debian / Ubuntu.

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.