Назад | Перейти на главную страницу

Автоматическое получение текущего сопоставления debian stable -> имя выпуска

Я автоматизирую свою обычную настройку 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