Executa comandos das regras do pacote debian?

1

Estou tentando fazer algo semelhante ao descrito nesta Q / A , exceto que estou usando setfacl .

Eu tenho o seguinte em debian/rules :

...
override_dh_fixperms:
    dh_fixperms
    setfacl -m u:applicationX:rw /etc/NetworkManager/

O pacote é construído em um servidor Jenkins. Ele retorna o erro:

make[2]: setfacl: Command not found

Eu esperava que esses comandos fossem executados durante o processo de instalação, eu sei que os dispositivos que estão instalando o pacote terão setfacl . Em vez disso, parece que o comando está sendo executado no servidor Jenkins durante o processo de compilação.

Estou entendendo mal como fazer o acima? Existe uma regra que eu possa ter executado na máquina de destino?

Observe também que o arquivo que está sendo modificado não faz parte do meu pacote.

    
por Philip Kirkbride 03.11.2017 / 19:58

1 resposta

2

Você não pode armazenar ACLs durante a compilação do pacote. É necessário defini-las depois que o pacote for instalado, no pacote postinst . Para fazer isso, crie um arquivo chamado postinst no diretório debian e adicione o comando setfacl lá. Você também precisará adicionar uma dependência em acl no seu arquivo control .

O fato de /etc/NetworkManager não pertencer ao seu pacote adiciona uma reviravolta adicional, mas eu imagino que seu pacote não esteja destinado a ser carregado nos repositórios Debian ... Você normalmente também teria que passar por alguns aros para lidar com a possibilidade de que /etc/NetworkManager seja excluído e recriado sem as ACLs, mas isso parece bastante improvável na prática.

    
por 03.11.2017 / 20:05