[abs makepkg] compilation paquets sur autre machine

Mise à jour / Création /debug de paquetages
gwenhael
newbie
Messages : 4
Inscription : ven. 08 mai 2009, 12:59

[abs makepkg] compilation paquets sur autre machine

Message par gwenhael »

Bonjour,
Je viens de découvrir Archlinux en l'installant sur mon Eeepc 901, le tout sans aucuns problèmes. :D

En installant certaines applications j'ai constaté qu'il y avait des dépendances qui m'étaient inutiles du type libldap pour apr-util ou bien des clients mysql et autre postgresql dans les dépendances de subversions. :?

Je souhaitais donc pour économiser de la place sur ma machine et réduire certaines dépendances recompiler certains paquets(pas tous).
En effet le Eeepc n'a pas vocation à remplacer un autre portable ou un ordinateur de bureau qui me servent pour des travaux un peu plus "violents".
Toutefois je ne souhaite pas pour une question de "SSD" utiliser le Eeepc pour faire la compilation et je n'ai pas d'autres machines avec Archlinux dessus.

Je voulais donc savoir s'il était possible, et si oui comment, compiler des paquets pour Arch depuis une autre distribution (genre avec un chroot ou toute autre méthodes).

Merci d'avance
Gwenhaël
Dernière modification par gyo le lun. 11 mai 2009, 12:18, modifié 2 fois.
Raison : correction titre
farvardin
Maître du Kyudo
Messages : 1084
Inscription : sam. 29 mars 2008, 22:56

Re: [Debutant] Compilation de paquets sur une autre machine

Message par farvardin »

avec chroot, tu peux le faire, mais de toute façon pour avoir les bonnes versions des bibliothèques tu devras avoir une installation d'archlinux de base et fonctionnelle :

http://wiki.archlinux.org/index.php/Ins ... ting_Linux

(et puis c'est tellement dommage de ne pas utiliser archlinux sur son ordinateur principal...
je fais pareil, mais dans l'autre sens avec un chroot vers une partition debian que je n'utilise pas, pour mon eeepc sous xandros)

D'autre part tu peux forcer à retirer des dépendances avec pacman ou yaourt avec les options : -Rd

par exemple

Code : Tout sélectionner

 pacman -Rd mysql
cela évitera de tout recompiler pour rien.

Enfin, pour gagner de la place, tu peux utiliser localepurge (à bien configurer si tu ne veux pas effacer les fichiers français !!) ainsi que ce script que j'utilise avec mon livecd :

http://pastebin.archlinux.fr/347168
gwenhael
newbie
Messages : 4
Inscription : ven. 08 mai 2009, 12:59

Re: [Debutant] Compilation de paquets sur une autre machine

Message par gwenhael »

Je te remercie pour les informations et le script.
Faut que je réfléchisse pour un chroot, à défaut d'une solution moins volumineuse...
Je me posais la question parce que sous netbsd par exemple il est possible de compiler un peu tout sur une autre machine genre sous linux...

Pour ce qui est des dépendances c'est pas un peu violent? Les programmes risquent pas de ne plus marcher après ce genre de choses ?

Gwen
Guillawme
Hankyu
Messages : 31
Inscription : lun. 23 juin 2008, 17:21

Re: [Debutant] Compilation de paquets sur une autre machine

Message par Guillawme »

Salut
gwenhael a écrit :Pour ce qui est des dépendances c'est pas un peu violent? Les programmes risquent pas de ne plus marcher après ce genre de choses ?
Ce n'est peut-être pas vrai pour tous les cas, mais a priori la désinstallation d'une dépendance ne fait que rendre indisponible la fonctionnalité que cette dépendance apportait (même si on force sa désinstallation).

J'en ai fait l'expérience en virant gettext (je ne savais pas à quoi il servait avant :roll: ), après ça les messages de yaourt n'étaient non seulement plus traduits mais aussi un peu bogués (affichage du nom des variables au lieu de la chaîne qu'elles contenaient, par exemple). Une fois ce paquet réinstallé, tout est redevenu normal.
Je ne sais pas si on peut généraliser ça, mais c'était pour l'exemple.
gwenhael
newbie
Messages : 4
Inscription : ven. 08 mai 2009, 12:59

Re: [Debutant] Compilation de paquets sur une autre machine

Message par gwenhael »

Par expérience sur Gentoo, j'ai pu constater que sur le passage d'une version à une autre de librairies j'avais besoin de reconstruire des applications finales sinon je me faisais jeter des cailloux... (le pourquoi de revdep-rebuild...
C'est aussi vrai sous BSD (netbsd reinstalle l'ensemble des applications ou librairies dépendant d'une librairie à chaque mise à jour)...
farvardin
Maître du Kyudo
Messages : 1084
Inscription : sam. 29 mars 2008, 22:56

Re: [Debutant] Compilation de paquets sur une autre machine

Message par farvardin »

