Сборка приложения для Mac на основе Python с помощью py2app, создание установщика создает сбойный установщик

Это похоже на py2app с родным python 2.6, но достаточно отличается, чтобы еще загадка.

Среда: Mac OS 10.8 и 10.11, Python 2.7.6, py2app 0.14

Я создаю пакет приложений Mac из python, используя py2app, в Mac OS 10.8. Кажется, это работает нормально. Затем я создаю пакет установщика, используя pkgbuild и productbuild. Похоже, что сборка выполняется без ошибок, пока я не попытаюсь использовать программу установки для установки пакета.

Я запускаю установщик на MacOS 10.11 (он также должен работать на MacOS 10.8-10.13). Установка завершается со сбоем, в файле install.log следующее:

Dec 21 15:14:46 Erics-10-11-Mac-VM shove[30757]: [src=nonrestricted] /System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/pyconfig.h: unable to remove flag 0x80000 (error 1)
Dec 21 15:14:46 Erics-10-11-Mac-VM shove[30757]: [source=file] failed _RelinkFile(/var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/C/PKInstallSandboxManager/3BE46873-2E16-4787-81A4-335FB1DCB67B.activeSandbox/Root/Applications/MyApp.app/Contents/Resources/include/python2.7/pyconfig.h, /System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/pyconfig.h): Operation not permitted
Dec 21 15:14:46 Erics-10-11-Mac-VM shove[30757]: srcPath = /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/C/PKInstallSandboxManager/3BE46873-2E16-4787-81A4-335FB1DCB67B.activeSandbox/Root/Applications/MyApp.app/Contents/Resources/include/python2.7/pyconfig.h NSFileOwnerAccountID=0 NSFileHFSTypeCode=0 NSFileSystemFileNumber=1025119 NSFileExtensionHidden=0 NSFileSystemNumber=16777219 NSFileSize=36515 NSFileGroupOwnerAccountID=0 NSFileOwnerAccountName=root NSFileCreationDate=2017-12-21 20:12:33 +0000 NSFilePosixPermissions=420 NSFileHFSCreatorCode=0 NSFileType=NSFileTypeRegular NSFileGroupOwnerAccountName=wheel NSFileReferenceCount=1 NSFileModificationDate=2017-12-21 20:12:33 +0000

Похоже, проблема в том, что установщик хочет скопировать (или что-то сделать) Contents/Resources/include/pyconfig.h в /System/Library/Frameworks/Python.framework..., но эта операция не разрешена. Предположительно, это не разрешено из-за защиты целостности системы MacOS на /System/.

Это вызывает пару вопросов:

  1. Что именно пытается сделать установщик, копируя pyconfig.h в каталог System (что категорически запрещено?) Кроме того, там уже есть pyconfig.h.
  2. Что я могу сделать, чтобы исправить это? Как-то сказать py2app не класть pyconfig.h в папку include? Подскажите установщику не копировать в папку System? Есть ли обходной путь? Отключение SIP не вариант.

Обратите внимание, что я ограничен сборкой на MacOS 10.8 и установкой на произвольные системы с MacOS 10.8–10.3.

Любая помощь приветствуется.


person Eric    schedule 21.12.2017    source источник