Criar link simbólico relativo no Symlink relativo

1

Estou navegando há um minuto tentando encontrar uma maneira de criar um link simbólico relativo dentro de um link simbólico relativo, e o que quero dizer com isso é isso ...

Eu tenho meu CakePHP Templates Skeleton como um symlink dentro de um dos meus projetos, dentro do meu esqueleto, eu tenho um link simbólico para um plugin fora da pasta skeleton, a idéia é, eu posso ligar symlink meu CakePHP CMS Skeleton dentro de meus projetos, criar um plug-in "Aplicativo" fora do link simbólico do esqueleto do CMS e o link simbólico do esqueleto para o plug-in "Aplicativo" do meu projeto.

Com isso quero dizer o seguinte.

Eu tenho um Skeleton CakePHP CMS no seguinte caminho

/mnt/proj/libs/cakephp/lib/Cake/Console/Templates/skel

O caminho para a pasta do meu projeto está abaixo

/mnt/proj/mysite.com/

Eu, então, faço o symlink do CakePHP CMS Skeleton dentro da pasta do meu projeto, assim como

/mnt/proj/mysite.com/cms-skel -> /mnt/proj/libs/cakephp/lib/Cake/Console/Templates/skel

Dentro do esqueleto eu tenho um link simbólico apontando para um plugin de aplicativo

/mnt/proj/libs/cakephp/lib/Cake/Console/Templates/skel/Plugin/Application -> ../../Application

Então, dentro da pasta ligada ao CakePHP CMS na pasta mysite.com, eu tenho

/mnt/proj/mysite.com/cms-skel/Plugin/Application -> ../../Application

A questão é que o link simbólico acima aponta para

/mnt/proj/libs/cakephp/lib/Cake/Console/Templates/Application

E preciso que aponte para

/mnt/proj/mysite.com/cms-skel/Plugin/Application

Qualquer ideia sobre como posso fazer o que precede com links simbólicos é muito apreciada, não sei ao certo o que procurar no Google neste momento.

    
por Jeffrey L. Roberts 16.11.2013 / 07:08

1 resposta

2

O problema é que você está tentando usar um único link relativo que funcionará em duas árvores de diretório, e a relatividade do link não é a mesma nessas duas árvores.

Exemplo

Eu criei suas estruturas de diretório a partir de proj , mas elas são idênticas.

$ pwd
/home/saml/proj

Aqui está a lib/ tree:

$ tree -lf libs/
libs
'-- libs/cakephp
    '-- libs/cakephp/lib
        '-- libs/cakephp/lib/Cake
            '-- libs/cakephp/lib/Cake/Console
                '-- libs/cakephp/lib/Cake/Console/Templates
                    |-- libs/cakephp/lib/Cake/Console/Templates/Application
                    '-- libs/cakephp/lib/Cake/Console/Templates/skel
                        '-- libs/cakephp/lib/Cake/Console/Templates/skel/Plugin
                            '-- libs/cakephp/lib/Cake/Console/Templates/skel/Plugin/Application -> ../../Application  [recursive, not followed]

Aqui está a mysite.com/ tree:

$ tree -lf mysite.com/
mysite.com
'-- mysite.com/cms-skel -> /home/saml/proj/libs/cakephp/lib/Cake/Console/Templates/skel/
    '-- /home/saml/proj/libs/cakephp/lib/Cake/Console/Templates/skel//Plugin
        '-- /home/saml/proj/libs/cakephp/lib/Cake/Console/Templates/skel//Plugin/Application -> ../../Application

Então, se olharmos para o link do aplicativo na primeira árvore, lib/ :

$ pwd
/home/saml/proj/libs/cakephp/lib/Cake/Console/Templates/skel/Plugin

$ readlink -f Application
/home/saml/proj/libs/cakephp/lib/Cake/Console/Templates/Application

No entanto, se fizermos a mesma análise no diretório mysite.com/ , veremos nosso problema.

$ pwd
/home/saml/proj/mysite.com/cms-skel/Plugin

$ readlink -f Application
/home/saml/proj/libs/cakephp/lib/Cake/Console/Templates/Application

O que está acontecendo?

Bem, quando você está na mysite.com/ tree 2 níveis acima, mysite.com/cms-skel/Plugin/ é libs/cakephp/lib/Cake/Console/Templates .

Isso deve ajudar a ver:

$ pwd
/home/saml/proj/mysite.com/cms-skel/Plugin

$ readlink -f ../../
/home/saml/proj/libs/cakephp/lib/Cake/Console/Templates

Eu não vejo uma maneira de contornar isso, dadas as diferenças no número de diretórios dentro das 2 árvores.

    
por 16.11.2013 / 08:03