系统升级一时爽,error层出一直爽

事情是这样的,这天我打开我的电脑来git,喜提error:

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

一秒钟都不用我就怀疑到了我新更的系统Mojave 10.14头上,求助热心网友,果然倒霉的不只我一个,谁更谁知道。

网友们众口一词给出了答案:xcode-select --install,一键解决。

???But why?我又朗诵了两遍error,隐约是说理论上/Library/Developer/CommandLineTools/usr/bin/下应该有一个xcrun,但是没找到?

一头雾水,我要用git,关这个xcrun什么事?又为什么要找到xcode-select身上?what the hell are all those things?

先问下terminal,whatis xcode-select,答曰:Manages the active developer directory for Xcode;

再问whatis xcrun,答曰:Run or locate development tools and properties

百度之,xcode,mac下的强大ide,一个强大的ide,就必然自带开发要用到的各种工具,xcode-select是它的命令行工具,包含了git,ggc,make等等在命令行下要用到的各种开发工具,同时,根据terminal中的解释,它还负责这个“active developer directory”的管理。xcrun,根据terminal的解释和这个名字,应该是当我们要调用xcode-select自带的工具时,负责locate and run,是一个启动工具的工具。

so,梳理一下error的产生过程,当我们要调用git时,系统首先找xcode-select,它返回一个自己的管理的active developer path,也就是/Library/Developer/CommandLineTools,让我们去/Library/Developer/CommandLineTools/usr/bin/这个地址下找xcrun,xcrun会负责locate and run git。结果,/Library/Developer/CommandLineTools/usr/bin/xcrun下没找到xcrun,所以error出现:这个地址好像有点问题哦,我们去那儿看了没有xcrun。

理解这个过程之后,为了解决问题,首先看看我们需要什么:

xcode-select:which显示/usr/bin下已有;

xcrun:which依然显示/usr/bin下有;

工具都是现成的,就是工具所在的位置和查找路径没对上,需要我们来手动协调一下,合理的方法有:

1.改路径,让系统去xcrun所在的位置去找

  xcode-select管理的active developer path:/Library/Developer/CommandLineTools,xcrun不在这儿,xcode-select工具本身可以更改这个地址,

  

  结果,不让改,xcode-select不认这个地址,此路不通

  另外,有博主说用xcode-select --reset,官方解释是“reset to the default command line tools path”,然而我试了,没用,default path exactly就是/Library/Developer/CommandLineTools,没变化。

2.想办法让系统在xcode-select指定的地址下找到xcrun

  软链接:

  

  结果,前面那个missing xcrun的error没了,找是找到了,但是系统说malformed,不对劲啊。我不知道怎么回事,有可能/usr/bin下的这个xcrun不能用,也有可能即便找到了xcrun,它还是只在这个/Library/Developer/CommandLineTools下找git,这个路径下没有git,它就说这个路径还是不对。要验证的话,得把git也跟着链过来,但是这样就不elegant了,xcode-selet带的工具那么多,用这个方法的话,用谁就得把谁链过来,我笨是笨,但是不愿意显得笨。所以这个方法弃。

  硬连接:

  

  直接不让整,不知道为什么,此路不通。

所以我能想到的两种办法,都不行。这下就只剩下了我不懂的那个xcode-select --install方法,没办法,照葫芦画瓢,2分钟装完。(有些人说直接命令行install可能会遇到连不到apple store server的情况,得自己手动下载xcode-select安装,但我没有遇到这种情况。)

但是装完之后我稍稍有点明白了,xcode-select,除了它本身作为工具的可执行文件,也就是在我/usr/bin下的那个,它还包含一个/Library/Developer/CommandLineTools路径下的工具包,所以当我升级系统的时候,xcode-select还是和xcode一起被删除了。重新install之后,它作为command line tools才完完整整被下载下来。实际上它自带的工具,在/usr/bin下全部有,但是有一个我不明白的机制,让我在调用xcode-select包含的工具的时候,系统不会去/usr/bin下找,而是第一时间找xcode-select,在它的active developer directory下找。理论上的解决办法应该是有两个的:

1.把这个active developer directory设置为大家都在的/usr/bin,已经验证了不行

2.改变系统这个第一时间找xcode-select的机制,让它去/usr/bin下调文件,此法beyond my ability。

最后的结论是,系统升级时删掉了xcode,连同xcode-select自带的常用命令行开发工具包,所以我们得重新下载一个。即便你说你有那也不行,它只吃烟台产的苹果,你家里果园长的它不吃,你如果想在家里长的苹果外面裹一层烟台包装纸来骗它,那你只能给每一个苹果一一都裹上纸,还不如去烟台买苹果。

猜你喜欢

转载自www.cnblogs.com/sylvialmy/p/11163354.html