Como usar o dpkg-desvio para remover / substituir temporariamente o symlink quando o pacote é instalado?

4

O pacote nginx padrão cria um link simbólico chamado default no sites-enabled dir, que aponta para um arquivo de configuração padrão em sites-available . Atualmente estou criando um pacote para um aplicativo que fica no topo do Nginx, e quero remover ou mover o link simbólico default e substituí-lo pelo arquivo de configuração do meu pacote. Idealmente, no caso de meu pacote ser removido, o symlink default original será restaurado.

Eu tenho lido a manpage e exemplos de dpkg-divert , mas não vejo bem que isso possa ser feito. Isso é possível com dpkg-divert , ou tenho que pensar em outra maneira?

    
por Suan 10.06.2011 / 23:13

1 resposta

5

Se você quiser desviar um arquivo que pertence a outro pacote:

  • Na sua pré-sessão, desvie o arquivo.

    dpkg-divert --add --package $your_package_name --rename \
       --divert /etc/nginx/sites-available/default.disabled \
                /etc/nginx/sites-available/default
    
  • Na sua postrm, desvie o arquivo de volta.

    dpkg-divert --remove --package $your_package_name --rename \
                /etc/nginx/sites-available/default
    

Isso não funcionará para o link simbólico /etc/nginx/sites-enabled/default , porque ele é criado pelo postinst do pacote nginx em vez de fazer parte do pacote. Como o link simbólico faz parte do pacote, você pode renomeá-lo com mv . Eu não sei se isso é compatível com a política de empacotamento do Debian; Se isso é importante para você, já que essa é uma pergunta bastante especializada, recomendo pesquisar ou perguntar sobre debian-devel .

    
por 11.06.2011 / 00:57