|
0
|
| nethack · 技术社区 · 2 年前 |
|
|
1
0
我在苹果开发者论坛上得到了明确的答案。这里描述了这个问题,它与更新期间覆盖现有二进制文件有关。从开发文档: [试图通过简单覆盖来更新二进制文件的代码]是不正确的,因为它修改了命令行工具的可执行文件。macOS将有关代码签名的信息缓存在内核中。当你修改文件内容时,它不会刷新缓存。就地修改文件会导致文件内容与内核内缓存不匹配,这可能会在下次运行该工具时导致难以再现的代码签名崩溃。 虽然此代码使用命令行工具来演示此问题,但更新任何包含已签名代码的文件都可能引发此代码签名崩溃。其中包括可执行文件、框架、动态库和捆绑包。 要更新包含签名代码的文件而不冒崩溃风险,请将更新后的代码写入临时文件,然后用该临时文件替换现有文件。 https://developer.apple.com/documentation/security/updating_mac_software 当为MacOS配置时,我在Makefiles中使用“ditto”作为INSTALL宏来修复此问题。 |