Debian postrm executando duas vezes e falhando

0

O pacote:

CMakeLists.txt:

cmake_minimum_required(VERSION 3.7)
project(sim-runtime)
install(PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/sim-runtime-info DESTINATION bin)
set(CPACK_GENERATOR "DEB")
set(CPACK_PACKAGE_NAME sim-runtime)
set(CPACK_PACKAGE_VERSION "1.5")
set(CPACK_DEBIAN_PACKAGE_DEPENDS "geographiclib-tools")
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA  "${CMAKE_CURRENT_SOURCE_DIR}/postinst;${CMAKE_CURRENT_SOURCE_DIR}/postrm")
include(CPack)

postinst:

#! /bin/sh
/usr/sbin/geographiclib-get-gravity wgs84

postrm:

#! /bin/sh
rm /usr/share/GeographicLib/gravity/wgs84.egm

/usr/sbin/geographiclib-get-gravity é um script fornecido pela dependência geographiclib-tools . Quando eu ligo no postinst, ele baixa /usr/share/GeographicLib/gravity/wgs84.egm

Como isso cria um arquivo órfão, faz sentido excluí-lo quando desinstala o pacote. É por isso que adicionei o comando rm em postrm .

O problema:

dpkg -i sim-runtime-1.5-Linux.deb funciona bem. postinst baixa os bancos de dados adequadamente e instala todos os arquivos. Então:

stew@stewbian:~$ sudo dpkg -P sim-runtime
(Reading database ... 228685 files and directories currently installed.)
Removing sim-runtime (1.5) ...
Purging configuration files for sim-runtime (1.5) ...
rm: cannot remove '/usr/share/GeographicLib/gravity/wgs84.egm': No such file or directory
dpkg: error processing package sim-runtime (--purge):
 subprocess installed post-removal script returned error exit status 1
Errors were encountered while processing:
 sim-runtime

Depois de executar este comando, todos os arquivos instalados pelo pacote desaparecem, os bancos de dados que baixamos em postinst desapareceram. Tudo parece ótimo, mas o pacote em si não foi marcado como removido.

Alguma investigação:

  • Meu primeiro pensamento é que talvez algo mais tenha excluído esses arquivos automaticamente antes de postrm ser chamado. Eu tentei remover postrm . O pacote é desinstalado corretamente, mas esse banco de dados é deixado órfão.

A pergunta:

Como é possível remover um arquivo gerado por postinst ?

    
por Stewart 13.03.2018 / 09:18

1 resposta

0

Ok, encontrei uma resposta aqui .

A solução foi alterar postrm para isso:

#! /bin/sh
if [ $1 = 'purge' ]
then
  rm /usr/share/GeographicLib/gravity/wgs84.egm
fi
    
por 13.03.2018 / 09:33

Tags