O GNU Stow pode usar um diretório de armazenamento que seja um link simbólico?

7

Considere este script.

#! /usr/bin/env bash

mkdir -p target
mkdir -p mydir/package/
touch mydir/package/file

ln --symbolic mydir mylink
file mylink

stow --verbose --dir=./mylink --target=./target package

file target/file

A saída é

mylink: symbolic link to mydir
LINK: file => ../mydir/package/file
target/file: symbolic link to ../mydir/package/file

Antes de executar stow , é assim:

.
├── mydir
│   └── package
│       └── file
├── mylink -> mydir
└── target

Depois de executar stow , em mylink , esperava que fosse assim:

.
├── mydir
│   └── package
│       └── file
├── mylink -> mydir
└── target
    └── file -> ../mylink/package/file

No entanto, em vez disso, é assim:

.
├── mydir
│   └── package
│       └── file
├── mylink -> mydir
└── target
    └── file -> ../mydir/package/file

Parece que o comando stow resolve o caminho real do diretório do pacote, então, em vez de apontar para ../mylink/package/file , ele aponta para ../mydir/package/file .

Isso faz sentido evitar muito indireto, mas isso acontece silenciosamente e pode nem sempre ser desejável. Existe uma maneira de contornar esse comportamento?

    
por Nathaniel M. Beaver 02.12.2015 / 23:22

1 resposta

5

Por enquanto, não tem jeito.

Internamente, stow encontra o caminho canônico absoluto de determinado caminho usando chdir para entrar no caminho, então use a função getcwd () do módulo POSIX, que é a interface Perl para POSIX getcwd () , para obter o nome do caminho absoluto.

Como POSIX especificado, o nome do caminho não deve conter componentes que sejam . ou .. , ou sejam links simbólicos.

    
por 03.12.2015 / 03:29

Tags