Я автоматизирую свою обычную настройку debian с помощью ansible.
Предполагается, что playbook по-разному трактует тестирование / нестабильность и стабильность: первые должны поддерживаться «чистыми», а латте - получать ядро и т. Д. Из Backports.
Поскольку теперь есть стабильные бэкпорты, это требует, чтобы я получил текущее имя стабильной версии из авторитетного источника и сравнил его с ожидаемым (в настоящее время «хрипит»).
Может ли кто-нибудь придумать надежный / авторитетный способ получить текущее стабильное имя в одном лайнере?
С уважением, Joh
Как насчет того, чтобы проверить с официального FTP-сайта Debian? Там stable
символическая ссылка указывает на актуальную версию. Так, например, такой сценарий оболочки:
#!/bin/bash
PASSWD=''
ftp -n ftp.debian.org <<RESOLVE_PATH
quote USER anonymous
quote PASS $PASSWD
cd debian/dists/stable
pwd
quit
RESOLVE_PATH
А затем запустите его так:
./resolve_debian_stable_name.sh | grep "Remote dir" | awk -F ':' '{ print $2; }'
/debian/dists/wheezy
Или, желательно, сделать это более чистым решением, это просто дать вам общее представление и 30 секунд грязного взлома. :)
Основываясь на ответе Янне выше, я пришел к следующему:
#!/bin/bash
#lower case the first input parameter
lcParam=${1,,}
# Check prerequisites
## Check the 1st input parameter against a list of dealt with
## meta-distributions
declare -A legaloptions=( [stable]=stable [testing]=testing [unstable]=sid )
[[ -z "${legaloptions[$lcParam]}" ]] && \
echo "'$lcParam' is not a supported meta-distribution ( ${!legaloptions[*]} )." && \
exit 1
# 'Unstable' remains 'sid'
if [[ ${lcParam} == "unstable" ]]; then
echo "sid"
exit 0
fi
# Retrieve explicit distribution name from a ftp connection to debian.org
## Store output here:
FTPLOGFILE="/tmp/ftp_distriution_name.log"
## Use an empty password
PASSWD=''
## Connect
## Authenticate (USER & PASS)
## Decend into the directory the meta-distribution requested points to
## Retrieve the directory name (including the explicit distribution name)
## End the session
ftp -n ftp.debian.org <<RESOLVE_PATH >> ${FTPLOGFILE} 2>&1
quote USER anonymous
quote PASS $PASSWD
cd debian/dists/$lcParam
pwd
quit
RESOLVE_PATH
# Reformat output
distributionName=$(cat ${FTPLOGFILE} | sed 's/"//g')
# Delete logfile
rm ${FTPLOGFILE}
# Return
basename `echo $distributionName | awk '{print $2}'`
exit 0