Làm cách nào để biết bản dựng có dựa trên Debian không?


9

Tôi đang bắt đầu làm việc với một hộp có xây dựng Linux tùy chỉnh (nhỏ) trên đó. Làm cách nào để biết đây là bản dựng dựa trên Debian hay Red Hat?

Đây là những gì tôi biết cho đến nay:

$ cat /proc/version
Linux version 2.6.31-2.5 (build@build-desktop) (gcc version 4.4.3 (Broadcom stbgcc-4.4.3-1.2) ) #7

$ apt-get
-sh: apt-get: command not found

$ yum
-sh: yum: command not found

tại sao lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2-?? Chỉ cần chạylsb_release -si

Câu trả lời:


2

Chạy uname -asẽ cung cấp cho bạn một số thông tin chung về hệ thống. Ngoài ra, bạn có thể chạy apropos "package manager"hoặc với các từ khóa tương tự để hy vọng tìm hiểu thêm về trình quản lý gói. Tìm kiếm /etcmột tập tin có tên là xyz-releasenơi mà xyzbất kỳ bản phân phối nào đang chạy.


Đây là những gì tôi nhận được khi chạy uname -a: $ uname -a Linux 10.0.1.46 2.6.31-2.5 # 7 Ngày 15 tháng 12 19:57:09 CST 2011 mips GNU / Linux
Sparky1

@ Sparky1 Sau đó, có vẻ như bạn đã nhận được bản phân phối Linux-MIPS .

7

Để kiểm tra các hệ thống Debian, bạn có thể kiểm tra xem có /etc/debian_versiontồn tại không:

if [ -f "/etc/debian_version" ]; then
   # do stuff
fi

Nó nên được bao gồm Debian và các hệ thống dựa trên nó (bao gồm Ubuntu và các dẫn xuất của nó), mặc dù một số có thể không có nó - trong trường hợp này bạn có thể kiểm tra /etc/*releasecác tệp:

if [ "$(grep -Ei 'debian|buntu|mint' /etc/*release)" ]; then
   # do stuff
fi

Đâu debian|buntu|mintlà danh sách các tên phân phối cần tìm (không phải là trường hợp nhạy cảm) - bạn có thể biết một số dẫn xuất phổ biến từ đây , mặc dù các dẫn xuất debian như Ubuntu các dẫn xuất riêng .


Đối với các hệ thống dựa trên RedHat, các công cụ phái sinh sử dụng phạm vi tệp lớn hơn và có thể chưa cài đặt bản phát hành lsb - vì vậy bạn có thể áp dụng các phương pháp sau:

  • lấy tên phát hành từ

    lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2-
    
  • Kiểm tra ID DISTRIB trong lsb-release tệp - một 'Phương pháp dự phòng có thể không cần thiết trên các hệ thống hiện đại', cũng là tệp dường như bị thiếu trên Fedora và không chứa DISTRIB_ID trên OpenSUSE

  • kiểm tra sự tồn tại của một số thứ sau đây

    • /etc/fedora-release và / hoặc /etc/redhat-release cho RedHat hoặc Fedora
    • /etc/SuSE-release cho SuSe
    • /etc/mandriva-release cho mandriva / mageia
  • sử dụng một phương thức tương tự như phương pháp debian sau:

    if [ "$(grep -Ei 'fedora|redhat' /etc/*release)" ]; then
    ...
    

3 điểm đầu tiên tôi lấy từ cron cập nhật của Google Chrome, vì vậy bạn có thể kiểm tra điều đó để tìm hiểu thêm (nó cũng xác định người quản lý gói)


Đối với phạm vi rộng hơn của HĐH, đọc bài đăng này trên SO sẽ giúp ích.


2

Kiểm tra đầu ra của:

lsb_release -a

và:

cat /etc/issue

Bạn cũng có thể kiểm tra các lệnh gói đòn bẩy thấp hơn rpmcho RedHat và dpkgcho Debian.


Không tìm thấy lệnh $ dpkg $ vòng / phút (hiển thị các tùy chọn cho lệnh vòng / phút). Có vẻ như đây là một chiếc mũ đỏ dựa trên xây dựng. Cảm ơn đã giúp đỡ!
Sparky1

2
bạn cũng có thể kiểm tra tệp / etc / debian_version , tồn tại trong tất cả các bản phân phối linux dựa trên debian
Coren

Cũng cài đặt nó bằng cách sử dụng apt-get install lsb-releasenếu nó không được cài đặt.
Massood Khaari

1

Nếu đó là một thiết bị nhúng (ví dụ: bộ định tuyến SoHo), nó có thể sẽ không phải là bất kỳ bản phân phối "máy tính để bàn / máy chủ" nào. Tôi sẽ cố gắng xem hướng dẫn sử dụng của thiết bị, trang web của nhà sản xuất (nên có nguồn mã được cấp phép GPL) và Web nói chung.


0

uname -acat /proc/version(chỉ đọc cho siêu nhân ), theo ý kiến ​​trung thực của tôi, là câu trả lời đúng duy nhất cho câu hỏi này vì phần còn lại - như lsb_release, /etc/issuehoặc cat /proc/sys/kernel/version- không có sẵn / không sử dụng được trên mọi hệ thống (thậm chí không phải là bản phân phối Debian chính thức). Cũng đừng bận tâm sử dụng /etc/*releases,/etc/*version vì chúng có thể được thay đổi. Cái sau không có sẵn trên tất cả các bản phân phối Debian.

Các tùy chọn khác có thể là (không phải đề xuất của tôi):

  • Kiểm tra dashhoặc xác minh nếu shđược liên kết đến dash(nó phải là mặc định để chạy tập lệnh)
  • Kiểm tra trình quản lý gói bằng cách thực thi >/dev/null 2>&1 dpkg --version && { ... }
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.