problema de comando estranho link suave ln no Mac

0

Desejo criar um diretório vazio /Library/Java/JavaVirtualMachines/jdk1.8.0_5.jdk/Contents/Home/, que aponte para o diretório real /Library/Java/JavaVirtualMachines/jdk1.8.0_74.jdk/Contents/Home/, pois parte do código depende dessa versão específica do JDK (1.8.0_5, mas só tenho 1.8.0_74), mas o comando ln falha com o seguinte erro, qualquer idéias o que está errado? Obrigado.

BTW, estou usando o 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

Atualização, solução testada da Schlachter, mas encontrou novos problemas,

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
Lin Ma
fonte

Respostas:

1

Enquanto jdk1.8.0_5.jdk/Contents/Homenão existir, você usaria:

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

A barra à direita Contents/colocará o Homeatalho dentro da Contentspasta. Não há nenhuma barra na Homepasta, pois é o destino do link.

Editar: Todas as pastas acima de onde o link vai existir. mkdirpode criá-los para você, por exemplomkdir -p /Library/Java/JavaVirtualMachines/jdk1.8.0_5.jdk/Contents

D Schlachter
fonte
Obrigado D Schlachter pela resposta e voto. Estou pensando em excluir jdk1.8.0_74.jdk/Contents/Home? jdk1.8.0_74.jdk/Contents/Homeé o diretório com conteúdo real, e quero criar um nome de diretório ao /Library/Java/JavaVirtualMachines/jdk1.8.0_5.jdk/Contents/Home qual realmente se vincule jdk1.8.0_74.jdk/Contents/Home, que tenha conteúdo real.
Lin Ma
11
Eu pensei que você precisava do contrário de alguma maneira :) Editei minha resposta. Se o vazio jdk1.8.0_5.jdk/Contents/Homeexistir, você precisará excluí-lo. Você acabou de ter a ordem dos diretórios ao contrário em seu comando (o destino vai primeiro, o local do link depois).
D Schlachter
Obrigado D Schlachter, vote. Tentei sua solução, mas ainda tenho problemas. Atualizei minha resposta com o comando que executei e os erros de saída e aprecio se você puder ajudar a dar uma olhada. Obrigado.
Lin Ma
11
Você só precisa fazer os diretórios pai em primeiro lugar:mkdir -p /Library/Java/JavaVirtualMachines/jdk1.8.0_5.jdk/Contents
D Schlachter
Obrigado D Schlachter pela paciência em explicar, votar e marcar resposta como resposta. :)
Lin Ma