Problema do pacote Debian: os arquivos estão sendo instalados em '/'

2

Recentemente, tentei empacotar um pequeno utilitário Python para colocar no meu PPA e quase consegui que funcionasse, mas estou com problemas para fazer o pacote instalar o binário (um script chmod + x Python) em /usr/bin . Em vez disso, ele é instalado em / . Eu tenho essa estrutura de diretório - > link .

Meu pacote Makefile é assim:

TARGET=usr/bin/txtrevise

make:
      chmod +x $(TARGET)

install:
      cp -r $(TARGET) $(DESTDIR)

Eu usei $(DESTDIR) , como entendi para colocar o arquivo no subdiretório debian quando a depuração é executada.

Eu tenho o script txtrevise, meu executável, na pasta usr/bin sob a raiz do meu pacote. Eu também tenho o Makefile e usr/bin/textrevise no meu tarball: txtrevise_1.1.original.tar.gz.

No entanto, quando eu construo isto e vejo dentro do pacote Debian, o txtrevise está sempre na raiz do pacote em vez de sob usr / bin e será instalado em / em vez de / usr / bin.

Como posso obter o debuild para colocar o script no lugar certo?

    
por SammySP 24.06.2011 / 14:27

1 resposta

2

O problema está na invocação cp $(TARGET) $(DESTDIR) : isso copie o arquivo textrevise no diretório $(DESTDIR) , ou seja, ignora o prefixo /usr/bin . Você precisa preservar a estrutura de diretório, assim, por exemplo:

install:
    # ensure the destination directory exists
    mkdir -p $(DESTDIR)/usr/bin
    # copy the program to its final destination
    cp $(TARGET) $(DESTDIR)/$(TARGET)
    # ensure the program and directories have the correct permissions
    chmod a+rx $(DESTDIR)/$(TARGET)

Observe que você também deve garantir, ao criar um pacote de software para outros para usar, que as permissões de todos os diretórios e binários são definidos de acordo com a política Debian ; neste caso você quer $(DESTDIR)/usr/bin/textrevise pertencente a root:root e modo 0755 (e, portanto, os diretórios $(DESTDIR)/usr e $(DESTDIR)/usr/bin ).

Você pode querer dar uma olhada no comando install , que lhe dá mais controle sobre o proprietário, grupo e modo dos arquivos instalados para escreva sub-rotinas Makefile mais concisas.

    
por 24.06.2011 / 14:37