如何将 mongodb 3.4.2 降级到 2.6.11?

Sol*_*Sol 5 yum mongodb

我的 CentOS 沙箱服务器上安装了 mongodb 2.6.11。

Dec 03 22:24:38 Updated: mongodb-org-mongos-2.6.11-1.x86_64
Dec 03 22:25:07 Updated: mongodb-org-tools-2.6.11-1.x86_64
Dec 03 22:25:08 Updated: mongodb-org-shell-2.6.11-1.x86_64
Dec 03 22:26:39 Updated: mongodb-org-server-2.6.11-1.x86_64
Dec 03 22:29:37 Updated: mongodb-org-2.6.11-1.x86_64
Run Code Online (Sandbox Code Playgroud)

我想将该沙箱升级到最新的 mongodb 版本。所以,我按照这里的说明进行操作:

https://docs.mongodb.com/master/tutorial/install-mongodb-on-red-hat/
Run Code Online (Sandbox Code Playgroud)

特别是,我必须创建一个 /etc/yum.repos.d/mongodb-org-3.4.repo 文件。那工作得很好。

# mongod -version
db version v3.4.2
Run Code Online (Sandbox Code Playgroud)

现在,我想说服自己,如果需要,我可以将 mongodb 降级回 2.6.11 版。

当我尝试降级时,出现错误:

# yum downgrade mongodb-org
Error: Package: mongodb-org-3.4.1-1.el6.x86_64 (mongodb-org-3.4)
      Requires: mongodb-org-mongos = 3.4.1
      Installed: mongodb-org-mongos-3.4.2-1.el6.x86_64 (@mongodb-org-3.4)
          mongodb-org-mongos = 3.4.2-1.el6
      Available: mongodb-org-mongos-2.6.0-0.1.rc0.x86_64 (mongodb)
          mongodb-org-mongos = 2.6.0-0.1.rc0
      . . . . . 
      Available: mongodb-org-mongos-2.6.12-1.x86_64 (mongodb)
           mongodb-org-mongos = 2.6.12-1
      Available: mongodb-org-mongos-3.4.0-1.el6.x86_64 (mongodb-org-3.4)
           mongodb-org-mongos = 3.4.0-1.el6
      Available: mongodb-org-mongos-3.4.1-1.el6.x86_64 (mongodb-org-3.4)
           mongodb-org-mongos = 3.4.1-1.el6
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
Run Code Online (Sandbox Code Playgroud)

跳过中断的建议失败。

# yum downgrade --skip-broken mongodb-org
Loaded plugins: fastestmirror
Setting up Downgrade Process
Repository 'CentOS-EPEL' is missing name in configuration, using id
Loading mirror speeds from cached hostfile
* CentOS-EPEL: mirrors.xmission.com
* base: mirror.raystedman.net
* extras: denver.gaminghost.co
* updates: mirror.sesp.northwestern.edu
Resolving Dependencies
--> Running transaction check
---> Package mongodb-org.x86_64 0:3.4.1-1.el6 will be a downgrade
--> Processing Dependency: mongodb-org-tools = 3.4.1 for package:  mongodb-org-3.4.1-1.el6.x86_64
--> Processing Dependency: mongodb-org-shell = 3.4.1 for package: mongodb-org-3.4.1-1.el6.x86_64
--> Processing Dependency: mongodb-org-server = 3.4.1 for package: mongodb-org-3.4.1-1.el6.x86_64
--> Processing Dependency: mongodb-org-mongos = 3.4.1 for package: mongodb-org-3.4.1-1.el6.x86_64
---> Package mongodb-org.x86_64 0:3.4.2-1.el6 will be erased

Packages skipped because of dependency problems:
    mongodb-org-3.4.1-1.el6.x86_64 from mongodb-org-3.4
Run Code Online (Sandbox Code Playgroud)

在 /etc/yum.repos.d 我现在有两个 .repo 文件:

mongodb-org-3.4.repo
mongodb.repo
Run Code Online (Sandbox Code Playgroud)

mongodb.repo 有这个:

[mongodb]
gpgcheck=0
name=MongoDB/10gen Repository
enabled=1
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
Run Code Online (Sandbox Code Playgroud)

而且,mongodb-org-3.4.repo,有这个:

[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
Run Code Online (Sandbox Code Playgroud)

我怎样才能回到 mongodb 2.6.11?

更新:2/24/17

我能够删除五个 mongo 包。

# rpm -qa | grep mongo
mongodb-org-mongos-3.4.2-1.el6.x86_64
mongodb-org-tools-3.4.2-1.el6.x86_64
mongodb-org-server-3.4.2-1.el6.x86_64
mongodb-org-shell-3.4.2-1.el6.x86_64
mongodb-org-3.4.2-1.el6.x86_64

# yum remove mongodb-org
# yum remove mongodb-org-shell
# yum remove mongodb-org-mongos
# yum remove mongodb-org-tools
# yum remove mongodb-org-server
Run Code Online (Sandbox Code Playgroud)

然后我重命名了 3.4 mongo .repo 文件:

# cd /etc/yum.repos.d
# mv mongodb-org-3.4.repo mongodb-org-3.4.repo.NOT
# yum install mongodb
Run Code Online (Sandbox Code Playgroud)

然后我安装了 mongodb(因为我在尝试安装 mongodb-org 时遇到了熟悉的冲突)。

# mongo  -version
MongoDB shell version: 2.4.14
Run Code Online (Sandbox Code Playgroud)

但是,我仍然卡住了,因为我无法在 mongodb-org 中安装所有 mongo 包,并且当我尝试升级 mongo,希望达到 2.6.11 时,我被告知没有任何包被标记为升级.

小智 2

您应该在查询中使用星号来包含降级过程中的所有相关依赖项:

yum downgrade 'mongodb-org*'
Run Code Online (Sandbox Code Playgroud)

(引号阻止 shell 尝试扩展通配符。)