Gentoo
在 Portage 樹中自定義 Gentoo 中的 ebuild
如何在 Gentoo 中自定義 ebuild 而無需在自己的覆蓋中維護自定義包?
情況是我需要用
paxctl
. 但是大約有 100 個這樣的包,我不想自己在本地覆蓋中觀看更新。如果沒有這樣的標記,Portage ebuild 就不會被編譯。現在我必須在
/etc/portage/package.env
目錄中更改他們的編譯標誌。PAX-marking 是一個更好的解決方案,但我不知道如何在 Portage 樹中的 Gentoo 中做到這一點。
使用 portage,您可以使用
package.env
. 查找文件的正確位置是http://dev.gentoo.org/~zmedico/portage/doc/portage.html#config-bashrc-ebuild-phase-hooks。基本上你使用它的方式如下。首先,您ROOT
在/etc/portage/env
. 例如,您可以創建一個文件/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 }
然後,對於您希望將其應用於您的所有包,添加一個條目
/etc/portage/package.env
:#package.env example for paxmark sys-apps/gcc paxmark
這會將
paxmark
腳本應用到指定了它的包。或者,您也可以/etc/portage/bashrc
為全域覆蓋創建一個腳本(要非常小心)。不過一般警告,因為您可以在所有階段添加 pre 和 post 鉤子,這可能很危險。小心你所做的事情,因為你所有使用鉤子的包現在都變得不比你的鉤子腳本更健壯了。(上面的 pax 標記範例應該沒問題)。