一直找不到某些軟體,但是舊版是有的!原來是 yum module 的問題!
鳥哥因為執行計劃案的關係,常常需要動用到 NetCDF 的科學檔案資料格式,這種格式可以快速存取!只是, 如果要進行合併或者是某些特殊的運算,就比較麻煩!除了寫 NetCDF 原生的 code 之外,其實還有很多既有的工具可以處理, 鳥哥用到最重要的兩個其實是:
尤其是 NCO,該工具提供很多有趣的功能~可以讓我們在不同的檔案間進行許多的運算,檔案的拆解與結合等等,很有趣。 這兩個軟體一般來說都是自行編譯,當然,你也可以透過 EPEL 安裝好 NCO。只是,因為鳥哥的檔案都特別大,為了加速, 只好自行編譯!否則效能恐怕會有點狀況這樣。
I/O API tools 的編譯倒是相對簡單,直接處理好 Makefile 後,下去 make 就好了!NCO 則得要從 ./configure 慢慢做起, 然後 make 再 make install 這樣。只是,在 ./configure 時,一直發現有找不到 antlr 這個函式庫的問題~ 鳥哥使用了底下的指令,一直回報找不到:
[root@localhost ~]# yum whatprovides "*libantlr*"
相當奇怪!照理說,在 CentOS 7 以前有這個東西,而且 NCO 也算是個相當熱門的軟體,沒道理 CentOS 8 會捨棄支援才對! 非常不死心,跑去將 EPEL 的 CentOS 8 的支援當中找到了 nco 的 SRPM 檔案,下載並安裝之後,找到 spec file,查看一下裡面的內容, 內容有點像這樣:
[root@localhost ~]# vim ~/rpmbuild/SPECS/nco.spec ...... Name: nco Version: 4.8.1 Release: 1%{?dist} Summary: Suite of programs for manipulating NetCDF/HDF4 files License: GPLv3 URL: http://nco.sourceforge.net/ Source0: https://github.com/nco/nco/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz Patch0: nco-install_C_headers.patch BuildRequires: gcc-c++ BuildRequires: bison, flex, gawk BuildRequires: netcdf-devel %if 0%{?fedora} || 0%{?rhel} >= 7 BuildRequires: antlr-C++ %else BuildRequires: antlr %endif BuildRequires: chrpath BuildRequires: gsl-devel BuildRequires: texinfo BuildRequires: udunits2-devel ......
看起來明明就有支援 antlr-C++. antlr 等軟體啊!不過,在 EPEL 裡面,確實是找不到 antlr 相關的軟體的!後來查了查, 大家說, antlr 確實有在名為 PowerTools 的 repo 裡面,好開心啊!趕緊來查一下:
[root@localhost ~]# yum --enablerepo=PowerTools search antlr
見鬼了!竟然跟我說,沒有這個軟體的存在!這怎麼可能啊!不要唬我啊~明明大家都說有!後來查了查,發現到其實 antlr 是 javascript 相關的一個『模組功能』, 所以,如果想要安裝該軟體,就得要讓你的 yum 或 dnf 加入到 javapackages-tools 這個模組才可以!使用的方式為:
[root@localhost ~]# yum --enablerepo=PowerTools module enable javapackages-tools [root@localhost ~]# yum --enablerepo=PowerTools search antlr Last metadata expiration check: 1:57:46 ago on Thu 23 Apr 2020 01:26:01 PM CST. ================================= Name & Summary Matched: antlr ================================= antlr-manual.noarch : Manual for antlr antlr-javadoc.noarch : Javadoc for antlr ant-antlr.noarch : Optional antlr tasks for ant antlr-C++.x86_64 : C++ bindings for antlr2 generated parsers ====================================== Name Matched: antlr ====================================== antlr-tool.noarch : ANother Tool for Language Recognition
太棒了!終於找到這個玩意兒~可以來安裝看看了:
[root@localhost ~]# yum --enablerepo=PowerTools install ant-antlr.noarch antlr-C++ antlr-tool
做了上面這件事情之後,系統就擁有 antlr 的函式庫,終於可以將 NCO 裡面的 ncap2 這個小指令編譯出來了!好難得!好感動啊!