Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Was fehlt?

Es liegt in der Natur der Sache: Ein Wiki ist niemals fertig. Wir geben uns große Mühe, mit der Entwicklung Schritt zu halten; lassen Supportanfragen direkt in neue Artikel einfließen … aber auch wir sind nicht perfekt. Wenn du hier nicht fündig wirst: Nicht schmollen - Bescheid sagen! Unter hallo@uberspace.de steht dir unser Team gerne bereit. Hand drauf!

system:toast

Inhaltsverzeichnis

toast

Falls du bereits Homebrew unter Mac OS X nutzt und mit dem Umgang ohnehin vertraut bist, lohnt sich für dich ggfs. einen Blick auf Homebrew für Linux zu werfen, bevor du die Benutzung eines neuen Tools erlernen musst.

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 auf 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: 2015/03/30 21:51 von uber