[abs makepkg] compilation paquets sur autre machine
[abs makepkg] compilation paquets sur autre machine
Bonjour,
Je viens de découvrir Archlinux en l'installant sur mon Eeepc 901, le tout sans aucuns problèmes.
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
Je viens de découvrir Archlinux en l'installant sur mon Eeepc 901, le tout sans aucuns problèmes.
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
Raison : correction titre
Re: [Debutant] Compilation de paquets sur une autre machine
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
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
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
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
Re: [Debutant] Compilation de paquets sur une autre machine
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
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
Re: [Debutant] Compilation de paquets sur une autre machine
Salut
J'en ai fait l'expérience en virant gettext (je ne savais pas à quoi il servait avant ), 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.
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).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 ?
J'en ai fait l'expérience en virant gettext (je ne savais pas à quoi il servait avant ), 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.
Re: [Debutant] Compilation de paquets sur une autre machine
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)...
C'est aussi vrai sous BSD (netbsd reinstalle l'ensemble des applications ou librairies dépendant d'une librairie à chaque mise à jour)...
Re: [Debutant] Compilation de paquets sur une autre machine
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
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
-
- archer de cavalerie
- Messages : 172
- Inscription : lun. 04 août 2008, 19:03
- Localisation : ailleurs
Re: [Debutant] Compilation de paquets sur une autre machine
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
Et tout ça, c'est faisable de n'importe quel linux équipé de gzip, tar et d'un éditeur de texte
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ç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).
Et tout ça, c'est faisable de n'importe quel linux équipé de gzip, tar et d'un éditeur de texte
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>
Prends le temps de rêvasser, l'inspiration viendra ...
Re: [Debutant] Compilation de paquets sur une autre machine
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
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
-
- archer de cavalerie
- Messages : 172
- Inscription : lun. 04 août 2008, 19:03
- Localisation : ailleurs
Re: [abs makepkg] compilation paquets sur autre machine
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 (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 :
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 unpour ne pas télécharger tout l'arbre abs)
Code : Tout sélectionner
abs <dépot>/<paquet>
- 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é
Prends le temps de rêvasser, l'inspiration viendra ...