3.1.2009

Package Management

default

 

Stand der Arbeit 3.1.2009

Ich habe wieder angefangen, das LFS-Grundsystem upzudaten auf LFS 6.3. Beim letztenmal (Juli 2006) war es dann dabei geblieben, aus Mangel an Zeit und Motivation. Wenn ich etwas nur für mich allein mache, fällt es mir deutlich schwerer. Aber diesmal habe ich eventuell einen, der mir hilft.

3.1.2009: Die Anfänge von 01 und 02.

24.8.2008: Das LFS-Grundsystem ist fertig (in unstable).

 

Download der Skripten

Download stable (1 MB, Stand LFS-BOOK-SVN-20050626 und blfs-book-cvs-html-2005-06-26)

(Wie immer: "Stable" ist die Version, mit der ich hier arbeite, aber man kriegt teilweise die Tarballs nicht mehr und kann es also heute nicht mehr so installieren wie 2005.)

Download unstable (1 MB, Stand LFS-Grundsystem: LFS-BOOK-6.3-HTML, übrige Infodateien siehe infolist.html ):

Wer mir helfen möchte: Bitte den Unstable-Tarball herunterladen und dann wahlweise:

  • Testweise das LFS-Grundsystem installieren
  • Testweise einzelne aktuelle (und laut result.txt "resolved") Pakete installieren
  • Infos updaten nach dem neuesten BLFS-Book
  • Neue Pakete hinzufügen

Bitte nur Info-Dateien behandeln, deren Tarballs veraltet sind und die noch keinen Maintainer haben. Am besten mit den Paketen im BLFS-Book Kapitel 26 (X-Libraries) beginnen (aber nicht mit qt beginnen), siehe auch infolist.html Das genaue Vorgehen steht in der Datei UPGRADING.txt im Tarball. Upgedatete Infos kann man mir einfach per Mail schicken, siehe auch mailinglist.html Am besten vorher schon mal Bescheid sagen, damit nicht zwei das Gleiche machen.

 

Installieren des LFS-Grundsystems

Man braucht mindestens 8 GB, wenn man hinterher noch viel aus dem BLFS-Book installieren will, und wenn man die Tarballs (gut 1 GB) auch auf der Systempartition lagern möchte (empfohlen). Das Kernel, das ich hier verwende, ist linux-2.6.16. Eine Kopie meiner Kernel-Konfigurationsdatei .config liegt in /install/docs.

Man kann das LFS-Grundsystem von X11 aus mit drei Xterms installieren. In einem liest man das LFS-Book, in dem zweiten sieht man sich z.B. die anwachsende Logdatei an, und im dritten ist man root und installiert.

Die Partition des Hostsystems sei /dev/hda12, gemountet auf /, die neue LFS-Partition sei /dev/hda11, gemountet auf /hda11.

Der heruntergeladene Tarball infos-<datum>.tar.gz wird in eine leeres Directory /hda11/install/ kopiert und dort entpackt. Dann wird ein Directory '/install/tarballs' angelegt. Da kommen alle Tarballs und Patches hinein.

Dann wechselt man nach /hda11/install/infos und trägt seine individuellen Daten in "00_Personal.settings" ein. Ich bleibe beim Installieren immer in /install/infos, weil dann das Vervollständigen mit Tab funktioniert.

Wenn man mit den Infos "stable" installiert (wovon ich im Augenblick abrate, die Pakete sind zu alt):

  • ../_toolinst 001_LFS-toolchain (2 Stunden)
  • ../_lfsinst 002_LFS-mainbuild (3,5 Stunden)

Wenn man mit den Infos "unstable" installiert, um zu testen, ob sie laufen, öffnet man in einem weiteren xterm /install/infos/001_LFS-toolchain.info und geht die Liste der Dependencies einzeln durch. Dann dasselbe nochmal für 002_LFS-mainbuild.info.

  • für jedes Paket in 001_LFS-toolchain: ../_toolinst <paketname>
  • für jedes Paket in 002_LFS-mainbuild: ../_lfsinst <paketname>
  • zum Schluß eine neue Strophe für /dev/hda11 nach /boot/grub
  • reboot -->/dev/hda11

