LPM gère les paquets sous forme de dépôts. Un dépôt a une structure simple, mais contient des fichiers complexes permettant à LPM d'avoir toutes les informations qu'il veut sur les paquets.
LPM sait gérer lui-même les dépots. Pour télécharger et installer LPM, suivez Tester LPM. Vous n'avez besoin que du téléchargement et de la compilation, pas besoin de faire tout ce qui suit (lpm update, tests, etc).
Repoma peut faire pas mal de travail seul, et le seul travail que vous aurez sera de créer quelques dossiers et un fichier. C'est d'une simplicité déconcertante. Il vous faudra aussi une paire de clefs GPG.
Commençons par le dépôt lui-même :
1 2 3 4 | cd ~ mkdir repo cd repo mkdir incoming config |
L'arbre est prêt, plus qu'à le configurer.
La configuration de Repoma se fait au moyen d'un fichier de configuration, qui doit se trouver dans repo/config/repo.conf. Voici son contenu, commenté :
1 2 3 4 5 6 7 8 9 10 11 12 13 | Distributions=experimental ; Listes des distros, séparées par un espace Languages=fr en ; Langues gérées WebsiteIntegration=false ; true si vous voulez tester l'intégration au site web (wiki, forum, etc) [Database] Hostname=localhost ; Hôte d'une base de donnée MySQL Name=repoma ; Nom de la base de donnée User=root ; Utilisateur pour se connecter Password= ; Mot de passe de connexion [Sign] Key=47798B4B ; ID de la clef GPG pour la signature Enabled=true ; false si vous ne voulez pas de signature, sautez alors l'étape de création des clefs. |
La configuration est faite, créons maintenant les clefs
LPM est très regardant sur la sécurité de l'utilisateur. Une chaîne de confiance est établie pour assurer que les paquets soient de qualités, et sûrs. Tous les fichiers du dépôt sont accompagnés d'un hash SHA1 permettant de vérifier leur validité. La liste de ces sommes SHA1 est stockée dans un fichier spécial, packages.xz, qui est lui signé.
GPG permet de signer des fichiers, c'est à dire de garantir qu'il n'a pas été modifié par une personne non-habilitée à le faire. Il utilise un système de clefs, avec des mots de passe. En "signant" un fichier, vous lui ajoutez un petit morceau permettant de vérifier la signature, et ainsi de vérifier que c'est bien vous qui avez signé ce fichier.
La création des clefs est simplissime. Assurez-vous que vous avez GPG d'installé, puis entrez ceci :
1 | gpg --gen-key |
Gardez le choix par défaut. Entrez un nom générique est descriptif, comme «Le dépôt de Louis», ne mettez pas de commentaire, et saisissez votre adresse e-mail. Ensuite, choisissez une longue et complexe phrase de passe.
Attention à bien la retenir, car vous ne pourrez plus la changer sans la re-taper ensuite. Elle doit être suffisamment complexe pour garantir que personne ne saura se faire passer pour vous.
Une fois que votre clef est générée, tapez
1 | gpg --list-keys |
Et prenez le nombre qui correspond à votre clef, "47798B4B" dans cet exemple :
1 2 3 4 | --> ici <-- pub 2048R/47798B4B 2009-11-11 uid Logram Repository <steckdenis at logram-project point org> sub chose/machin 2009-11-11 |
Placez ce nombre dans la valeur Key= du fichier config/repo.conf. C'est fait !
LPM utilise la même structure de base de donnée que le site web. Pour éviter tout problème, il vous faut télécharger le site web (depuis Gitorious), installer Django, et lancer dans le dossier du site web :
1 2 | ln -s website ../pyv4 # Remplacez website par le dossier dans lequel se trouve le site web PYTHONPATH=$(dirname $PWD) ./manage.py syncdb |
Si la commande échoue parce qu'il vous manque un module Python, installez-le, ou essayez de remplacer syncdb par sql. Vous obtenez alors le code SQL à insérer dans phpMyAdmin ou "mysql -u utilisateur -p base_de_donnée_pour_lpm".
Importer les paquets est relativement simple. Pour cela, vous avez besoin d'un paquet. Prenez par exemple le paquet Vim créé ici. Ensuite, copiez-le dans le répertoire incoming/ :
1 | cp paquet.lpk ~/repo/incoming |
Ensuite, allez dans le dossier ~/repo, et entrez simplement
1 | lpm include incoming/*.lpk |
Ça peut prendre un tout petit peu de temps, l'archive devant être décompressée pour que ses informations en soient extraites. Normalement, LPM vous affichera les paquets inclus, chez moi :
1 2 3 4 | [1/4] Inclusion de incoming/initng~0.6.99+git20091223~1.i686.lpk [2/4] Inclusion de incoming/initng-plugins~0.6.99+git20091223~1.i686.lpk [3/4] Inclusion de incoming/libinitng~0.6.99+git20091223~1.i686.lpk [4/4] Inclusion de incoming/libinitng-dev~0.6.99+git20091223~1.all.lpk |
Maintenant, il faut exporter le dépôt, c'est à dire construire les listes. Le paquet se trouve déjà dans le dossier pool, pool/v/vim/vim~7.2~1.x86_64.lpk, mais n'est pas encore dans packages.xz.
C'est ici que vous aurez besoin de connaître la phrase de passe de la clef créée ci-dessus.
1 | lpm export
|
Si gnupg-agent est installé, il vous demande votre phrase de passe.
Vous pouvez voir ce qui a été généré comme ceci
1 | xzcat dists/experimental/x86_64/packages.xz # ou i686
|
Ce fichier contient toutes les informations dont dispose LPM lors de la mise à jour de sa base de donnée, c'est à dire les fameux hashs SHA1, le nom du paquet, ses dépendances, etc. Le fichier translate.fr.xz contient lui les descriptions. Ainsi, chaque utilisateur a les descriptions dans sa langue, sans devoir télécharger des données non-nécessaires.
Un dossier metadata/ se trouve également dans le dossier du dépôt. Il contient les métadonnées des paquets, extraites depuis les archives. Ainsi, sans devoir télécharger le paquet en entier, LPM peut vous afficher plein d'informations dessus.
Pour tester le dépôt, assurez-vous d'avoir entièrement suivi Tester LPM, même les tests à la fin. Ceci est nécessaire pour vous assurer qu'un problème vient bien de votre dépôt, et pas de LPM lui-même. De plus, les chemins d'accès spécifiés ici suivent ce qui est dit dans cette page.
Nous allons ici simplement modifier le fichier sources.list, pour y ajouter votre dépôt. Ouvrez simplement /tmp/lpm/etc/lgrpkg/sources.list et ajoutez ceci à sa fin :
1 2 3 4 5 6 7 8 | [perso] Type=local Mirrors=/home/vous/repo Distributions=experimental Archs=i686 all Active=true Description=Archive perso Sign=true |
En remplaçant, comme toujours, "i686" par votre architecture ("uname -m" pour voir).
Ensuite, lancez simplement :
1 | ./lpm -R /tmp/lpm/ update |
Puis recherchez votre paquet :
1 | ./lpm -R /tmp/lpm/ search vim |
Normalement, il devrait être trouvé. Sinon, demandez sur le forum après avoir vérifié que vous avez parfaitement suivi les instructions.
Vous pouvez aussi demander d'afficher toutes les informations que LPM peut obtenir sur votre paquet, et ce simplement :
1 | ./lpm -C -R /tmp/lpm/ showpkg vim |
Le "-C" permet d'afficher également le ChangeLog. Les informations de votre paquet sont téléchargées (en fait copiées depuis votre dépôt local), et affichées.
Vous pouvez également, si votre bonne étoile vous accompagne, tenter d'installer votre paquet :
1 | ./lpm -R /tmp/lpm/ add vim |
Si vous avez suivi le tutoriel Créer un paquet LPM, votre paquet devrait vous afficher un message particulièrement trollogène. Appuyez simplement sur Enter pour continuer.
Vous pouvez vérifier que /tmp/lpm/usr/bin/vim existe, et vous pouvez même le lancer ! Attention tout de même, Vim pourrait (et va) ne pas fonctionner. En effet, ses fichiers ne sont pas là où ils devraient. Si vous êtes suicidaire :
1 | sudo ./lpm -R /tmp/lpm/ -iR / add vim |
Devrait vous l'installer directement dans le dossier /, c'est à dire la racine. Avant de lancer cette commande, supprimez /tmp/lpm/var/cache/lgrpkg/db/installed_packages*, puis lancez "lpm -R /tmp/lpm update", pour que LPM vous laisse à nouveau installer Vim. Vous pouvez aussi ajouter le paramètre -nI à LPM, ce qui lui indique d'ignorer les paquets déjà installés.
Si vous le lancez, il marchera, cette fois
.
Félicitations, vous savez maintenant gérer votre dépôt personnel de paquets Logram. Il est tout de même préférable de proposer vos paquets pour inclusion dans les dépôts officiels, pour que plus de personnes puissent les utiliser et profiter du serveur de construction, de la page de wiki spéciale pour votre paquet, et des commentaires sur sa source. Pour cela, passez par les Demandes, ou, dans un premier temps, le Forum (les Demandes de Paquets n'étant pas encore en place).