Упаковка 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. Я думаю, что предпочел бы делать все это в одном пакете, но я не уверен, что разделение на несколько пакетов с исходным кодом имеет свои проблемы...

Другие вопросы по тегам