我遇到了一个问题,我的 /usr/lib 中的 libiconv.2.dylib 文件已损坏,许多应用程序都失败了。我得到了一个朋友的 /usr/lib 文件夹的副本,并打算将它们替换掉。显然我没有考虑周全,因为当我发布sudo mv /usr/lib /usr/lib.old
它时导致了一些问题。现在 Finder 无法打开,Terminal.app 一直显示“非法操作”,其他东西(如存档实用程序)不起作用。我很确定如果我重新启动我的机器,它根本无法启动。
我怎样才能将其重命名,或者将我朋友的副本重命名为 /usr/lib(当前为 /usr/lib.new)???
答案1
感谢您的建议。我今天早上很慌张,翻遍了每个盒子,直到找到 OS X DVD。我能够直接从 DVD 启动,然后使用 DVD 的终端实例将 usr/lib/ 文件夹重命名。我还重新安装了 OS X 和 Xcode 开发人员工具以防万一。它现在启动正常,也不再出现有关 libiconv 的错误。
答案2
您的程序停止运行,因为它们可能链接到了无法再找到的库(硬依赖项)。这导致程序无法运行。
如果您能够启动终端,您应该能够手动指定LD_LIBRARY_PATH
变量内的旧库的路径,以便您可以启动其他程序。
$ export LD_LIBRARY_PATH=/usr/lib.old
然后将您的图书馆移回原来的位置unset LD_LIBRARY_PATH
。
$ unset LD_LIBRARY_PATH
测试一切是否如以前一样正常运行。
/usr/lib/
如果单个库出现问题,就不要再移动所有库。
答案3
- OSX 有一个安全模式这可能会对你有帮助。
- 重新启动机器也可能有帮助。
- 如果您在运行命令时遇到问题,请尝试输入您正在使用的命令的完整路径。--(在本例中,完整路径是 /usr/lib.old/...)
答案4
你已经尝试过 chown 和 chmod 了吗?
我会尝试启动到单用户模式然后尝试:
chown -R root:wheel /usr/lib.old/
chmod -R 755 /usr/lib.old/
cp -R /usr/lib.old /usr/lib/