Empacotando o MATLAB (ou, mais geralmente, um software binário grande e proprietário)

4

Estou tentando empacotar o MATLAB para distribuição interna, mas isso pode se aplicar a qualquer software com a mesma arquitetura. Na verdade, estou empacotando várias versões do MATLAB para serem instaladas simultaneamente. Coisas-chave

  • Tamanho de instalação muito grande (~ 4 GB)
  • Composto por um núcleo e vários plugins (caixas de ferramentas)

Inicialmente, criei um pacote "source" único (matlab2011b) que cria vários .debs (principalmente matlab2011b-core e matlab2011b-toolbox- * para cada caixa de ferramentas). O arquivo debian/rules é apenas o padrão

all:
 dh $@

Não há Makefile; somente copiando arquivos. Eu uso um número de arquivos debian/*.install para especificar arquivos para copiar de uma cópia de uma instalação para / usr / lib /.

O problema é que toda vez que eu construo a coisa (digamos, para fazer uma correção no pacote principal), ela recopila todos os arquivos listados no arquivo *.install para, por exemplo, debian/$packagename/usr/ (a fase de construção) e tem que empacotar isso em um arquivo .deb. Demora muito tempo , na ordem das horas, e está fazendo muito de trabalho extra.

Então, minhas perguntas são:

  • Você pode fazer dh_install fazer uma cópia de hardlink (como cp -l ) para economizar tempo? (AFAICT da man page, no.) Talvez eu deva fazer isso no Makefile? (Isso vai ser um Makefile grande .)
  • Você pode fazer o debuild apenas reconstruir .debs que precisam ser reconstruídos? Ou especifique quais .debs serão reconstruídos?
  • A minha abordagem é completamente estúpida? Devo quebrar também cada uma das caixas de ferramentas em seu próprio pacote de código-fonte? (Eu vou ter que fazer alguns modelos bobos ou algo assim, porque existem centenas deles.: /)
por nfirvine 03.10.2012 / 23:06

1 resposta

1

1. Você pode fazer o dh_install fazer o que quiser adicionando isto ao debian / rules:

override_dh_install:
    dh_install # if you still want to use some things via *.install files
    cp -l src/foo debian/$packagename/usr/share/$matlabname/foo
    cp -l tools/bar debian/$packagename/usr/share/$matlabname/tools/bar
    # etc...

Não sei se é uma boa ideia ...

2. Sim, embora não seja tão simples como se poderia desejar ...

Você poderia chamar comandos debhelper individualmente:

dh_prep -p$packagname
dh_installdirs -p$packagname
dh_install -p$packagname
dh_installdeb -p$packagname
dh_gencontrol -p$packagname
dh_md5sums -p$packagname
dh_builddeb -p$packagname

Provavelmente precisa de ajustes para o seu caso, veja

man debhelper

para a lista de comandos dh_ * disponíveis

3. Acho que preferiria fazer tudo em um pacote, mas não tenho certeza, a divisão em vários pacotes de origem tem seus próprios problemas ...

    
por arand 17.10.2012 / 20:01