我正在尝试将 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.我想我更喜欢在一个包中完成所有操作,但我不确定,分成几个源包也有它自己的问题......