
Eu tenho o seguinte script postint no pacote dpkg:
rm -f /SOMEDIRECTORY/current
ln -s /SOMEDIRECTORY/releases/RELEASESHA /SOMEDIRECTORY/current
ln -s /SOMEDIRECTORY/shared/config/config.json /SOMEDIRECTORY/releases/RELEASESHA/config/config.json
Esta é uma árvore de diretórios antes da instalação:
drwxr-xr-x 2 user user 4096 May 12 15:21 config
drwxr-xr-x 3 user user 4096 May 14 08:56 shared
drwxr-xr-x 6 user user 4096 May 14 10:06 releases
lrwxrwxrwx 1 root root 49 May 14 10:14 current -> /SOMEDIRECTORY/releases/RELEASESHA
Quando tento instalar o pacote deb, ele está tentando remover um link simbólico de diretório que está apontando em oposição a APENAS O LINK SIMPLES:
dpkg: warning: unable to delete old directory '/SOMEDIRECTORY/releases/OLD_RELEASESHA': Directory not empty
Quando executo o rm -f
comando manualmente, ele funciona conforme o esperado, mas o que acontece quando o postinst está em execução, altera esse comando para outra coisa. O que está tentando remover o diretório para o qual o link simbólico aponta e não apenas o próprio link simbólico?
Alguém tem ideia? Obrigado
Responder1
Essa mensagem de erro não vem de nenhum comando no postinst.
Você não forneceu muitas informações, mas meu palpite é que quando você tenta instalar o pacote deb, já existe uma versão mais antiga do pacote no sistema. Nesse caso, o dpkg tentaria limpar a versão antiga antes de instalar a nova. Ele esperava /SOMEDIRECTORY/releases/OLD_RELEASESHA
estar vazio naquele momento, já que nenhum outro pacote contém arquivos, então ele tentou removê-lo, mas não haviaeramalguns arquivos nele, sem propriedade de nenhum pacote. Tudo bem, mas não é esperado, então o dpkg gera um aviso.