Kann ich den Paketmanager veranlassen, den Konflikt zu lösen, z. B. durch Umbenennen der Binärdatei ( z. B. parallel → gparallel ) oder durch Installieren an einem anderen Ort ( z. B. / usr / → / usr / local / )?
quelle
Kann ich den Paketmanager veranlassen, den Konflikt zu lösen, z. B. durch Umbenennen der Binärdatei ( z. B. parallel → gparallel ) oder durch Installieren an einem anderen Ort ( z. B. / usr / → / usr / local / )?
Für Ubuntu v17.04 ("Zesty Zapus") und Debian v9 ("Stretch") ( 2017 oder neuer) oder Distributionen, die auf diesen Versionen basieren, lesen Sie bitte zuerst die Antwort von Bryan Larsen , die ausreichend sein sollte.
Für Versionen vor 2017 lesen Sie weiter ...
Verwenden Sie dpkg
, um die Installation zu erzwingen ; parallel wird entlang gut mit moreutils - es umbenennt moreutils ' parallel
util zu parallel.moreutils
. Nach Abschluss der Installation sind beide Programme ( GNU und moreutils ) verfügbar.
NB: Wenn ein Benutzerskript die alten moreutils aufruft parallel
, ändern Sie diese Skripte, um den längeren Namen zu verwenden.
Details: Paralleles Paket holen (ohne etwas zu installieren oder zu entfernen). Verwenden Sie dann compgen
(einen bash
internen Befehl), um das parallele Paket im Archiv zu finden. Wenn es mehrere gibt, verwenden Sie die neueste. Erzwinge die Installation dieses Pakets trotz Konflikten.
apt-get --assume-yes --download-only install parallel &&
ls --sort=version $(compgen -f /var/cache/apt/archives/parallel) |
tail -n 1 | xargs dpkg --force-conflicts -i
So zeigen Sie die resultierenden Umleitungen an:
dpkg-divert --list 'par*'
Ausgabe:
diversion of /usr/share/man/man1/parallel.1.gz to /usr/share/man/man1/parallel.moreutils.1.gz by parallel
diversion of /usr/bin/parallel to /usr/bin/parallel.moreutils by parallel
Sehen Sie, wie beide ausführbaren Binärdateien verfügbar sind:
compgen -c parallel | xargs which | xargs ls -l
Ausgabe:
-rwxr-xr-x 1 root root 240814 Oct 31 2014 /usr/bin/parallel
-rwxr-xr-x 1 root root 10592 Jul 21 2015 /usr/bin/parallel.moreutils
apt-get install
sich weiterhin über den Konflikt beschweren, wie Sie zuvor geschrieben haben./var/lib/dpkg/status
, um den Konflikt zu entfernen. Gesucht nach "Conflicts: moreutils", löschte diese Zeile. Quelle: superuser.com/a/815371/99136 . Scheint jetzt zu funktionieren, aber ich befürchte, dass ein Update des "Parallel" -Pakets die Dinge wieder kaputt machen wird.apt-get install
davor, dass dasparallel
Paket nicht aktualisiert wird, zeigt aberapt-cache policy
keine unterschiedlichen Versionen an undapt-get dist-upgrade
berührt dasparallel
Paket auch nicht . Ein Upgradeparallel
scheint also ein Prozess zu sein, der bewusst angestoßen werden muss. Für mich in Ordnung.Dieser Konflikt ist in Ubuntu 17.04 und Debian Stretch gelöst .
Wenn Sie parallel & moreutils installieren, erhalten Sie GNU
parallel
as/usr/bin/parallel
und moreutil 'sparallel
as/usr/bin/parallel.moreutils
. Wenn Sie nur moreutils installieren , bietet es/usr/bin/parallel
.Wenn Sie eine ältere Version von Ubuntu oder Debian verwenden , können Sie die .debs von einer neueren Version herunterladen und installieren: Sie installieren und funktionieren einwandfrei.
quelle
Ich denke, der einfachste Weg wäre, eines der Pakete normal zu installieren (zB
parallel
) und ein anderes einfach in den benutzerdefinierten Pfad zu extrahieren:quelle
GNU Parallels ist nur ein Perl-Skript, Sie können es also einfach an eine nützliche Stelle kopieren (z. B. / usr / local / bin / gnu-parallel).
(Überprüfen Sie einfach die Perl-Abhängigkeiten).
quelle