Подтвердить что ты не робот

Распространение скомпилированного исполняемого файла с пакетом R

Я готовлю R-пакет, который будет включать сторонний скомпилированный исполняемый файл. План состоит в том, чтобы связать его с R, используя вызовы system(). У меня есть разрешение на распространение этого исполняемого файла, но не на его исходный код. К сожалению, он компилируется только под Windows 32 бит, и его невозможно легко перекомпилировать под разными архитектурами.

Понимая, что этот пакет будет иметь несколько ограниченную аудиторию, как должен распространяться исполняемый файл? Я также признаю, что это не будет разрешено по CRAN по этой причине.

Например, если исполняемый файл должен быть включен в/bin/в подпапку установки пакета или поочередно, если пакет каким-то образом загружает исполняемый файл, когда он сам установлен.

Кроме того, какие проблемы с лицензированием, если таковые имеются, я сталкиваюсь с этим сценарием?

4b9b3361

Ответ 1

Я работал над двумя пакетами, которые делают что-то вроде этого, оба размещены на R-forge из-за двоичного ограничения CRAN (что, кстати, кажется мне совершенно разумным). (Я не думаю, что вам не хватает ничего очевидного в вашем вопросе, просто говоря здесь, что я решил сделать.)

  • пакет cpcbp (общие основные компоненты/обратная проекция) использует двоичный код, составленный из кода, написанного Патриком Филлипсом; исходный код является нераспределяемым, поскольку он использует некоторые процедуры Numerical Recipes. Я имел в виду переписать это ядро ​​в R (это просто линейная линейная алгебра, это было бы не так сложно). Мне кажется, что мне, вероятно, придется модифицировать лицензию на этом - я, вероятно, сказал "GPL", но я не думаю, что могу на самом деле сделать это с учетом нераспределяемого компонента...
  • Пакет glmmADMB использует свободно распространяемый исходный код (лицензия BSD), но инструментальная цепочка достаточно сложна, что я не хочу, чтобы пользователи загружали весь поддерживающий пакет.

В обоих случаях я помещаю двоичные файлы в inst/bin и, возможно, в подкаталоги, специфичные для архитектуры (которые устанавливаются в /bin), и используйте соответствующую логику для обнаружения архитектуры и запуска правильного двоичного файла.

Я предполагаю, что в принципе вы можете обойти невозможность лицензирования через GPL, сделав нераспространяемую часть в загрузку (как вы полагаете), но это, похоже, нарушит дух...

Ответ 2

Подход, предложенный Беном Болкером, также используется пакетом CRAN "dismo" - для работы функции maxent(), вы должны загрузить двоичный файл maxent java и поместить его в соответствующий подкаталог в основной папке пакета.