Ich weiß, dass dies etwas spät ist, aber dieser Beitrag ist derzeit einer der Top-Suchhits im Zusammenhang mit der Suche nach Alternativen in Debian.
Das Problem bei der Verwendung update-alternatives
hier ist, dass nur installierte Optionen angezeigt werden, soweit ich das beurteilen kann (die Manpage ist ziemlich spärlich).
Um die im Titel gestellte Frage zu beantworten, dh alle verfügbaren Pakete zu finden, die eine Alternative bieten (ob installiert oder nicht), können Sie Folgendes verwenden:
aptitude search '?provides(pattern)'
was auch abgekürzt werden kann zu:
aptitude search '~Ppattern'
Wo pattern
ist die Alternative, nach der Sie suchen, ganz oder teilweise? Im speziellen Fall vi
funktioniert dies nicht wirklich. Wenn Sie die Pakete nvi
und vim
mit aptitude show
oder überprüfen apt-cache show
, werden Sie feststellen, dass keiner der beiden "vi" im Abschnitt "Provides:" auflistet. Tatsächlich fehlt in der Beschreibung von nvi dieser Abschnitt vollständig.
Es funktioniert jedoch recht gut für andere Alternativen, wie zum Beispiel editor
:
$ aptitude search '~Peditor'
p deutex - composition tool for doom-style WAD files
p edbrowse - /bin/ed-alike webbrowser written in C
p emacs24 - GNU Emacs editor (with GTK+ GUI support)
p emacs24-lucid - GNU Emacs editor (with Lucid GUI support)
p emacs24-nox - GNU Emacs editor (without GUI support)
p fte-console - Text editor for programmers - console edi
p fte-terminal - Text editor for programmers - version for
p fte-xwindow - Text editor for programmers - X Window Sy
p jed - editor for programmers (textmode version)
p jove - Jonathan's Own Version of Emacs - a compa
p jupp - user friendly full screen text editor
p le - Text editor with block and binary operati
p ledit - line editor for interactive programs
p levee - very small vi clone
p mg - microscopic GNU Emacs-style editor
p nano - small, friendly text editor inspired by P
p nano-tiny - small, friendly text editor inspired by P
p ne - easy-to-use and powerful text editor
p pluma - official text editor of the MATE desktop
p rlfe - Front-end using readline to "cook" input
p rlwrap - readline feature command line wrapper
p scite - Lightweight GTK-based Programming Editor
p vigor - nvi with the evil paperclip
p vile - VI Like Emacs - vi work-alike
p vim - Vi IMproved - enhanced vi editor
p vim-athena - Vi IMproved - enhanced vi editor - with A
p vim-gnome - Vi IMproved - enhanced vi editor - with G
i vim-gtk - Vi IMproved - enhanced vi editor - with G
p vim-nox - Vi IMproved - enhanced vi editor - with s
i vim-tiny - Vi IMproved - enhanced vi editor - compac
p xjed - editor for programmers (x11 version)
p xul-ext-password-editor - edit password manager entries in Mozilla
p xvile - VI Like Emacs - vi work-alike (X11)
Auch wenn dies nicht perfekt ist, aptitude
verfügt es über unglaublich flexible Suchfunktionen , mit denen Sie häufig das Problem umgehen können, dass Pakete nicht korrekt auflisten, welche Alternativen sie anbieten. Wenn Sie beispielsweise "~seditors ~dvi\s"
ein Suchmuster verwenden, werden alle Pakete im Abschnitt "Editoren" aufgelistet, deren Beschreibung enthält die Zeichenfolge "vi".
Eine andere Möglichkeit ist die Verwendung der Debian-Paketwebsite , auf der ähnliche Pakete im Abschnitt rechts aufgeführt sind.
aps ~Peditor
? Wennaps
es eine Abkürzung für Eignung sein soll, gut, aber bitte verwenden Sie das nicht in einer Antwort, es wird nur alle verwirren. Wenn Sie der Meinung sind, dass fehlende Angebote vorhanden sind, können Sie einen Fehlerbericht für die entsprechenden Pakete einreichen.aps
muss stehenaptitude search
. Aber Sie sollten das explizit verwenden. Ich denke jedoch nicht, dass dies eine praktikable Antwort ist, unabhängig davon - vielleicht funktioniert es mit etwas Verfeinerung.aptitude search -Pvi
gibt eine Menge irrelevanter Sachen. Ich vermute, es durchsucht die gesamte Paketbeschreibung.aptitude search ~P
(Beachten Sie die Tilde) sucht nur inProvides
,vi
stimmt aber mit anderenProvides
Einträgen überein ; Sie müssen eine genaue Übereinstimmung mit angebenaptitude search '~P^vi$'
. Dieses Beispiel zeigt eine grundlegende Einschränkung bei diesem Ansatz: Während es einevi
Alternative gibt, gibt es keinvi
virtuelles Paket ...Das hängt davon ab. Es gibt einige Alternativen, wie x-www-browser, verwenden kein Paket und werden über Betreuerskripte zu den Update-Alternativen hinzugefügt:
Es gibt andere, die ein einzelnes Metapaket verwenden, um eine beliebige Version derselben Binärdatei zu installieren (auch Java / OpenJRE-Pakete fallen mir ein
init
). Andere verwenden ein virtuelles Paket, indem sie die "Provides" ausfüllen (dies wird normalerweise mit einem Update der alternativen DPKG-Datenbank geliefert). In diesem Fall sollte jedes dieser Pakete dieselbe Binärdatei bereitstellen.Wie finde ich alle Pakete, die eine bestimmte Datei enthalten? Ich würde die Angebote verwenden, wenn Sie ein Paket kennen, das dies tut, und
apt-file search file
für alles andere.quelle
editor
.Virtuelle Pakete und das Debian-Alternativsystem (in dem Binärdateien ins Spiel kommen) sind miteinander verbunden, aber nicht dasselbe. Bei virtuellen Paketen können Sie ermitteln
apt-cache
, welche (realen) Pakete es "bereitstellen":Für Display-Manager lautet das virtuelle Paket
x-display-manager
:Das alternative System wird durch Aufrufe
update-alternatives
in Betreuerskripten behandelt, wie die Antwort von Braiam zeigt, und der Rest des Verpackungssystems ist sich dieser glücklicherweise nicht bewusst. DasProvides
Feld ist auch allgemeiner als Alternativen, da ein Paket ein anderes Paket in Bezug auf angebotene Dienste oder Bibliotheken bereitstellen kann, nicht nur über Binärdateien.Ohne Paketbetreuer, die Informationen zu Alternativen zum
Provides
Feld hinzufügen (und virtuelle Pakete für alle Endpunkte von Alternativen erstellen - wie z. B.vi
) und ohne die Pakete selbst zu überprüfen, gibt es derzeit keinen allgemeinen Weg, bis welches Paket eine Alternative bietet.quelle
Streng auf die Frage bezogen, finden vi Alternative:
Ausgabe:
Oder:
Ausgabe:
quelle
In Ubuntu
command-not-found
enthält das Paket eine Datenbank, die auch viele Alternativen enthält. Nach der Installation kann es mit abgefragt werden/usr/lib/command-not-found --no-failure-msg --ignore-installed mail
(um Alternativen für aufzulistenmail
).Vorsicht, wenn Sie die automatischen Vorschläge für fehlende Befehle in bash nicht möchten, schreiben Sie
unset -f command_not_found_handle
in Ihre ~ / .bashrc oder entfernen Sie die Definition global in/etc/bash.bashrc
. (Machen Sie es ähnlich für zsh.)In Debian verwendet dieses Tool nur apt-file, um die Datenbank zu erstellen, sodass keine Alternativen bekannt sind (nicht getestet). Dort sagt es das gleiche wie
apt-file search ...
.Ubuntu-Quelle: https://launchpad.net/command-not-found
quelle
/usr/lib/command-not-found /usr/bin/mail
sieht es nach einer Art Rezept aus, aber ich verstehe nicht, was es tun soll. Eine Erklärung wäre hilfreich./usr/bin/
aus dem Befehl entfernt, da dies nicht funktioniert.# /usr/lib/command-not-found mail Command 'mail' is available in '/usr/bin/mail' mail: command not found
.mail
bereits installiert ist. Diese Prüfung kann mit der Option übersprungen werden--ignore-installed
. Aber auch danach erhalten Sie nicht mehr Informationen (in Debian) als vonapt-file search mail
.