2017-10-05 66 views
0

我开始了这个任务,安装了redis/3.0.3,并且希望将我的本地dev redis升级到3.2.3版本,这是我们在生产中运行什么。我最终运行了brew upgrade redis,它安装了redis 4.0.2,位于我期望的版本之前。然后我发现你可以用brew install [email protected]安装3.2.x。另外,在尝试清理4.0.2时,它只清理了3.0.3。Homebrew:如何删除redis/4.0.2并使用[email protected]作为我的默认redis

现在我陷入了一种情况,即Homebrew不会允许我卸载redis/4.0.2,并将[email protected]作为单独的Homebrew公式来查看。

$ brew switch redis 3.2 
Error: redis does not have a version "3.2" in the Cellar. 
Versions available: 4.0.2 

了解如何在地窖里,他们才会在此处作为单独的公式:

$ ls /usr/local/Cellar/ | grep redis 
redis 
[email protected] 

什么是正确的 “自制” 的方式来删除的Redis/4.0.2和使用Redis的@ 3.2作为我的默认redis,让命令以redis-serverredis-cli参考3.2代替?我使用的是Mac OS X Yosemite 10.10.5和Homebrew 1.3.4。

$ ls -l /usr/local/bin/ | grep redis 
lrwxr-xr-x 1 jsoro wheel  41 Oct 5 12:51 redis-benchmark -> ../Cellar/redis/4.0.2/bin/redis-benchmark 
lrwxr-xr-x 1 jsoro wheel  41 Oct 5 12:51 redis-check-aof -> ../Cellar/redis/4.0.2/bin/redis-check-aof 
lrwxr-xr-x 1 jsoro wheel  41 Oct 5 12:51 redis-check-rdb -> ../Cellar/redis/4.0.2/bin/redis-check-rdb 
lrwxr-xr-x 1 jsoro wheel  35 Oct 5 12:51 redis-cli -> ../Cellar/redis/4.0.2/bin/redis-cli 
lrwxr-xr-x 1 jsoro wheel  40 Oct 5 12:51 redis-sentinel -> ../Cellar/redis/4.0.2/bin/redis-sentinel 
lrwxr-xr-x 1 jsoro wheel  38 Oct 5 12:51 redis-server -> ../Cellar/redis/4.0.2/bin/redis-server 

回答

1

如果Brew文档/常见问题解答更加清晰,问题变得微不足道,而且可能会更容易。 Brew FAQs表示卸载由brew cleanup <formula>处理,这是导致我的redis/3.0.3被删除的原因。但是,brew cleanup不会删除redis/4.0.2。要删除它,我用brew uninstall,我无法在文档发现...

$ brew uninstall redis 
Uninstalling /usr/local/Cellar/redis/4.0.2... (11 files, 2.7MB) 

然后,修复[email protected]没有/usr/local/bin/下符号链接的剩余问题,我第一次尝试卸载/重安装[email protected],看看是否会家酿照顾它......

$ ls -l /usr/local/bin/ | grep redis 
$ brew uninstall [email protected] 
Uninstalling /usr/local/Cellar/[email protected]/3.2.11... (11 files, 1.7MB) 
$ brew install [email protected] 
==> Downloading http://download.redis.io/releases/redis-3.2.11.tar.gz 
## TRIMMED ## 
==> Summary 
    /usr/local/Cellar/[email protected]/3.2.11: 11 files, 1.7MB, built in 10 seconds 

当然,这并没有创建符号链接 - 实际上这是我从输出削去注意事项部分以明确地说,这建议。而不是使用他们的建议,我选择了手动创建符号链接:

$ cd /usr/local/bin/ 
$ ls -l | grep redis 
$ 
$ ln -s /usr/local/Cellar/redis\@3.2/3.2.11/bin/redis-check-aof redis-check-aof 
$ ln -s /usr/local/Cellar/redis\@3.2/3.2.11/bin/redis-check-rdb redis-check-rdb 
$ ln -s /usr/local/Cellar/redis\@3.2/3.2.11/bin/redis-cli redis-cli 
$ ln -s /usr/local/Cellar/redis\@3.2/3.2.11/bin/redis-sentinel redis-sentinel 
$ ln -s /usr/local/Cellar/redis\@3.2/3.2.11/bin/redis-server redis-server 
$ ls -l | grep redis 
lrwxr-xr-x 1 jsoro wheel  54 Oct 5 14:27 redis-check-aof -> /usr/local/Cellar/[email protected]/3.2.11/bin/redis-check-aof 
lrwxr-xr-x 1 jsoro wheel  54 Oct 5 14:27 redis-check-rdb -> /usr/local/Cellar/[email protected]/3.2.11/bin/redis-check-rdb 
lrwxr-xr-x 1 jsoro wheel  48 Oct 5 14:27 redis-cli -> /usr/local/Cellar/[email protected]/3.2.11/bin/redis-cli 
lrwxr-xr-x 1 jsoro wheel  53 Oct 5 14:27 redis-sentinel -> /usr/local/Cellar/[email protected]/3.2.11/bin/redis-sentinel 
lrwxr-xr-x 1 jsoro wheel  51 Oct 5 14:26 redis-server -> /usr/local/Cellar/[email protected]/3.2.11/bin/redis-server 

要注意的最后一件事情是,因为我已经运行Redis的服务器,同时在Redis的/ 4.0.2版本中,dump.rdb文件不再兼容。在4.x dump.rdb上使用redis 3.2.x运行redis-server会导致服务器立即退出。

$ redis-server 
## TRIMMED ## 
38504:M 05 Oct 14:29:07.234 # Server started, Redis version 3.2.11 
38504:M 05 Oct 14:29:07.259 # Can't handle RDB format version 8 
38504:M 05 Oct 14:29:07.260 # Fatal error loading the DB: Invalid argument. Exiting. 

不幸的是,你需要rm dump.rdb,或删除/重命名文件dump.rdb,为了得到Redis的服务器重新启动。

+0

常见问题解答说'brew cleanup'用于删除旧版本的公式;并不是它用来删除任何公式。该任务已经由'brew uninstall'处理,该连接在您所链接的页面上提到,在“如何卸载公式?”下方提到。 – bfontaine

+0

不准确。常见问题解答仅提及使用force标志进行卸载,并明确警告它具有“破坏性”,以阻止使用。而且,由于提及不在代码块中,因此它在页面上相对不可见。 –

+1

的确如此。除非你想这样做,否则我会让公关提出一个更好的措辞/格式。 – bfontaine

相关问题