在 RedHat 4 上安裝 Rsyslog 8

這年頭還有 RHEL4,而且還要安裝新版的 Rsyslog8?

你驚訝嗎?我也很驚訝,撰文時間 2023 年我還需要用到 RHEL4?反正既然都遇到了,那就順便紀錄紀錄,不過倒底什麼時候會用到呢?搞不好寫這篇文章其實就是在浪費我時間吧。
總之,這篇沒有什麼重點,主要就是紀錄我在 RHEL4 要執行 Rsyslog 但 Repo 早就關光光,只能從 SourceCode 自己編譯的過程。
一層一層解開相依關係,最後完成安裝,折騰自己的紀錄。

前情提要

因為工作需要(沒錯,老公司老機器老系統死不更新),所以要在 RHEL4 上安裝 Rsyslog,也就因為出現了這篇文。不過在這篇文章我採用比較比我當時處理還要再完整一點的作法去處理,畢竟我也不敢動系統東西太多,保守一點。
後來自己弄了一個虛擬機環境出來,用 RHEL4 全新安裝,一些 devel package,應該會是符合當時的環境,於是就開始囉。

在2023年還可以看到 RHEL4 啊(冏

必要的套件包

如圖片所示,需要的套件包有以下:

都下載完成後,我將他們解壓縮到另一個資料unpack中。

Rsyslog 第一次見面

編譯步驟

OK,進到這部份,最簡單的部份結束了(),接下來才是困難的地方。
首先要先進入到rsyslog的資料夾內,然後編譯步驟基本上大同小異:

  1. ./configure
  2. make
  3. make install

That’s ALL.

於是乎,開始進行第一步驟吧!

configure 失敗?

沒想到第一個難題馬上就遇到了,事情總是沒想像中順利,不過,這都不是大問題,它很明確跟你說哪裡有問題對吧?我們再看一次圖片:

  • Package requirements (libestr >= 0.1.9) were not met:
  • No package 'libestr' found

聰明的各位應該知道問題在哪吧?沒錯,把libestr安裝進去就可以囉。不過事情總不是想像中那麼順利,是吧?
因為 RHEL4 是一個上古版本,你在網路上都沒有辦法找到還有在維護的 repo,所以你只剩下手動編譯一途,讓我們繼續吧!

解決相依問題

沒有特別的步驟,就參照上述編譯步驟對以下每一個進行編譯安裝。

libestr

一樣進入到libestr資料夾中編譯安裝它。

繼續回到rsyslog去 configure 它: OK,這次換成了 libfastjson,那一樣繼續下去囉!

libfastjson

進入到libfastjson資料夾中編譯安裝它。

繼續回到rsyslog去 configure 它: 這次是 uuid,有在往前推進度呢!持續下去!

libuuid

因為libuuidutil-linux中的一部分,所以這是進去的資料夾不一樣。
進入到util-linux資料夾中編譯安裝它。

不過因為util-linux裡面有很多東西,我只要libuud,所以 configure 參數要改一下:
./configure --disable-all-programs --enable-libuuid

繼續回到rsyslog去 configure 它: 訊息好像不一樣?不過沒關係,還是可以看出端倪,去找libgcrypt玩吧!

libgcrypt

進入到libgcrypt資料夾中編譯安裝它。

慘了,編譯不起來,同時缺少這麼多東西,不過不用緊張,make只有跟你說他需要libgpg-error而已,先是試看吧!

案外案 libgpg-error

進入到libgpg-error資料夾中編譯安裝它。

看起來很順利,繼續回到libgcrypt吧。
OK 收工,大家可以下班了(誤)。
還記得剛剛卡在缺少libgcrypt的話,那繼續編譯 rsyslog 吧。

是是是,libcurl是吧,我知道了知道了。

libcurl

依照慣例去找curl然後完成你知道該做的事情。
不過這裡要注意一下,因為CURL跟 TLS 連線有關,所以你要手動跟他說你要找誰的 SSL 套件參照,這裡用最方便系統有的openssl處理,所以 configure 指令會變成:
./configure --with-openssl

回到編譯rsyslog編譯,如果你直接下./confiugre的話應該還是會出現錯誤:

我不是裝了CURL嗎,怎麼跟我說沒有?那是因為一般來說,lib 有優先順序,所以他在系統預設的/lib中有找到,就不會去找我們自己編譯的/usr/local/lib,也就是這樣。
因此我們要手動跟他說「誒!CURL在這裡,去這裡找!」

./configure參數前面增加變數,變成:
CURL_LIBS=/usr/local/lib/ CURL_CFLAGS="-I/usr/local/lib/" ./configure
這樣就會成功了。

Rsyslog 終局

真高興看到他可以噴版本給我,堂堂正正Rsyslog 8.2304.0在 RHEL4 上的 i686 架構。
辛苦各位了。(鞠躬)

錯誤訊息?

上途中第一行還是有錯誤,那個沒問題嗎?
恩…那是因為在/lib/tls/中放著 RHEL4 自己的 lib,優先順序似乎高於所有,暫時我也沒有找到解決方法,不過手動ln過去的話就會正常,會不會影響到整個系統我就不確定了(逃)。

結語

其實我這篇超級亂寫,很多東西略過,像是看到 Rsyslog 裡面的很多功能支援,如果要啟用應該要編很多東西,所以最後我就只是給一個很基本可以用的 Rsyslog 出來,反正就交差了事(攤手)。
剩下有興趣就請各位自己弄啦,大致上都大同小異就是了。

下台一鞠躬。

文章於 2023-06-04 01:45 更新

 Share!