Inhaltsverzeichnis
letzte inhaltliche Überarbeitung: 01.01.2008
Linux - Grundlagen und Befehle
1. Teil
1.1 Vorwort
Meine Ausführungen beziehe ich oft (wenn Pfade oder das Konfiguationsprogramm „Yast“ angeführt werden) auf „SuSE Linux“, da ich hauptsächlich damit arbeite. Im Laufe der Zeit haben sich die Pfade und die Verteilung der Dateien im Dateisystem geändert, so dass es immer wieder mal Abweichungen geben kann. Hier bitte nicht gleich verzweifeln. Im Verzeichnis /usr/share/doc/packages finden sich die Dokumentationen zu den einzelnen Softwarepaketen.
Der Standardpfad für die Konfigurationsdateien liegt fast immer irgendwo unterhalb von /etc. Diese Konfigurationsdateien (im Textformat - das ist schon der erste Vorteil von Linux) sind fast immer sehr gut dokumentiert, was die einzelnen Optionen bewirken (leider meist in englisch). Überwiegend sind schon gängige Grundeinstellungen eingetragen. Für die meisten User werden aber die Einstellungen die mit dem Systemkonfigurationstool „YAST“ (in der Shell -Kommandozeile- mit dem Befehl „yast“ aufrufbar) genügen. Deshalb nicht gleich Angst vor den vielen Textdateien bekommen.
1.2 Dokumentation
Wie oben schon angemerkt, befindet sich im Verzeichnis /usr/share/doc/packages die Dokumentation zu den Programmen und Befehlen.
Darüberhinaus gibt es noch andere Informationsmöglichkeiten:
Bei der Eingabe eines Befehls kann man meist die Option --help
anhängen (mit Leerzeichen getrennt). Es erscheint ein kurzer Überblick über die wichtigsten Optionen mit denen man das Programm aufrufen kann.
Der Aufruf man [programm/befehl]
ruft eine der zahllosen manpages (Manual-Seiten) auf. Diese gibt es eigentlich bei jedem ordentlichen Linux-Befehl/Programm.
Sollte einem nur der(die) Anfangsbuchstabe(n) eines Befehls einfallen, gibt man diesen ein, drückt die Tabulatortaste und Linux versucht diesen zu vervollständigen. Gibt es mehrere Möglichkeiten erscheinen alle Möglichkeiten auf dem Bildschirm. Diese „Eingabevervollständigung“ funktioniert genauso in Verbindung mit Verzeichnissen: cd /etc/sa <TAB>
wird zu cd /etc/samba
ergänzt.
1.3. Benutzer und Gruppen
Linux ist ein Mehrbenutzersytem. Deshalb müssen für die Nutzung des Systems Nutzer (user) und Gruppen (groups) angelegt werden. Die System-User (benötigt für die verschiedenen Programme und das Dateisystem) legt SuSE von allein an. Es bleiben also nur die „normalen“ user übrig, die man selbst anlegen und mit einem Passwort versehen muss.
Am einfachsten benutzt man dazu „YAST“. Diese User bekommen ein „home-Verzeichnis“ zugewiesen. In diesem legen alle Programme die benutzerspezifischen Dateien mit den Vor- bzw. Benutzereinstellungen ab. So ist es in einem Netzwerk möglich, bei „Logins“ (anmelden am System mit Username und Passwort) von verschiedenen Rechnern, immer wieder die gleiche Umgebung vorzufinden.
1.4 Dateiattribute
Dateien werden unter Linux mit drei Dateiattributen versehen:
- r wie „read“ - steht für Lesen der Datei/des Verzeichnis
- w wie „write“ - steht für Schreiben/Löschen der Datei/des Verzeichnis
- x wie „execute“ - steht für das Ausführen von Dateien bzw. das Hineinwechseln in Verzeichnisse
Diese Dateiattribute werden den Dateien gleich dreimal zugeteilt. Hier wird unterschieden in Berechtigungen für:
- u wie „user“ - legt die Berechtigungen für den Eigentümer (user) dieser Datei/des Verzeichnisses fest.
- g wie „group“ - legt die Berechtigungen für die Gruppe (group) dieser Datei/des Verzeichnisses fest.
- o wie „others“ (andere) - legt die Berechtigungen für alle anderen Benutzer, die auf diese Datei/das Verzeichnis zugreifen wollen fest.
Wird der Anfang des Dateinamens mit einem Punkt versehen gilt diese als „versteckte“ Datei. Das heißt, dass sie bei einem normalen Dateilisting nicht mit angezeigt wird. Will man auch diese Dateien mit einbeziehen muss man oft zusätzliche Optionen angeben.
1.5. Dateisystem
Die Festplatten werden unter Linux als „Device“ behandelt und angesprochen. So spricht das System die erste Festplatte (Master) am 1. IDE-Bus als /dev/hda an. Die zweite Platte (Slave) würde /dev/hdb sein. Ein CDROM-Laufwerk am 2. IDE-Kanal als Master wäre /dev/hdc.
Bei SCSI-Geräten heißen die Geräte /dev/sda, /dev/sdb … und so weiter.
Im Gegensatz zu Windows arbeitet Linux nicht mit Laufwerksbuchstaben. Es benutzt „sprechende“ Verzeichnisnamen. Als erstes (beim booten) muss das Wurzelverzeichnis - „/„ vom System gemountet (eingehängt) werden. Darauf müssen die entsprechenden Verzeichnisse existieren, die jetzt zum Mounten der weiteren Partitionen der Festplatte benötigt werden.
So sollte man für /swap (Linux-Auslagerungsspeicher), die Verzeichnisse /usr, /var, /home und, bei Installation von sehr viel kommerziellen Programmen, für das Verzeichnis /opt eigene Partitionen vorsehen. Das dient dazu, dass bei „Überfüllung“ der jeweiligen Verzeichnisse das root-Dateisystem nicht in Mitleidenschaft gezogen wird. Außerdem kann diese Verteilung Geschwindigkeitsvorteile bringen, sofern die Partitionen auf unterschiedlichen Festplatten liegen (parallele Zugriffe auf verschiedene Geräte).
Linux kann mit verschiedenen Dateisystemen arbeiten. Bisher wurde es meist auf ext2 installiert. In jüngerer Vergangenheit wurden freie Journaling-Dateisysteme entwickelt. Diese haben die Aufgabe, nach einem Stromausfall oder ähnlichen aprubten Unterbrechungen die Integrität der Daten beim Neustart sicherzustellen - und das möglichst schnell. Die zur Zeit verfügbaren Journaling-Dateisysteme sind: ext3, reiserfs, XFS.
Außerdem kann Linux auf eine Vielzahl anderer Dateisystem zugreifen:
- FAT16 - Dos
- FAT32 - Windows
- NTFS - Windows
- NFS - Network-Filesystem (transparente Verteilung des FS im Netzwerk)
- SMBFS - Windows-Netzwerk-Dateisystem
Beim manuellen Einhängen (Mounten) einer Partition muss man den Dateisystemtyp angeben. Hier nur ein kurzes Beispiel:
mount -t reiserfs /dev/hdd6 /win_homeDie 6. Partition auf der Slave-Platte am 2. IDE-Bus wird als Reiser-Dateisystem in das Verzeichnis /win_home eingehängt (das Verzeichnis win_home muss im Wurzelverzeichnis angelegt sein!!!).
1.6. Software-Installation - RPM
SuSE liefert seine Software in Form von RPM(RedHatPackageManager)-Paketen. Diese installiert man am einfachsten mit Hilfe von YAST. Die RPM-Pakete bieten den Vorteil, dass bei der Installation (und auch Deinstallation) Abhängigkeiten der zu installierenden, bzw. auf dem System vorhandenen Software, von zum Betrieb notwendigen Programmen angezeigt und auch automatisch aufgelöst wird. Um dies effektiv durchführen zu können, wird eine Liste aller installierten RPM-Software-Pakete in der RPM- Datenbank geführt. So erfolgt die Suche und Auswertung nach bereits installierten Softwarepaketen recht schnell und im allgemeinen fehlerfrei.
Vor einer SuSE-Installation sollte man auf jeden Fall die Hilfeseiten von SuSE im Internet SuSE-Supportdatenbank nach Updates für die jeweilige SuSE-Version durchsuchen. Erfahrungsgemäß werden schon kurze Zeit nach Erscheinen der (viel zu schnell, mit allen Neuigkeiten versehenen) Distribution viele Updates (sicherheits- und funktionskritische) veröffentlicht.
Für User mit etwas mehr Interesse an Linux und dem Willen sich in die Grundlagen einzuarbeiten, empfehle ich Debian. Diese Distribution erfordert am Anfang eine steilere Lernkurve. Das macht sich aber am Ende durch umfassendes Grundlagenwissen und Verständnis für die Funktionsweise und die Konfigurationsmöglichkeiten der Software bezahlt. Die Entwicklergemeinde von <b>Debian</b> legt großen Wert darauf, dass alle Programme der Distribution unter der GPL stehen also OpenSource sind. Darüberhinaus versucht die freie Entwicklergemeinde nur ausgereifte Versionen der Programme einzubinden, um ein besonders stabiles System zu erhalten. Aufgrund dessen sind nicht alle neuesten Features sofort unter Debian verfügbar, werden aber sobald es der Entwicklungsstand zulässt nachgereicht.
Um auf „Nummer Sicher“ zu gehen und Fehlfunktionen aufgrund bugträchtiger Pakete zu vermeiden, sollte man seine installierten Pakete mit den veröffentlichten Updateversionen vergleichen. Ich benutze dazu einen der vielfach an Unis und Hochschulen gepflegten Mirrors der SuSE-Seiten SuSE-Mirror an der TU Chemnitz.
Aufgrund der Aussagen anderer über die Unzulänglichkeiten des „YOU - YastOnlineUpdates“ und meiner „Manie“ zu wissen, WAS auf meiner Maschine passiert, benutze ich diese Funktion nicht.
1.6.1 Infos über RPM-Pakete
Benötigt man Informationen über bestimmte RPM-Softwarepakete, kann man YAST mit seiner Softwareverwaltung (Installationsmenü) benutzen. Wie so oft (und bei Linux ohne GUI auf älterer Hardware notwendig und hilfreich) ist ist die Kommandozeile der direkteste Weg zum Ziel. Mit man rpm kann man sich alle Informationen über die Benutzung des rpm-Befehls anzeigen lassen. Als kleinen Einstieg beschreibe ich hier die nötigsten Optionen.
Informationen über die installierte Software kann man mit der Option -q abfragen:
- rpm -q apache ⇒ zeigt die Versionsnummer des Paketes „apache“ an (wenn es installiert ist und genau so heißt) (-q ⇒query)
- rpm -ql apache ⇒ zeigt alle im Paket „apache“ enthaltenen Dateien an (Option -l ⇒list)
- rpm -qa ⇒ zeigt alle installierten RPM-Pakete an (Option -a ⇒all)
- rpm -qa | grep apache
- -qa fragt alle installierten RPM-Pakete
- | - Pipe = (sequentielle) Übergabe der Werte auf der Standardausgabe an den folgenden Schritt
- grep filtert aus der übergebenen Standardausgabe Zeilen mit dem String „apache“ heraus und zeigt sie an
- (auf diese Art und Weise kann man mithilfe von regulären Ausdrücken die komliziertesten Abfragen ausführen, auch wenn man die Paketbezeichnung nicht genau kennt)
- rpm -qf pfad/datei ⇒ zeigt an zu welchem RPM-Paket die Datei gehört (Option -f ⇒file)
- rpm -qfi pfad/datei ⇒ zeigt erweiterte Informationen an:
- Name, Version, Beschreibung (Option -i ⇒information)
- rpm -qf –changelog pfad/datei ⇒ zeigt das changelog an. Beschreibt die Änderungen zur Vorgängerversion des zugehörigen Paketes.
Noch mehr und spezifischere Informationen erhält man mit folgenden Optionen:
- rpm -q –requires apache ⇒ Anzeige der vom Paket apache benötigten Dateien
- rpm -q –provides apache ⇒ Anzeige der vom Paket apache zur Verfügung gestellten Dateien („Dienste“)
- rpm -q –whatprovides mod_imap.so ⇒ Anzeige der Pakete die die Datei/Dienst mod_imap.so bereitstellen, also „mitbringen“ (wird mit der Installation des Paketes zur Verfügung gestellt).
- In diesem einen Fall ergibt die Abfrage bei mir: apache-1.3.26-159
Diese Abfragen funktionieren nur mit bereits installierten Paketen (die schnellen werden es schon gemerkt haben ) Ist das Paket nicht installiert gibt es unschöne Fehlermeldungen.
- rpm -qp –requires [pfad/]acroread-5.08-50.i586.rpm ⇒ zeigt die, vom angefragten Paket, benötigten Dateien ab.
- Das jetzt kooperative Verhalten von Linux wird durch den Parameter -p (wie Paket) bewirkt
1.6.2 Installation von RPM-Paketen
Von der Kommandozeile aus, installiert man RPM-Pakete mit der Option -i:
- rpm -i [install-Optionen] apache-1.3.26-57.i586.rpm ⇒ installiert das angegebene Apache-Paket
- rpm -i –test RPM-Paket ⇒ Installiert das RPM-Paket nicht, prüft auf eventuelle Konflikte und berichtet darüber (Trockenlauf).
- rpm -i –hash RPM-Paket ⇒ zeigt während der Installation 50 #-Zeichen an (Installationsfortschritt bis 100%). Die Ausgabe kann mit der zusätzlich anzugebenden Option -v noch etwas verschönert werden.
- rpm -i -h RPM-Paket ⇒ bewirkt das Gleiche (-h = –hash).
In den nächsten Beispielen stelle ich die lange und wenn vorhanden die kurze Schreibweise in eckigen Klammern gemeinsam dar.
- rpm -i –oldpackage RPM-Paket ⇒ erlaubt das Update eines neueren Paketes mit einem alten (wenn man wieder downgraden möchte).
- rpm -i –replacepkgs RPM-Paket ⇒ Installiert die RPM-Pakete, auch wenn sie schon auf dem System installiert sind.
- rpm -i –replacefiles RPM-Paket ⇒ Installiert die RPM-Pakete, auch wenn dadurch Dateien von, bereits auf dem System installierten, Paketen ersetzt werden.
- rpm -i –force RPM-Paket ⇒ Dasselbe wie –replacepkgs und –replacefiles zusammen benutzt.
- rpm -i –nodeps RPM-Paket ⇒ Verhindert die Überprüfung auf Paketabhängigkeiten (diese Option sollte man nur benutzen, wenn man genau weiß was man macht).
- rpm -i –excludedocs RPM-Paket ⇒ Schließt alle Dateien, die als Dokuentation gekennzeichnet sind, von der Installation aus (für kleine Festplatten und schlanke Systeme geeignet).
1.6.3 Update von RPM-Paketen
Stellt man nun fest, dass ein installiertes RPM-Paket mit einem neueren „upgedatet“ werden muss, kann man die Updatefunktion von YAST nutzen - oder man macht es von Hand:
- cd Verzeichnisname ⇒ in das Downloadverzeichnis wechseln
- rpm -Uhv paketname ⇒ Updaten des installierten RPM-Paketes mit dem angegebenen (bei den oft sehr langen Namen hilft die Eingabevervollständigung:
- nach den ersten 2 Buchstaben TAB drücken vervollständigt einen evtl. im aktuellen Verzeichnis vorhandenen Dateiname)
- Sollten Abhängigkeiten nicht auflösbar oder ein solches Paket nicht installiert sein, bricht der Updatevorgang mit einer entsprechenden Fehlermeldung ab.