CentOS 5 i386/x86_64 用 rpmbuild 安裝 filebeat 6.x

2018-06-07 CentOS, Tools

最近使用兩天使用吃奶的力氣在處理 舊版(CentOS-5) / 新版(Ubuntu-1604/CentOS7) 在 log forwarder 的相容性,前陣子有提到 elastic 現代化的 ELK/EFK Log 架構大補帖 在 Node 上可以用 filebeat / logstash 來收

 

問題來了 … 用來當中介 filter 的 logstash input (6.x) 如果和 Node 的版本 output (1.x) 差太多的話會有不相容的狀況發生 (NoMethodError),如果要和 6.x 的 logstash 相容至少要上到 5.x later … 索性先放棄 logstash 當 log forwarder。

 

在 elastic 的支援清單看到 filebeat 全面不支援 CentOS 5 瞬間想哭,後來有高手同事建議可以用 rpmbuild 來嘗試在 CentOS 來 build 看看,結果真的可以動!!

 

這篇就是要講怎麼用 rpmbuild 來 build 出可用的 rpm,範本當然就是 filebeat!!

 

話先講在前面,如果很懶得 build 也提供給各位 rpm 下載:MEGA

 

CentOS 5 用 rpmbuild filebeat 6.x

 

環境:

  • OS:CentOS 5.x x86_64

 

這個方案 x86_64 / i686 都適用,只是 x86_64 build 出來的只能給 x86_64 的機器裝,不能混用。

 

Step.1 yum 安裝 rpmbuild

 

Step.2 建立 build 資料夾結構

  • BUILD:RPM 安裝內容自動建立的位置
  • RPMS:Build 出來的 RPM Package
  • SOURCES:包好的 source code (example.tar.gz)
  • SPECS:RPM 建立的規格檔 (build spec)
  • SRPMS:Source RPM

.rpmmacros 則是定義在使用 rpmbuild 時預設的路徑。

 

Step.3 下載最新版的 filebeat (6.2.4)。

 

Step.4 filebeat 裡面的 source code 沒有 init 啟動服務的 script,所以把這部份加進去

啟動 script 有土炮一些作法,因為原本 filebeat 是用 filebeat-god 來管理服務,但是 source code 沒有,也懶得再 build filebeat-god ….

 

Step.5 打包丟到 rpmbuild/SOURCES

 

Step.6 再來是寫 spec 定義怎麼 build 和安裝

 

先定義 Summary, Name, Version 必要資訊

直接跳過看 %install 的部份,其實就是把需要的檔案搬到 %buildroot 這邊去,按照想要安裝的目錄結構放在以 %buildroot 為起始的位置

 

舉例這段 %{__install} -m 755 init.d/filebeat %{buildroot}%{_sysconfdir}/init.d/

其實就是把 init.d/filebeat 丟到 rpmbuild/tmp/etc/init.d/filebeat,而實際 rpm 安裝後會放在 /etc/init.d/filebeat 這邊。

 

%files 這段就是在打包檔案,%defattr 用來定義權限,%exclude 可以排除要打包的位置,( 如果不排除 /etc/init.d 安裝 rpm 時會跟 chkconfig 打架,exclude 後還是會把啟動 script 丟過去 /etc/init.d/filebeat )

 

最後就是 %changelog,這麼辛苦弄好,做個記錄吧!

 

Step.7 用 rpmbuild 打包成 rpm

 

成功後可以在 ~rpmbuild/RPMS/x86_64 找到打包好的 filebeat-6.2.4_x86_64_el5-acme.x86_64.rpm

 

試試把 rpm 拿來安裝吧 !!

 

 

Reference:

使用 RPM Build ,在Linux 打包 Package

Creating RPM package of Elastic Filebeat

 

 

 

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

彙整

分類

open all | close all

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱

%d 位部落客按了讚: