打包 MATLAB(或者更一般地说,大型二进制专有软件)

打包 MATLAB(或者更一般地说,大型二进制专有软件)

我正在尝试将 MATLAB 打包以供内部分发,但这可以适用于具有相同架构的任何软件。事实上,我正在打包多个版本的 MATLAB 以供同时安装。关键事项

  • 安装尺寸非常大(~4 GB)
  • 由一个核心和几个插件(工具箱)组成

最初,我创建了一个单独的“源”包 (matlab2011b),它构建了几个 .deb(主要是 matlab2011b-core 和 matlab2011b-toolbox-*,每个工具箱都有)。该debian/rules文件只是标准

all:
 dh $@

没有 Makefile;只有复制文件。我使用多个debian/*.install文件来指定要从安装副本复制到 /usr/lib/ 的文件。

问题是,每次我构建这个东西(比如,对核心包进行更正)时,它都会将文件中列出的每个文件重新复制*.install到例如debian/$packagename/usr/(构建阶段),然后必须将其捆绑到 .deb 文件中。它需要很长时间大约几个小时,并且正在做很多额外的工作。

我的问题是:

  • 你能做dh_install一个硬链接复制(像cp -l)来节省时间吗?(据我所知,从手册页来看,不行。)也许我应该让它在 Makefile 中执行此操作?(这将是一个大的Makefile。
  • 你能让 debuild 只重建需要重建的 .deb 吗?或者指定要重建哪些 .deb?
  • 我的方法是不是太愚蠢了?我是否也应该将每个工具箱拆分成各自的源包?(我必须做一些愚蠢的模板之类的东西,因为有数百个。:/)

答案1

1.你可以通过将其添加到 debian/rules 来让 dh_install 执行任何你想要的操作:

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...

但我不知道这是否是个好主意...

2.是的,尽管并不像人们希望的那么简单......

您可以单独调用 debhelper 命令:

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

可能需要根据你的情况进行调整,请参阅

man debhelper

可用的 dh_* 命令列表

3.我想我更喜欢在一个包中完成所有操作,但我不确定,分成几个源包也有它自己的问题......

相关内容