在gentoo上安装特定版本的包(postgresql)以及最新版本

我升级了我们的gentoo服务器,在消息中迷失了,为了简短起见,我最终删除了我的postgresql 9.1之前,我运行一个pg_upgrade到9.2 ..然后我发现,pg_upgrade需要先前版本的二进制仍然是那里!

如何重新安装postgresql 9.1而不删除9.2?

我知道我可以用/etc/portage/package.mask指定一个版本

例如。

 >dev-db/postgresql-server-9.1.9 <dev-db/postgresql-server-9.1.9 

但我害怕这样做,我会replace安装的postgresql,并最终比以前更搞砸了。

dev-db/postgresql-server在主要版本和次要版本上都是SLOT dev-db/postgresql-server so,所以重新安装9.1不应强制删除9.2 (理论上,两个SLOT版本的软件包的依赖关系可能会冲突,这样做):

 $ eix -c postgresql-base --or postgresql-server [I] dev-db/postgresql-base (9.1.8(9.1)@04/13/2013 9.2.3-r1(9.2)@04/13/2013): PostgreSQL libraries and clients [I] dev-db/postgresql-server (9.1.8-r1(9.1)@04/13/2013 9.2.3-r1(9.2)@04/13/2013): PostgreSQL server Found 2 matches. 

正如你所看到的,两个版本都是同时安装的。

在附注中,为了帮助无插槽的软件包,可以使用quickpkg来打包当前安装的版本。 粗略的工作stream程将是:

  • quickpkg v2
  • 卸载v2
  • 安装v1
  • do_your_stuff()
  • 使用先前生成的二进制包从v1更新到v2(请参阅portage s -k/-K开关)

quickpkg有一个开关来包含程序包的configuration文件( --include-config ),你也可以使用它(参见man quickpkg )。

在执行大量升级(tm)之前,您总是可以快速地重新安装一些您认为可能由于某种原因(如MySQL,PostgreSQL,Apache等)而导致麻烦的最重要的软件包,然后您可以快速切换回版本如有必要。

这并不意味着您不必备份数据(即使包含在二进制包中,也不需要configuration文件)!

作为参考,基于阿德里安的回答,我无所畏惧做了一个

 emerge /dev-db/postgresql-server:9.1 

请注意,我使用:9.1而不是:9.1.9 (最新版本)导致了一个

 there are no ebuilds to satisfy "dev-db/postgresql-server:9.1.9" 

起初让我感到困惑。

现在我快乐地生活在一起:

 $ equery l postgresql-server * Searching for postgresql-server ... [IP-] [ ] dev-db/postgresql-server-9.1.9:9.1 [IP-] [ ] dev-db/postgresql-server-9.2.4:9.2