Gentoo

在 Portage 樹中自定義 Gentoo 中的 ebuild

  • April 24, 2014

如何在 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 標記範例應該沒問題)。

引用自:https://unix.stackexchange.com/questions/88981