Устанавливать сразу несколько ppas через терминал без использования скрипта

Я хочу добавить эти четыре ppa на свою машину.

sudo add-apt-repository ppa:noobslab/malys-themes sudo add-apt-repository ppa:alecive/antigone sudo add-apt-repository ppa:nitrux/nitrux-artwork sudo add-apt-repository ppa:upubuntu-com/themes 

Вместо того, чтобы добавлять их по одному, я думал, что перечислил их один за другим – как и при установке приложений.

 sudo add-apt-repository ppa:noobslab/malys-themes ppa:alecive/antigone ppa:nitrux/nitrux-artwork ppa:upubuntu-com/themes 

Но он возвратил ошибку: Error: need a repository as argument

Я обыскал и увидел этот вопрос. Как установить сразу несколько PPA и приложений? но он предлагает сценарий bash как решение.

Есть ли способ добавить сразу несколько ppa без использования скрипта?


РЕДАКТИРОВАТЬ
Просто любопытно, почему

 sudo add-apt-repository ppa:noobslab/malys-themes ppa:alecive/antigone ppa:nitrux/nitrux-artwork ppa:upubuntu-com/themes 

работать, но

 sudo apt-get install moka-icon-theme moka-icon-theme-blue moka-icon-theme-dark malys-deda awoken-icon-theme nitrux-icon-theme nouvegnomegray 

работает?

EDIT 2
Существует ли какое-либо решение,

 sudo add-apt-repository ppa:noobslab/malys-themes ppa:alecive/antigone ppa:nitrux/nitrux-artwork ppa:upubuntu-com/themes 

можно заставить работать?
И я полностью понимаю риски здесь.

Это не работает, потому что кто написал исходный скрипт (вы можете посмотреть на него, это скрипт на питоне) не думал, что это может быть полезно.

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

Так что это принципиально дизайнерское решение. Вероятно, вы можете легко изменить скрипт, если хотите, или повторить команду в командной строке …

 for i in ppa:noobslab/malys-themes ppa:alecive/antigone ppa:nitrux/nitrux-artwork ppa:upubuntu-com/themes; do sudo add-apt-repository $i; done 

(это сценарий или нет? Роза – роза под другим именем?)

Не делайте этого , но … unix славится тем, что позволяет пользователю стрелять в ногу, поэтому …

Если вы действительно хотите, чтобы ваш «множественный add-apt-repository» (1) работал, сделайте следующее:

1) найти, где add-apt-репозиторий.

 (0)samsung-romano:~% which add-apt-repository /usr/bin/apt-add-repository 

2) переименовать его

 (0)samsung-romano:~% sudo mv /usr/bin/add-apt-repository /usr/bin/add-apt-repository.real 

3) замените его простым сценарием:

 (0)samsung-romano:~% sudo gedit /usr/bin/add-apt-repository 

с содержанием:

 #! /bin/bash # for i in "$@"; do /usr/bin/add-apt-repository.real "$i" done 

4) сделать его исполняемым:

 (0)samsung-romano:~% chmod a+rx /usr/bin/add-apt-repository 

5), и теперь вы можете использовать свою команду:

 (0)samsung-romano:~% sudo add-apt-repository ppa:noobslab/malys-themes ppa:alecive/antigone ppa:nitrux/nitrux-artwork ppa:upubuntu-com/themes 

Почему вы не должны этого делать? Поскольку в следующий раз будет обновление пакета, содержащего оригинальный apt-add-repository , возникнут проблемы. Подобно тому, как ваш скрипт перезаписан или (худший), не обновляя пакет.

На самом деле гораздо лучше избегать касания системной программы и просто поместить скрипт в ваш ~/bin с другим именем, например my_aptadd . Теперь вы в безопасности и счастливы.

Или, если вы действительно любите оригинальное имя, вы можете создать каталог в своей домашней папке, например ~/override , добавить его в свой PATH в .profile (например, export PATH=$HOME/override:$PATH ) и сохранить сценарий там — очевидно, с полным путем, исходный /usr/bin/add-apt-repository в нем, чтобы избежать бесконечного цикла. Затем вы пожалеете об этом, когда кто-то отбросит файл с именем «ls» в нем с содержанием exe rm $* (2), но эй …

Так почему я написал его здесь? Потому что это действительно полезный метод, когда-то «исправлять» программы, которые иначе не будут работать. Например, у меня есть это, чтобы добавить переменные среды в программы, которые в противном случае будут неправильно, и которые вызываются другими программами, которые я не могу или не буду изменять.


Сноски :

(1) Я никогда раньше не замечал, но в моей системе существует даже apt-add-repository , который является символической ссылкой на add-apt-repository . Я могу понять, почему, но это призыв к беспорядку, ожидающему случиться …

(2) это неправильно. Нарочно.

Я уже об этом говорил, когда говорил о том, как создавать резервные копии установленных PPA . Ниже приведен файл, в котором перечислены все ваши PPA и устанавливает их:

 <~/ppa-backup.txt xargs -I % sudo add-apt-repository % 

Это довольно тривиально, чтобы настроить этот список:

 xargs -I % sudo add-apt-repository % <<EOF ppa:noobslab/malys-themes ppa:alecive/antigone ppa:nitrux/nitrux-artwork ppa:upubuntu-com/themes EOF 

Почему apt-get install ... принимает несколько аргументов и add-apt-repository ?

Просто потому, что они разные команды, написанные для разных целей разными людьми. Почему не less и rm принимают те же аргументы? Они разные.

Добавление связки репозиториев действительно является краевым случаем. Это не значит, что вы хотите установить более одного пакета за раз. Это также усложняет синтаксис. add-apt-repository уже принимает несколько разных форматов, некоторые из которых включают пробелы. Размышление о том, что это здорово, – это тяжелая работа.

Есть ли способ обхода вашей линии?

Конечно. Вы либо пишете обертку для add-apt-repository устанавливаете приоритет или редактируете оригинал … Это разумная вещь? Нет, совсем нет. Вы будете нарушать существующий add-apt-repository (см. Выше) нестандартным образом, для чего? Чтобы сохранить нажатия клавиш на то, что вы запускаете один раз?

Существует несколько методов с одним командованием, разделяющих это, как говорят несколько людей. Не сражайтесь с системой, используйте ее.

Попробуйте поставить что-то вроде этого:

  sudo add-apt-repository ppa:noobslab/malys-themes & sudo add-apt-repository ppa:alecive/antigone & ... 

Итак, в этом формате:

 command & next_command & next_command 

Это может сработать.