Socke hat geschrieben:Ich wollte eigentlich ein Plugin für das neue gThumb schreiben. D.h. ich bräuchte gThumb 2.11 (development,
http://live.gnome.org/gthumb); Das hängt aber von der libunique (
http://live.gnome.org/LibUnique) ab.
gThumb ist ein Bildverwalter und libunique eine Bibliothek um das mehrmalige Starten einer Anwendung zu verhindern.
Dann müsste ich für ein IPK-Paket GThumb statisch linken. Systembibliotheken darf der Listaller nicht ersetzen, schreibt man ein Script, was sowas macht bekommt man eine kritische Warnung beim Paketbau. Systembibliotheken werden generell vom Distributionseigenen Paketmanager verwaltet, alles Andere wäre auch Sicherheitstechnisch gefährlich.
Ich dachte, mit Listaller könnte man auch updaten?
Ja, IPK-Anwendungen können per Updater instand gehalten werden.
Wenn der Listaller den Paketmanager nicht ersetzen soll, soll er ihn dann umgehen? Mein persönlicher Paketmanager soll doch bitte wissen, welche Software alles installiert ist (ausgenommen development-Versionen). Selbstkompiliertes soll da auch mit rein (Übersichtlichkeit/einfachere Deinstallation/Upgrade). Zumal ich nur ungern verschiedene Software benutze, die meine Software verwaltet.
Der Listaller-Manager verwaltet
alle Software auf dem System, die eine GUI hat, dazu gehört auch selbskompiliertes. (Nur das man eigene bui,ds nicht mit dem Manager löschen kann, da der Listaller nicht weiß, was alles zu dem Programm gehört) Der Listaller kommuniziert mit dem Paketmanager, um z.B. Systembibliotheken zu installieren, aber er ersetzt kein Paket des Paketmanagers.
Es wäre möglich, ein PlugIn für PackageKit zu schreiben, damit PackageKit auch Listaller-Anwendungen verwalten kann. Das mache ich, wenn der Listaller eine größere Verbreitung erreichen sollte. Dann könnte man direkt aus der Paketverwaltung die gesamte Systemsoftware, Listaller oder nicht, verwalten.
(Kurz mal so, falls das nicht eindeutig ist: Der Listaller installiert erstens IPK-Pakete, welche ein eigenes Format für Setups darstellen. Gleichzeitig ist der Listaller aber auch ein universeller Software-Verwalter, der mit Autopackage und LOKI-Scripten (das Zeug, in dem z.B. Google Earth verpackt ist) umgehen kann und in der Lage ist, diese per GUI zu entfernen.)
Wie viel Handarbeit muss man denn anlegen, damit man aus einem Programmquelltext ein IPK-Paket entsteht und die Binaries dann auch dort ankommen, wo sie vom System gefunden werden?
Kommt ganz auf die Anwendung an. Für mein Supertux-Testpaket brauche ich 28 Zeilen IPK-Script und 32-Zeilen Bashscript, um Supertux vernünftig zu bauen. Dieser wert ist je nach IPK-Typ unterschiedlich. (packt man einfach eine LOKI-Binary in ein IPK-Paket reiche 8 Zeilen oder weniger)
Insgesamt würde ich sagen, IPK-Pakete bauen ist um ein vielfaches einfacher als Debian-Pakete erstellen. (IPK-Pakete bauen ist aber im Moment noch stressiger, da der builder noch nicht so viele Testläufe hatte und daher manchmal buggy ist)
Wie löst du das Problem, dass verschiedene Distributionen verschiedene Pfade als Standard definieren (bspw. /usr/bin statt /usr/local/bin)?
Um nicht mit dem Paketmanager ins Gehege zu kommen wird Software meistens nach $INST installiert. $INST ist eine Pfadvariable, die das Listaller-Setuptool auflöst. Macht man eine normale Installation ins HOME-Verzeichnis, so zeigt sie nach $HOME/.appfiles/, installiert man das Paket als Superuser, zeigt sie nach /opt/appfiles, um nicht mit dem Paketmanager ins Gehege zu kommen. /opt ist nach der LSB der Standardpfad für optionale Software. Auch für andere Pfade gibt es solche Variabeln. Man kann allerdings auch Anwendungen z.B. statisch nach /usr/share installieren. Dann kann man allerdings keine Testinstallationen und keine Installationen nach $HOME mit dem Paket machen.
Die Pfade für Bibliotheken sind zwar auf vielen Distributionen anders, aber jede Distribution setzt natürlich auch die entsprechende Systemvariable korrekt, sodass ene Anwendung so eine Bibliothek problemlos finden kann.
Der Listaller sollte keine Bibliotheken installieren. Muss man das noch tun (warum auch immer...) kann man $LIB benutzen, welche den korrekten Pfad enthält.
Ich habe im Anhang mal mein Songbird-IPS-Script angehängt. Dieses Script paketiert eine fertig kompilierte Version, hat daher mehr Zeilen als das Supertux-Script. (Die Dateiendung muss in .ips geändert werden.)
Bevor wer fragt: Ja, man kann auch ganze Ordner einfügen und ja, der Listaller kann nach dem Build die Sektion unter "Files" auch automatisch erstellen

Das ist - wie gesagt - nur ein Testscript. (Wenn ihr wollt kann ich auch das Supertux-Script anhängen... Aber da werde ich bald mal ein paar Pakete bauen)