Am Ende von glib-, nach 1 bis 2 Stunden "mainbuild", muß man Enter drücken. Das tzselect-Skript hängt. (Diesmal ist es durchgelaufen, ich weiß jetzt nicht, warum.)

Wenn ein Paket nicht durchläuft, bitte ich um die Logdatei. Man sollte sich dann /install/fdiff/<paketname>.fdiff ansehen, und Einträge, die nicht hineingehören, von Hand herauslöschen, z.B. wenn man zwischendurch Mail empfangen hat. Dann kann man (immer noch in /install/infos) ../_uninst <paketname> aufrufen.

 

Installieren der BLFS- und anderer Pakete (ab hier: Stand Juni 2005)

  • ../_inst 01_After-LFS
  • reboot
  • ../_inst 10_Sound1 (er macht dann 02, 03, 04, usw. bis 10)
  • reboot (ab jetzt macht es "Ping", wenn ein Paket fertig ist)
  • ../_inst 23_Extra1

Am Ende von personal-settings, ein paar Sekunden nach dem Start, muß man Enter drücken, wenn der User angelegt wird, und dann das Paßwort für den User eingeben.

Am Ende von X11R6, ca. zwei Stunden nach "01_...", wenn das X-Bild erscheint mit dem grau gemusterten Hintergrund und dem Mauscursor in Form eines X, muß man ctrl-alt-Backspace drücken, um die X-Session wieder zu beenden.

Am Ende von xinetd, 10 Minuten nach X11R6, muß man Enter drücken.

Am Ende von samba, ca. 4 Stunden nach X11R6, muß man Enter drücken.

 

Wozu braucht man "Package-Management"

Beim Installieren geht nicht immer alles glatt

Man braucht unbedingt eine Möglichkeit, alles was ein "Paket" installiert hat, sämtliche Dateien, auf einfache Weise wieder zu löschen. Die Package-Management-Lösungen, die es gab, als ich mein erstes LFS-System installieren wollte, hatten mir nicht gefallen. Keine davon hatte mir das Gefühl gegeben, die Dinge wirklich unter meiner eigenen Kontrolle zu haben. Deshalb habe ich mir selbst zwei kleine Skripten geschrieben: "_inst" und "_uninst". Außerdem bekommt jedes Paket eine Datei mit Informationen, wie es installiert werden muß. Die Skripten und die Infos sind hier verfügbar:

Noch zu lösende Probleme mit dem neuen System

  • Drag&Drop in geöffnete Programme funktioniert nur mit wenigen Programmen
  • Drag&Drop auf Buttons im Startpanel funktioniert nur mit dem Xfce-Filebrowser
  • Der Xfce-Filebrowser ist zu fehlerhaft, um ständig damit zu arbeiten

Screenshots: Neuer Arbeitsrechner

Skripten zum Installieren:

  • _toolinst zum Installieren der "Toolchain", siehe Kapitel 5 des LFS-Book
  • _lfsinst zum Installieren in der chroot-Umgebung, siehe Kapitel 6-8 des LFS-Book
  • _inst zum Weiterinstallieren nach dem Booten, für BLFS- und weitere Pakete

Skripten zum Deinstallieren und zum Prüfen der "infos" und des Installierungszustandes:

  • _forceinst (ein Symlink) zum Installieren über eine teilweise Installation (nicht empfehlenswert, aber manchmal nicht zu umgehen)
  • _uninst zum normalen Deinstallieren (ohne /etc anzutasten)
  • _purge (ein Symlink) zum Deinstallieren, auch aus /etc (nicht empfehlenswert, besser von Hand)
  • _check zum Anzeigen, was installiert ist und was nicht (im Augenblick braucht es eine Ewigkeit, das muß nochmal geändert werden)
  • _check1 zum Testen, ob ein Paket vollständig installiert ist.
  • _bak zum Herstellen eines Archivs in /install/bak, bestehend aus den infos, Dokumentationen und Skripten und eines weiteren Archivs aus den fdiffs, tdiffs und logs

Für _toolinst und _lfsinst gibt es noch keine Deinstallierungsskripten, nur für die Pakete, die danach kommen.

