Linuxのディストリビューションを判定する - lisp-cookbook-ja/common-lisp GitHub Wiki

os

Linuxのディストリビューションごとにリリースバージョンを格納したファイルがそれぞれ固有のファイル名で存在するようですので、これらのファイルを検出することで判定が可能でしょう。

定義例

(defvar *distro-alist*
  '((:SuSE
     "/etc/SuSE-release")
    (:redhat
     "/etc/redhat-release"
     "/etc/redhat_version")
    (:fedora
     "/etc/fedora-release")
    (:slackware
     "/etc/slackware-release"
     "/etc/slackware-version")
    (:debian
     "/etc/debian_release"
     "/etc/debian_version"
     "/etc/os-release")
    (:mandrake
     "/etc/mandrake-release")
    (:yellowdog
     "/etc/yellowdog-release")
    (:gentoo
     "/etc/gentoo-release")))

(defun detect-distro ()
  (car (or (find-if (lambda (x)
                      (find-if #'probe-file (cdr x)))
                    *distro-alist*)
           '(:unknown))))

動作

(detect-distro)
;=> :debian

参考