文章目录
  1. 1. 解决方案
    1. 1.1. 安装 Carp 依赖包
    2. 1.2. 升级系统自带的 Perl
    3. 1.3. xlocale.h
    4. 1.4. 升级系统自带的 libzip
    5. 1.5. 安装 GNU m4
    6. 1.6. 收尾

起因已经忘了,总之就是服务器因为要使用新功能,所以要配置相应的环境,然后安装 phpize 报错。

1
2
3
4
5
6
7
# yum install -y phpize
Can't locate Carp.pm in @INC (@INC contains: /usr/share/autoconf /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/lib64/perl5/vendor_perl/Data/Dumper.pm line 22.
BEGIN failed--compilation aborted at /usr/lib64/perl5/vendor_perl/Data/Dumper.pm line 22.
Compilation failed in require at /usr/share/autoconf/Autom4te/C4che.pm line 33.
BEGIN failed--compilation aborted at /usr/share/autoconf/Autom4te/C4che.pm line 33.
Compilation failed in require at /usr/bin/autom4te line 37.
BEGIN failed--compilation aborted at /usr/bin/autom4te line 37.

解决方案

安装 Carp 依赖包

根据上面的错误,第一反应是安装Carp依赖。在 https://pkgs.org/download/perl-Carp 网站按照自己需求进行下载,不同的依赖包都可以在 https://pkgs.org/download/依赖包名称 进行查找下载。

然后安装rpm包。

1
2
# rpm -Uvh /root/perl-Carp-1.26-244.el7.noarch.rpm --nodeps --force
/usr/bin/perl: symbol lookup error: /usr/lib64/perl5/vendor_perl/auto/Cwd/Cwd.so: undefined symbol: Perl_Gthr_key_ptr

不出意外的话就要出意外了, Perl 报错。是因为版本太低了。

升级系统自带的 Perl

CentOS 系统自带的 Perl 版本是5.8.8,相当落后。

下载合适的 Perl 版本进行安装。

1
2
3
4
5
6
# cd ~
# wget -C http://www.cpan.org/src/5.0/perl-5.14.1.tar.gz
# tar perl-5.14.1.tar.gz
# cd perl-5.14.1
# ./Configure -des -Dprefix=/usr
# make && make install

如果这步解决了的话,也有点太容易了,继续解决问题。先后报了两个问题。

1
2
3
4
5
6
7
8
/usr/include/xlocale.h:27:16: error: redefinition of 'struct __locale_struct'
typedef struct __locale_struct
^~~~~~~~~~~~~~~
In file included from /usr/include/bits/types/locale_t.h:22,
from /usr/include/stdlib.h:272,
from ../glib/gstrfuncs.c:35:
/usr/include/bits/types/__locale_t.h:28:8: note: originally defined here
struct __locale_struct
1
system libzip must be upgraded to version >= 0.11

逐个解决即可。

xlocale.h

把 /usr/include/xlocale.h 中的内容屏蔽掉。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#ifndef _XLOCALE_H
#define _XLOCALE_H 1

#if 0
/* Structure for reentrant locale using functions. This is an
(almost) opaque type for the user level programs. The file and
this data structure is not standardized. Don't rely on it. It can
go away without warning. */
typedef struct __locale_struct
{
/* Note: LC_ALL is not a valid index into this array. */
struct __locale_data *__locales[13]; /* 13 = __LC_LAST. */

/* To increase the speed of this solution we add some special members. */
const unsigned short int *__ctype_b;
const int *__ctype_tolower;
const int *__ctype_toupper;

/* Note: LC_ALL is not a valid index into this array. */
const char *__names[13];
} *__locale_t;

/* POSIX 2008 makes locale_t official. */
typedef __locale_t locale_t;
#endif

#endif /* xlocale.h */

升级系统自带的 libzip

先卸载系统自带的libzip。

1
# yum -y remove libzip-devel

然后从官网下载并编译安装合适的版本。

1
2
3
4
5
6
# cd ~
# wget https://libzip.org/download/libzip-1.3.2.tar.gz
# tar xvf libzip-1.3.2.tar.gz
# cd libzip-1.3.2
# ./configure
# make && make install

安装 GNU m4

永远都有意外发生,解决完前两个问题,又报下面的错误了。

1
autom4te: need GNU m4 1.4 or later: /usr/bin/m4

那就安装 GNU m4 吧。

1
2
3
4
5
6
7
8
# cd ~
# wget http://mirrors.kernel.org/gnu/m4/m4-1.4.13.tar.gz
# tar -xzvf m4-1.4.18.tar.gz
# cd m4-1.4.18
# ./configure -prefix=/usr/local
# make && make install

ln -s /usr/local/bin/m4 /usr/bin/m4

收尾

最后整理一下如果所有报错都存在的情况下,实际上的安装处理顺序:xlocale.hlibzipGNU m4PerlCarpphpize

收工。


♦ 本文固定连接:https://www.gsgundam.com/2024/2024-05-08-z23-centos-7-install-phpize-and-others/

♦ 转载请注明:GSGundam 2024年05月08日发布于 GSGUNDAM砍柴工

♦ 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

♦ 原创不易,如果页面上有适合你的广告,不妨点击一下看看,支持作者。(广告来源:Google Adsense)

♦ 本文总阅读量