Eu tenho um aplicativo Qt que quero implantar como um pacote deb. Eu tenho lido tantas fontes, todas ligeiramente diferentes - mais do que eu fiz depois disso for-ubuntu-software-center / "> Como: preparar uma aplicação para submissão ao Ubuntu Software Center
Eu devo criar uma estrutura de pastas em /usr/share/My Company's Folder/
(os espaços e caracteres especiais no caminho são um requisito infeliz; os nomes em maiúsculas também ... o programa foi portado a partir do Windows).
/usr/share/My Company's Folder/MainProject/content
Eu criei um pacote ... e ele parece funcionar, instala no local correto e, surpreendentemente, o programa até funciona depois disso.
O problema: não consigo usar espaço em nomes de caminho . Eu criei um arquivo "install" como mostrado no link acima. Ele faz o que é esperado - mas eu recebo um erro se estou tentando colocar itens em /usr/share/My Company's Folder/
- eu só consegui fazê-lo funcionar usando /usr/share/MyCompanyFolder/
(sem espaços ou caracteres especiais ".
Configuração:
~/working_directory
mainproject-1.0
mainproject_1
content
mainproject-1.0.tar.gz
Dentro de mainproject-1.0
eu corri
dh_make --copyright gpl -f ../mainproject-1.0.tar.gz
selecione s, pressione enter ... Então eu modifiquei os arquivos na pasta debian criada.
Também criou um arquivo "install" na pasta debian:
mainproject_1/* /usr/share/My Company's Folder/MainProject
Ran
dpkg-buildpackage -rfakeroot [email protected]
Funciona, cria instalador, o instalador funciona ...
Mas não consigo criar um caminho de pasta com espaços, que é o que realmente preciso.
Nota:
Tentei sem sucesso
"/usr/share/My\ Company\'s\ Folder/"
"/usr/share/My Company's Folder/"
/usr/share/My\ Company\'s\ Folder/
/usr/share/My0Company's0Folder/
/usr/share/My?Company's?Folder/
Depois de muita pesquisa, encontrei esta informação
you can't install files with space with dh_install (= debian/*install files)
you have to rename/install them explicitly in debian/rules with install, mv or cp
e.g. with dh tiny rules:
override_dh_install
dh_install
install -m 644 "fi le" "debian/tmp/usr/share/fi_le"
Então eu tentei adicionar o arquivo debian / rules (mostrando números de linha)
12 %:
13 dh $@
14
15 override_dh_install:
16 dh_install
17 install -m 644 "debian/mainproject/usr/share/MyCompanyFolder" "debian/mainproject/usr/share/My Company's Folder"
erro mais recente - com este comando:
make[1]: Entering directory '/home/me/working_directory/mainproject-1.0'
dh_install
install -m 644 "My Company's Folder" "debian/mainproject/usr/share/MyCompanyFolder"
install: cannot stat 'My Company's Folder': No such file or directory
make[1]: *** [override_dh_install] Error 1
make[1]: Leaving directory '/home/me/working_directory/mainproject-1.0'
make: *** [binary] Error 2
dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2
Como alternativa, tentei
12 %:
13 dh $@
14
15 override_dh_install:
16 dh_install
17 mv -r "debian/mainproject/usr/share/MyCompanyFolder" "debian/mainproject/usr/share/My Company's Folder"
E como resultado, a estrutura de pastas dentro do Debian parece correta, mas recebi erros sobre pastas inválidas ...
objdump: 'debian/mainproject/usr/share/My': No such file
objdump: 'Company's': No such file
.....
mkdir, em seguida, cp deve ter o mesmo resultado que mv, mas infelizmente eles continuam colocando uma pasta dentro da outra ... * é visto como um nome real ...
Parece mesmo que não estou chegando a lugar nenhum.
Atualização: a resposta à minha pergunta é, use o comando mv em um arquivo postinstall.