9 votes

Installer plusieurs ppas à la fois via le terminal sans utiliser script.

J'aimerais ajouter ces quatre ppa à ma machine.

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

Au lieu de les ajouter un par un, j'ai pensé les lister l'un après l'autre - comme nous le faisons lorsque nous installons des applications.

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

Mais il a renvoyé une erreur : Error: need a repository as argument

J'ai cherché et j'ai trouvé cette question Comment installer plusieurs PPA et applications à la fois ? mais il propose un script bash comme solution.

Existe-t-il un moyen d'ajouter plusieurs ppa à la fois sans utiliser un script ?


EDIT
Je suis juste curieux de savoir pourquoi

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

travailler mais

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

fonctionne ?

EDIT 2
Existe-t-il une solution de contournement où

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

peuvent-ils être mis en œuvre ?
Et je comprends parfaitement les risques encourus.

11voto

Rmano Points 30303

Cela ne fonctionne pas parce que l'auteur du script original (vous pouvez le regarder, c'est un script Python) n'a pas pensé que cela pourrait être utile.

La raison en est peut-être que l'ajout d'un dépôt est une chose qui Il est préférable de procéder lentement . Vous devriez vérifier la signature par exemple --- et vous assurer que vous le voulez vraiment.

Il s'agit donc essentiellement d'une décision de conception. Vous pourriez probablement facilement modifier le script si vous le souhaitez, ou répéter la commande sur la ligne de commande...

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

(est-ce un script ou non ? Une rose est une rose sous un autre nom).

Ne faites pas cela mais... unix est réputé pour laisser les utilisateurs se tirer une balle dans le pied, alors...

Si vous voulez vraiment que votre "multiple add-apt-repository"(1) fonctionne, faites ceci :

1) trouver où se trouve add-apt-repository.

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

2) le renommer

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

3) le remplacer par un simple script :

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

avec le contenu :

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

4) le rendre exécutable :

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

5) et vous pouvez maintenant utiliser votre commande :

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

Pourquoi ne pas le faire ? Parce que la prochaine fois, il y aura une mise à jour du paquet qui contient l'original. apt-add-repository Des problèmes surgiront. Comme l'écrasement de votre script ou (pire) l'absence de mise à jour du paquet.

Il est en effet préférable de ne pas toucher au programme système et de placer simplement le script dans votre ~/bin avec un autre nom, comme my_aptadd . Vous êtes maintenant en sécurité et heureux.

Ou si vous aimez vraiment le nom original, vous pouvez créer un répertoire dans votre dossier personnel du type ~/override ajoutez-le à votre PATH dans .profile (comme export PATH=$HOME/override:$PATH ), et enregistrer le script à cet endroit --- évidemment avec le chemin d'accès complet, original /usr/bin/add-apt-repository afin d'éviter une boucle infinie. Vous le regretterez ensuite lorsque quelqu'un y déposera un fichier appelé "ls" avec le contenu suivant exe rm $* (2), mais bon...

Alors pourquoi l'ai-je écrit ici ? Car il s'agit d'une technique très utile pour "réparer" des programmes qui, autrement, ne fonctionneraient pas. Par exemple, je l'utilise pour ajouter des variables d'environnement à des programmes qui, autrement, se comporteraient mal, et qui sont appelés par d'autres programmes que je ne peux ou ne veux pas modifier.


Notes de bas de page :

(1) Je ne l'avais jamais remarqué auparavant, mais dans mon système, il existe même apt-add-repository qui est un lien symbolique vers add-apt-repository . Je peux comprendre pourquoi, mais c'est un appel au désordre en attente...

(2) c'est une erreur. C'est fait exprès.

4voto

Mufaka Points 54

J'ai déjà abordé ce sujet lorsque j'ai parlé de la façon de sauvegarder les PPAs installés. . La commande suivante prend un fichier dans lequel tous vos PPAs sont listés et les installe :

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

Il est assez simple de l'adapter pour qu'il prenne une liste :

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

Pourquoi les apt-get install ... acceptent plusieurs arguments et add-apt-repository pas ?

Tout simplement parce qu'il s'agit de commandements différents, rédigés à des fins différentes par des personnes différentes. Pourquoi les less y rm les mêmes arguments ? Il s'agit de choses différentes.

L'ajout d'un grand nombre de dépôts est un cas particulier. Ce n'est pas comme vouloir installer plus d'un paquet à la fois. Cela complique également la syntaxe. add-apt-repository prend déjà plusieurs formats différents, dont certains incluent des espaces. Analyser cela de manière sensée est un travail difficile à réaliser.

Existe-t-il une solution pour faire fonctionner votre ligne ?

Bien sûr. Vous pouvez soit écrire un wrapper pour add-apt-repository et lui donner la priorité ou éditer l'original... Est-ce que c'est une chose saine à faire ? Non, pas du tout. Vous briseriez les add-apt-repository (voir ci-dessus) d'une manière non standard, pour quoi faire ? Pour économiser des frappes sur quelque chose que vous n'exécutez qu'une seule fois ?

Il existe de multiples méthodes à une seule commande pour diviser cela, comme de nombreuses personnes vous l'ont dit. Ne vous battez pas contre le système, utilisez-le.

1voto

2707974 Points 9957

Essayez de faire quelque chose comme ça :

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

ou

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

si le ppa est fiable et doit être installé d'une manière ou d'une autre, alors -y peut également être ajouté pour forcer l'installation de

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

Donc dans ce format :

command && next_command && next_command

ou

command; next_command; next_command

Cela pourrait fonctionner.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X