So kann man selbst weitere Pakete und "Infos" hinzufügen:

  • _before <paketname> sammelt den Dateibaum in /tmp,
  • _after <paketname> sammelt den Dateibaum und erzeugt <paketname>.fdiff und <paketname>.tdiff, für den Fall, daß man etwas ganz und gar von Hand installieren möchte.
  • "_mkdefaultinfos" legt zu jedem Tarball, der noch keine .info-Datei hat, ein (weitgehend leeres) *.info an, so daß man nicht das Template 200mal von Hand kopieren muß
  • "_testinfos" zeigt an, welche infos ...
    • es überhaupt gibt
    • in übergeordneten infos liegen
    • noch nicht bearbeitet sind
    • keinen Tarball haben
    • einen Patch nötig haben, der noch fehlt
    • fehlende Dependencies haben
    • im COMMANDS-String Single-Quotes haben, die nicht escaped sind

 

Auflösen von Abhängigkeiten

Das Skript "_mkdepends" liest in den fertig bearbeiteten *.info-Dateien die "DEPENDS"-Variable und macht daraus eine rohe und eine sortierte Liste, nach der man installieren kann. Es ruft ein kleines C-Programm "depsort" auf, das mit dabei ist (siehe auch depsort.html ).

Man kann sich schrittweise durch die Abhängigkeiten vorantasten. _check ermittelt (unter anderem), welche "infos" installiert sind, und schreibt eine Datei "inst.txt" für "_mkdepends". Man kann also ein paar infos installieren, dann _check und _mkdepends aufrufen, und sehen, welche infos als Nächstes installiert werden können.

 

Allgemeine Hinweise

Ob er "hängt" oder noch kompiliert, sieht man am besten mit "tail -f /install/logs/<paketname>.log" auf einer zweiten Konsole. Man darf aber nicht zu ungeduldig sein. Es können schon mal zwei, drei Minuten vergehen, bevor sich in der Logdatei wieder etwas tut.

Wenn ein Fehler auftritt, hält _inst an (endlich). Dann muß man ihm Zeit geben, sich entlang den Dependencies wieder zurückzuhangeln, die Logdatei /install/logs/<paketname> ansehen, die Datei /install/fdiffs/<paketname> kontrollieren, meistens einfach löschen (wenn nur Dateien in /install/build drin sind), den Fehler im "info" korrigieren und nochmal starten.

Am Ende von längeren Super-Infos (z.B. denen, die mit Nummern beginnen) sieht es manchmal so aus, als würde er hängen. Er arbeitet aber, und zwar prüft er nochmal die Dependencies, ob auch alle Dateien tatsächlich vorhanden sind.

Hin und wieder kommt es vor, daß während des Kompilierens Dateien in /tmp/ entstanden sind. Die muß man von Hand aus der fdiff-Datei entfernen, sonst wird das Paket als "broken" gewertet, sobald die Datei aus /tmp/ verschwunden ist.

 

Worauf man noch achten sollte

  • Wenn man _inst von Hand abbrechen möchte, sollte man es am Anfang eines Paketes machen, solange er noch die Dependencies prüft oder am Kompilieren ist.
  • Wenn man _inst im falschen Moment abbricht, z.B. wenn ein paar Dateien schon installiert, aber fdiff noch nicht erzeugt wurde, kann man mit '/install/_after <paketname>' fdiff und tdiff nachträglich von Hand erzeugen, damit man deinstallieren kann.
  • In der Datei "00_Personal.settings" stehen u.a. die Paßworte für Internet-, Email- und Usenetprovider. Während des Installierens stehen sie dann auch im Speicher. Man sollte deshalb nur im Single-User-Mode (Runlevel 1) und ohne swap (swapoff -a) installieren, dabei nicht ins Internet gehen und hinterher einen Kaltstart machen (mit Speichertest).
  • sobald X installiert ist, kann man als root startx aufrufen, und mit 6 xterms unter twm extrem cool :-)) weiterinstallieren
  • nach 12_Printer (irgendwann) muß man /usr/share/apsfilter/SETUP aufrufen, leider kann man nur die Treiber unter "3" (native ghostscript drivers) benutzen
  • nach 18_Sound2-Scanner-Photo (irgendwann) muß man xmms aufrufen und als Output-Plugin "esound" wählen
  • nach 20_Brows-Mail-News (irgendwann) muß man firefox und thunderbird je einmal als root aufrufen

 

