2017-04-07 54 views
0

在MacOS上有一个homebrew formula来安装rpm5.org的RPM开发包。但是,这只安装命令行工具(rpm,rpmlint,rpmbuild等),不安装任何受支持的语言绑定。如何在MacOS上使用RPM/RPM5的Python语言绑定?

我想使用Pascal语言绑定。然而,当我建立他们,并试图rpm包导入的Python 2.7我得到这个错误:

$ python -c "import rpm._rpm"

Traceback (most recent call last):
File "", line 1, in File "/usr/local/lib/python2.7/venv-default/lib/python2.7/site-packages/rpm/init.py", line 7, in from _rpm import * ImportError: dlopen(/usr/local/lib/python2.7/venv-default/lib/python2.7/site-packages/rpm/_rpmmodule.so, 2): Symbol not found: _sqlite3_enable_load_extension Referenced from: /usr/local/Cellar/rpm/5.4.15_1/lib/librpmio-5.4.dylib Expected in: flat namespace in /usr/local/Cellar/rpm/5.4.15_1/lib/librpmio-5.4.dyl

要构建Python绑定我重新安装使用这些命令的rpm包自制:

brew install -v --keep-tmp --build-from-source rpm 2>&1 | tee brew_install.log 
cd /tmp/rpm-20170408-18245-1u8nsbs/rpm-5.4.15 
./configure --prefix=/usr/local/Cellar/rpm/5.4.15_1 --localstatedir=/usr/local/var --with-path-cfg=/usr/local/etc/rpm --with-path-magic=/usr/local/share/misc/magic --with-path-sources=/usr/local/var/lib/rpmbuild --with-libiconv-prefix=/usr --disable-openmp --disable-nls --disable-dependency-tracking --with-db=external --with-sqlite=external --with-file=external --with-popt=external --with-beecrypt=internal --with-libtasn1=external --with-neon=internal --with-uuid=external --with-pcre=internal --with-lua=internal --with-syck=internal --without-apidocs varprefix=/usr/local/var --with-python 
cd python 
make 
make install 

注意./configure命令是作为自制与--with-python开关所附所用的相同。

如何使用基于跨平台rpm5.org的源代码在MacOS上进行Python语言开发?

+0

rpmio/rpmsql.c我不认为这是独立分布在所有。 – pvg

回答

1

您的错误取决于在brew/OS上如何创建sqlite3和rpm。

可以构建sqlite3以添加_sqlite3_enable_load_extension 或RPM可以修补以去除对_sqlite3_enable_load_extension的需要。

如果修补RPM,看近线2881