每到報稅季就要在電腦上插健保卡來驗證身份及報稅,這已經是每年固定會做的事。然而由於 DR 在家裡最主要使用的桌機系統,大概也是每年都會換裝一個 Fedora 發行版。所以 Linux 版本的健保卡驗證程式(mLNHIICC)及其依賴套件都得再重裝一次(相關文章見此)。於是在今年安裝了 Fedora 42 後,其實又是再一次面臨了 mLNHIICC 程式相依性無法直接滿足的情形。因為即便是 mLNHIICC 的 20240710.1 版本,也仍然依賴於已經停止維護的 OpenSSL 函式庫 1.x 版。在 mLNHIICC 安裝完畢後,可使用以下指令的輸出結果來確認此情形,若缺少該函式庫也就實際上無法執行起來:
- ldd /usr/local/share/NHIICC/mLNHIICC
已知 openssl1.1 套件自 Fedora 40 起便已停止供應,Fedora 39 是最後一個存在此套件的 Fedora 發行版。不過以整個 Red Hat 生態體系來說,提供相對長期維護支援的 RHEL 發行版(及其複製品),則是直至 RHEL 9 為止都依然有提供此套件版本(套件名稱為 compat-openssl11),是到了最近發佈的 RHEL 10 才就此移除。
由於台灣的 Linux 桌面系統使用者,比例上而言估計是一個小眾到不行的族群,而且當中多數人口應該也並不排斥在一旦需要時,使用其它如 Windows、macOS 這類更加主流的桌面作業系統。因此 DR 個人對於健保卡驗證程式有支援 Linux 平台已是覺得慶幸,並不太要求對於各 Linux 發行版的特性必須有更加敏銳的應對及支援。
所以缺了什麼就自行把它裝起來吧,而這回 DR 覺得應該要再留下一點個人筆記,於是會陳述以下的操作流程。下列步驟並非是意圖追求所謂的最佳實踐,就只是眾多可行性的其中一種方式:
- sudo dnf install rpm-build make gcc zlib-devel lksctp-tools-devel
- wget https://download.fedoraproject.org/pub/fedora/linux/releases/39/Everything/source/tree/Packages/o/openssl1.1-1.1.1q-5.fc39.src.rpm
- rpm -ivh openssl1.1-1.1.1q-5.fc39.src.rpm
- sed -i -e "s/%patch/%patch /g" rpmbuild/SPECS/openssl1.1.spec
- rpmbuild -ba rpmbuild/SPECS/openssl1.1.spec
- sudo dnf install ./rpmbuild/RPMS/x86_64/openssl1.1-1.1.1q-5.fc42.x86_64.rpm
倘若前述步驟皆執行無誤,應能夠成功編譯出 openssl1.1 套件並安裝起來。其中的 sed 指令,就是在 openssl1.1.spec 裡的每個 %patch 後面統一多加一個空格,以避免後續執行 rpmbuild 指令時出現「%patchN is obsolete, use %patch N (or %patch -P N): %patch1 -p1 -b .build」錯誤。那麼其實以桌面系統來說,用任一圖形介面的文字編輯器做全域搜尋、取代,也有相同的效果,因此對這項步驟做指令化的操作並不是必要的。