Wie die Skripten arbeiten

_inst sammelt einmal sämtliche Datei- und Verzeichnisnamen, die sich im Augenblick auf dem Rechner befinden, dann installiert es das Paket, und dann sammelt es noch einmal alle Datei- und Verzeichnisnamen und vergleicht (mit diff). Die Differenz dieser beiden Listen wird gespeichert, und _uninst löscht einfach die Dateien, die in der Differenzliste stehen.

_uninst löscht aber nur die Dateien, die nicht in /etc stehen. In /etc wird ja viel von Hand eingetragen und geändert. Ich glaube, es ist einfach besser, wenn man in /etc nur von Hand herumlöscht. (Wenn man unbedingt will, kann man _uninst aber auch über ein Link unter dem Namen _purge aufrufen, dann werden wirklich alle Dateien eines Pakets gelöscht.)

_inst, _uninst & Co.:

_inst   Paket wird installiert, sofern keine der in .fdiff gelisteten Dateien vorhanden ist
_forceinst   Paket wird in jedem Fall installiert. Dateien die schon vorher vorhanden waren, werden anschließend in .fdiff fehlen und können dann von _uninst bzw. _purge nicht mehr entfernt werden.
_uninst   Paket wird deinstalliert (d.h. die Dateien die in .fdiff gelistet sind, werden gelöscht), Dateien in /etc bleiben jedoch erhalten
_purge   alle Dateien die in .fdiff gelistet sind, werden gelöscht, auch die in /etc
_funcs   von _inst & Co. gemeinsam genutzte Funktionen und Variablen
_check   Vergleich zwischen vorhandenen Dateien und in .fdiff gelisteten Dateien

Ergebnisse von _check <paketname>:

  • Wenn keine der Dateien, die in .fdiff gelistet sind, vorhanden ist, oder wenn .fdiff nicht vorhanden ist, ist das Paket "nicht installiert"
  • Wenn alle Dateien, die in .fdiff gelistet sind, vorhanden sind, oder wenn .fdiff eine leere Datei ist (Länge Null), ist das Paket "installiert"
  • Wenn einige der Dateien die in .fdiff gelistet sind, vorhanden und einige nicht vorhanden sind, ist das Paket "broken"

_check ohne Parameter zeigt an:

  • installierte Pakete
  • nicht installierte Pakete
  • teilweise installierte Pakete
  • Tarballs ohne Info-Datei

Das Subskript <paketname>.info

Zum Installieren eines Pakets muß zuerst der Tarball entpackt, und dann müssen ein paar Befehle ausgeführt werden. Im Prinzip sind das immer die drei Befehle "./configure", "make" und "make install", aber es können manchmal auch ein paar mehr oder weniger, oder auch ganz andere Befehle sein. Zum Beispiel sind manche Pakete nicht mit "autoconf" und "automake" gemacht, sondern haben nur einen Makefile (Steuerdatei für den "make"-Befehl), manche Pakete brauchen auch ein Startskript in der Boot-Konfiguration des Systems (z.B. der Maustreiber "gpm"), oder manche Pakete müssen ein paar Zeilen in /etc/modules.conf eintragen (z.B. die "Alsa"-Treiber), ein paar Dateien in /dev anlegen oder einen speziellen User anlegen (z.B. mail oder lp).

Aus diesem Grunde schreibe ich die Installations-Befehle, die zu einem Paket gehören, in eine Datei <paketname>.info, die dann von _inst gelesen und ausgeführt wird. (Die Bezeichnung ".info" ist nicht so ganz treffend, ".inst" wäre vielleicht besser gewesen, aber nun ist es schon passiert, ich bitte um Nachsicht.)

Dateien und Verzeichnisse:

