特殊事件处理篇

CentOS 8 自行编译 NCO 的问题

一直找不到某些软件,但是旧版是有的!原来是 yum module 的问题!

最近更新时间: 2020/04/23

问题发生的状况说明

鸟哥因为运行计划案的关系,常常需要动用到 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 这个小指令编译出来了!好难得!好感动啊!

其他链接
环境工程模式篇
鸟园讨论区
鸟哥旧站

今日 人数统计
昨日 人数统计
本月 人数统计
上月 人数统计