또 다른 휴리스틱은 현재 실행중인 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 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
, 체크 아웃 그것의 소스 코드를 당신이 재발견 할 의향이 있는지 모든