Szégyen és gyalázat, de ezidáig még csak nem is hallottam az Autopackage-ről, amely egy disztribúciófüggetlen csomagkezelő rendszer. A legnagyobb szépsége számomra az, hogy bináris, pontosabban futtatható csomagokat (.package) lehet vele készíteni, ami kb. úgy képzelhető el mint Windows-os msi fájlok – melyek telepítéséhez szükség van a Windows Installerre.
Igaz, hogy nemrégiben kaptam egy Open Source licenszt a BitRock-tól, de egyrészt ez a licensz csak bizonyos projektjeimhez használható, másrészt nem tökéletes például a függőségek kezelése. Az autopackage-é sem teljes de nagyon szép specfájlokat lehet vele gyártani, amivel akár teljesen egyedi ellenőrzéseket is lehet végezni. Mivel most gyártom a Gnome-RDP-hez a csomagot így előjött, hogy hogyan lehetne ellenőrizni, a Mono és Gtk# meglétét és verziószámát. Nos, így oldottam meg:
[Prepare]
REQUIRED_MONO_VERSION="1.1.10"
REQUIRED_GTKSHARP_VERSION="2.4.0"
# ====== MONO .NET RUNTIME ======
outputTest "Mono .NET Runtime"
MONO_VERSION=`mono -V | grep "version" | sed 's/.* \([0-9]*\.[0-9]*\.[0-9]*\).*/\1/g'`
compareVersions $REQUIRED_MONO_VERSION $MONO_VERSION
if [ $? -gt 0 ]; then
outputTestFail
outputFail "at least Mono .NET Runtime $REQUIRED_MONO_VERSION required"
false
else
outputTestPass
fi
# ====== GTK# ======
outputTest "Gtk#"
pkg-config --atleast-version=2.4.0 gtk-sharp-2.0
if [ $? -gt 0 ]; then
outputFail "at least Gtk# $REQUIRED_GTKSHARP_VERSION required"
outputTestFail
false
else
outputTestPass
fi
Nem a legszebb kód, de működik. Teszteltem Gentoo-n és Ubuntu-n, megy mind a kettőn szépen. Új Gnome-RDP release esetén tehát már Autopackage-es telepítő is lesz a BitRock-os pedig valószínűleg el lesz dobva. Az LGPL mégiscsak az Autopackage felé húz! Lassan az NSIS-be is bele kellene mélyednem, mert ha minden jól alakul, akkor elkezdek dolgozni a Gnome-RDP Windows-os portján is.