Я создаю небольшой скрипт, который устанавливает набор пакетов linux.
Как ни странно, установка apt-get всегда терпит неудачу и сообщает мне, что пакет не найден. Вот мой сценарий:
#! /bin/bash
sudo apt-get install python-software-properties
sudo apt-get update
sudo add-apt-repository ppa:pitti/postgresql
sudo apt-get install xfce4 postgresql-9.0 pgadmin3 chromium-browser wine iftop
Что я могу сделать, чтобы это исправить?
Спасибо .
Если вы пытаетесь установить что-то из этого репозитория PPA, ваш apt-get update
должно произойти после добавления репо, а не раньше.
Вам понадобится -y
на потенциально интерактивных ступенях тоже.
Первая строка вашего скрипта. Удалите пространство.
#!/bin/bash
Также то, что сказал @Shane: в сценарии вы можете использовать -y
для автоматизации процесса.
Обновить
Ты бежишь chmod +x scriptname
прежде чем пытаться его запустить? Не могли бы вы опубликовать точную ошибку, которую вы получаете?
также вы должны сначала обновить apt-get, а затем установить, чтобы сценарий выглядел как
#! /bin/bash
sudo add-apt-repository ppa:pitti/postgresql
sudo apt-get update
sudo apt-get install python-software-properties
sudo apt-get install xfce4 postgresql-9.0 pgadmin3 chromium-browser wine iftop
затем сделайте файл исполняемым
chmod 755 script
Начните использовать контроль версий для скриптов системного администратора. Это поможет выявить проблемы, поднятые @ volker238.
Особенно распределенные системы, такие как Mercurial или Git, помогут правильно разобрать код. Оба корректно конвертируют окончания строк кроссплатформенно.
Несколько раз, когда я получал от других вклады Копировать / Вставить, hg log
сказал мне, что именно изменилось, когда оболочка жаловалась на синтаксические ошибки, и ничего очевидного не было видно.
И если вы хотите увеличить масштаб, объедините это с chef
или puppet
, чтобы создать повторяемые планы развертывания для ваших систем.
У меня были точно такие же проблемы. Настоящим ключом к решению этой проблемы была ошибка в первой строке. #!/bin/sh
. Я писал свой сценарий на машине с Windows, а ящик Ubuntu был виртуальной машиной. Некоторые окончания строк Windows портили меня. Я исправил это с помощью dos2unix
как указано здесь.