Comment puis-je personnaliser un ebuild dans Gentoo sans maintenir un package personnalisé dans sa propre superposition?
Le cas est que j'ai besoin de marquer des binarys compilés avec paxctl
. Mais il y a environ 100 de ces packages et je ne veux pas regarder les mises à jour par moi-même en superposition locale.
Les ebuilds de portage ne sont pas compilés sans un tel marquage. Maintenant, je dois changer leurs drapeaux de compilation dans le directory /etc/portage/package.env
. Le marquage PAX est une meilleure solution mais je ne sais pas comment faire ça à Gentoo dans l'tree de portage.
En utilisant portage, vous pouvez le faire avec package.env
. Le bon endroit pour searchr la documentation est http://dev.gentoo.org/~zmedico/portage/doc/portage.html#config-bashrc-ebuild-phase-hooks . Fondamentalement, la façon dont vous l'utilisez est la suivante. Vous créez d'abord (en supposant une configuration standard sans ROOT
personnalisée) un file dans /etc/portage/env
. Par exemple, vous pouvez créer un file /etc/portage/env/paxmark
#paxmark #Set this to what you need it to be PAXFLAGS="-p" post_src_install() { find "${INSTALL}" -type x -print0 |xargs -0 -n 1 paxctl $PAXFLAGS }
Ensuite, pour tous les packages que vous voulez que cela s'applique à vous append une input à /etc/portage/package.env
:
#package.env example for paxmark sys-apps/gcc paxmark
Cela appliquera le script paxmark
au package qui l'a spécifié. Sinon, vous pouvez également créer un script /etc/portage/bashrc
pour les rlocations globaux (soyez très prudent avec cela).
Un avertissement général cependant, comme vous pouvez append pré et post crochets à toutes les phases cela peut être dangereux. Faites attention à ce que vous faites car tous vos packages qui utilisent le hook ne sont plus devenus plus robustes que votre script hook. (L'exemple ci-dessus pour le marquage pax devrait être correct).
Si vous passez à Paludis , qui est un gestionnaire de packages alternatif pour Gentoo (c'est-à-dire un rlocation pour emerge
), vous pouvez probablement configurer un hook pour le faire.