Du bist nicht angemeldet.

#1 17.05.2021 09:56:46

Caramon2
Mitglied

Wie installiert man optionale Abhängigkeiten mit?

Guten Morgen.

Ich suche eine Möglichkeit, optionale Abhängigkeiten automatisch mit installieren zu lassen: Sozusagen das Gegenstück zu "apt install --install-recommends".

Leider konnte ich hier und per Google keine praktikable Lösung finden. Nur das hier:

https://linuxhint.com/wine-arch-linux/
To avoid compatibility issues down the road, it’s useful do install all optional dependencies right away:

# pacman -S $(pactree -l wine)

Das ist aber gleich doppelt falsch:

1. liefert "pactree -l" nur die normalen Abhängigkeiten, die sowieso mit installiert werden

2. werden die dadurch auch noch als explizit markiert

Nachdem ich es mit "pacman -F pactree" gefunden hatte, habe ich etwas mit den Optionen jongliert und bin ich zu dieser Befehlszeile gekommen (aufgrund der überschaubareren Abhängigkeiten und weil ich es sowieso brauche, habe ich es mit Sigil getestet):

# pacman -S --needed --asdeps $(pactree -lsd1 -o sigil) && pacman -D --asexplicit sigil

Das liefert zwar das gewünschte Ergebnis, kommt mir aber etwas wie mit der Brechstange vor.

Gibt es dafür auch eine elegantere Möglichkeit?

Freundliche Grüße,

Andreas

Offline

#2 17.05.2021 17:58:12

GerBra
Mitglied

Re: Wie installiert man optionale Abhängigkeiten mit?

expac aus dem gleichnamigen Paket bietet IMHO da etwas bessere Funktionalität.
Damit zeigt:

expac -l '\n' %o -S sigil

alle optionalen (%o) Abhängigkeiten von sigil zeilenweise an.

Für dein Vorhaben böte sich ein Skript an, z.B. namens:
pacman_install_with_all_opts.sh

#!/bin/sh
#
[ $# -lt 1 ] && echo "Need one or more packages! Try again." && exit 1

/usr/bin/pacman -Sw $* && \
   /usr/bin/pacman -Sw --needed --asdeps \
   $(/usr/bin/expac -l '\n' %o -S $* | sort -u)

Achtung: ich habe hier extra -Sw (also nur Download der Pakete) genommen. Real muß bei beiden pacman-Aufrufen der Parameter w entfernt werden.

Das installiert erst normal das/die angegebenen Paket(e) und danach bei Erfolg die optionalen Abhängigkeiten. Die Pipe sort -u sorgt dafür, daß mehrmals auftretende opt. Pakete nur einmal installiert werden.

Wie bei allen Arbeiten mit pacman: Wenn man das Skript so benutzt (bzw. überhaupt etwas mit pacman -S xxx installiert) sollte man tunlichst vorher *kein* Update der Paketdatenbank (also ein -Sy) machen (Oder automatisch machen lassen). Das kann sonst zu einem partiellen Systemupdate führen, ergo evtl. zu einem "kaputten" System. Eigentlich gilt: Keine Installation eines Paketes ohne gleichzeitiges Update (also -Syu paketname wäre besser). Zumindest sollte man tunlichst aufpassen.

Beitrag geändert von GerBra (17.05.2021 18:02:24)

Offline

#3 19.05.2021 18:02:55

Caramon2
Mitglied

Re: Wie installiert man optionale Abhängigkeiten mit?

GerBra schrieb:

expac aus dem gleichnamigen Paket bietet IMHO da etwas bessere Funktionalität.

Da es ausschließlich die optionalen Abhängigkeiten anzeigen kann, passt das viel besser als pactree. - Danke. :-)

Es ist allerdings ein eigenes Paket: community/expac

Für dein Vorhaben böte sich ein Skript an, z.B. namens:
pacman_install_with_all_opts.sh

An ein Skript hatte ich dafür auch gedacht, hätte es aber "pacopt" (kurz für "pacoptdeps" :-) ) genannt: Ohne Endung, quasi als normalen Befehl im Pfad. - Außerdem hätte ich "sudo" eingebaut, damit man es auch als normaler Benutzer nutzen kann.

Aber da ich es nur für Einzelfälle brauche, werde ich mir das in die .bash_history vom Root einbauen *):

pk= ;pacman -S $pk && pacman -S --needed --asdeps $(expac %o -S $pk)

Da es nur für einzelne Programme gedacht ist, brauche ich kein "sort -u" (behalte es aber im Hinterkopf, da ich bisher noch nicht die Idee hatte "sort" auf diese Art zu nutzen) und die Ausgabe deshalb auch nicht zeilenweise.

Um beim Sigil-Beispiel zu bleiben: Ich ergänze dann vorne auf "pk=sigil" und kann hinten noch " {hunspell,hyphen}-de" für deutsche Rechtschreibprüfung/Silbentrennung anhängen.

*) Für die .bash_history's von Benutzer und Root pflege ich Vorlagen mit häufiger genutzten Befehlszeilen, die ich bei Bedarf über die "Originale" kopiere, damit es überschaubar bleibt und das benötigte per Ctrl+R schnell gefunden wird.

Wie bei allen Arbeiten mit pacman: Wenn man das Skript so benutzt (bzw. überhaupt etwas mit pacman -S xxx installiert) sollte man tunlichst vorher *kein* Update der Paketdatenbank (also ein -Sy) machen (Oder automatisch machen lassen). Das kann sonst zu einem partiellen Systemupdate führen, ergo evtl. zu einem "kaputten" System. Eigentlich gilt: Keine Installation eines Paketes ohne gleichzeitiges Update (also -Syu paketname wäre besser). Zumindest sollte man tunlichst aufpassen.

Interessant dass du das ansprichst: Da ich aus finanziellen Gründen (schwerer unverschulteter Verkehsunfall 2004 - seit dem behindert und arbeitslos) kein Festnetz habe und der mobile Traffic eingeschränkt ist, aktualisiere ich mein System hauptsächlich am Monatsende, um den restlichen Traffic zu verbraten. - Ich surfe/maile sowieso lieber mit dem Handy und bin mit dem PC nur selten online.

Wenn ich zwischendurch was neues installieren will, kann es vorkommen dass der Download eines/einiger Pakete nicht funktioniert, weil sie inzwischen durch neue Versionen ersetzt wurden, so dass ich ein -Sy durchführen muss. Dabei achte ich natürlich darauf, dass ich nichts potenziell kritisches auseinanderreiße.

Also z. B. bei den ganzen Abhängigkeiten von Wine würde ich das höchstens aus Interesse ohne volles Systemupdate machen: Um zu sehen was passiert. :-)

Aber selbst wenn es anschließend noch zu funktionieren scheint, würde ich die (unmittelbar vorher gemachte) Sicherung wieder zurückspielen, da ich mir keine schleichenden Fehler einfangen möchte.

No backup: No mercy. ;-)

Offline

Schnellantwort auf dieses Thema

Schreibe deinen Beitrag und versende ihn
Deine Antwort

Fußzeile des Forums