もう1つのヒューリスティックは、現在実行中のOSのパッケージのソースを確認することです。
単純な(そしておそらくエラーが発生しやすい)バリアント:
fgrep -r /debian/ /etc/apt/sources.list \
| egrep -v '^ *#' \
| awk '{print $3}' \
| egrep -v '[-/]' \
| uniq
より信頼できる方法は、apt-cache policy
(追加のパラメーターなしで)の出力から詳細を解析することです。
apt-cache policy \
| fgrep o=Debian, \
| fgrep ,l=Debian, \
| fgrep ,c=main, \
| awk -F '[,=]' '{print $6}'
apt-cache policy
ローカルシステムで使用中のすべてのAPTリポジトリを一覧表示します。Debianに由来するものDebian
(つまり、ラベルが付いていないものDebian debug
)を除外し、メインアーカイブ(contrib
または以外non-free
)のみを調べて、対応する値を選択します。
さらに安定したアプローチは、要素の順序に依存せずn=
、残りの行で値を見つけることです。
apt-cache policy \
| fgrep o=Debian, \
| fgrep ,l=Debian, \
| fgrep ,c=main, \
| egrep -o 'n=[^, ]*' \
| awk -F= '{print $2}'
さらに別の可能性は、/var/lib/apt/lists/*Release
ファイルを解析せずに自分で解析することapt-cache
です。
egrep -l '^Origin: Debian$' /var/lib/apt/lists/*Release \
| xargs egrep -l '^Label: Debian$' \
| xargs egrep -L 'Codename: .*-' \
| xargs fgrep Codename \
| awk '{print $2}'
lsb_release