Как изменить devscript (пакет debian) для добавления поддержки Python 3 (специфично для GDCM-пакета)
Я использую GDCM в своем проекте в среде Python 2.7. Поскольку все больше движется к Python 3, я хотел бы установить python-gdcm
для Python 3. Пакет использует SWIG для генерации интерфейса, и он должен поддерживать Python 3. Также имеется пакет Fedora, который делает это.
Я предполагаю, что простая модификация dsc-файла должна сделать это, но я никогда не работал с dsc-файлами, и я не уверен даже, с чего начать. Я даже не могу найти, где среда Python 3 должна быть применена в файле. Я нашел вики pbuilder (alt. Sbuild), которая, кажется, должна быть началом, но я был бы очень признателен, если бы у кого-то здесь были какие-то конкретные советы о том, как заставить это работать.
Обновить
Мне удалось получить источники, используя:
apt source python-gdcm
Из того, что я понимаю, глядя на gdcm-2.6.3/debian/python-gdcm.install
он должен копировать файлы в любой /usr/lib/python*
версия. Одна вещь, которая меня немного смущает, это то, что /usr/lib/python3.5/
не имеет dist-packages
каталог в то время как /usr/lib/python2.7/
делает. Вместо Python 3 dist-packages
расположены под /usr/lib/python3/
- не уверен, хотя, если это имеет значение. Я пытался просто скопировать файлы в Python 3 dist-packages
каталог, но это только вызвало segfault при импорте пакета.
Здание из источника - обновление
Поэтому я столкнулся с ошибкой, которая побудила меня собрать пакет из исходного кода. Ошибка была исправлена с использованием новой версии, и я смог скомпилировать этот пакет так, чтобы он загружался в консоль Python 3:
- Клонировать репозиторий git:
git clone --branch release git://git.code.sf.net/p/gdcm/gdcm
- Затем установите зависимости для сборки:
sudo apt-get build-dep python-gdcm
- Перед тем, как все щелкнуть, потребовалось несколько дополнительных зависимостей:
sudo apt install python-vtk6 libvtk6-dev cmake-curses-gui
С использованием
ccmake
и настройкаGDCM_WRAP_PYTHON
к ПО и библиотекеGDCM_BUILD_SHARED_LIBS
до ON† конфигурация работает, и библиотека может быть скомпилирована с поддержкой Python.Используйте раздел переключателей, чтобы перейти в расширенный раздел и установить пути Python в соответствии с настройками Python 3, используя чистый
cmake
вызов:cmake GDCM_WRAP_PYTHON=ON PYTHON_EXECUTABLE=/user/bin/python3 PYTHON_INCLUDE_DIR=/usr/include/python3.5 GDCM_BUILD_SHARED_LIBS=ON GDCM_USE_VTK=ON ../gdcm
Пакет может быть установлен через checkinstall.
Файлы Python (
gdcm.py
,gdcmswig.py
,vtkgdcm.py
а также_gdcmswig.so
) закончилась в/usr/local/lib
и необходимо вручную скопировать в/usr/local/lib/python3.5/dist-packages
прежде чем пакет может быть загружен. Обратите внимание перед загрузкой сделатьldconfig
обновить ссылки.
Мои оставшиеся вопросы:
- Что я должен изменить в папке debian, чтобы ввести выше
cmake
настройки? - Есть ли способ сделать и Python 2, и Python 3 доступными одновременно? Я знаю множество пакетов, которые предоставляют оба, так что это должно быть тривиально добавить, хотя, вероятно, потребуется повторная компиляция, или?
- Почему не
cmake
определить правильную папку Python, т.е./usr/local/lib/python3.5/dist-packages
? Это ошибка в файлах cmake или некоторые настройки, которые я пропускаю?
† Не использование общих библиотек вызвало эту ошибку:
CMake Error at Utilities/VTK/CMakeLists.txt:796 (install):
install TARGETS given no ARCHIVE DESTINATION for static library target
"vtkgdcmPythonD".