Распространение скомпилированного исполняемого файла с пакетом R - PullRequest
12 голосов
/ 23 января 2012

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

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

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

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

Ответы [ 2 ]

9 голосов
/ 24 января 2012

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

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

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

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

3 голосов
/ 24 января 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...