<paketname>                                                         Name des Tarballs ohne Endung(en) .tar, .gz, .bz2, usw.
/install/                                                             Alles was mit _inst und _uninst gehandhabt wird
/install/tarballs/<paketname>.<endung>   Tarballs und Patches der Pakete
/install/build/                                                 Zum Entpacken und Kompilieren eines Pakets
/install/infos/<paketname>.info                 Dateien mit Installationsbefehlen
/install/logs/<paketname>.log                     Gesammelte Meldungen
/tmp/<paketname>.fbefore                               Gesammelte Dateinamen - vorher
/tmp/<paketname>.fafter                                 Gesammelte Dateinamen - nachher
/install/fdiffs/<paketname>.fdiff             Differenzlisten für _uninst
/tmp/<paketname>.tbefore                               Gesammelte Dateinamen (mit Attributen) - vorher
/tmp/<paketname>.tafter                                 Gesammelte Dateinamen (mit Attributen) - nachher
/install/tdiffs/<paketname>.tdiff             Erweiterte Differenzlisten (auch die Dateien, die nicht neu angelegt, sondern nur geändert wurden)

Ablauf von _inst:

  • aktueller Dateibaum: --> /tmp
  • Tarball entpacken: --> /install/build
  • Subskript /install/infos/<tarball>.info:
    • ./configure ; make ; make install ; ...
    • weitere Maßnahmen, /etc, Bootskripte, ...
  • aktueller Dateibaum: --> /tmp
  • Differenz der Dateibäume: aufbewahren
  • entpackten Tarball: Löschen

Ablauf von _uninst:

  • Differenz der Dateibäume: Löschen (außer /etc)

Hinzufügen weiterer Tarballs:

Die Struktur der Subskripte ist abgeschaut bei Matthias S. Benkmann Zuerst kommen ein paar Variablen, dann ein paar Anweisungen in Single Quotes.

 

Beispielpaket: "bc-1.06":

Paketname:                         bc-1.06
Tarball:                             /install/tarballs/bc-1.06.tar.gz
entpacktes Directory:   /install/build/bc-1.06
Infodatei:                         /install/infos/bc-1.06.info
Logdatei:                           /install/logs/bc-1.06.log
File-Diff-Datei:             /install/fdiffs/bc-1.06.fdiff
Touch-Diff-Datei:           /install/tdiffs/bc-1.06.tdiff

bc-1.06.info:

DOWNLOAD='http://ftp.gnu.org/gnu/bc/'
AUTOUNPACK='yes'
UNPACKED=''
DEPENDS=''
COMMANDS='
./configure --prefix=/usr &&
make &&
make install
'

Erläuterung:

DOWNLOAD   URL des Tarballs
AUTOUNPACK='yes'   Tarball soll von _inst entpackt werden
AUTOUNPACK='no'   Kommandos zum Entpacken sind in den COMMANDS enthalten
UNPACKED   vom Paketnamen abweichender Name des entpackten Verzeichnisses
DEPENDS   Paketnamen*, von denen "dieses" Paket abhängig ist. Die hier genannten Pakete werden von _inst automatisch installiert, bevor die Installation "dieses" Pakets begonnen wird.
COMMANDS   Shell-Kommandos zum Installieren

*) Paketname ist der Name des Tarballs, ohne Endung wie .tar, .gz, .bz2, usw.

bc-1.06.fdiff:

4029a4030
> /usr/bin/bc
4063a4065
> /usr/bin/dc
11064a11067
> /usr/share/info/bc.info
11097a11101
> /usr/share/info/dc.info
12408a12413
> /usr/share/man/man1/bc.1
12449a12455
> /usr/share/man/man1/dc.1

Erläuterung:

4029a4030
(und andere Nummern)
  Zeilennummern in /tmp/bc-1.06.fbefore bzw. fafter (nicht wichtig für _inst bzw. _uninst)
> /usr/bin/bc
> /usr/bin/dc
  hinzugekommen: Gleitkomma-Rechner für algebraische Ausdrücke   und für umgekehrt polnische Notation (HP Taschenrechner)
> /usr/share/info/bc.info
> /usr/share/info/dc.info
  hinzugekommen: Info Pages
> /usr/share/man/man1/bc.1
> /usr/share/man/man1/dc.1
  hinzugekommen: Manual Pages

