2015-01-14 5 views
6

Проблема: Я хотел бы сделать julia доступной для наших разработчиков в нашей корпоративной сети, которая вообще не имеет доступа к интернету (без прокси), из-за чувствительных данных.использовать julia язык без подключения к интернету (зеркало?)

Насколько я понимаю, julia предназначена для использования github. Например Джулии> Pkg.init() пытается получить доступ к: мерзавца: //github.com/JuliaLang/METADATA.jl

Пример: Я решил эту проблему для R путем создания локального хранилища CRAN (rsync) и настройку локального веб-сервера. Я также решил эту проблему для python так же, создав локальный репозиторий PyPi (bandersnatch) + веб-сервер.

Вопрос: Есть ли способ создать локальный репозиторий для метаданных и пакетов для julia?

Заранее спасибо. Roman

ответ

8

Да, одним из преимуществ использования менеджера пакетов Julia является то, что вы должны иметь возможность разблокировать METADATA и размещать его в любом месте, где хотите (и сохранить ветку, где вы можете фактически проверить новые пакеты, прежде чем разрешить клиентов для обновления). Вы можете быть одним из первых людей, которые действительно создали такую ​​систему, поэтому ожидайте, что вам нужно будет отправить некоторые проблемы (или, еще лучше, направить запросы), чтобы все работало плавно.

См. Дополнительные аргументы Pkg.init(), где указано URL-адрес ретрансляции METADATA.

Если вы хотите более простое решение для управления, я бы также подумал о настройке двух уровней, где вы устанавливаете пакеты на одной системе (подключенной к Интернету), а затем копируете полученный каталог ~/.julia в ограниченную систему. Если используемые вами пакеты имеют двоичные зависимости, вы можете столкнуться с проблемами, если у вас нет схожих систем с обеих сторон или если некоторые из зависимостей установлены глобально, но может оказаться полезным Pkg.build("Pkgname").

+0

Благодарим вас за ответ. Насколько я понимаю, используя каталог ~/.julia, я могу установить пакеты на один уровень (интернет) с помощью Pkg.add («Packagename»). Переместите его на второй уровень (без Интернета), установите переменную окружения JULIA_PKGDIR, чтобы указать на .julia. Я должен проверить это. Что касается вашего первого варианта, я клонировал METADATA в локальный каталог. Я мог бы указать на него с помощью JULIA_PKGDIR. Но тогда это только метаданные пакета, все должно быть загружено из github, когда я действительно добавляю пакет. Оптимальным случаем было бы, если бы я мог создать репо, которое включает в себя все, как зеркало CRAN 100GB. – Roman

2

Это, как я решил это (пока), используя второе предложение по ivarne .I использовать установку в два яруса, две сети, подключенный к Интернету (офисной сети), один воздух гэп сети (разработка сети).

Информация о системе: OpenSUSE-13,1 (обе сети), джулия-0.3.5 (обе сети)

Tier один (офис сети)

  • установлен джулия на долю NFS , /sharename/local/julia.
  • мягкие связаны /sharename/local/bin/julia с /sharename/local/julia/bin/julia
  • приложенным /sharename/local/bin/ к $PATH с помощью сценария в /etc/profile.d/scriptname.sh
  • создан /etc/gitconfig всех офис сети машин: [url "https://"] insteadOf = git:// (для решения проблем прокси-сервер с GitHub)
  • теперь каждый пользователя в офисе сеть может просто запустить # julia
  • Pkg.add("PackageName") затем используется для установки различных пакетов.

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

уровня два (развитие сети)

  • установлен джулия на долю NFS, равном уровне одного.
  • Когда сети подключены, я использую сценарий оболочки с rsync -avz --delete, чтобы синхронизировать каталог .julia первого уровня на второй уровень для каждого пользователя.

Заключение (до сих пор): Это, кажется, работает достаточно хорошо. Как ivarne предложил проблемы, если пакет установлен И что-то большее, чем просто копирование файлов (скомпилировано?) На уровне первого, пакет не будет работать на втором уровне. Но это можно решить с помощью Pkg.build("Pkgname").

Смежные вопросы