Упаковка MATLAB (или, в более общем случае, большой двоичный, проприетарный программный продукт)
Я пытаюсь упаковать MATLAB для внутреннего распространения, но это может относиться к любому программному обеспечению с такой же архитектурой. Фактически, я упаковываю несколько версий MATLAB для одновременной установки. Ключевые вещи
- Очень большой размер установки (~4 ГБ)
- Состоит из ядра и нескольких плагинов (наборов инструментов)
Первоначально я создал один пакет "source" (matlab2011b), который создает несколько.debs (в основном, 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 только пересобрать.debs, которые нужно перестроить? Или указать какой.debs пересобрать?
- Мой подход совершенно глуп? Должен ли я разбить каждый из наборов инструментов на собственный пакет с исходным кодом? (Мне придется сделать несколько глупых шаблонов или еще что-то, потому что их сотни.:/)
1 ответ
1. Вы можете заставить dh_install делать все, что захотите, добавив это в 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...
Я не знаю, если это хорошая идея, хотя...
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. Я думаю, что предпочел бы делать все это в одном пакете, но я не уверен, что разделение на несколько пакетов с исходным кодом имеет свои проблемы...