如何解决运行更新时 macOS Carthage 挂起的问题?

Posted

技术标签:

【中文标题】如何解决运行更新时 macOS Carthage 挂起的问题?【英文标题】:How do I resolve macOS Carthage hangs when running update? 【发布时间】:2017-08-13 14:05:02 【问题描述】:

开始处理一个新项目,我需要为私人和公共项目的混合运行“迦太基更新”,其中一些项目具有子模块。无论我做什么,迦太基都会挂起,没有任何迹象表明原因。我可以做些什么来确定挂起,然后如何解决这些问题?

【问题讨论】:

【参考方案1】:

我为解决我的问题所做的大部分工作都可以在其他地方找到,但没有一个网站拥有这一切。最后我使用了一个我没有找到但猜到的技术。

我遇到的根本问题是为我的 github 帐户采用推荐的安全保护:两阶段身份验证和 ssh 密码。这两种方法都可以解决,但不幸的是,Cathage 没有提供“详细”选项来让用户确定它正在执行的 git 命令——当它挂起时,这个选项真的可以帮助用户。在我的情况(可能还有其他大多数情况下),根本问题是 Carthage 运行的 git 命令想要提示用户输入某些内容,而 Carthage 已关闭或重定向标准输出。

1) Sierra 和 Git 帐户/密码

似乎最近的 Sierra 点版本更改了 git 凭据的缓存方式。现在执行此操作的正确方法是使用钥匙串。关于如何指导 git 使用 Keychain 的过程可以在 here 找到。请注意,此技术仅适用于纯“帐户/密码”身份验证。

在尝试 Carthage 之前,请确保您可以从终端使用 git clone 以确保一切正常。

2) 两步验证

在这种情况下,您需要使用authentication token。该令牌用于代替 git 密码。同样,请确保您可以在尝试 Carthage 之前克隆适当的存储库。

3) ssh 访问密码

如果 git 使用 ssh(因为它可能使用子模块),那么 git 将尝试提示输入密码,并且由于 Carthage 禁止您将被挂起。通过在您的 ~/.ssh/config 文件中添加一行(并在文件的底部执行此操作)

Host *
    UseKeychain yes

git 还将使用saving and retrieving the passphrase 的钥匙串。您需要通过终端执行此操作一次才能将其输入钥匙串。

4) 还是卡住了?

如果上述技术对你没有帮助,当 Carthage 挂起时打开一个新的终端窗口并运行ps -aef | grep git;然后你会看到一些 git 命令。希望你会像我一样看到git clone 命令;将该命令复制到剪贴板。

终止 Carthage 命令,然后将该行粘贴到终端并运行该命令(可能通过对其进行编辑以删除无关选项),看看会发生什么。幸运的话,您发现的内容将帮助您解决问题。

【讨论】:

@Lizza 这就是我发布它的原因!我花了很多时间才让迦太基工作(我正在做的合同)。很高兴它对你有用!

以上是关于如何解决运行更新时 macOS Carthage 挂起的问题?的主要内容,如果未能解决你的问题,请参考以下文章

Carthage 项目的编译器更新

如何清除迦太基缓存?

ios Carthage

使用 carthage 的 RealmSwift 框架集成问题

更新到 Xcode 13,尝试在 iOS 但不是 macOS 上运行 SwiftUI 应用程序时获得唯一的错误代码

如何在macos升级和安全?