le coup de la cross-compilation sous netbsd, je suppose que cela fonctionne très bien pour des applications en mode texte, mais moins pour des logiciels graphiques complexes et dépendants de telle version de qt ou gtk... et quand bien même, cela veut dire que cela supporte quelle version de la glibc, quelles options de compilations ? À mon avis c'est plus sûr d'utiliser du archlinux pour compiler, plutôt que de prendre une distribution différente genre fedora ou debian...

Pour les dépendances, je dirais comme Guillawme (à ce propos, tu es certain pour mysql et subversion ? je ne vois pas mysql comme dépendance de subversion, mais c'est peut-être une dépendance de sous-dépendance...)

Sinon si tu veux recompiler des paquets depuis les sources et modifier des paramètres, tu as peut-être déjà trouvé ABS :
http://wiki.archlinux.org/index.php/ABS
nowahn
archer de cavalerie
Messages : 172
Inscription : lun. 04 août 2008, 19:03
Localisation : ailleurs

Re: [Debutant] Compilation de paquets sur une autre machine

Message par nowahn »

Si c'est juste pour enlever une dépendance, il suffit de décompresser le paquet, de modifier le fichier .PKGINFO, et de recompresser tout ça, et te voilà avec un paquet tout neuf sans t'être taper la compilation :D
Et tout ça, c'est faisable de n'importe quel linux équipé de gzip, tar et d'un éditeur de texte :top:

PS : n'oublie pas d'inclure les fichiers commençant par . quand tu recompresses le paquet (.PKGINFO entre autre).

Edit : le paquet, c'est le fichier <paquet>-<version>.pkg.tar.gz, si tu l'as déjà installé, tu devrais le trouver dans /var/cache/pacman/pkg, sinon télécharge-le avec

Code : Tout sélectionner

pacman -Sdw <paquet>
ça télécharge le paquet (toujours dans le répertoire précédent) sans l'installer et sans installer ou télécharger les dépendances).
Prends le temps de rêvasser, l'inspiration viendra ...
gwenhael
newbie
Messages : 4
Inscription : ven. 08 mai 2009, 12:59

Re: [Debutant] Compilation de paquets sur une autre machine

Message par gwenhael »

Je vous remercie pour les diverses infos.
Modifier un paquet pour enlever des dépendances me semble un peu risqué mais je vais déjà essayer ça.
NetBSD n'était pas forcément le bon exemple. Pour rester dans du linux j'ai un PDA (Ipaq) qui utilise un linux, il a une interface et tout. Pour ce faire le système est compilé grâce à OpenEmbedded, qui se charge en tout premier lieu de créer une toolchain(gcc,glibc,binutils,etc...) spécifique à la plateforme cible. Ainsi le compilateur de la machine hôte ne sert que dans le processus de création de la toolchain pour la distribution cible. Ensuite c'est la version spécifique de la toolchain(pour arm9) qui est utilisée.

Le principe pour NetBSD est exactement le même, il génére les outils dont il a besoin pour être dans un état cohérent(bon numéro de version, bonne cible,etc...).
C'est comme ça que j'ai pu depuis un PC (i686) sous linux générer un base système NetBSD4 pour un Nslu2(arm IXP), ou que je génére le système pour mon PDA (arm PXA255) avec une interface graphique basée sur gtk (GPE) ou qt (OPIE).
Pour ce qui est de Archlinux, j'ai en modifiant un peu les conseils, installé un système de base dans lequel je peux me chrooter, c'est plus volumineux mais ça fonctionne.

Gwen
nowahn
archer de cavalerie
Messages : 172
Inscription : lun. 04 août 2008, 19:03
Localisation : ailleurs

Re: [abs makepkg] compilation paquets sur autre machine

Message par nowahn »

Bon, j'ai peut-être parlé un peu vite, j'avais jamais essayé la méthode que j'ai indiquée, je viens de le faire, et ça n'a pas l'air de marcher :cry: (pacman dit que le paquet ne contient pas de metadata, alors qu'il contient bien le fichier .PKGINFO, je suppose qu'il doit être invalide à cause des lignes size et/ou builddate)

Sinon, toujours pour éviter la compilation, tu peux faire ceci :
  • Récupérer ce qu'il faut pour compiler le paquet avec abs. (Je te conseille un

    Code : Tout sélectionner

    abs <dépot>/<paquet>
    pour ne pas télécharger tout l'arbre abs)
  • Au lieu de faire un makepkg direct
    • modifie les dépendances dans le PKGBUILD
    • crée le répertoire pkg (dans le même répertoire où est le PKGBUILD)
    • décompresse le paquet (trouvé dans /var/cache/pacman/pkg) dans ce répertoire pkg
    • construis le paquet avec

      Code : Tout sélectionner

      makepkg --repackage
  • Et voilà, un paquet tout chaud prêt à être installé
PS : cette fois j'ai testé avant de poster, donc ça devrait marcher :wink:
Prends le temps de rêvasser, l'inspiration viendra ...
Répondre