Christoph Zurnieden: Linux -> gechrootete Umgebung erstellen

Beitrag lesen

Hi,

Dennoch verbleiben Headerdateien im $includedir - können gar wichtige Headerdateien des System beim installieren überschreiben. Weiterhin bringen manche Programme auch zusätzliche Tools mit, die zwar nicht schaden, aber das System unnötig zumüllen.

Wenn ich bei einem korrekt "autoconf-iertem" Paket ein './configrue --help' mache kommt ziemlich oben folgendes:
[...]
  --program-prefix=PREFIX prepend PREFIX to installed program names
  --program-suffix=SUFFIX append SUFFIX to installed program names
  --program-transform-name=PROGRAM
                          run sed PROGRAM on installed program names
[...]

Du kannst also die Programme nennen, wie Du lustig bist.

Ich glaube auch nicht, das Gentoo dafür vorgesehen ist, das es sich in einem chroot installiert, das müßtest Du händisch machen.

Tjo Dein Glaube scheint sich in diesem Punkt nicht mit dem Wissen von vielen Gentoonutzen und mir zu denken.

Du sagtest, das es nicht funktioniert und ich habe meine Witzchen drüber gemacht. Zugegebenermaßen sogar mit vollem Bewußtsein darüber, das Leute, die in ihrer Sig ein Gentoo-Logo haben darauf extrem empfindlich reagieren.

Also erstmal alle Dev-Tools statisch gelinkt bauen und in's chroot rüberkopieren, da der Gentoo-GCC ja nicht funktioniert, wie Du sagtest.

Nein, wie Du es verstehen willst...

Funktioniert nicht ist funktioniert nicht, da gibt es nix mißzuverstehen.

Ganz einfach: Gentoo macht es vor, daß nichts außergewöhnliches daran ist, selbst ein ganzes Betriebssystem in einer Chroot-Umgebung aufzusetzen.

Und warum funktioniert das dann bei Dir nicht?
Selbstverständlich kann ich ein ganzes Betriebsystem in einer chroot-Umgebung aufsetzen, das funktioniert z.B. mit dem letzthin vorgestelltem UML. Gut, das war jetzt etwas unfaire Beckmesserei, sorry.

Warum willst unbedingt die ganze, lang gewachsene und standardtisierte Unix-Verzeichnisstruktur umschmeißen? Weil Du meinst, das irgendwann einmal gebrauchen zu können?

Die davon Versprochenen Vorteile sind oben angegeben.

Meinst Du nicht auch, das Du es ganz sein lassen solltest, wenn Dich ein paar Verzeichnisse mehr schon irritieren können?

Du schweifst ab!

Das dritte Mal schon, vielleicht sollte ich mich im nächstem Leben mal als Komet bewerben? Was bräuchte man denn da für einen Abschluß?

Selbst als Programmierer müßte Dir klar sein, daß Du Dich auf nichts verlassen darfst, auch nicht auf quasistandardisierte Verzeichnisstrukturen, insbesondere wenn dies der User selbst verändern kann. Also bitte was soll dieser realitätsverne Vergliech zu einem Betriebssystem?

Wenn der Nutzer etwas ändert, das anderweitig mit einem Standard belegt ist, dann tut er das auf eigenes Risiko. Es gibt einige Standard, an die muß sich der Programmierer nunmal einfach halten. Was Du meinst ist der Umstand, das er selbstverständlich auch voraussetzen muß, das er nichts voraussetzen kann. Anhand von autoconf: Der Benutzer hat die Möglichkeit die Installationspfade zu ändern, Programmnamen und noch dies und das. Der Programmierer muß also alles so allgemein halten, das es auch bei der abstrusesten Konfiguration noch funktioniert. Wenn jedoch vom Benutzer gar nichts geändert wird gelten alle aktuellen Standards.

Christoph, ich weiß seit der letzten Diskussion, daß Du verdammt gut bist, aber das steht auch gar nicht im Zweifel! Das ärgerlichste ist bei Dir Dein Polemisieren statt durchdringendes Argumentieren.

Ja, ich lasse mich oft dazu verleiten.

Nichts desto Trotz nehme ich dieses Angebot hiermit an. Hilf mir über den Tellerrand, aber bitte mit Argumenten und nicht mit abwegigen Debatten über selbsterstellte Distributionen!

