So finden Sie den Namen des Befehls, um das Dienstprogramm zu verwenden [geschlossen]

7

Es gab einige Fälle, in denen ich ein Dienstprogramm / Programm installiert habe und der Name des Befehls vom Namen des Programms abweicht.

Wie ich kürzlich PostgreSQL installiert habe und nach der Installation den Befehl ausgeführt habe

postgresql

aber es gab einen Fehler bash: postgresql command not found

Also suchte ich im Internet und stellte fest, dass der Befehl, postgresql zu feuern, lautete

psql

Wie finde ich heraus, auf welches Dienstprogramm / Programm ich mit welchem ​​Namen zugreifen soll?

Ich habe es getan, apt-cache show postgresqlaber selbst dort wurde nicht erwähnt, dass auf das Programm mit dem Befehl zugegriffen werden würdepsql

Bitte schlagen Sie keinen locateBefehl vor. Es hilft nicht.

GypsyCosmonaut
quelle
Obwohl ich denke, dass dies eine gute Frage ist, glaube ich nicht, dass es eine Antwort darauf gibt. Wenn ich ein Dienstprogramm aufrufe xund meine ausführbare Datei aufrufe yund es nicht dokumentiere, kann ich nicht sagen, wie meine ausführbare Datei heißt. Dies ist eine schlechte Designentscheidung seitens der Entwickler. Natürlich können Sie das Paket installieren und nachsehen, welche neuen Dateien sich auf der Festplatte befinden. Angesichts der Tatsache, dass einige Pakete Tausende von Dateien installieren, ist dieses Verfahren nicht einfacher, als nur nach seinem Namen zu googeln.
Pfnuesel
Wie viele andere Programme ist auch postgresql etwas, für das Sie unbedingt die Dokumentation lesen sollten. Wenn Sie nicht genug darüber wissen, wie der Befehlszeilenclient heißt, wie viel erwarten Sie dann wirklich? damit zu tun?
Cas
1
@cas niemand weiß etwas, bis sie anfangen
GypsyCosmonaut
1
@GypsyCosmonaut - ja, deshalb ist es im Allgemeinen eine gute Idee, einige Dokumentationen zu lesen.
Cas

Antworten:

11

Eine Taktik wäre zu untersuchen, welche Dateien das Paket in den verschiedenen bin-Verzeichnissen installiert hat. Bei einer dpkg-basierten Distribution können Sie beispielsweise Folgendes tun:

dpkg -L postgresql-client-9.3 | grep bin

oder auf einem System mit RPMs können Sie Folgendes tun:

dnf repoquery -l PACKAGE_NAME | grep bin

und lesen Sie dann die Handbuchseiten für die Binärdateien, die Sie finden. Eine Herausforderung dieser Taktik besteht darin, dass in einigen Fällen (z. B. postgresql) die Dateien auf einige Pakete verteilt sind.

Steven D.
quelle
Der Paketname in meinem Kali-Repository (basierend auf Debian) ist postgresqlnur so, dass ich dpkg -L postgresql | grep bines getan habe, aber es wurde nichts /usr/bin/psql
aufgelistet
1
@GypsyCosmonaut postgresql hängt wahrscheinlich von einem versionierungsspezifischen postgresql-Paket ab, das wiederum von anderen Paketen abhängt. Versuchen Sie apt-cache depends postgresqlzu sehen, wovon dieses Paket abhängt.
Steven D
apt-cache depends postgresqlgibt mir Depends: postgresql-9.6so habe ich dpkg -L postgresql-9.6 | grep bindiesmal gemacht und Dateien von /usr/lib/postgresql/9.6/binwurden aufgelistet, in denen es keine Erwähnung gab, psqlweil diese Datei existiert, bei /usr/bin/psqlder nicht im Ergebnis aufgeführt war
GypsyCosmonaut
1
Leider müssten Sie für das postgresql-Paket weiter graben. psqlwird als Teil des Client-Pakets geliefert (wahrscheinlich postgresql-client-9.6postgresql-9.6
Steven D
1
Diese Art von Aufgabe ist Teil des Grundes, warum ich dlocatefür Debian geschrieben habe (auch weil dpkg -L und dpkg -S langsam waren und immer noch sind). zB dlocate --lsbin postgresql-client-9.6zeigt Ihnen alle Binärdateien in diesem Paket. dlocatehat auch --lsmanund --lsconfund andere Optionen.
Cas
1

apropos oder man-k

Dadurch wird eine Suche nach installierten Handbuchseiten durchgeführt, die sich auf Ihr Schlüsselwort beziehen. Ich würde postgres als Schlüsselwort eingeben. Auf meinem System bekomme ich folgendes:

$ apropos postgres
pam_postgresok (8)   - simple check of real UID and corresponding account name
pgsql_table (5)      - Postfix PostgreSQL client configuration
bdsl
quelle