Я написал сценарий установки для установки моих предпочтительных программ и настроек после получения нового сервера.
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 для сервера.