Created attachment 7215 [details] Разница __init__.py от swig между версиями 3.0.8 и 3.0.12 (коммит из 3.0.9) После перерсборки с новым swig модуль из пакета python-module-selinux не загружается: [test@dcsin binary]$ python Python 2.7.11 (default, Apr 11 2017, 15:20:35) [GCC 6.3.1 20170118 (ALT 6.3.1-alt2)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import selinux Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib64/python2.7/site-packages/selinux/__init__.py", line 17, in <module> _selinux = swig_import_helper() File "/usr/lib64/python2.7/site-packages/selinux/__init__.py", line 16, in swig_import_helper return importlib.import_module('_selinux') File "/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named _selinux [test@dcsin binary]$ rpm -qi python-module-selinux Name : python-module-selinux Epoch : 1 Version : 2.5 Release : alt3 Architecture: x86_64 Install Date: Вт 26 сен 2017 14:54:41 Group : System/Configuration/Other Size : 591618 License : Public Domain Signature : DSA/SHA1, Пн 11 сен 2017 17:42:30, Key ID 95c584d5ae4ae412 Source RPM : libselinux-2.5-alt3.src.rpm Build Date : Пн 11 сен 2017 17:42:22 Build Host : sem-sisyphus.hasher.altlinux.org Relocations : (not relocatable) Packager : Mikhail Efremov <sem@altlinux.org> Vendor : ALT Linux Team URL : http://userspace.selinuxproject.org/ Summary : Python module for libselinux Description : This package contains SELinux python bindings. При этом установка пакета релиза собраного в p8 из тех же исходников вполне работает: [test@dcsin binary]$ python Python 2.7.11 (default, Apr 11 2017, 15:20:35) [GCC 6.3.1 20170118 (ALT 6.3.1-alt2)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import selinux >>> [test@dcsin binary]$ rpm -qi python-module-selinux Name : python-module-selinux Epoch : 1 Version : 2.5 Release : alt2 Architecture: x86_64 Install Date: Вт 26 сен 2017 14:56:56 Group : System/Configuration/Other Size : 611120 License : Public Domain Signature : DSA/SHA1, Вт 22 ноя 2016 10:56:06, Key ID 95c584d5ae4ae412 Source RPM : libselinux-2.5-alt2.src.rpm Build Date : Вт 22 ноя 2016 10:55:58 Build Host : rider-sisyphus.hasher.altlinux.org Relocations : (not relocatable) Packager : Anton Farygin (Rider) <rider@altlinux.org> Vendor : ALT Linux Team URL : http://userspace.selinuxproject.org/ Summary : Python module for libselinux Description : This package contains SELinux python bindings. При отладке через strace -e file замечено, что модуль _selinux.so не ищется в нужно каталоге /usr/lib64/python2.7/site-packages/selinux/: open("/home/test/RPM/binary/_selinux.so", O_RDONLY) = -1 ENOENT (No such file or directory) [168/4901] open("/home/test/RPM/binary/_selinuxmodule.so", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/test/RPM/binary/_selinux.py", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/test/RPM/binary/_selinux.pyc", O_RDONLY) = -1 ENOENT (No such file or directory) stat("/usr/lib64/python2.7/_selinux", 0x7ffdcf464310) = -1 ENOENT (No such file or directory) open("/usr/lib64/python2.7/_selinux.so", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib64/python2.7/_selinuxmodule.so", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib64/python2.7/_selinux.py", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib64/python2.7/_selinux.pyc", O_RDONLY) = -1 ENOENT (No such file or directory) stat("/usr/lib64/python2.7/plat-linux2/_selinux", 0x7ffdcf464310) = -1 ENOENT (No such file or directory) open("/usr/lib64/python2.7/plat-linux2/_selinux.so", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib64/python2.7/plat-linux2/_selinuxmodule.so", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib64/python2.7/plat-linux2/_selinux.py", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib64/python2.7/plat-linux2/_selinux.pyc", O_RDONLY) = -1 ENOENT (No such file or directory) stat("/usr/lib64/python2.7/lib-dynload/_selinux", 0x7ffdcf464310) = -1 ENOENT (No such file or directory) open("/usr/lib64/python2.7/lib-dynload/_selinux.so", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib64/python2.7/lib-dynload/_selinuxmodule.so", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib64/python2.7/lib-dynload/_selinux.py", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib64/python2.7/lib-dynload/_selinux.pyc", O_RDONLY) = -1 ENOENT (No such file or directory) stat("/usr/lib64/python2.7/site-packages/_selinux", 0x7ffdcf464310) = -1 ENOENT (No such file or directory) open("/usr/lib64/python2.7/site-packages/_selinux.so", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib64/python2.7/site-packages/_selinuxmodule.so", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib64/python2.7/site-packages/_selinux.py", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib64/python2.7/site-packages/_selinux.pyc", O_RDONLY) = -1 ENOENT (No such file or directory) stat("/usr/lib/python2.7/site-packages/_selinux", 0x7ffdcf464310) = -1 ENOENT (No such file or directory) open("/usr/lib/python2.7/site-packages/_selinux.so", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/python2.7/site-packages/_selinuxmodule.so", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/python2.7/site-packages/_selinux.py", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/python2.7/site-packages/_selinux.pyc", O_RDONLY) = -1 ENOENT (No such file or directory) Traceback (most recent call last): File "./se.load.py", line 3, in <module> open("./se.load.py", O_RDONLY) = 3 import selinux File "/usr/lib64/python2.7/site-packages/selinux/__init__.py", line 17, in <module> open("/usr/lib64/python2.7/site-packages/selinux/__init__.py", O_RDONLY) = 3 _selinux = swig_import_helper() File "/usr/lib64/python2.7/site-packages/selinux/__init__.py", line 16, in swig_import_helper open("/usr/lib64/python2.7/site-packages/selinux/__init__.py", O_RDONLY) = 3 return importlib.import_module('_selinux') File "/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module open("/usr/lib64/python2.7/importlib/__init__.py", O_RDONLY) = 3 __import__(name) ImportError: No module named _selinux +++ exited with 1 +++ При этом создание вот такой символической ссылки проблему решает: [root@dcsin binary]# ln -s selinux/_selinux.so /usr/lib64/python2.7/site-packages/_selinux.so [root@dcsin binary]# ls -l /usr/lib64/python2.7/site-packages/_selinux.so lrwxrwxrwx 1 root root 19 сен 26 15:17 /usr/lib64/python2.7/site-packages/_selinux.so -> selinux/_selinux.so На рабочая разница выглядит вот так: [root@dcsin binary]# diff -u /usr/lib64/python2.7/site-packages/selinux/x__init__.py-2 /usr/lib64/python2.7/site-packages/selinux/x__init__.[441/998] --- /usr/lib64/python2.7/site-packages/selinux/x__init__.py-2 2017-09-26 12:28:42.838000000 +0300 +++ /usr/lib64/python2.7/site-packages/selinux/x__init__.py-2.1 2017-09-26 11:32:52.000000000 +0300 @@ -1,15 +1,22 @@ # This file was automatically generated by SWIG (http://www.swig.org). -# Version 3.0.8 +# Version 3.0.12 # # Do not make changes to this file unless you know what you are doing--modify # the SWIG interface file instead. - - - - -from sys import version_info -if version_info >= (2, 6, 0): +from sys import version_info as _swig_python_version_info +if _swig_python_version_info >= (2, 7, 0): + def swig_import_helper(): + import importlib + pkg = __name__.rpartition('.')[0] + mname = '.'.join((pkg, '_selinux')).lstrip('.') + try: + return importlib.import_module(mname) + except ImportError: + return importlib.import_module('_selinux') + _selinux = swig_import_helper() + del swig_import_helper +elif _swig_python_version_info >= (2, 6, 0): def swig_import_helper(): from os.path import dirname import imp
В общем, проблема была в swig. Это известная проблема. Исправление проверено и отправено в сизиф: #188861 TESTED #10 [test-only] sisyphus swig.git=3.0.12-alt4%ubt libselinux.git=2.5-alt4 Pull request отправлен в апстрим: - https://github.com/swig/swig/pull/1105 - https://github.com/swig/swig/issues/769