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

Обнаружить ошибки в сценарии установки

Я написал сценарий установки для установки моих предпочтительных программ и настроек после получения нового сервера.

apt-get install git
git clone http://me@myvimsetting.github.com .vim
ln -s .vimrc .vim/vimrc
...

Но если во время установки что-то не так, как я могу прервать сценарий установки и записать ошибку (-ы)? Например, если github сервер не работает, очевидно, бесполезно создавать символическую ссылку на несуществующий vimrc.

(или у вас есть лучший подход к инициализации сервера?)

На базовом уровне вы можете делать такие вещи, как перенаправление STDERR в текстовый файл для регистрации ошибок.

git clone http://me@myvimsetting.github.com .vim 2>> ~/logs/vim-error.txt

Или в этом конкретном примере вы можете сделать оператор if

if [ -f .vimrc ] ## -f means "if file exists"
then
ln -s .vimrc .vim/vimrc
fi

Или после команды git clone вы можете проверить его статус выхода, и если он не 0, выйти из скрипта

if [ $? -ne 0 ]
then
exit 1
fi

Все мои сценарии являются сценариями уровня n00b, и я обнаружил, что эти вещи обычно делают то, что мне нужно.

конечно, это подход, который я использую. Однако принцип, который вы ищете, - это идемпотентность и отказоустойчивость, то есть сценарий не должен ничего портить и может элегантно деградировать. Для создания ссылки сначала проверьте, существует ли файл;

[ -s .vimrc ] && ln -s .vimrc .vim/vimrc

но также удобно проверить, что ссылка еще не существует; (т.е. пропустить, если он существует)

[ -s .vimrc ] && [ ! -L .vim/vimrc ] && ln -s .vimrc .vim/vimrc

который в основном говорит: проверьте, существует ли файл и что он не равен нулю, а затем создайте ссылку, только если ее еще нет. Существует довольно много файловых тестов, поддерживаемых bash. в руководстве здесь

Обычно существуют их сокращенные версии, но я мог бы сначала показать вам полную версию ...

типично его удобно запускать apt-get update во-первых, чтобы обновить списки пакетов ...

Очевидно, нет смысла пытаться установить git, если он уже установлен (хотя вы можете его обновить.

dpkg -l git >/dev/null || apt-get -q -y install git

Если вам просто нужна последняя версия, неважно, не выполняйте и тест, и apt будет обновляться только в том случае, если она доступна;

 apt-get -q -y install git

Я обычно использую полные пути в сценариях установщика, просто чтобы напомнить себе и убедиться, что он не делает ничего глупого. например

 #explicitly set the full path somewhere
 HOME=/home/tomh

 #and then double check, partcular if you are about to do something descructive
[ "$HOME" == "" ] && exit 99
[ -s $HOME/.vimrc ] && ln -s $HOME/.vimrc $HOME/.vim/vimrc

для получения файла из git я бы стрелял примерно так;

if [ ! -d $HOME/.vim ]; then
cd $HOME
git clone http://me@myvimsetting.github.com .vim
else
cd $HOME/.vim
git pull
fi

проверьте все это перед использованием, я не тестировал

Шеф-повар, особенно шеф-повар-соло. Может потребоваться небольшая предварительная настройка, но как только у вас есть кулинарные книги, настройка новой машины в основном перечисляет run_list для сервера.