## Diese Warnung ist Bestandteil jedes Howtos und darf nicht entfernt werden. {{{#!vorlage Warnung Die Verwendung dieses Howto geschieht auf eigene Gefahr. Bei Problemen mit der Anleitung melde dies bitte in der dazugehörigen Diskussion und wende dich zusätzlich an den Verfasser des Howtos. }}} ## Bitte die Angaben zu dem letzten erfolgreichen Test dieser Anleitung eintragen: {{{#!vorlage Hinweis Diese Howto-Anleitung wurde zuletzt von [user:dirkolus:] am 19.02.2018 unter '''Kubuntu 17.10''' erfolgreich getestet. }}} {{{#!vorlage Wissen [:Terminal:Ein Terminal öffnen] [:man:Handbuchseiten öffnen] [:Internetanwendungen#Webbrowser:Einen Browser öffnen] }}} Was macht eigentlich der Befehl `XYZ`, warum ist er auf dem System vorhanden? Wie bekomme ich dazu Hilfe und weitere Informationen? Diese Fragestellungen können u.a. in Bezug auf das [:Fehler melden:] bzw. [:Paket finden:] wichtig sein. Am Beispiel des Befehls [:man:] wird hier gezeigt, welche Informationen zu einem Befehl in Erfahrung gebracht werden können. Die Anleitung sollte sich leicht auf andere Dateien und Pakete übertragen lassen. Zum Verständnis sollte der Leser die Schritte im Terminal einmal durchspielen und sich über die verwendeten Befehle ggf. weiter informieren. Die gestellten Fragen und Antworten bauen (teils) aufeinander auf. Ergänzungen sind willkommen, es sollte aber beachtet werden, dass alle Befehlsaufrufe auf einem System mit [:Minimalinstallation:] funktionieren sollen. So bleibt das Howto leicht zu pflegen. [[Inhaltsverzeichnis(3)]] = Terminal = `man` ist ein Terminalprogramm und im Terminal können weitere Informationen darüber abgerufen werden.[1] == Wozu ist der Befehl? == `whatis` liefert eine Liste der Handbuchseiten zu einem Befehl: {{{#!vorlage Befehl whatis man }}} {{{ man (1) - eine Oberfläche für die Online-Referenzhandbücher man (7) - macros to format man pages }}} == Wie ruft man die Hilfe auf? == Wie bei vielen Programmen wird die Hilfe angezeigt mit: {{{#!vorlage Befehl man --help }}} Alternative(n) zu `--help`: In diesem Fall `-?`, bei anderen Befehlen aber z.B. `-help` oder `-h` (evtl. lediglich ein oder zwei von allen hier aufgeführten Optionen). `man` ruft die Handbuchseite („''manpage''“) eines Befehls auf.[2] Die Handbuchseiten zu `man` werden geöffnet mit: {{{#!vorlage Befehl man man }}} oder {{{#!vorlage Befehl man 7 man }}} wenn es zu einem Begriff in mehreren Sektionen des Handbuchs passende Seiten gibt und man eine bestimmte davon aufrufen möchte. Eine andere, weniger verbreitete Art der Hilfe, wird mit dem Befehl `info` aufgerufen. Gibt es keine spezielle Infoseite, werden die Handbuchseiten aufgerufen. Die Seiten (bei `man` also eins und sieben) werden in diesem Fall zusammengeführt, ebenso die etwaigen Sprachversionen: {{{#!vorlage Befehl info man }}} Mit der Taste [[Vorlage(Tasten, q)]] schließt man die Handbuch- bzw. Infoseiten und kommt wieder zur normalen Terminal-Ansicht zurück. == Welche Version liegt vor? == Die meisten Befehle geben ihre eigene Version wieder, wenn sie mit der Option `--version` aufgerufen werden: {{{#!vorlage Befehl man --version }}} {{{ man 2.6.7.1 }}} Alternative(n) zu `--version`: In diesem Fall `-V`, bei anderen Befehlen aber z.B. `-version` oder `-v` (evtl. lediglich ein oder zwei von allen hier aufgeführten Optionen). == Welche Datei wird ausgeführt? == {{{#!vorlage Befehl which man }}} {{{ /usr/bin/man }}} Sie liegt also in einem Verzeichnis, von dem aus sie systemweit ausführbar sein sollte. {{{#!vorlage Befehl ls -l /usr/bin/man }}} {{{ -rwxr-xr-x 1 root root 107008 Sep 23 18:43 /usr/bin/man }}} Die Datei gehört dem Systembenutzer `root`, kann aber von jedem Benutzer ausgeführt werden. Dies erkennt man an der [:Rechte#Rechte-in-symbolischer-Darstellung:symbolischen Darstellung der Rechte]. Somit können alle Benutzer Handbuchseiten lesen. Ausführliche Informationen zu Rechten, Benutzer und Gruppe, Größe, Zugriff und so weiter liefert: {{{#!vorlage Befehl stat /usr/bin/man }}} Dabei kennt [:stat:] verschiedene Formatierungen, so dass einzelne Werte abgefragt werden können; z.B. die Rechte in oktaler Schreibweise mit: {{{#!vorlage Befehl stat --format=%a /usr/bin/man }}} == Was ist das für eine Datei? == {{{#!vorlage Befehl file /usr/bin/man }}} {{{ /usr/bin/man: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=f421457c024fcd196f0ac9ccfc8796f59bddb3c4, stripped }}} Es handelt sich also um eine Binärdatei ([wikipedia:Executable_and_Linking_Format:ELF]). Sie wurde dynamisch gelinkt und benötigt daher gemeinsam genutzte Bibliotheken. == Welche Bibliotheken werden benötigt? == Folgender Befehl gibt die benötigten gemeinsam genutzten Bibliotheken aus: {{{#!vorlage Befehl ldd /usr/bin/man }}} == Aus welchem Paket stammt die Datei? == {{{#!vorlage Befehl dpkg-query --search /usr/bin/man }}} {{{ man-db: /usr/bin/man }}} Es gibt also nur ein Paket, das die gesuchte Datei enthält: '''man-db''', siehe auch [:dpkg#dpkg-query:dpkg-query]. Falls das Paket '''man-db''' hingegen nicht installiert wäre und man das zu installierende Paket für die Datei '''/usr/bin/man''' trotzdem herausbekommen mögen würde, dann könnte man alternativ [:apt-file:] (muss evt. zusätzlich via gleichn. Paket installiert werden) benutzen: {{{#!vorlage Befehl apt-file search /usr/bin/man }}} Falls man bei nicht installierten Programmen nur den Programm- bzw. Befehlsnamen kennt, so kann man es einfach mit diesem ohne Pfadangabe probieren: {{{#!vorlage Befehl apt-file search man }}} Allerdings wäre im Falle von `man` die Ausgabe so lang, dass sie damit unbrauchbar wäre. Also sollte man stattdessen hilfsweise mehrere mögliche Dateipfade probieren, in diesem Fall also `/usr/bin/man`, `/usr/sbin/man`, `/bin/man`, `sbin/man`. Als Alternative zum Ausprobieren möglicher Dateipfade kann man aber auch wieder nur nach dem Programm- bzw. Befehlsnamen suchen lassen und dabei die Ausgabe verkürzen, indem man [:grep:] zur Filterung verwendet. In diesem Fall geschieht das gleich doppelt, indem zuerst Zeilen mit der Zeichenkette `share` unterdrückt und danach nur Zeilen mit dem Regulären Audruck `/man` durchgelassen werden: {{{#!vorlage Befehl apt-file search man | grep -vw share | grep -E '\/man$' }}} {{{ erlang-mode: /usr/lib/erlang/man hollywood: /usr/lib/hollywood/man lam4-dev: /usr/lib/lam/man man-db: /usr/bin/man man-db: /usr/lib/man-db/man }}} == Was ist das für ein Paket? == Programmbeschreibung und Paketinformationen zeigt [:apt/apt-cache:apt-cache], z.B. mit: {{{#!vorlage Befehl apt-cache show man-db }}} == Ist das Paket installiert? == {{{#!vorlage Befehl dpkg -l man-db }}} {{{ ii man-db 2.6.7.1-1ubu amd64 on-line manual pager }}} Der Status `ii` zeigt, das Paket ist installiert, siehe auch [:dpkg:]. == Wo liegen ausführbare Dateien und Handbuchseiten? == {{{#!vorlage Befehl whereis man }}} {{{ man: /usr/bin/man /usr/local/man /usr/share/man /usr/share/man/man1/man.1.gz /usr/share/man/man7/man.7.gz }}} == Welche Dateien enthält das Paket? == {{{#!vorlage Befehl dpkg -L man-db }}} Das Paket enthält die Handbuchseiten (-datenbank) sowie Programme und Bibliotheken dazu. Falls das Paket '''man-db''' hingegen nicht installiert wäre und man sich trotzdem die in ihm enthaltenden Dateien auflisten lassen mögen würde, dann könnte man wieder alternativ [:apt-file:] benutzen: {{{#!vorlage Befehl apt-file list man-db }}} == Welche Abhängigkeiten hat das Paket? == Da der Befehl gemeinsam genutzte Bibliotheken voraussetzt, hat das Paket Abhängigkeiten. {{{#!vorlage Befehl apt-cache depends man-db }}} == Warum ist das Paket installiert? == Das Paket wird von einem anderen Paket als Abhängigkeit installiert: {{{#!vorlage Befehl apt-cache rdepends man-db }}} oder {{{#!vorlage Befehl apt-cache showpkg man-db }}} Die beiden Befehle zeigen, dass viele andere Pakete '''man-db''' voraussetzen. Darunter ist auch das Paket '''lsb-core''' – also der Kern der „Linux Standard Base“ von Debian und damit elementarer Bestandteil von Ubuntu. Genau genommen sind dies die Abhängigkeiten, durch die `man` auf jedem Ubuntu vorhanden ist: * '''ubuntu-minimal''' -> '''lsb-release''' -> '''lsb''' -> '''lsb-core''' -> '''man_db''' ==> `man` == Aus welchem Quellpaket wurde gebaut? == {{{#!vorlage Befehl apt-cache showsrc man-db }}} {{{ Package: man-db [...] }}} Die Namen von Quell- und Binärpaket sind in diesem Fall identisch. == Wie wird das Quellpaket geholt? == {{{#!vorlage Befehl apt-get source man-db }}} Mit diesem Aufruf von [:apt/apt-get:apt-get] wird das Quellpaket heruntergeladen und entpackt. = Ausnahmen = == Shell Builtin == Bei einem Shell Builtin wie beispielsweise `unset` wird der Aufruf von `which unset` kein Ergebnis liefern. Dass `unset` von der Shell mitgeliefert wurde, beweist: {{{#!vorlage Befehl type unset }}} {{{ unset ist eine von der Shell mitgelieferte Funktion. }}} Hilfe zu einem Builtin liefert die eingebaute Hilfe der Shell: {{{#!vorlage Befehl help unset }}} Welche Shell gerade benutzt wird, zeigt: {{{#!vorlage Befehl which $0 }}} == Alias == Ein Befehlsalias wird wie ein Shell Builtin entlarvt: {{{#!vorlage Befehl type grep }}} {{{ grep ist ein Alias von »grep --color=auto«. }}} == Befehl nicht bekannt == === Fenster === Zum Befehl, der ein Fenster gestartet hat, bekommt man den Namen des Programms via Kommando `xprop` mit: {{{#!vorlage Befehl xprop WM_CLASS }}} Der Mauszeiger wird nun zu einem Fadenkreuz, mit dem man nun auf das Fenster der betroffenen Anwendung [[Vorlage(Tasten, lmt)]]-klickt. Aus der Ausgabe kann man in der Regel auf den Dateinamen schließen. === Terminal === Der Befehl `apropos` liefert eine Liste mit Handbuchseiten zu einem Stichwort. {{{#!vorlage Befehl apropos kate }}} {{{ kate (1) - Erweiterter Texteditor von KDE }}} === Prozesse === Alternativ kann man mit einer ganzen Reihen von Programmen die laufenden Prozesse betrachten und so Rückschlüsse auf den Namen der Anwendung ziehen. Informationen hierzu findet man unter [:Prozesse:] im Wiki. = Browser = Auch im Browser können Informationen zu Befehlen und Paketen abgerufen werden.[3] == Handbuchseiten online == Die Handbuchseiten werden für alle Ubuntu Versionen in allen verfügbaren Übersetzungen auch online bereitgestellt: * [ubuntusub:manpages:Ubuntu Handbuchseiten] Um die Handbuchseiten auf einem eigenen Server bereitzustellen gibt es: * [:dpkg-www:] == Umfassende Informationen zu Paketen == In der Ubuntu Paket Suche können Informationen zu allen Paketen und Quellpaketen aus allen Ubuntu Versionen abgerufen werden. Die Suchkriterien sind vielfältig und es kann auch nach Dateien und mit verschiedenen Suchmustern gesucht werden: * [packages::Ubuntu Paket Suche] = Links= * [:Shell/Befehlsübersicht:] {Übersicht} * [:man:] * [:Paketverwaltung:] {Übersicht} * [:Fehler melden:] – Allgemeiner Artikel zum Melden von Fehlern in Programmen * [:Paket finden:] – ein Bug dem Paket zuordnen, welches den Fehler hervorruft * [:Howto:] {Übersicht} Übersicht aller Howto-Artikel ## Nach der Fertigstellung des Howtos bitte die Aufnahme in die Howto-Sammlung über die Schaltfläche "Diskussion" mitteilen. Weitere [:Wiki/Tag:Tags] sind nicht gestattet! #tag: Howto