Упорядочение команд, используемых для установки из ppa

Для установки из ppa вы должны использовать следующие 3 команды:

sudo add-apt-repository example/program
sudo apt-get update
sudo apt-get install example-program

Есть ли причина этого не делать:

sudo add-apt-repository example/program
sudo apt-get update && sudo apt-get install example-program

или это:

sudo add-apt-repository example/program && sudo apt-get update
sudo apt-get install example-program

или даже так:

sudo add-apt-repository example/program && sudo apt-get update && sudo apt-get install example-program

Есть ли техническая разница между ними?

3
задан 22 April 2015 в 23:25

3 ответа

&& оператор выполняет следующую команду только на успех предыдущей команды / цепочка команд.

Таким образом, последствия для тех случаев:

  1. Сценарий выполняет каждую команду независимо

  2. Сценарии выполняются sudo add-apt-repository example/program и sudo apt-get update независимо и sudo apt-get install example-program только на успех sudo apt-get update

  3. Сценарии выполняются sudo add-apt-repository example/program независимо, sudo apt-get update только на успех sudo add-apt-repository example/program и sudo apt-get install example-program независимо

  4. Сценарии выполняются sudo add-apt-repository example/program независимо, sudo apt-get update только на успех sudo add-apt-repository example/program и sudo apt-get install example-program только на успех sudo add-apt-repository example/program

Так, для ответа на вопрос в этом случае просто объедините всех их в цепочку, так как Вам нужно все для следования:

sudo add-apt-repository example/program && sudo apt-get update && sudo apt-get install example-program

Кроме того, add-apt-repository и apt-get может быть установлен автоматически ответить на да на все запросы с помощью -y аргумент, так чтобы полностью автоматизировать все:

sudo add-apt-repository -y example/program && sudo apt-get update && sudo apt-get install -y example-program
5
ответ дан 23 April 2015 в 09:25

Все там - то же самое. Я думаю причина, она обычно перечисляла способ, которым это, то, потому что это выглядит лучше и легче помнить, так как команды разделены.

2
ответ дан 23 April 2015 в 09:25

Если бы ; использовался, то они были бы тем же, но && продолжается, только если команда до него отправляет код выхода, говоря, что оно вышло успешно. Это автоматически продолжится, если все будет подходить и только остановится, чтобы предложить пользователю спрашивать, хотят ли они добавить PPA и хотят ли они установить пакет. Это может также работать лучше, чем с тремя лайнерами, если все коды выхода, произведенные программами, точны, в то время как пользователь может продолжить вводить команды и не заметил первое или отказавшее второе.

, Если Вы хотите пойти полностью автоматического продолжения:

 sudo add-apt-repository -y example/ppa && sudo apt-get update && sudo apt-get install -y example-program

, Если Вы хотите использовать его, это прекрасно (просто быть подготовленным, что apt-get может иметь ‘nice’ привычку к уничтожению вещей если не используемый мудро, не используйте нечетный ppa или очень вокруг также навоза с зависимостями) , но если бы Вы хотите зарегистрировать об установке программы, я рекомендовал бы использованию один из двух или трех лайнеров (без -y) , поскольку это позволяет пользователю больше управления тем, что происходит, делая их более счастливыми и предотвращающими противными несчастными случаями (и как @Zacharee1 говорит, легче понять, учиться, & помните как отдельные строки - новые пользователи не могут понять, что они могут выделить строки или могут предположить, что как команда (команды) в одной строке являются такими длинными, что они, очевидно, могут сделать что-то злое)

приблизительно && и т.д. примеры:

 $ true && echo "this will show output as that thing ← said it exited successfully"
this will show output as that thing ← said it exited successfully
 $ false && echo "this won't"
 $ false || echo "but this will"
but this will
 $ true || echo "weird init?"
 $ true ; echo " ← and this"
and this
 $ false ; echo "doesn't care"
doesn't care
 $ echo $?
0
 $ echo "previous exit code ↑" ; true
previous exit code ↑
 $ echo "previous exit code ↑"
previous exit code ↑
 $ 
4
ответ дан 23 April 2015 в 09:25

Другие вопросы по тегам:

Похожие вопросы: