Сборочное окружение и зависимости при разработке

Представление. FrBrGeorge и ALT Linux Team (в частности FrBrGeorge и ALT Linux Team ☺)

О чём {X} не будет рассказано в лекциях, но что {i} необходимо тем не менее знать / уметь:

Стадии разработки приложения

Приложение:

Значком (./) отмечены области, которые мы так или иначе затронем

Цикл разработки

(«Для самых маленьких»):

  1. Редактирование
  2. Сборка и подготовка к запуску
  3. Тестирование и запуск

Редактирование

Текстовый редактор для программирования — это:

Мы ограничимся только {*} , для остального будем использовать внешние инструменты

Сборочное окружение:

В классическом Linux-дистрибутиве эти инструменты не обязаны присутствовать «из коробки» — их надо устанавливать из т. н. пакетов.

Зависимости

Что мы поставили в сборочное окружение?

Строго говоря, мы можем программировать в окружении, содержащем только инструментальные зависимости, собирать дистрибутив в окружении, содержащем только сборочные зависимости, а для запуска доустанавливать только эксплуатационные. Пример — сборка \Git6Hub-ом под несколько платформ.

Мы же используем очень олдскульный вариант «где собрал, там и зспустил», поэтому установили все три набора.

(если нужно) GIT

Базовый сайт: Pro GIT

VCS:

DVCS:

Общие понятия (не все):

Цикл работы

  1. клонирование (git clone)

  2. (повторно и далее) Синхронизация (git pull = git fetch + git merge)

  3. Изменение
  4. Отметка файлов для коммита (git add)

  5. Коммит (git commit)

  6. Переход к 2. или 3.
  7. Публикация (git push)

Свойства GIT:

Доступ к сборочной среде

Варианты сборочного окружения:

Изолированная сборка и пакетирование

Недостатки подхода «где собрал, там и запустил»

  1. Нужно ставить сборочные зависимости прямо в хост-систему:

    • они могут конфликтовать,
    • они могут мешать общей работе,
    • хост-система как сборочное окружение постоянно меняется, и проекты то собираются, то нет — неясно отчего.
  2. Запуск из каталога, в котором программу собрали, не подходит для production:
    • легко случайно поменять что-нибудь (actually, всегда),

    • программа будет создавать нужные для эксплуатации файлы прямо в каталоге разработки (а с точки зрения разработки они мусор),

    • неочевидно, как другой пользователь будет запускать программу.

Проблема (1) решается введением выделенного сборочного окружения:

Два последних свойства требуют переразвёртывания окружения ⇒ tmpfs.

Проблема (2) решается пакетированием:

Использование hasher (и интеграция с git при помощи ALT Gear), а также создание пакета рассмотрено в проекте лабораторных для Альт Платформы по данному курсу.

Д/З

  1. Обеспечить (себе) доступ к Linux-системе,
    • в которую можно устанавливать произвольное ПО из репозитория
    • вариант:
  2. Завести публичный git-репозиторий и зарегистрировать его в качестве комментария к этому issue

    • GIT заводится где угодно, лишь бы было опубликовано и мне можно было сделать git clone (GitHub, GitLab, факультетский GitLab для студентов, любой иной способ):

    • Скорее всего вам понадобится сгенерировать и зарегистрировать ssh-ключ

Отпечаток ключа linuxprac:

ED25519 key fingerprint is MD5:55:1e:6a:4c:32:99:1b:fb:fa:d3:15:b9:a5:6b:94:53.
+--[ED25519 256]--+
|        oo. o    |
|        += + .   |
|         += .  . |
|        oo    o E|
|        S.     B |
|          .   B  |
|         . . o o |
|        . . . o  |
|         ... .   |
+------[MD5]------+

LecturesCMC/LinuxApplicationDevelopment2025/00_BuildEnv (последним исправлял пользователь FrBrGeorge 2025-09-05 19:47:33)