Я хочу добавить эти четыре 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 одновременно без использования скрипта?
EDIT
Мне просто любопытно, почему нет
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
работает?
РЕДАКТИРОВАТЬ 2
Есть ли обходной путь, где
sudo add-apt-repository ppa:noobslab/malys-themes ppa:alecive/antigone ppa:nitrux/nitrux-artwork ppa:upubuntu-com/themes
можно заставить работать?
И здесь я полностью понимаю риски.
Это не работает, потому что, кто записал исходный сценарий (можно посмотреть на него, это - сценарий Python), не думал, что это могло быть полезно.
Объяснение может быть то, что добавление репозитория является вещью, которая лучше медленно делается. Необходимо проверить подпись, например---и проверить Вас дважды, действительно хотят это.
Таким образом, это - в основном проектное решение. Вы могли, вероятно, легко изменить сценарий, если Вы хотите его, или повторение команды на командной строке...
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-repository.
(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
, предварительно ожидайте его к своему ПУТИ в .profile
(как export PATH=$HOME/override:$PATH
), и сохраните сценарий там---, очевидно, с полным путем, исходным /usr/bin/add-apt-repository
в нем для предотвращения бесконечного цикла. Вы будете затем сожалеть о нем, когда кто-то отбросит файл, названный "ls" в нем с содержанием exe rm $*
(2), но эй...
Итак, почему я записал это здесь? Поскольку это - действительно полезная техника когда-то для "исправления" программ, которые иначе не будут работать. Например, у меня есть это для добавления переменных среды к программам, которые иначе будут неправильно себя вести, и которые называют другие программы, которые я не могу или не изменять.
(1) Я никогда не замечал, прежде чем, но в моей системе будет существовать даже apt-add-repository
, который является символьной ссылкой на add-apt-repository
. Я могу понять, почему, но это - призыв к неизбежной путанице...
(2) это неправильно. Нарочно.
я был по этому прежде при разговоре о том, как скопировать установленный PPAs. Следующее берет файл, где все Ваши PPAs перечислены, и устанавливает их:
<~/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
берут те же аргументы? Они - разные вещи.
Добавление набора repos является действительно пограничным случаем. Это не похоже на желание установить больше чем один пакет за один раз. Это также усложняет синтаксис. 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
Это могло бы работать.