bc-1.06.tdiff:

1652c1652
< Sun Jan   5 09:51:24 2003   755           4096 /install/build
---
> Sun Jan   5 09:51:33 2003   755           4096 /install/build
2175c2175
< Sun Jan   5 09:51:25 2003   600                 0 /dev/tty1
---
> Sun Jan   5 09:51:33 2003   600                 0 /dev/tty1
3945c3945
< Sun Jan   5 09:51:25 2003 1777           4096 /tmp
---
> Sun Jan   5 09:51:33 2003 1777           4096 /tmp
3998c3998
< Sun Jan   5 09:51:25 2003   644                 0 /tmp/bc-1.06.tafter
---
> Sun Jan   5 09:51:33 2003   644       307200 /tmp/bc-1.06.tafter
4000c4000,4001
< Sun Jan   5 09:51:25 2003   644       307200 /tmp/bc-1.06.tbefore
---
> Sun Jan   5 09:51:25 2003   644     2757439 /tmp/bc-1.06.tbefore
> Sun Jan   5 09:51:25 2003   644     1389780 /tmp/bc-1.06.fbefore
4067c4068
< Sun Jan   5 09:51:14 2003   755           8192 /usr/bin
---
> Sun Jan   5 09:51:33 2003   755           8192 /usr/bin
4444a4446,4447
> Sun Jan   5 09:51:33 2003   755       192714 /usr/bin/bc
> Sun Jan   5 09:51:33 2003   755       115312 /usr/bin/dc
10075c10078
< Sun Jan   5 09:51:21 2003   755           8192 /usr/share/info
---
> Sun Jan   5 09:51:33 2003   755           8192 /usr/share/info
10138c10141
< Sun Jan   5 09:46:59 2003   644         76624 /usr/share/info/dir
---
> Sun Jan   5 09:51:33 2003   644         76701 /usr/share/info/dir
10339a10343
> Sun Jan   5 09:51:33 2003   644         37674 /usr/share/info/bc.info
10343a10348
> Sun Jan   5 09:51:33 2003   644         15365 /usr/share/info/dc.info
10751c10756
< Sun Jan   5 09:51:21 2003   755         12288 /usr/share/man/man1
---
> Sun Jan   5 09:51:33 2003   755         12288 /usr/share/man/man1
11232a11238,11239
> Sun Jan   5 09:51:33 2003   644         34397 /usr/share/man/man1/bc.1
> Sun Jan   5 09:51:33 2003   644         13075 /usr/share/man/man1/dc.1

Erläuterung:

1652c1652
---
(und andere Nummern und Trennlinien)
  Zeilennummern und Trennlinien in /tmp/bc-1.06.tbefore bzw. tafter (nicht wichtig für _inst bzw. _uninst)
< Sun Jan 5 09:51:24 2003 755 4096 /install/build
>_Sun Jan 5 09:51:33 2003 755 4096 /install/build
  Directory /install/build wurde benutzt (Uhrzeit geändert), aber nicht weiter verändert
< Sun Jan 5 09:51:25 2003 600 0 /dev/tty1 .............
> Sun Jan 5 09:51:33 2003 600 0 /dev/tty1
  /dev/tty1 (Konsole 1) wurde benutzt (für Ein-/Ausgabe), aber nicht verändert
< Sun Jan 5 09:51:25 2003 1777    4096 /tmp
> Sun Jan 5 09:51:33 2003 1777    4096 /tmp
< Sun Jan 5 09:51:25 2003  644       0 /tmp/bc-1.06.tafter
> Sun Jan 5 09:51:33 2003  644  307200 /tmp/bc-1.06.tafter
< Sun Jan 5 09:51:25 2003  644  307200 /tmp/bc-1.06.tbefore
> Sun Jan 5 09:51:25 2003  644 2757439 /tmp/bc-1.06.tbefore
> Sun Jan 5 09:51:25 2003  644 1389780 /tmp/bc-1.06.fbefore
  in /tmp wurden die Sammeldateien tbefore, tafter und fbefore angelegt (abgebildet ist der Zeitpunkt, zu dem das /tmp-Directory durchsucht wurde)
