Logstash离线安装插件时如何执行bundle update logstash-codec-plain
问题根因
Logstash基于Ruby的bundler工具管理插件依赖,本地Gemfile.lock锁文件会留存历史依赖版本和关联记录。你遇到的版本锁定、不存在的插件仍提示依赖的报错,都是旧锁文件未更新导致的,和实际已安装的插件状态无关。
操作步骤
- 进入Logstash安装目录,所有后续操作均在该目录下执行
cd /usr/share/logstash - 清理旧锁文件和依赖缓存,消除历史记录干扰
rm -f Gemfile.lock rm -rf vendor/bundle - 安装与目标主机兼容的指定版本
logstash-codec-plain,将下方的<目标版本号>替换为实际需要的版本即可./bin/logstash-plugin install --version <目标版本号> logstash-codec-plain - 执行bundler更新,同步锁文件中的版本记录,解决版本锁定问题。注意必须使用Logstash自带的bundle命令,不要调用系统级bundle
该命令作用为更新./bin/bundle update logstash-codec-plainlogstash-codec-plain的锁定版本,同时自动调整关联依赖的匹配规则,清除已不存在的插件的依赖记录。 - 验证版本是否符合预期
./bin/logstash-plugin list --verbose logstash-codec-plain - 重新导出离线安装包
./bin/logstash-plugin prepare-offline-pack --output logstash-output-syslog.zip logstash-output-syslog
目标主机安装
将导出的zip包上传到目标主机后执行以下命令即可完成安装,不会再出现版本不兼容报错:
/usr/share/logstash/bin/logstash-plugin install file:///绝对路径/to/logstash-output-syslog.zip
内容的提问来源于stack exchange,提问作者Ben Aveling
相关产品推荐
相关产品推荐

