У меня действительно странная проблема. Я расширяю установщик ОС для Raspberry Pi. Я настраиваю его на автоматическую загрузку после того, как установщик выполняет свою работу, и запускаю мой скрипт, который выполняет оставшуюся установку. Но иногда я хочу переустановить свои дополнения без переустановки всей ОС. Итак, у меня есть скрипт с именем on-first-login.sh примерно такой:
if [ $(command -v git) ]; then
echo "Git already installed."
else
apt-get install git -y
fi
git clone git@github.com:me/my-repo.git ~/my-repo
Теперь вот действительно странная часть. Вышеуказанное работает только тогда, когда нужно установить git или если я изменил скрипт на этот:
apt-get install git -y
git clone git@github.com:me/my-repo.git ~/my-repo
В противном случае я получаю эту ошибку:
ssh: не удалось разрешить имя хоста github.com: имя или служба неизвестны
Я действительно хочу решить эту проблему, в основном из принципа, но также во избежание вызова apt-get install git -y
потому что это занимает около 5 секунд (если git уже установлен), что немного неприятно.
Я попытался заставить скрипт ждать успешного пинга следующим образом:
if [ $(command -v git) ]; then
echo "Git already installed."
else
apt-get install git -y
fi
pingerr=1
while [ $pingerr ]; do
sleep 1
ping -c 1 github.com | grep "1 received"
pingerr=$?
if [ $pingerr ]; then
echo "Could not ping github. Retrying..."
else
echo "Successfully pinged github"
fi
done
git clone git@github.com:me/my-repo.git ~/my-repo
Но это повторяется до бесконечности.
Что на земле происходит? Кажется, apt-get install
делает что-то особенное, и я хотел бы знать, что именно.