27cm
@27cm
TODO: Написать статус

Правильный подход к установке программ в Linux?

Добрый день.

Мне как разработчику периодически приходится настраивать рабочее окружение: Git, Composer, PhpStorm, MySQL Workbench, Docker / Vagrant и мн. др.

Последовательность действий для установки каждой программы получается довольно длинной. Вот, например, инструкция по установке Docker для Ubuntu: https://docs.docker.com/engine/installation/linux/... Если устанавливать всё по фэн-шую (собирать из исходников с проверкой контрольных сумм), то телодвижений как правило ещё больше.

Многие пишут скрипты для автоматизации этих действий (примеры). Этим же путём пошёл и я. Возникает новая проблема - такие скрипты приходится самому поддерживать, регулярно синхронизироваться с официальной инструкцией по установке.

Буду благодарен, если ответите на несколько вопросов:
1. Как вы устанавливаете софт на Linux? Только из исходников или с помощью менеджеров пакетов?
2. Почему создатели программ под Linux не утруждают себя написанием и поддержкой установочных скриптов, а ограничиваются лишь инструкциями по установке?
3. Может быть есть другой более правильный способ быстро установить все необходимые программы на новой машине?
  • Вопрос задан
  • 3583 просмотра
Решения вопроса 2
RiseOfDeath
@RiseOfDeath
Диванный эксперт.
1. В основном из пакетного менеджера. В крайнем случае собираю пакет сам, иначе потом задолбаешься вычищать систему и разруливать зависимости.

2. По-тому, а какой скрипт вы предлагаете, например, для докера? Там скриптовать нечего, и так от пользователя требуются только базовые действия.

3. Самый правильный способ - через пакетный менеджер сситемы. Все остальное не правильный способ.
Если вам так нужны программы, которых под ваш дистр нет в виде пакетов - пинайте разрабов программы и дистра, или сами становитесь мэйнтейнером.

p.s.
Не очень понимаю, чем вам не понравилась инструкция докера? Там подробно, для дебилов, расписано как добавить сторонний репозиторий (докера) и его ключ в систему, и как установить все это и настроить. Причем под разные версии системы. Отличная инструкция, без указания очевидных вещей занимает один абзац. (где указано какой репозиторий добавить и какие настройки сети нужно сделать для докера)
Ответ написан
skobkin
@skobkin
Гентушник, разработчик на PHP и Symfony.
3. Может быть есть другой более правильный способ быстро установить все необходимые программы на новой машине?

Ansible, например.
Ответ написан
Пригласить эксперта
Ответы на вопрос 7
nazarpc
@nazarpc
Open Source enthusiast
В хостовой системе ТОЛЬКО штатный пакетный менеджер, в Docker контейнерах внутри можно что угодно, если контейнеры шаблонные. Если же предполагается обновление внутри контейнера - только исключительно системный пакетный менеджер. В крайнем случае хоть как-то создать пакет самостоятельно, чтобы его можно было при необходимости чистенько удалить.
Ответ написан
@imikh
Мы делаем с помощью Ansible, но много других подобных тулзов есть - Salt, Chef, Puppet.
Ответ написан
Adamos
@Adamos
Устанавливать что-то из исходников, конечно, имеет смысл, только если этого нет в пакетах.
Обычно это погоня за более свежей версией.
Но, гоняясь за более свежей версией при разработке, провоцируешь проблемы при развертывании / распространении результата (если у тебя не было пакетов, их может не быть и на боевом сервере / у пользователей).
Смысл затеи при этом несколько теряется...
Ну, а если нужны свежайшие версии каких-то инструментов, то логичнее сидеть на тестовой версии системы, где такие пакеты появляются сразу после кое-какого тестирования. А не превращать стабильную систему в захламленную экспериментами.
Ответ написан
stAndrew
@stAndrew
Сначала ищу нужное ПО в менеджере программ моего дистрибутива. Там многое есть, в том числе docker.io.
Если там нет, ставлю то, что предлагает разработчик. Это может быть подключение стороннего репозитория, отдельный deb-пакет или установочный файл.
Если не получается, гуглю по форумам.
Ответ написан
Singaporian
@Singaporian
Всему свой уровень. Если ваше приложение требует очень качественного и сложного апгрейда, даунгрейда, удаления и хэндлинга непредвиденных ситуаций - тут без вариантов пакеты .rpm, .deb и так далее.
Но в данном случае речь идет о рабочем окружении для себя, где OS-specific пакеты будут оверинженирингом. В домашних условиях самое удобное будет так:
Vagrant разворачивает новую машину
Vagrant запускает Ansible
Ansible все настраивает. Что он делает - сами по месту поймете. Он может и Docker развернуть и Git-репо стянуть и как угодно вообще приложение установить.
Ответ написан
@ProFfeSsoRr
Сис.админ по Linux
1. Только пакетным менеджером. Из исходников если что-то надо - собираете из исходников пакет и его ставите
2. Вообще-то утруждают, make файл или его аналоги что по-вашему? А дальше уже у каждого пакетного менеджера своё, так что меинтейнер пакета разберется что к чему.
3. Если надо что-то из раза в раз ставить одинаковое - автоматизируйте. Если это своя собственная машина - скрипт на bash. Если машин много - Ansible например, как самый простой для новичка среди аналогичного софта его советую вам рассмотреть.

Если устанавливать всё по фэн-шую (собирать из исходников с проверкой контрольных сумм)
- это не по фен-шую, по фен-шую - это установить пакет. Если пакета еще никто под ваши дистрибутив не сделал - сделайте его сами, став таким образом меинтейнером пакета и внеся свой вклад в развитие вашего любимого дистрибутива.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы