以 django-9999 ebuild 为例,为了匹配开发人员的环境,我需要从主干中签出 R12120。由于包管理的原因,无法手动安装 Django。但是 portage 中也没有 1.2 beta 版本的 ebuild。
所以我做了以下事情:
ESVN_OPTIONS="-r12120" emerge -1a django
它从 svn 安装了所需的修订版本。但这在某种程度上很麻烦。有没有办法在每个 ebuild 中静态定义这一点,例如:
DJANGO_SVN_REV="12120"
在make.conf
。在我看来这会干净得多。
因为下次无论出于什么原因我需要重建 django 时,我需要记住:“哦,我希望它坚持特定的修订版”,下一个问题将是“呃,f&!#$?%,它是什么?”
去这里最好的路线是什么?
记住:
- 在没有包管理器知识的情况下手动安装包是不可能的
- 使用手动 emerge 变量前缀来解决是不行的
- 设置 /etc/portage/package.env 是一种方法(如这里所述)但在我看来,这似乎缺乏支持,而且很笨拙,因此不可取
- 修改 make.conf 是一种方法
- 将 ebuild 保留在覆盖层中是一种选择
答案1
我并不完全反对使用package.env
。如果您理解并在您的环境中记录它,那么它可以成为一种有用的方法,使用 ebuild 钩子应用细微的更改,同时仍然跟踪稳定的 ebuild。
-9999
不过,根据“最小惊讶原则”,我认为这不是修复 ebuild 修订版的合适方法。make.conf
修复软件包版本似乎也不是很明显的地方。
更简洁的方法是使用 Layman 来构建您自己的 ebuild。如果您命名它,django-1.2_pre12120
那么它的作用应该更加明显,并且一旦 Django 1.2 在 Portage 中发布并稳定下来,您就会获得一条简单的退出路线。