我升级了我们的 gentoo 服务器,但在消息中迷失了方向,长话短说,我在运行 pg_upgrade 到 9.2 之前删除了我的 postgresql 9.1..然后我发现 pg_upgrade 需要以前版本的二进制文件仍然存在!
如何在不删除 9.2 的情况下重新安装 postgresql 9.1?
我知道我可以用 /etc/portage/package.mask
例如。
>dev-db/postgresql-server-9.1.9
<dev-db/postgresql-server-9.1.9
但我担心这样做会代替安装的postgresql最终比以前更加糟糕。
答案1
dev-db/postgresql-server
是投币口-ed 在主要版本和次要版本上,因此重新安装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 v2
- 卸载 v2
- 安装 v1
- 做你自己的事情()
- 使用先前生成的二进制包从 v1 更新到 v2(参见
portage
s-k/-K
开关)
quickpkg
有一个开关可以包含包的配置文件(--include-config
),您可能也想使用它(参见man quickpkg
)。
在执行大量升级(tm)您总是可以选择quickpkg
那些您认为以后可能会因为某种原因引起麻烦的最重要的软件包(例如 MySQL、PostgreSQL、Apache 等),然后您可以在必要时快速切换回早期版本。
这确实不是意味着您不必备份您的数据(和配置文件,即使包含在您的二进制包中)!
答案2
仅作为参考,根据 Adrian 的回答,我大胆地做了一个
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