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

apt-get install не работает в скрипте

Я создаю небольшой скрипт, который устанавливает набор пакетов 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 как указано здесь.