ipkg est le gestionnaire de package utilisé sur toutes les ROM que j'ai eues entre les mains. C'est une version light de dpkg à ce que j'en ai compris (je ne suis pas sous debian). techniquement ce sont des archives tgz qui contiennent elles-mêmes des archives tgz
Comme tous les systèmes d'installation de logiciels dans le monde *nix, ipkg est bas sur un système de paquets et de sources. Les paquets sont des fichiers archive qui contiennent les binaires à installer pour une application donnée. Généralement dans le nom d'un tel fichier est indiqué le nom de l'application, son numéro de version, l'architecture pour laquelle elle a été compilée et éventuellement une notion de sous-paquet.
Dans le monde Zaurus, les paquets sont des fichiers .ipk. Sans rentrer dans le détail de leur structure, ce sont basiquement des archives tar compressées. Si l'on prend l'exemple d'abiword, son paquet ipk sera par exemple nommé abiword-plugins_2.4.5_armv5tel.ipk. abiword pour le nom de l'application, 2.4.5 pour sa version et armv5tel pour indiquer que ce paquet est compilé pour un processeur ARM (et marchera donc difficilement sur un PC
C'est le paquet "principal" d'AbiWord, celui qui contient le coeur de l'application. Mais il peut y avoir aussi des sous-paquets qui dépendent du paquet principal, par exemple abiword-plugins-wikipedia_2.4.5_armv5tel.ipk qui est le plugin wikipedia d'AbiWord 2.4.5.
Le concept de dépendance a son importance car si les paquets sont bien faits (les miens le sont rarement
ils contiennent une série d'informations qui indique s'ils dépendent d'un autre paquet. Ainsi, lorsque vous installez un logiciel A qui dépend de B qui lui-même dépend de C, l'installateur va télécharger les 3 paquets et les installer. Avouez que c'est un peu plus pratique que les installations à la mode Windows... La question que l'on se pose alors c'est "où l'installateur va chercher B et C" ? C'est là qu'interviennent les sources (les feeds en langage Zaurus).
Une feed est un dossier local ou distant contennant de nombreux paquets .ipk et un fichier nommé Packages. Ce fichier est en quelque sorte le botin de la feed, il contient la liste de tous les paquets .ipkg disponibles dans ce répertoire. Ainsi, il est facile pour l'installateur, une fois que nous lui avons proprement indiqué le chemin d'une feed, de télécharger ce fichier en premier lieu pour lui servir d'index. C'est grâce à lui qu'il est capable de résourdre les dépendances manquantes. Vous pouvez vous convaincre de l'existence de ce fichier "caché" en allant directement le regarder dans une feed standard de pdaXrom b121.
Bien évidemment, un installateur digne de ce nom est capable de connaître un nombre illimité de sources différentes. Et s'il est très bien fait (ce qui n'est pas le cas d'ipkg
, il est capable de mettre à jour votre système avec les versions les plus récentes.
En bref, pour notre Zaurus, ipkg doit être configuré pour y ajouter toutes les sources/feed dont nous avons besoin. Ce qui n'est pas le cas lorsque pdaXrom vient d'être installé, malheureusement...
Même s'il existe un frontal graphique à
Le fichier de configuration d'ipkg est /etc/ipkg.conf. Prenez votre éditeur de texte préféré (vi évidement
et regardez à quoi il ressemble. Vous verrez deux sections distinctes. Tout d'abord la liste des feeds. Une ligne par source au format suivant :
Le prefix src indique que ce qui suit est une feed. NOM est n'importe quel nom de votre choix, tant qu'il est utilisé une et une seule fois, par exemple maSource. URL est l'adresse du dossier contenant les fichiers .ipk et le fameux fichier Packages (voir plus haut). Comme je le disais, la feed peut être locale, en ce cas l'URL est de la forme http://un.site.web/dossier/feed ou local, en écrivant file:///chemin/vers/ma/feed/locale. Ce qui nous donne les deux exemples suivants, le premier est la feed standard de pdaXrom pour la béta 121 modèle CX00, le second une feed locale sur ma carte compact flash :
Une fois que les feeds sont configurées, nous pouvons regarder la deuxième section d'ipkg.conf concernant les destinations. En effet, la commande ipkg installe par défaut les applications à la racine. Mais pour des raisons évidentes de place, il est parfois intéressant de stoquer les grosses applications (kdepimpe, firefox, etc..) sur une carte SD par exemple. Le format de chaque ligne est le suivant :
Le prefix dest indique que ce qui suit est une destination d'installation. NOM est n'importe quel nom de votre choix, comme pour les feeds. Attention cependant, autant prendre un nom facile à taper car vous l'utiliserez à chaque fois que vous voulez installer quelque chose sur cette destination. CHEMIN est quant à lui le chemin local (interne au Zaurus) où ipkg doit installer le binaire. Cela peut être un autre dossier de la racine (ex. /opt pour les possesseurs de disque dur), une carte SD (/mnt/SD/mesInstallations), etc...
Une fois les modifications effectuées, vous pouvez sauver le fichier ipkg.conf et mettre à jour la base des paquets par la commande :
Si l'argument -dest DESTINATION est ommis, c'est la première destination du fichier ipkg.conf qui sera utilisée (généralement la /). PAQUET quant à lui est le nom du paquet ipk à installer, sans numéro de version, architecture et .ipk à la fin. Par exemple pour installer AbiWord sur la carte SD :
Lorsque vous lancez un ipkg update, l'ensemble des fichiers Packages de chaque feed lue par ipkg est sauvée sous le nom de la feed que vous avez indiquée via /etc/ipkg.conf dans le dossier /usr/lib/ipkg/lists.
Quant vous lancez une installation, ipkg, écrit une entrée dans le fichier /usr/lib/ipkg/status indiquant le nom du paquet et la mention not-installed. C'est intéressant à savoir car si vous arrêtez une installation en cours de route (ou si vous essayer d'installer un paquet qui n'existe pas), cette entrée est conservée et du coup ipkg vous redemande à chaque appel s'il doit retenter l'installation. S'il s'agit d'une erreur, il suffit au préalable de modifier le fichier /usr/lib/ipkg/status et d'enlever les enregistrements marqués not-installer. C'est le contenu de ce fichier qui est lu lorsque vous tapez ipkg status.
Ensuite ipkg va écrire ses fichiers dans un dossier temporaire tmp placé en dessous du dossier de destination. Par exemple en /home/tmp (pour une destination par défaut) ou /mnt/sd/tmp (pour la destination SD). C'est important à savoir lorsqu'une install plante et que l'on doit virer les packets téléchargés et non installés.
Lorsque vous installez dans une destination qui n'est pas la racine, ipkg va tricher avec Linux en créant un lien symbolique entre le fichier réel (par exemple /mnt/car/usr/bin/monApplication) et le dossier où Linux s'attend à trouver un tel fichier (/usr/bin).
Enfin, une fois l'installation terminée, la liste, par paquet, des fichiers installés est stockée par ipkg dans le dossier /usr/lib/ipkg/infos sous le nom nom_paquet.list. Par exemple pour abiword, sera crée un fichier /usr/lib/ipkg/infos/abiword.list. Il va aussi mettre à jour le fichier /usr/lib/ipkg/status en remplaçant not-installed par installed.
ipkg est un outil en ligne de commande qui dispose d'un frontal graphique nommé qpkg. Cet outil permet visuellement d'obtenir la liste des paquets disponibles, de rajouter des feeds et de faire des mises à jour.
Pour plus de confort, il est aussi possible d'utiliser qpkg) via SSH avec redirection X11 (voir Installation du réseau USB). Pratique pour voir les paquets en plein écran et se balader avec la roulette
Pour distribuer notre magnifique binaire fraîchement compilée un peu de packaging s'impose. Il nous faut donc le mettre dans un fichier .ipk.
Un fichiers .ipk est une simple archives tar compressée par gzip qui contient elle-même 2 autres archives : data.tar.gz et control.tar.gz.
Le fichier data.tar.gz contient les fichiers à décompresser dans le Zaurus, à partir de la racine. Dans notre cas, il contiendra de tous les fichiers contenus dans le dossier dist que nous avons créé par make install.
Le fichier control.tar.gz peut contenir quatre scripts et deux fichiers de contrôles.
Les scripts sont optionnels et seront lancés au court de la vie du paquet :
Les deux fichiers sont de contrôle quant à eux :
Tout d'abord ne pas oublier que les Zaurus n'ont pas de ressources illimitées. Un des premiers travaux à faire dans le dossier dist est d'enlever tout ce qui ne sert "à rien" : documentations, exemples, tests, etc... jusqu'à obtenir quelque chose de minimum.
Une fois ceci fait, il faut créer dans dist un dossier CONTROL qui va contenir l'ensemble des fichiers de contrôle dont nous avons parlé plus haut et donc, au minimum, le fichier control. Pensez à bien renseigner ce fichier et y indiquer les dépendances avec d'autres paquets.
Le meilleur moyen pour fabriquer rapidement un fichier .ipk est d'utiliser l'utilitaire mkipkg fourni avec le cross-compiler.
ipkg est l'outil utilisé pour installer des paquets sur pdaXrom. C'est aussi lui qui est utilisé par qpkg, sa version graphique. Or, quelles que soient les versions de pdaXrom, le fichier de configuration d'ipkg est faux. Il faut donc commencer par le remettre en place...
Pour cela, en tant que root, utilisez Office/Leafpad ou plus simple vi et ouvrez le fichier /etc/ipkg.conf que vous remplacerez par le contenu suivant (décommentez ce qui correspond à votre version) :
Il faut maintenant mettre à jour la base de paquets soit en ligne de commande