我遇到了与 StackExchange 上其他人类似的问题,但我认为我的根本原因和必要的解决方案不同。这是我的问题:
每当我尝试安装某些程序(包括 XCode 和硬件驱动程序)时,安装都会失败。安装程序日志包含此错误:
NSLocalizedDescription=An error occurred while updating system extension information., arguments=(
"-update-volume",
"/",
"-Installer"
)} {
NSLocalizedDescription = "An error occurred while updating system extension information.";
NSUnderlyingError = "Error Domain=kextcache Code=71 \"The operation couldn\U2019t be completed. (kextcache error 71.)\"";
arguments = (
"-update-volume",
"/",
"-Installer"
);
}
许多 其他 人们遇到过这个问题,在他们的案例中,问题在于他们有一个第三方内核扩展,导致出现问题。他们的解决方案是尝试删除内核扩展,直到问题消失。
但是,与这些人不同,我认为我遇到问题的原因是我移动了一些 Apple 预装的内核扩展,而不是因为我安装了导致问题的内核扩展。特别是,前段时间,我想禁用我机器的 CD 驱动器,而不必物理移除它,所以我听从了这个答案,其中写道:
好的,如果您想完全禁用超级驱动器而不使用家长控制,您可以通过卸载 kext 文件来实现。只需转到
/System/Library/Extensions
文件夹并找到IODVDStorageFamily.kext
文件。将此文件移动到任何其他位置或在那里创建一个新文件夹并将其放在那里并重新启动。您将不会再在连接的设备中看到超级驱动器。要再次使用超级驱动器,您需要将该文件再次放在同一位置并插入 USB 驱动器,这样 OSX 就会开始搜索连接的设备并找到您的超级驱动器。请正确备份您的 kext 文件,不要删除它。
因此,我尝试将IODVDStorageFamily.kext
和移动IOCDStorageFamily.kext
到计算机上的另一个位置。移动它们之后,我在运行安装程序时遇到了问题。
此后,我已将文件移回其原始位置。我还运行了sudo chown root:wheel IOCDStorageFamily.kext/
并sudo chown root:wheel IODVDStorageFamily.kext/
确保其文件权限设置正确。现在,在安装程序日志中,我收到以下错误:
Sep 17 16:04:02 pcp257716pcs.unl.edu installd[1062]: kextcache: IODVDStorageFamily.kext has incorrect permissions; omitting.
Sep 17 16:04:02 pcp257716pcs.unl.edu installd[1062]: kextcache: IOCDStorageFamily.kext has incorrect permissions; omitting.
(snip)
Sep 17 16:04:12 pcp257716pcs.unl.edu installd[1062]: kextcache: /System/Library/Extensions/IOCDStorageFamily.kext is not authentic; omitting from prelinked kernel.
Sep 17 16:04:12 pcp257716pcs.unl.edu installd[1062]: kextcache: /System/Library/Extensions/IODVDStorageFamily.kext is not authentic; omitting from prelinked kernel.
Sep 17 16:04:14 pcp257716pcs.unl.edu installd[1062]: kextcache: Can't use IODVDStorageFamily.kext - not linked.
(snip)
Sep 17 16:04:14 pcp257716pcs.unl.edu installd[1062]: kextcache: Can't use IODVDStorageFamily.kext - not linked.
(snip)
我觉得自从我移动和触摸了IOCDStorageFamily.kext
几次IODVDStorageFamily.kext
之后,我的机器就不再信任这些文件了。我该如何解决这个问题?有没有办法让我的机器相信这些文件是“真实的”,或者获取并安装这些文件的“真实”副本?
以下是来自我的安装程序日志文件的更多信息:
Sep 17 16:03:50 pcp257716pcs.unl.edu installd[1062]: PackageKit: kextcache -system-caches
Sep 17 16:03:50 pcp257716pcs.unl.edu installd[1062]: kextcache: /usr/sbin/kextcache -system-caches
Sep 17 16:03:53 pcp257716pcs.unl.edu installd[1062]: PackageKit: kextcache -update-volume / -Installer
Sep 17 16:03:53 pcp257716pcs.unl.edu installd[1062]: kextcache: /usr/sbin/kextcache -update-volume / -Installer
Sep 17 16:03:53 pcp257716pcs.unl.edu installd[1062]: kextcache: kextcache -arch x86_64 -local-root -all-loaded -kernel /System/Library/Kernels/kernel -prelinked-kernel /System/Library/Caches/com.apple.kext.caches/Startup/kernelcache -volume-root / /System/Library/Extensions /Library/Extensions
Sep 17 16:03:57 pcp257716pcs.unl.edu installd[1062]: kextcache: SRXDisplayCard.kext has invalid signature; omitting.
Sep 17 16:03:57 pcp257716pcs.unl.edu installd[1062]: kextcache: kext file:///System/Library/Extensions/Soundflower.kext/ is in hash exception list, allowing to load
Sep 17 16:03:58 pcp257716pcs.unl.edu installd[1062]: kextcache: kext file:///System/Library/Extensions/ProcasterAudioRedirector.kext/ is in hash exception list, allowing to load
Sep 17 16:03:58 pcp257716pcs.unl.edu installd[1062]: kextcache: kext file:///System/Library/Extensions/JMicronATA.kext/ is in hash exception list, allowing to load
Sep 17 16:04:02 pcp257716pcs.unl.edu installd[1062]: kextcache: IODVDStorageFamily.kext has incorrect permissions; omitting.
Sep 17 16:04:02 pcp257716pcs.unl.edu installd[1062]: kextcache: IOCDStorageFamily.kext has incorrect permissions; omitting.
Sep 17 16:04:07 pcp257716pcs.unl.edu installd[1062]: kextcache: AppleMobileDevice.kext has invalid signature; omitting.
Sep 17 16:04:12 pcp257716pcs.unl.edu installd[1062]: kextcache: /System/Library/Extensions/IOCDStorageFamily.kext is not authentic; omitting from prelinked kernel.
Sep 17 16:04:12 pcp257716pcs.unl.edu installd[1062]: kextcache: /System/Library/Extensions/IODVDStorageFamily.kext is not authentic; omitting from prelinked kernel.
Sep 17 16:04:14 pcp257716pcs.unl.edu installd[1062]: kextcache: Can't use IODVDStorageFamily.kext - not linked.
Sep 17 16:04:14 pcp257716pcs.unl.edu installd[1062]: kextcache: Prelink failed for com.apple.iokit.IOBDStorageFamily; omitting from prelinked kernel.
Sep 17 16:04:14 pcp257716pcs.unl.edu installd[1062]: kextcache: Can't use IODVDStorageFamily.kext - not linked.
Sep 17 16:04:14 pcp257716pcs.unl.edu installd[1062]: kextcache: Prelink failed for com.apple.iokit.IOSCSIMultimediaCommandsDevice; omitting from prelinked kernel.
Sep 17 16:04:17 pcp257716pcs.unl.edu installd[1062]: kextcache: Can't use IOSCSIMultimediaCommandsDevice.kext - not linked.
Sep 17 16:04:17 pcp257716pcs.unl.edu installd[1062]: kextcache: Prelink failed for com.apple.driver.PioneerSuperDrive; omitting from prelinked kernel.
Sep 17 16:04:17 pcp257716pcs.unl.edu installd[1062]: kextcache: Can't use IOSCSIMultimediaCommandsDevice.kext - not linked.
Sep 17 16:04:17 pcp257716pcs.unl.edu installd[1062]: kextcache: Prelink failed for com.apple.driver.MKE_SR_8171; aborting prelink.
Sep 17 16:04:17 pcp257716pcs.unl.edu installd[1062]: kextcache: Failed to generate prelinked kernel.
Sep 17 16:04:17 pcp257716pcs.unl.edu installd[1062]: kextcache: Child process /usr/sbin/kextcache[3232] exited with status 71.
Sep 17 16:04:17 pcp257716pcs.unl.edu installd[1062]: kextcache: Error 107 rebuilding /System/Library/Caches/com.apple.kext.caches/Startup/kernelcache
Sep 17 16:04:17 pcp257716pcs.unl.edu install_monitor[3217]: Re-included: /Applications, /Developer, /Library, /System, /bin, /private, /sbin, /usr
Sep 17 16:04:17 pcp257716pcs.unl.edu installd[1062]: PackageKit: releasing backupd
Sep 17 16:04:17 pcp257716pcs.unl.edu installd[1062]: PackageKit: allow user idle system sleep
Sep 17 16:04:17 pcp257716pcs.unl.edu installd[1062]: PackageKit: Install Failed: Error Domain=PKInstallErrorDomain Code=121 "An error occurred while updating system extension information." UserInfo=0x7fad64c06840 {NSUnderlyingError=0x7fad64c06810 "The operation couldn’t be completed. (kextcache error 71.)", NSLocalizedDescription=An error occurred while updating system extension information., arguments=(
"-update-volume",
"/",
"-Installer"
)} {
NSLocalizedDescription = "An error occurred while updating system extension information.";
NSUnderlyingError = "Error Domain=kextcache Code=71 \"The operation couldn\U2019t be completed. (kextcache error 71.)\"";
arguments = (
"-update-volume",
"/",
"-Installer"
);
}
答案1
运行磁盘实用程序并使用“验证磁盘权限”和“修复磁盘权限”选项。
完成后,您的内核扩展将被正确配置,并且您可以安装您的程序和驱动程序。
请记住,我在问题中执行的步骤之一是,我将已删除的内核扩展/System/Library/Extensions
放回该位置。如果您自己移动了内核扩展,请确保在修复磁盘权限之前将它们移回。
如果您永久删除了内核扩展,则可能需要从 Recovery HD 分区复制原始内核扩展。有关更多详细信息,请参阅此答案:https://apple.stackexchange.com/a/43019/43284。