一直找不到某些软件,但是旧版是有的!原来是 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 这个小指令编译出来了!好难得!好感动啊!