搭建Redis集群引发的Ruby版本问题的解决

昨天搭建Redis集群时,因为需要用到ruby脚本,所以直接yum install ruby安装,但是当执行

./src/redis-trib.rb create --replicas 2 172.17.0.2:6379 172.17.0.3:6379 172.17.0.4:6379 172.17.0.5:6379 172.17.0.6:6379 172.17.0.7:6379 172.17.0.8:6379 172.17.0.9:6379 172.17.0.10:6379

这个命令时,提示:

./src/redis-trib.rb:24:in `require’: no such file to load – rubygems (LoadError)
from ./src/redis-trib.rb:24

意思是没有安装gem,于是又开始用yum install rubygems,安装完成后,心想这下该行了吧,结果一执行,又给我报了一个这样的错:

/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in ‘gem_original_require’: no such file to load – redis (LoadError)
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require’
from ./src/redis-trib.rb:25

……于是又上网接着搜解决方案,说是有一个redis依赖的gem包缺失,需要安装才行,执行gem install redis即可,于是我就乖乖执行这句命令,结果又给我报一个:

ERROR: Error installing redis:
redis requires Ruby version >= 2.3.0.

此时我内心已经奔溃,到底有完木完???但是身为一个程序员,必须要有与二进制恶势力死磕到底的精神,所以我继续上网搜索解决办法,找到了一个ruby-2.2.3.tar.gz的安装包,心想这下行了吧?

结果安装到一半报错了,不明原因的死活装不上,在此不再赘述。

于是我又接着上网搜安装高版本ruby的解决方案,找到一个使用RVM方式安装ruby和gem的方案,是使用curl下载安装的方式,但是前提是必须要有一个公钥,从网上搜了好几个版本,都会报公钥验证错误,总之就是没法闹!

正当我在放弃和自尽之间犹豫不决时,突然找到了菜鸟教程里的ruby安装方法,艾玛,简直是救命稻草。里面说的又详尽又清晰,关键是RVM的安装方法终于管用了!

献上文章地址:Ruby 安装 - Linux

这次公钥终于验证通过了,成功安装了RVM,之后又用RVM成功安装了ruby新版本(同时rmv会自动安装对应的gem),再执行

gem install redis

也顺利完成,这下该有的都有了,应该没问题了吧?

再次执行./src/redis-trib.rb create --replicas 2 172.17.0.2:6379 172.17.0.3:6379 172.17.0.4:6379 172.17.0.5:6379 172.17.0.6:6379 172.17.0.7:6379 172.17.0.8:6379 172.17.0.9:6379 172.17.0.10:6379

报了一个这样的错

[ERR] Node 172.17.0.3:6379 is not configured as a cluster node.

嗯……不错,终于是集群内部的问题,而不再是ruby的问题了!

原来是因为修改reids.conf集群配置后没有重启redis服务器的关系,重启一下redis,果然:

Using 3 masters:
172.17.0.2:6379
172.17.0.3:6379
172.17.0.4:6379
Adding replica 172.17.0.5:6379 to 172.17.0.2:6379
Adding replica 172.17.0.6:6379 to 172.17.0.2:6379
Adding replica 172.17.0.7:6379 to 172.17.0.3:6379
Adding replica 172.17.0.8:6379 to 172.17.0.3:6379
Adding replica 172.17.0.9:6379 to 172.17.0.4:6379
Adding replica 172.17.0.10:6379 to 172.17.0.4:6379
M: 228b4e5c151f37e5b085b2ea5c9189e2c1c5df20 172.17.0.2:6379
slots:0-5460 (5461 slots) master
M: ba4d98c0d78f5d0476de1f304298839ad13ed82d 172.17.0.3:6379
slots:5461-10922 (5462 slots) master
M: f754b215a40de787e4310950950061aba500e131 172.17.0.4:6379
slots:10923-16383 (5461 slots) master
S: 9a25ae50560b2fc3caae00a0b07aabab386fdd42 172.17.0.5:6379
replicates 228b4e5c151f37e5b085b2ea5c9189e2c1c5df20
S: c9d6e176f259b633fe4e401d4ecb84d3a04b48c3 172.17.0.6:6379
replicates 228b4e5c151f37e5b085b2ea5c9189e2c1c5df20
S: ca6ef6cefbf05d46e4d924899781a18072113808 172.17.0.7:6379
replicates ba4d98c0d78f5d0476de1f304298839ad13ed82d
S: 720e4ea5eaedeb6f67bfeac52605c8cc1a8d96ce 172.17.0.8:6379
replicates ba4d98c0d78f5d0476de1f304298839ad13ed82d
S: ed7389185864bae82b5ad7987c1042e81040c7b4 172.17.0.9:6379
replicates f754b215a40de787e4310950950061aba500e131
S: 9e1e260dac06888c73868b3431e9b1f36fa6fd87 172.17.0.10:6379
replicates f754b215a40de787e4310950950061aba500e131

……呼……这次真的没问题了,长出一口气,搞定!

### 关于 'cache-loader' 模块未找到的解决方案 当遇到 `Syntax Error: Error: Cannot find module 'cache-loader'` 错误时,通常是因为某些依赖项未能正确安装或存在版本兼容性问题。以下是针对该问题的具体分析和解决方法: #### 1. 删除现有依赖并重新安装 由于部分依赖可能未完全下载或配置失败,建议清理当前环境中的依赖文件,并重新执行安装操作。 - **删除旧依赖** 进入项目根目录,运行以下命令以移除现有的 `node_modules` 文件夹以及锁定文件: ```bash rm -rf node_modules package-lock.json ``` - **重新安装依赖** 使用以下命令重新拉取所有必要的模块: ```bash npm install ``` 此过程会依据 `package.json` 配置自动解析所需依赖关系[^3]。 #### 2. 处理高版本 Node.js 和 NPM 的兼容性问题 如果使用的 Node.js 或 NPM 版本较高,则可能会触发上游依赖冲突的情况。此时可以通过指定参数来忽略此类警告并强制完成安装流程。 - 执行带选项的安装指令: ```bash npm install --legacy-peer-deps ``` 上述命令能够有效规避因新策略引入而导致的部分历史遗留库无法匹配的问题[^4]。 #### 3. 明确目标加载器及其关联插件的状态 确认是否遗漏了其他间接影响到构建链路的关键组件(例如 `sass-loader`, `style-loader`)。对于特定场景下的样式表预处理工具缺失情况也需要同步关注[^1]。 通过上述措施基本可以消除由缓存机制引发的相关异常状况;当然,在实际开发过程中还应定期更新全局管理软件至最新稳定版次从而减少不必要的麻烦发生几率。 ```javascript // 示例代码片段展示如何验证已修复后的服务端渲染功能是否恢复正常工作状态。 const express = require('express'); const path = require('path'); let app = express(); app.use(express.static(path.join(__dirname, './dist'))); app.listen(8080,function(){ console.log("Server is running on port 8080..."); }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值