Das ist hier nicht abwegig, zumindest nicht so ganz, da Du im chroot *from scratch* arbeiten mußt, das Dingen ist einfach _leer_ bis auf die Verbindung zum Kernel. Du mußt also nicht genau, wie bei einer Distribution von Null anfangen, da Du den Kernel schon drin hast und gebootet. Noch ein kleiner Unterschied: Du hast immer die gleiche Hardware. Der größte Ärger beim Distributionsbauen ist also schonmal von anderen erledigt worden, du mußt nur noch für Änderungen sorgen. Die möchtest Du mittels des Gentoo-Installateurs tun.
Das funktioniert jedoch nicht. Also mußt Du das von Hand machen oder den Gentoo-Installateur reparieren. (Vermute jedoch, wie Du wahrscheinlich auch selbst, nur einen Bedienfehler) Hier mal die Methode "per Hand":

  • chroot einrichten. Ich gehe im weiteren davon aus, da Du das in /home/eddi/knast eingerichtet hast
  • wir brauchen zum Bauen alle nötigen Werkzeuge und jetzt kommt Dein Wunsch nach wirrer, pardon, geänderter Verzeichnisstruktur zum tragen. Fast alle Entwicklerwerkzeuge sind auf deutlich mehr und teilweise auch in völlig andere Verzeichnisse installiert, als Du möchtest. Also mußt Du die neu bauen, ist zumindest die einfachste Lösung. Das geht recht simpel wenn die Pakete Autoconf benutzen. Ich gehe im weiteren mal vollkommen willkürlich davon aus, das Du das Prefix auf '/home/eddi/buildtools/' gesetzt hast. Wenn die Möglichkeit zum statischem Linken gegeben ist sollte man das ausnutzen. Ein paar Libs (die statischen, meist *.a) wirst Du aber nachher noch in den chroot temporär kopieren müssen. Einfacher wäre es aber mit dynamischen Libs zu arbeiten. Wenn Dir aber da das vorgegeben Installationsverzeichnis nicht gefällt mußt Du entweder mit den Binutils spielen, Wrapper um Deine Programme wickeln oder neu bauen. Aber Du hast Recht, ich schweife mal wieder ab. Der reihe nach ist's besser.
    -  alles von /home/eddi/buildtools/ nach /home/eddi/knast/home/eddi/buildtools/ kopieren. Funktion kontrollieren, denn meist hat man irgendwas vergessen.
  • alle gewünschten Programmpakete in /home/eddi/knast/home/eddi/buildtools/ kopieren, auspacken, nach Wunsch konfigurieren, bauen und installieren. Wenn irgendeine Lib fehlt beschweren sich in der Reihenfolge ./configure, Compiler/Interpreter, Programm. Um letzteres herauszubekommen ist eigentlich das 'make check' vorgesehen, das aber leider seltenst benutzt wird (nur bei Perlpaketen findet man es wirklich regelmäßig), das installierte Programm ist also versuchsweise zu starten. 'ldd' kann evt auch helfen. Kommt es zu merkwürdigen Abstürzen ist 'strace' Dein Freund.
    Da Du eine vom Standard abweichende Verzeichnisstruktur haben möchtest -- was ja der einzige Grund für den ganzen Driss ist -- würde ich empfehlen fehlende Libs im chroot zu bauen und die Installation per Autoconf zu regeln, wie bei den Programmen oben auch. Trotz langjährigen Kampfes gegen diese Unsitte haben einige Libs noch Pfade fest eingebaut, was sich mitunter ja noch nicht einmal vermeiden läßt. Willst Du also wie oben angedeutet Ärger umgehen baue sie im chroot neu.
  • nicht jedes Programm besitzt ein Autoconf. Das ist zu individuell um hier behilflich sein zu können, das mußt Du leider selber lernen. Es ist aber auch nicht wirklich schwierig.
  • einige Programm, die Du installieren möchtest wollen evt Dinge, die Du nicht bereitgestellt hast bzw nicht bereitstellen willst. Das /proc System kannst Du z.B. einfach einhängen, andere Dinger mögen jedoch nicht so simpel sein. Es ist dann zu überlegen, ob nicht ein vollständiges Parallelsystem (UML, VMWare o.ä.) besser wäre.

So, das wäre jetzt die grobe Richtung.

Nebenher fange ich auch an C zu probieren, aber:

Du schweifst ab!

Das vierte Mal! Was verdient man denn so als Komet?

Du schweifst ab!

Fünfmal? Also: ich habe gerade das Arbeitsamt angerufen, die haben nicht nur keine Stelle frei, was ja ncoh normal ist, sondern wissen gar nicht, das es den Beruf "Komet" überhaupt gibt! Ja, hält man sowas denn für möglich? Sachen gibt's!

Naja, was das betrifft ist es doch eher Geschmacksache, viel Unterschied finde ich da nicht. Aber ich kenne die ganz neuen SuSEs auch nicht.

Es ist auch eine spührbare Frage der Geschwindigkeit

Verglichen mit welcher anderen Distribution? Verglichen mit "nur Kernel selber bauen", "nur Kernel und Grundlibs selber bauen"? Verglichen mit einer auf eine Prozessorfamilie optimierten Distribution?

Du schweifst ab!

Aller guten Dinge sind sechs? Sollte ich denn jetzt wirklich mal eine Stellenanzeige in der Times schalten?

so short

Christoph Zurnieden