Personnaliser ebuild dans Gentoo dans l'arborescence de portage

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.