有几台服务器升级wget,版本1.21.3
centos8系统升级顺利。
centos7系统2台顺利,1台make报错。
执行命令如下:
./configure --prefix=/usr --sysconfdir=/etc --with-ssl=openssl
make
错误信息:
/usr/include/openssl/x509v3.h:166: undefined reference to `OPENSSL_sk_num'
openssl.o: In function `sk_GENERAL_NAME_value':
/usr/include/openssl/x509v3.h:166: undefined reference to `OPENSSL_sk_value'
openssl.o: In function `sk_GENERAL_NAME_pop_free':
/usr/include/openssl/x509v3.h:166: undefined reference to `OPENSSL_sk_pop_free'
openssl.o: In function `pkp_pin_peer_pubkey':
/root/wget-1.21.3/src/openssl.c:969: undefined reference to `X509_get_X509_PUBKEY'
/root/wget-1.21.3/src/openssl.c:979: undefined reference to `X509_get_X509_PUBKEY'
openssl.o: In function `sk_GENERAL_NAME_pop_free':
/usr/include/openssl/x509v3.h:166: undefined reference to `OPENSSL_sk_pop_free'
按照提示/usr/include/openssl/x509v3.h:166行错误,未定变量,与openssl.o内函数相关。
跟安装成功的服务器对比,发现两台服务器的openssl.o文件不一样。
openssl.o是在编译过程中生成的文件,软件包内原本不包含。应该是提取服务器openssl的某些信息,生成的。推断两台服务器openssl存在不同之处。
输入命令:openssl version
版本信息一致,都是1.1.1p。这两台在前些日子升级到该版本,方式编译安装。
开始以为wget软件包有问题,重新传还是报错。
升级openssl时创建过一些软链接,检查一遍,没有问题。
再次陷入沉思......
既然错误提示是openssl相关的错误,那么应该就是openssl的某个问题导致的。
于是开始对比openssl安装目录下的文件。比较之下有了发现,不知什么原因,两个服务器的openssl安装目录下的文件有一部分不一致。
于是,先做一个备份。然后把成功安装的服务器openssl目录打包,复制到问题服务器。覆盖问题服务器的openssl目录。
然后先测试openssl,执行没问题。再次编译,顺利通过。
看来问题就出在openssl目录下某些文件。