Когда использовать команду `install` в контексте DevOps (Maven, Make, npm, etc.)?

«Когда использовать команду `install` в контексте DevOps (Maven, Make, npm, etc.)?» — вопрос из категории DevOps, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Команда install имеет разное значение в зависимости от инструмента, но общая цель — подготовить артефакт или зависимости для локального использования.

Основные контексты использования:

  1. Maven (mvn install):

    • Когда: После успешной сборки проекта (mvn compile, mvn package).
    • Зачем: Чтобы разместить собранный артефакт (JAR, WAR) в локальном репозитории (~/.m2/repository). Это делает его доступным для других проектов на той же машине без необходимости деплоить в удалённый репозиторий (Nexus, Artifactory).
  2. npm (npm install):

    • Когда: При первом клонировании проекта или после изменений в package.json.
    • Зачем: Чтобы скачать все зависимости, перечисленные в package.json и package-lock.json, и установить их в папку node_modules. Также используется для установки глобальных пакетов с флагом -g.
  3. Make (make install):

    • Когда: После сборки программы (make или make build).
    • Зачем: Чтобы скопировать скомпилированные бинарники, библиотеки и файлы конфигурации в системные директории (например, /usr/local/bin). Обычно требует прав суперпользователя (sudo).

Ключевое правило: install обычно является локальной операцией, подготавливающей среду для разработки или тестирования, в отличие от команд deploy или publish, которые загружают артефакты в общие, удалённые репозитории.