Inhaltsverzeichnis

toast

toast ist ein „paketloser Paketmanager“ für Software, die du auf deinem Uberspace installieren willst. Doch wozu braucht man sowas?

Gelegentlich kommt es vor, dass du auf deinem Uberspace Tools benötigst, die entweder nicht global installiert sind oder wo die globale Version zu alt ist. Letzteres kann durchaus mal vorkommen, weil Red Hat, deren Quellpakete Basis der von uns eingesetzten Linux-Distribution CentOS sind, in Bezug auf Updates ein Prinzip namens „Backporting“ einsetzt - das bedeutet, dass die in der Distribution enthaltene Software über mehrere Jahre hinweg gepflegt wird, aber in der Regel nicht dergestalt, dass neue Versionen bereitgestellt würden, sondern in Form von Patches, die Bugfixes und Sicherheitslücken aus neueren Versionen eines Pakets zurückportieren. Die zentral von uns bereitgestellte Software kann von daher durchaus auch mal etwas älter sein - was aber nicht bedeutet, dass sie ungepatchte Sicherheitslücken beinhalten würde. Auf der Website von Red Hat kannst du mehr über Backporting erfahren.

Nun steht dir grundsätzlich die Möglichkeit bereit, jederzeit Sourcen irgendwelcher Software innerhalb deines Uberspaces herunterzuladen, zu entpacken, zu konfigurieren, zu kompilieren und dann (mit einem geeigneten Prefix) zu installieren. Das funktioniert; macht aber auch entsprechend Arbeit. Hier kommt toast ins Spiel: Statt ein zentrales Paket-Repository zurückzugreifen, sucht es von dir gewünschte Software an einer Reihe üblicher Orte (freshmeat, Google Code, SourceForge, ftp.gnu.org und CPAN), lädt standardmäßig die aktuellste Version herunter und entpackt, kompiliert und installiert sie innerhalb deines Uberspaces. Dabei kannst du mehrere Versionen einer Software parallel installieren; mit Symlinks stellt toast jeweils eine davon als „armed“, also gewissermaßen als „aktiviert“ bereit.

Anwendung

Im Grunde brauchst du dir die Anwendung von toast nur einen Befehl zu merken:

[mareike@neon ~]$ toast arm <paketname>

Das toast-Kommando arm ist eine Kurzfassung für toast add <paketname> (Link zum Paket suchen und zur lokalen Datenbank hinzufügen), toast get <paketname> (Source herunterladen), toast build <paketname> (Source kompilieren und installieren) und dann letztlich dem eigentlichen toast arm <paketname>, was bedeutet, dass Symlinks in ~/.toast/armed/bin angelegt werden, was wiederum in deinem PATH liegt, so dass du das frisch installierte Programm auch direkt nutzen kannst.

toast kann aber noch mehr - vom Rebuilden von Paketen über das Management verschiedener Versionen bis hin zur sauberen Deinstallation verschiedener Pakete. Die man page, die du mit man toast aufrufen kann, erläutert dir die verschiedenen Möglichkeiten.

Beispiel

Ein konkretes Beispiel: Vielleicht entwickelst du Software mit node.js und willst mittels npm zusätzliche Module dafür installieren. Im Regelfall klappt das von Haus aus, allerdings schlägt die Installation einiger beliebter Module wie zum Beispiel socket.io oder express.js mit Fehlern fehl, die darauf zurückzuführen sind, dass die von uns zentral bereitgestellte Version von tar nicht aktuell genug ist - siehe z.B. die Issues 871, 1274, 1356 oder 1409. Es gibt offenbar Bestrebungen, npm mit einer eigenen tar-Implementierung auszustatten, aber derzeit ist das noch Zukunftsmusik.

Du folgst also der Dokumentation zur npm-Installation und gibst ein:

[mareike@neon ~]$ echo "prefix = $HOME" > ~/.npmrc
[mareike@neon ~]$ curl http://npmjs.org/install.sh | clean=no sh

Soweit sollte auch alles klappen. Nun versuchst du, socket.io zu installieren - und das sieht gar nicht gut aus:

[mareike@neon ~]$ npm install socket.io
npm ERR! tar "-mvxpf" "-" "-o" "-C" "/tmp/npm-1316374363676/1316374366393-0.93632782693021/contents/___package.npm" tar: Ignoring unknown extended header keyword `LIBARCHIVE.creationtime'
...
npm ERR! Error: Failed tar "-mvxpf" "-" "-o" "-C" "/tmp/npm-1316374363676/1316374366393-0.93632782693021/contents/___package.npm"
...
npm not ok

(Genaugenommen ist das nicht mal ein Fehler in tar. tar unterstützt nämlich erweiterte Metadaten in den Headern von Tarballs. Es gibt mit den obigen Meldungen dann lediglich aus, dass es Metadaten vorfindet, die es nicht kennt - entpackt davon abgesehen den Tarball aber ohne Probleme. npm behandelt das lediglich als einen Fehler.)

Nun kommt toast ins Spiel:

[mareike@neon ~]$ toast arm tar

Es dauert rund eine Minute, dann ist die neue tar-Version fertig gebaut und installiert. Du kannst das mittels which verifizieren:

[mareike@neon ~]$ which tar
~/.toast/armed/bin/tar

Dann versuchen wir's jetzt nochmal:

[mareike@neon ~]$ npm install socket.io
socket.io@0.8.4 ./node_modules/socket.io 
├── policyfile@0.0.4
├── redis@0.6.6
└── socket.io-client@0.8.4

Problem gelöst - mit toast!

system/toast.txt · Zuletzt geändert: 2011/09/19 14:29 von uber
Recent changes RSS feed Driven by DokuWiki Valid XHTML 1.0 Valid CSS