< Sun Jan 5 09:51:14 2003 755   8192 /usr/bin
> Sun Jan 5 09:51:33 2003 755   8192 /usr/bin
> Sun Jan 5 09:51:33 2003 755 192714 /usr/bin/bc
> Sun Jan 5 09:51:33 2003 755 115312 /usr/bin/dc
  in /usr/bin wurden die Kommandos bc und dc ergänzt
< Sun Jan 5 09:51:21 2003 755  8192 /usr/share/info
> Sun Jan 5 09:51:33 2003 755  8192 /usr/share/info
< Sun Jan 5 09:46:59 2003 644 76624 /usr/share/info/dir
> Sun Jan 5 09:51:33 2003 644 76701 /usr/share/info/dir
> Sun Jan 5 09:51:33 2003 644 37674 /usr/share/info/bc.info
> Sun Jan 5 09:51:33 2003 644 15365 /usr/share/info/dc.info
  in /usr/share/info wurden Info Pages für bc und dc ergänzt
< Sun Jan 5 09:51:21 2003 755 12288 /usr/share/man/man1
> Sun Jan 5 09:51:33 2003 755 12288 /usr/share/man/man1
> Sun Jan 5 09:51:33 2003 644 34397 /usr/share/man/man1/bc.1
> Sun Jan 5 09:51:33 2003 644 13075 /usr/share/man/man1/dc.1
  in /usr/share/man wurden Manual Pages für bc und dc ergänzt

Erkenntnisse, die aus "bc-1.06.tdiff" gewonnen werden:

  • In /etc wurden keine Dateien verändert
  • Es wurden keine Dateien gelöscht, nur hinzugefügt
  • /install/build wurde wieder geleert (wie erwartet)

 

Die Datei "Persönliche Einstellungen":

Ein weiteres Ziel der Installierungsskripten war für mich: Falls die unsachgemäße Installierung eines Pakets mal so viel Schaden verursacht haben sollte, daß im Grunde das ganze Linux unbrauchbar geworden ist, möchte ich gern die Möglichkeit haben, die gesamte Installierung zu wiederholen - mit möglichst wenig Arbeit.

Deshalb habe ich meine persönlichen Einstellungen, z.B. die Telefonnummer des Internet-Providers, mein Einwahl-Paßwort, mein Username, meine Soundkarte, mein X-Server, usw. in einer einzigen Datei untergebracht: "Personal Settings". Alle Pakete, die etwas davon benötigen, z.B. pppd oder exim, sollen ihre spezielle Konfiguration aus dieser Datei nehmen.

Die Datei besteht aus Kommandos, die Variablen setzen. Sie wird zu Anfang eines Durchlaufs von _inst einmal aufgerufen. Nach diesem Aufruf stehen natürlich sämtliche Paßworte im Klartext im Speicher. Aus diesem Grunde darf _inst nur aufgerufen werden, wenn das System im Single-User-Mode läuft (Runlevel 1) und keine Internetverbindung besteht.

Beispielzeilen aus "personal-settings":

MY_USER_ID="giles"
MY_DOMAINNAME="sunnydale.org"
MY_HOSTNAME="magicbox"
MY_REALNAME="Tony Head"
STD_GATEWAY="192.168.17.41"
STD_GATEWAY_IF="eth0"
CDROM=
BURNER="/dev/hdc"
PARTITIONS="/dev/hda1 /dev/hda2 /dev/hda3"
PART_MOUNTS="/hda1 /hda2 /hda3"
PART_SYSTEMS="vfat ext2 ext2"
PART_OPTIONS="defaults,noauto defaults,noauto defaults,noauto"
SOUND_CARD="sbawe"
SOUND_ISAPNP="no"

 

Superpakete:

Man kann Info-Dateien schreiben, die selbst keinen Tarball und auch keine Kommandos enthalten, sondern nur "Dependencies" (Abhängigkeiten von anderen Paketen). Wenn eine solche Info-Datei abgearbeitet wird, werden die Pakete installiert, die unter "DEPENDS=" aufgezählt sind.

abatz.de Jörn Abatz - Technische Software Impressum