2017-10-05 13 views
0

redis/3.0.3이 설치된이 퀘스트를 시작했고 로컬 dev redis를 버전 3.2.3으로 업그레이드하려고합니다. 우리가 생산에서 무엇을 운영하고 있는지. 궁극적으로 원하는 버전보다 먼저 redis 4.0.2를 설치 한 brew upgrade redis을 실행했습니다. 그런 다음 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]를 별도의 자작 수식으로 간주합니다.

$ 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] 
레디 스/4.0.2 및 사용 레디 스를 제거 할 수있는 올바른 "브루"방법은 무엇

@ 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 문서/FAQ가 더 명확한 경우 문제가 될 수 있습니다. Brew FAQs은 제거가 brew cleanup <formula>으로 처리된다고 말합니다. 이것이 내가 redis/3.0.3을 제거한 원인입니다. 그러나 brew cleanup은 redis/4.0.2를 제거하지 않습니다. 그것을 제거하려면 내가 /usr/local/bin/에서 심볼릭 링크되지 [email protected]의 나머지 문제를 해결하기 위해, 그럼이 문서에서 찾을 수 없습니다 brew uninstall ...

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

를 사용, 내가 먼저 제거를 시도/재 실제로 내가 출력에서 ​​멀리 손질주의 사항이 섹션은 명시 적으로이 말한다 -이 심볼릭 링크를 생성하지 않은, 물론

$ 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 

... 브루 알아서 것입니다 있는지 확인하기 위해 [email protected]의 설치 제안. 대신 자신의 제안을 사용하여, 나는 수동으로 심볼릭 링크를 만들 것을 선택 :

$ 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 

주의해야 할 마지막 것은입니다 나는 레디 스 서버를 실행 한 이후 동안 레디 스/4.0.2 버전 아래에서 dump.rdb 파일 더 이상 호환되지 않습니다. 12.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 파일을 제거/이름을 바꿉니다.

+0

FAQ에서는 'brew cleanup'은 수식의 * 이전 버전 *을 제거하는 데 사용됩니다. 그것은 어떤 공식을 제거하는 데 사용되는 것이 아닙니다. 이 작업은 이미 링크 된 페이지에서 언급 한 'brew uninstall'에 의해 처리됩니다. "공식을 어떻게 제거합니까?" – bfontaine

+0

정확하지 않습니다. FAQ는 force 플래그를 사용하여 설치 제거를 언급하고 사용을 중단하기 위해 "파괴적"이라고 명시 적으로 경고합니다. 또한 언급은 코드 블록에 없기 때문에 페이지에서 상대적으로 보이지 않습니다. –

+1

사실입니다. 당신이 그것을하고 싶지 않다면, 나는 더 나은 말씨/형식을 제안하는 홍보를 할 것입니다. – bfontaine