Случалось ли такое, что из разу в раз при установке того или иного дистрибутива вам нужно было устанавливать одни и те же программы? У меня вот случалось и часто. Я не поддерживаю дистрохопперство (перескакивание с дистрибутива на дистрибутив), однако порой выходят релизы, которые хочется пощупать руками и не на виртуалке. Для этого у меня есть отдельный ноутбук, который я использую как "тестовый".
Выполняя очередную установку утилит на Linux я подумал нельзя ли быстро автоматизировать данный процесс? И так появился l-scripts.
В чём задумка? Написать репозиторий, в котором бы находились все необходимые скрипты для установки того или иного программного обеспечения, которого нет в стандартных репозиториях той или иной системы (будем делить системы на три ветки: Debian (deb), Red Hat (rpm), Arch Linux). А также скрипты для быстрой настройки системы, чтобы не возиться из разу в раз с одними и теми же твиками.
Можно конечно пойти путем наименьшего сопротивления, написать один большой скрипт для каждой системы или с помощью условия и команды test
проверить какой пакетный менеджер установлен и устанавливать пакеты из массива, но тогда мы возможно установим то, что нам и не требуется. Я выделил для каждой нужной мне программы отдельный скрипт, написал вверху каждого комментарий с 3-мя строками:
# Author: Daniil Shilo (daniilshilo-developer) <daniilshilo.developer@gmail.com>
# Description: Что делает
# Destination: Как делает
Данные скрипты достаточно легкие для понимания и хорошо задокументированы. Я объявил функцию message
для того чтобы оповещать пользователя о том, какой именно процесс сейчас происходит:
Также сам пример такого скрипта:
#!/usr/bin/env bash
# Author: Daniil Shilo (daniilshilo-developer) <daniilshilo.developer@gmail.com>
# Description: Installs Sublime Text
# Destination: This script will import GPG keys for Sublime Text and install it
# Function for output messages
function message() {
if ! [[ $2 ]]; then
# Green bold text
echo -e '\033[1;32m'$1'\033[0m'
else
# Green, red and blue text
echo -e '\033[1;32m'$1'\033[1;31m >> \033[1;34m'$2'\033[0m'
fi
}
message 'Installing Sublime Text' 'Importing gpg keys'
sudo rpm -v --import https://download.sublimetext.com/sublimehq-rpm-pub.gpg
message 'Installing Sublime Text' 'Adding Sublime Text repo'
sudo dnf config-manager --add-repo https://download.sublimetext.com/rpm/stable/x86_64/sublime-text.repo
message 'Installing Sublime Text' 'Installing Sublime Text'
sudo dnf install -y sublime-text
Я буду поддерживать скрипты, для того чтобы они были актуальны и пользователи могли спокойно устанавливать программы из сторонних репозиториев. Если пользователь не доверяет безопасности, то всех скрипты с открытым исходным кодом, можно всегда проверить что делает тот или иной скрипт.
Как это упростит жизнь?
Я допускаю что каждый пользователь Linux, который может разобраться в данных скриптах может сам проделать все действия которые в них описаны, но допустим что у нас есть следующий кейс: человеку нужно установить Docker на свою машину, ему придётся гуглить сайт докера, искать в документации как именно его установить и что для этого нужно сделать. (Напоминаю, что установить Docker из стандартных репозиториев теперь невозможно в Fedora и Ubuntu, ссылка на источник)
Вместо этого человек может просто клонировать репозиторий, выбрать ветку, которая соответствует системе и запустить docker.sh
, который сам разберется как устанавливать Docker и сделает это без боли.
#!/usr/bin/env bash
# Author: Daniil Shilo (daniilshilo-developer) <daniilshilo.developer@gmail.com>
# Description: Installs Docker Engine on Fedora
# Destination: This script will add Docker repository to local list of repositories and install docker-ce, docker-ce-cli containerd.io packages
# Function for output messages
function message() {
# Green bold text
echo -e '\033[1;32m'$1'\033[0m'
}
message 'Removing old Docker instances'
sudo dnf remove -y docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
message 'Adding Docker repositories to local list'
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager \
--add-repo \
https://download.docker.com/linux/fedora/docker-ce.repo
message 'Installing Docker on the machine'
sudo dnf install -y docker-ce \
docker-ce-cli \
containerd.io \
docker-compose
message 'Starting Docker services'
sudo systemctl enable --now docker
message 'Post-installation steps'
sudo groupadd docker # Adding new group
sudo usermod -aG docker $USER # Adding current user to the group
newgrp docker # Activate privileges
Если вы хотите внести свой вклад или у вас есть интересный скрипт, который так или иначе поможет пользователям, то я всегда буду рад посмотреть ваши пулл-реквесты.
Также, если вам интересна тематика веб-разработки и линуксоводства, то буду рад увидеть вас в моём dev-log (tg).