Installieren Sie mehrere ppas gleichzeitig über das Terminal, ohne ein Skript zu verwenden

7

Ich möchte diese vier ppa zu meiner Maschine hinzufügen.

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

Anstatt sie einzeln hinzuzufügen, dachte ich, ich würde sie nacheinander auflisten - wie wir es bei der Installation von Apps tun.

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

Aber es gab einen Fehler zurück: Error: need a repository as argument

Ich habe mich umgesehen und diese Frage gesehen. Wie installiere ich mehrere PPAs und Anwendungen gleichzeitig? aber es schlägt ein Bash-Skript als Lösung vor.

Gibt es eine Möglichkeit, mehrere ppas gleichzeitig hinzuzufügen, ohne ein Skript zu verwenden?


BEARBEITEN
Bin nur neugierig, warum nicht

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

Arbeit aber

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

funktioniert?

BEARBEITEN 2
Gibt es eine Problemumgehung, wo

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

kann zur Arbeit gebracht werden?
Und ich verstehe die Risiken hier vollkommen.

Parto
quelle
3
Über den add-apt-repositoryBefehl können Sie jeweils nur eine PPA hinzufügen.
Avinash Raj
Sie können diese sudo add-aptZeilen jederzeit auswählen und direkt in Ihr Terminal einfügen. Dadurch werden sie nacheinander hinzugefügt, jedoch mit einem einzigen Klick von Ihnen.
Terdon

Antworten:

8

Es funktioniert nicht, weil derjenige, der das ursprüngliche Skript geschrieben hat (Sie können es sich ansehen, es ist ein Python-Skript), nicht dachte, dass dies nützlich sein könnte.

Das Grundprinzip könnte sein, dass das Hinzufügen eines Repositorys besser langsam durchgeführt werden kann . Sie sollten zum Beispiel die Signatur überprüfen --- und überprüfen, ob Sie sie wirklich wollen.

Es ist also im Grunde eine Designentscheidung. Sie können das Skript wahrscheinlich leicht ändern, wenn Sie es möchten, oder den Befehl in der Befehlszeile wiederholen ...

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

(Ist das ein Drehbuch oder nicht? Eine Rose ist eine Rose unter einem anderen Namen?)

Tun Sie das nicht , aber ... Unix ist berühmt dafür, dass Benutzer sich in den Fuß schießen lassen, also ...

Wenn Sie wirklich möchten, dass Ihr "Multiple Add-Apt-Repository" (1) funktioniert, gehen Sie folgendermaßen vor:

1) Finden Sie heraus, wo sich das Add-Apt-Repository befindet.

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

2) benenne es um

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

3) Ersetzen Sie es durch ein einfaches Skript:

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

mit dem Inhalt:

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

4) mach es ausführbar:

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

5) und jetzt können Sie Ihren Befehl verwenden:

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

Warum solltest du es nicht tun? Da beim nächsten Update des Pakets, das das Original enthält apt-add-repository, Probleme auftreten, treten Probleme auf. Als ob Sie Ihr Skript überschreiben lassen oder (am schlimmsten) das Paket nicht aktualisieren lassen.

In der Tat ist es viel besser, das Systemprogramm nicht zu berühren und das Skript einfach ~/binmit einem anderen Namen in Ihr zu setzen, wie z my_aptadd. Du bist jetzt sicher und glücklich.

Oder wenn Sie den ursprünglichen Namen wirklich mögen ~/override, können Sie ein Verzeichnis in Ihrem Home-Ordner wie erstellen , es Ihrem PATH in .profile(wie export PATH=$HOME/override:$PATH) voranstellen und das Skript dort speichern - offensichtlich mit dem vollständigen Pfad, original /usr/bin/add-apt-repository in Vermeiden Sie eine Endlosschleife. Sie werden es dann bereuen, wenn jemand eine Datei mit dem Namen "ls" mit Inhalt exe rm $*(2) darin ablegt, aber hey ...

Warum habe ich es hier geschrieben? Weil dies manchmal wirklich eine nützliche Technik ist, um Programme zu "reparieren", die sonst nicht ausgeführt werden. Zum Beispiel muss ich Umgebungsvariablen zu Programmen hinzufügen, die sich sonst schlecht verhalten und von anderen Programmen aufgerufen werden, die ich nicht ändern kann oder will.


Fußnoten :

(1) Ich habe es noch nie bemerkt, aber in meinem System existiert sogar apt-add-repository, was ein Symlink zu ist add-apt-repository. Ich kann verstehen warum, aber es ist ein Aufruf für ein Chaos, das darauf wartet, passiert zu werden ...

(2) es ist falsch. Absichtlich.

Rmano
quelle
4

Ich habe das schon einmal besprochen, als ich darüber sprach, wie installierte PPAs gesichert werden . Im Folgenden wird eine Datei mit allen Ihren PPAs aufgelistet und installiert:

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

Es ist ziemlich trivial, das zu stimmen, um eine Liste zu erstellen:

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

Warum werden apt-get install ...mehrere Argumente akzeptiert und add-apt-repositorynicht?

Einfach, weil es sich um unterschiedliche Befehle handelt, die von unterschiedlichen Personen für unterschiedliche Zwecke geschrieben wurden. Warum nicht lessund rmdie gleichen Argumente nehmen? Das sind verschiedene Dinge.

Das Hinzufügen einer Reihe von Repos ist wirklich ein Randfall. Es ist nicht so, dass Sie mehr als ein Paket gleichzeitig installieren möchten. Dies verkompliziert auch die Syntax. Das Add-Apt-Repository hat bereits einige verschiedene Formate, von denen einige Leerzeichen enthalten. Das vernünftig zu analysieren ist harte Arbeit, um es richtig zu machen.

Gibt es eine Problemumgehung, damit Ihre Leitung funktioniert?

Sicher. Sie schreiben entweder einen Wrapper für add-apt-repositoryund priorisieren ihn oder bearbeiten das Original ... Ist das eine vernünftige Sache? Nein überhaupt nicht. Sie werden das Bestehende add-apt-repository(siehe oben) auf eine nicht standardmäßige Weise brechen , wofür? Um Tastenanschläge für etwas zu speichern, das Sie einmal ausführen?

Es gibt mehrere Ein-Befehl-Methoden, um dies aufzuteilen, wie Ihnen mehrere Personen sagen. Kämpfe nicht gegen das System, benutze es.

Oli
quelle
1

Versuchen Sie so etwas zu sagen:

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

Also in diesem Format:

command & next_command & next_command

Es könnte gehen.

2707974
quelle
5
Trennung mit &&oder ;könnte eine bessere Option sein als Trennung mit&
Wilf
2
@ Wilf --- viel besser. Wie vorgeschlagen funktioniert nicht (zuverlässig); Der erste &Start der erste add-apt...im Hintergrund wird die Sperre für die Repository-Datei
anzeigen
1
Bitte stimmen Sie dieser Antwort nicht zu, bis das OP sie behoben hat - es ist einfach falsch, siehe meinen Kommentar zuvor. &Starten Sie einen Prozess im Hintergrund. ;oder &&sind hier die einzigen gültigen Befehlstrennzeichen.
Rmano