在Mac上奇怪的软链接ln命令问题


0

我想创建空目录/Library/Java/JavaVirtualMachines/jdk1.8.0_5.jdk/Contents/Home/,它指向真实目录/Library/Java/JavaVirtualMachines/jdk1.8.0_74.jdk/Contents/Home/,因为一些代码依赖于这个特定版本的JDK(1.8.0_5,但我只有1.8.0_74)但是ln命令失败并出现以下错误,任何想法有什么不对?谢谢。

顺便说一句,我使用的是Mac OSX。

ls -l /Library/Java/JavaVirtualMachines/
total 0
drwxr-xr-x  3 root  root  102 Jan 20 16:32 Contents
drwxr-xr-x  3 root  root  102 Jan 25 16:16 jdk1.8.0_05.jdk
drwxr-xr-x  3 root  root  102 Jan 25 16:15 jdk1.8.0_25.jdk
drwxr-xr-x  3 root  root  102 Jan 25 16:15 jdk1.8.0_40.jdk
drwxr-xr-x  3 root  root  102 Jan 20 16:32 jdk1.8.0_72.jdk
drwxr-xr-x  3 root  root  102 Feb  5 15:25 jdk1.8.0_74.jdk
ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_5.jdk/Contents/Home/ /Library/Java/JavaVirtualMachines/jdk1.8.0_74.jdk/Contents/Home/
ln: /Library/Java/JavaVirtualMachines/jdk1.8.0_74.jdk/Contents/Home//Home: File exists

来自Schlachter的更新,尝试过的解决方案,但遇到了新问题,

ls /Library/Java/JavaVirtualMachines
Contents        jdk1.7.0_51.jdk jdk1.8.0_25.jdk jdk1.8.0_72.jdk jdk1.8.0_77.jdk
jdk1.7.0_21.jdk jdk1.8.0_05.jdk jdk1.8.0_40.jdk jdk1.8.0_74.jdk

ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_74.jdk/Contents/Home /Library/Java/JavaVirtualMachines/jdk1.8.0_5.jdk/Contents/
ln: /Library/Java/JavaVirtualMachines/jdk1.8.0_5.jdk/Contents/: No such file or directory

Answers:


1

只要jdk1.8.0_5.jdk/Contents/Home不存在,您就可以使用:

ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_74.jdk/Contents/Home /Library/Java/JavaVirtualMachines/jdk1.8.0_5.jdk/Contents/

尾部斜杠Contents/将把Home快捷方式放在Contents文件夹中。Home文件夹没有斜杠,因为它是链接的目标。

编辑:上面需要存在链接的所有文件夹。mkdir可以为你创造/它们,例如mkdir -p /Library/Java/JavaVirtualMachines/jdk1.8.0_5.jdk/Contents


感谢D Schlachter的回复,并投了反对票。我想知道我应该删除jdk1.8.0_74.jdk/Contents/Homejdk1.8.0_74.jdk/Contents/Home是真实内容的目录,我想创建一个/Library/Java/JavaVirtualMachines/jdk1.8.0_5.jdk/Contents/Home 实际链接到 的目录名jdk1.8.0_74.jdk/Contents/Home,它具有真实内容。
林马

1
我认为你需要它以某种方式反过来:)我编辑了我的答案。如果jdk1.8.0_5.jdk/Contents/Home存在空,则需要将其删除。您只需在命令中向后指定目录(目标优先,链接位置优先)。
D Schlachter 2016年

谢谢D Schlachter,投票支持。试过你的解决方案,但仍有问题。我已经用我执行的命令和输出错误更新了我的答案,并感谢您的帮助。谢谢。
林马

1
你只需要先创建父目录:mkdir -p /Library/Java/JavaVirtualMachines/jdk1.8.0_5.jdk/Contents
D Schlachter 2016年

感谢D Schlachter耐心解释,投票并将回复标记为答案。:)
林马
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.