Linux Notizen / Programmierung
 
StartSeite | LinuxNotizen/ | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern

Wie kommt man als Entwickler mit Windows-Background am schnellsten in die LinuxProgrammierung (UnixProgrammierung) hinein?

LinuxProgrammierung kann vieles bedeuten:


Was sind die wesentlichen Kenntnisse, die man braucht?

Man benötigt:

Am einfachsten ist immer, von dem zu lernen, was die Community bisher produziert hat. Das attraktive an Linux ist, dass praktisch alles als Source verfügbar ist. Die Sources zu den Systembestandteilen werden als eigene Source-Packages installiert.

Installation von Source Packages bei der SuSe-Distribution

Das YaST2-Kontrollzentrum ermöglicht die Installation tausender Packages. Die Sources sind jedoch ein bisschen versteckt (und werden von der Suchfunktion nicht erfasst):

Nach der Paket-Installation (z. B. grep, m4, kdebase) durch YaST existieren folgende Files (siehe /DateienSuchen):

 /usr/src/packages/SOURCES/m4-1.4o.dif
 /usr/src/packages/SOURCES/m4-1.4o.tar.gz
 /usr/src/packages/SOURCES/kdebase-2.2.1.tar.bz2
Die tar-Files sind die gepackten Entwicklungsverzeichnisse.

Installation von Source Packages (andere Distributionen)

ToDo

Dekompression

Dekompression .tar.bz2 Archive:

bunzip2 -c whatever.tar.bz2 | tar xvf -

Dekompression .tar.gz Archive:
gunzip -c whatever.tar.gz | tar xvf -

Die Dekompression erzeugt entsprechend benannte Unterverzeichnis(bäum)e (z.B. .../SOURCES/m4-1.4o/...) mit den gesamten Entwicklungsdateien und Sources.

Übrigens hat ein modernes tar die Möglichkeit auch per Option direkt zu Dekomprimieren:

tar vxzf whatever.tar.gz

bzw. via -j für bzip2. Finde ich persönlich etwas einfacher.

Installation

Im so entstandenen Unterverzeichnis befindet sich eine Datei INSTALL, welche die für die Installation erforderlichen Befehle beschreibt. Meist (aber nicht immer) handelt es sich um die folgenden Befehle:

./configure (im wesentlichen Vorbereitungsarbeiten)

make (im wesentlichen Compilation) <--- Meist ein länger dauernder Prozess!

Nicht selten/oft/(meistens) ist auch ein Test an dieser Stelle enthalten

make test Wenn vorhanden _unbedingt empfohlen_

make install (im wesentlichen Kopieren der exekutierbaren Dateien an ihren endgültigen Ort)


Wer sich als Windows-Mensch wundert, was die Zeichen "." und "/" vor dem configure bedeuten sollen: Das configure ist ein Script (=Batchdatei) im aktuellen Unterverzeichnis. Unter Unix werden ausführbare Dateien aber nicht automatisch im aktuellen Verzeichnis gesucht, sondern nur in den Verzeichnissen der Umgebungsvariablen PATH. Das "./" ist sozusagen eine minimale Pfadangabe, damit das Unix weiß, woher es das Programm nehmen soll. Siehe aber auch /ShellAufWindowsTunen. -- hl

Verzeichnisstruktur

Verzeichnisse, die in dem Zusammenhang der Programmierung eine besondere Rolle spielen:

 /etc                                 (allgemeine Konfigurationsfiles)
 ~ (oft ident mit) /usr/home/username (persönliche Konfigurationsfiles)
 /usr/bin                             (exekutierbare Programme in Originalversion)
 /usr/local/bin                       (exekutierbare Programme in der lokal installierten Version)
 /usr/src/packages/SOURCES            (Stammverzeichnis für die Installation von packages)

Die selbst kompilierten installierten Programmversionen (nehmen wir einmal an: ein modifiziertes grep) werden bei make install ins Verzeichnis /usr/local/bin/ kopiert. Sie überschreiben nicht allfällige Originalversionen, die sich in /usr/bin befinden und werden bevorzugt aufgerufen, weil die PATH-Variable default-mäßig /usr/local/bin vor /usr/bin enthält.

Siehe auch FHS, der FilesystemHierarchyStandard?: http://www.pathname.com/fhs/. Das ist ganz hilfreich, um die Bedeutung von /usr vs /usr/local zu verstehen.

Environment

Das Environment unter UNIX ähnelt jenem unter DosWindows, nur die Befehle sind anders:

Ganzes Environment anzeigen:

env oder printenv (statt set unter DosWindows)

Einzelne Variable anzeigen:

echo $SHELL
echo $PATH (statt path unter DosWindows)

Variable setzen (verschiedene Varianten möglich):

export variable=wert (stat set variable=wert unter DosWindows)
variable=wert und export variable

Konfigurationsfiles

Für den Umsteiger sind die Unix-Konfigurationsfiles leicht verwirrend. Es gibt im schlimmsten Fall etwa ein Dutzend möglicher Files ( /etc/profile ~/.profile /etc/login ~/.login /etc/bashrc ~/.bashrc ~/.cshrc ~/.shrc ...) die in Frage kommen.

Die heißesten Tipps sind:

/etc/profile (als allgemeiner Konfigurationsfile)
in Verbindung mit einem der folgenden Files (je nach der eingestellten Shell - echo $SHELL):
~/.bashrc
~/.cshrc
~/.shrc

/etc/profile, ~/.profile, ~/.bash_profile ~/.bashrc ~/.bash_logout Dateien werden von der Bash benutzt. Csh/Tcsh benutzen die allgemeinen Konfigurationsdateien /etc/csh.cshrc, /etc/csh.login, /etc/csh.logout und die individuellen ~/.tcshrc, ~/.cshrc, ~/.login, ~/.logout. Ein grober Ueberblick findet sich eher am Ende von ManPages? unter dem Punkt Files.

Nur als Appetitanreger zur SUSE-Situation:

Wunschtraum: Es wäre schon, wenn irgendwo ein Logfile existieren würde, der die Konfigurationsfiles protokolliert, die beim Starten der Shell verarbeitet wurden.

In der Regel wird die Reihenfolge in der entsprechenden ManPage? beschrieben.

Quellen


Fortgeschrittenenkommentare


Expertenkommentare


KategorieLinux
StartSeite | LinuxNotizen/ | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 20. November 2004 22:13 (diff))
Suchbegriff: gesucht wird
im Titel
im Text