Nano Hash - криптовалюты, майнинг, программирование

использование инструмента сборки omnibus для упаковки полного приложения

Итак, мне поручили упаковать приложение Ruby. Идея состоит в том, чтобы устранить необходимость в apt-get каких-либо пакетах или установке gem. пакет все включено.

Я дошел до того, что нашел Omnibus (есть еще fmp-cooking, но, похоже, он не так известен)

Я разобрался с общей структурой омнибусных проектов, но теперь возникли проблемы со спецификой:

1) У меня есть куча рецептов, которые запускаются с Chef ВО ВРЕМЯ УСТАНОВКИ. Они настраивают конфигурации БД и nginx. Какой лучший способ запустить их на целевой машине?

2) Я добавил строку установки пакета в свои сценарии сборки, но теперь это дублирует мои требования. Например, nokogiri устанавливается дважды. Один раз как мой реальный проект Gem, а другой раз как еще одно требование омнибуса. Итак, я получаю 2 двоичных файла: один в /#{instal_dir}/embedded/bin и один в ${install_dir}/embedded/lib/ruby/.../gems, чтобы предотвратить это?


Ответы:


1

Создание установщика немного сложнее, чем создание кулинарной книги шеф-повара. Пользователю необходимо написать DSL для каждого модуля (здесь есть инструкции по сбору артефактов и их установке на конкретную ОС).

После создания сводного проекта обратитесь к файлу README, чтобы начать работу с основами.

Обратитесь к этому проекту github для получения подробной информации о том, как создавать свои собственные DSL. Омнибусный проект Gitlab имеет DSL для некоторых модулей, таких как postgresql и т. д.

https://gitlab.com/gitlab-org/omnibus-gitlab/tree/master

Пример DSL для встраивания модуля nginx в ваш установщик выглядит так:

имя "nginx" версия_по умолчанию "1.9.10"

зависимость "pcre" зависимость "openssl"

URL-адрес источника: "http://nginx.org/download/nginx-#{версия}. tar.gz", md5: "64cc970988356a5e0fc4fcd1ab84fe57"

относительный_путь "nginx-#{версия}"

build do команда ["./configure", "--prefix=#{install_dir}/embedded", "--with-http_ssl_module", "--with-http_stub_status_module", "--with-http_gzip_static_module", "-- with-http_v2_module", "--with-ipv6", "--with-debug", "--with-ld-opt=-L#{install_dir}/embedded/lib", "--with-cc-opt =\"-L#{install_dir}/embedded/lib -I#{install_dir}/embedded/include\""].join(" ") команда "make -j #{workers}", :env => {" LD_RUN_PATH" => "#{install_dir}/embedded/lib"} команда "make install" end

28.02.2016
  • Пожалуйста, не используйте приветствия (привет), прощания (с уважением) или подписи (Шрикар). SO - это не дискуссионный форум, это справочник. 01.03.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..