在redhat 5上构建Python 3.2.3:缺少_posixsubprocess

我正在尝试在RHEL 5.7机器上构建 Python3,我成功地构建了Python 3.2.2,其中:
# Install required build dependencies
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel

# Fetch and extract source. Please refer to http://www.python.org/download/releases
# to ensure the latest source is used.
wget http://www.python.org/ftp/python/3.2/Python-3.2.tar.bz2
tar -xjf Python-3.2.tar.bz2
cd Python-3.2

# Configure the build with a prefix (install dir) of /opt/python3,compile,and install.
./configure --prefix=/opt/python3
make

但我在Python 3.2.3中失败了(?):

Failed to build these modules:
_posixsubprocess

这是一个应该打扰我的问题吗?我该如何构建它?
我找到了this patch,但它没有包含在我从网站上获得的Python 3.2.3源代码中……

这是stderr的输出:

~/tmp/Python-3.2.3 $make > build.log
ldd: warning: you do not have execution permission for `/usr/local/lib/libreadline.so'
/usr/bin/ld: skipping incompatible /usr/local/lib/libreadline.so when searching for -lreadline
/usr/bin/ld: skipping incompatible /usr/local/lib/libreadline.a when searching for -lreadline
/home/oznahum/tmp/Python-3.2.3/Modules/_posixsubprocess.c: In function '_close_open_fd_range_safe':
/home/oznahum/tmp/Python-3.2.3/Modules/_posixsubprocess.c:205: error: 'O_CLOEXEC' undeclared (first use in this function)
/home/oznahum/tmp/Python-3.2.3/Modules/_posixsubprocess.c:205: error: (Each undeclared identifier is reported only once
/home/oznahum/tmp/Python-3.2.3/Modules/_posixsubprocess.c:205: error: for each function it appears in.)
/usr/bin/ld: skipping incompatible /usr/local/lib/libz.so when searching for -lz
/usr/bin/ld: skipping incompatible /usr/local/lib/libz.so when searching for -lz

~/tmp/Python-3.2.3 $grep posix build.log 
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes    -I. -IInclude -I./Include    -DPy_BUILD_CORE  -c ./Modules/posixmodule.c -o Modules/posixmodule.o
ar rc libpython3.2m.a Modules/_threadmodule.o  Modules/signalmodule.o  Modules/posixmodule.o  Modules/errnomodule.o  Modules/pwdmodule.o  Modules/_sre.o  Modules/_codecsmodule.o  Modules/_weakref.o  Modules/_functoolsmodule.o  Modules/operator.o  Modules/_collectionsmodule.o  Modules/itertoolsmodule.o  Modules/_localemodule.o  Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o  Modules/zipimport.o  Modules/symtablemodule.o  Modules/xxsubtype.o
building '_posixsubprocess' extension
gcc -pthread -fPIC -fno-strict-aliasing -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -IInclude -I/home/oznahum/localroot/include -I. -I./Include -I/usr/local/include -I/home/oznahum/tmp/Python-3.2.3 -c /home/oznahum/tmp/Python-3.2.3/Modules/_posixsubprocess.c -o build/temp.linux-x86_64-3.2/home/oznahum/tmp/Python-3.2.3/Modules/_posixsubprocess.o
_posixsubprocess

解决方法

好的……我在这里回答,不要回答这个问题.
我重新下载了Python-3.2.3源并检查它们.他们确实不包括那个补丁.
我重新应用了补丁并在CentOS-5.7和RedHat-5.7上测试了该建筑物.我设法编译没有错误.
所以,我想关键是要正确应用补丁.
我的失败构建在Modules / _posixsubprocess中:
199 static void
200 _close_open_fd_range_safe(int start_fd,int end_fd,PyObject* py_fds_to_keep)
201 {
202     int fd_dir_fd;
203     if (start_fd >= end_fd)
204         return;
205         fd_dir_fd = open(FD_DIR,O_RDONLY | O_CLOEXEC,0);
206 #ifdef O_CLOEXEC
207      fd_dir_fd = open(FD_DIR,0);
208 #else
209     fd_dir_fd = open(FD_DIR,O_RDONLY,0);
210 #ifdef FD_CLOEXEC

第205行应该已被删除…

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


查找全部容器的日志文件 $ sudo find /var/lib/docker/containers -name *.log 查看日志位置 $ docker inspect --format='{{.LogPath}}' <container_name> 实时查询内容 $
Linux日志文件中列属性的详细解析
在Linux系统中没有duf命令,如何有效地管理磁盘空间?
深入探讨EncryptPad在Linux操作系统中的功能和优势
原理和应用场景:Linux中ttyload工具的工作原理和实际用途
深度解析SELinux的三种策略类型
评估Linux系统性能的ttyload工具使用效果
分享在Linux系统中检测SSH版本的方法
介绍Linux平台上的数据加密工具EncryptPad
在Linux系统中,如何查看和诊断块设备信息?
在Linux环境下如何查看块设备信息?
探索Linux操作系统下的数据加密工具EncryptPad
学会在Linux系统中查看硬盘信息
分析SELinux:原理与实践
掌握SELinux策略类别
技巧:有效解读和管理Linux日志文件
查看Linux系统中的所有用户
了解Linux系统中各种不同类型的日志文件
深入理解Linux PS命令
方法:在Linux操作系统中查看用户