Установка Git на Rocky Linux: полное руководство

Git — это распределённая система контроля версий, которая лежит в основе современной разработки программного обеспечения. Нужно ли вам отслеживать изменения в своих проектах, работать в команде или участвовать в open-source проектах — Git предоставляет инструменты для эффективного управления историей кода.

💡 Если вы разрабатываете код, работаете в команде или просто хотите отслеживать изменения в своих конфигурациях — Git даст вам полный контроль над историей ваших файлов.

В этом руководстве мы установим Git на Rocky Linux 8, 9 и 10. Вы узнаете:

  • Как установить Git через DNF (простой способ)
  • Как собрать последнюю версию Git из исходников (для самых свежих функций)
  • Как настроить Git с вашим именем и email
  • Как создать репозиторий и работать с удалёнными серверами
  • Как обновлять и удалять Git

Для кого: разработчики (контроль версий кода), сисадмины (отслеживание изменений конфигов), DevOps (автоматизация развёртывания), новички (первые шаги в контроле версий).


Оглавление

1. Выбор метода установки

Rocky Linux предлагает два подхода к установке Git: через DNF (просто) или сборку из исходников (для самой свежей версии).

МетодКаналВерсияОбновленияДля кого
DNF (AppStream)Стандартный репозиторий Rocky2.43 (Rocky 8) – 2.47 (Rocky 9/10)Автоматические через dnf upgradeБольшинство пользователей, нужны стабильные пакеты
Сборка из исходниковGitHubПоследняя стабильная (2.52.0)Требуется ручная перекомпиляцияРазработчики, которым нужны новейшие функции

💡 Вывод для новичка: Для большинства пользователей подходит установка через DNF — она даёт автоматические обновления безопасности и интеграцию с системным менеджером пакетов. Сборка из исходников нужна только если вам требуются функции, отсутствующие в версии из репозитория.


2. Подготовка системы

2.1 Обновление системы

sudo dnf upgrade --refresh -y

Что делает:

  • sudo — права суперпользователя.
  • dnf upgrade — обновляет все пакеты до последних версий.
  • --refresh — принудительно перекачивает метаданные репозиториев (игнорирует кэш).
  • -y — автоматически отвечает «yes».

Зачем: Это стандартная практика безопасности перед установкой нового ПО. Снижает риск конфликтов зависимостей.

2.2 Установка dnf-plugins-core (для метода сборки из исходников)

sudo dnf install -y dnf-plugins-core

Что делает: Устанавливает набор плагинов для DNF, включая команду config-manager.

Зачем: Понадобится для управления репозиториями при сборке из исходников (хотя в этой инструкции мы не используем сторонние репозитории).


3. Метод 1: Установка Git через DNF (рекомендовано)

3.1 Проверка, установлен ли Git

git --version

Если Git уже установлен — вы увидите версию. Если нет — команда сообщит command not found.

3.2 Установка Git

sudo dnf install -y git

Что делает: Устанавливает пакет Git из стандартного репозитория Rocky Linux AppStream.

3.3 Проверка версии

git --version

Ожидаемый вывод для Rocky 10/9:

git version 2.47.3

Ожидаемый вывод для Rocky 8:

git version 2.43.7

Зачем: Убедиться, что Git установился корректно. Версии отличаются, но основные команды одинаковы.


4. Метод 2: Сборка Git из исходников (последняя версия)

Этот метод сложнее, но даёт доступ к самой свежей версии Git (например, 2.52.0) с новейшими функциями.

4.1 Установка зависимостей для сборки

sudo dnf groupinstall -y "Development Tools"
sudo dnf install -y libcurl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker wget

Что делает:

  • groupinstall "Development Tools" — устанавливает компиляторы (gcc, make) и утилиты сборки.
  • Остальные пакеты — библиотеки для HTTPS-транспорта, парсинга XML, локализации и Perl-инструментов.

Опционально (для GUI-инструментов gitk и git-gui):

sudo dnf install -y tcl tk

4.2 Скачивание исходного кода

curl -s https://api.github.com/repos/git/git/tags | grep -oE '"name": "v[0-9]+\.[0-9]+\.[0-9]+"' | head -n 1 | cut -d '"' -f4 | xargs -I{} wget https://github.com/git/git/archive/refs/tags/{}.tar.gz

Что делает: Обращается к API GitHub, находит последний стабильный тег (например, v2.52.0) и скачивает архив с исходниками.

💡 Если API недоступен — скачайте вручную с страницы тегов Git:

wget https://github.com/git/git/archive/refs/tags/v2.52.0.tar.gz

4.3 Распаковка

tar -xzf v*.tar.gz
cd git-*/

4.4 Компиляция и установка

make prefix=/usr/local all
sudo make prefix=/usr/local install

Что делает:

  • make prefix=/usr/local all — компилирует Git с установкой в /usr/local.
  • sudo make prefix=/usr/local install — устанавливает скомпилированные файлы в систему.

Сколько ждать: Несколько минут, в зависимости от производительности сервера.

4.5 Проверка установки

git --version

Ожидаемый вывод:

git version 2.52.0

Проверка, что используется именно собранная версия:

command -v git

Ожидаемый вывод:

/usr/local/bin/git

Если показывает /usr/bin/git — добавьте /usr/local/bin в начало PATH:

echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

4.6 Очистка файлов сборки (опционально)

cd ~
rm -rf git-*/ v*.tar.gz

5. Настройка Git

После установки Git необходимо настроить ваше имя и email — они будут вшиты в каждый коммит.

5.1 Установка имени и email

git config --global user.name "Ваше Имя"
git config --global user.email "your.email@example.com"

Что делает: Сохраняет ваше имя и email в глобальном конфигурационном файле ~/.gitconfig.

5.2 Проверка конфигурации

git config --list

Ожидаемый вывод:

user.name=Ваше Имя
user.email=your.email@example.com

5.3 Настройка кэширования учётных данных

При работе с удалёнными репозиториями по HTTPS Git будет запрашивать пароль (или токен) при каждом подключении. Кэширование позволяет сохранять его на несколько часов.

git config --global credential.helper 'cache --timeout=14400'

Что делает: Сохраняет учётные данные на 4 часа (14400 секунд). После этого срока Git запросит их снова.

5.4 (Опционально) Установка имени ветки по умолчанию

Современные репозитории используют main вместо master.

git config --global init.defaultBranch main

6. Основы работы с Git

6.1 Создание нового репозитория

mkdir ~/my-project
cd ~/my-project
git init

Ожидаемый вывод:

hint: Using 'main' as the name for the initial branch...
Initialized empty Git repository in /home/user/my-project/.git/

6.2 Проверка статуса

git status

6.3 Добавление файлов и коммит

echo "# My Project" > README.md
git add README.md
git commit -m "Initial commit"

6.4 Подключение удалённого репозитория (GitHub, GitLab, Bitbucket)

git remote add origin https://github.com/username/repository.git

Проверка:

git remote -v

6.5 Отправка изменений

git push -u origin main

7. Обновление Git

7.1 Для DNF-установки

sudo dnf upgrade --refresh git

7.2 Для сборки из исходников

Используйте скрипт автоматического обновления:

Создание скрипта:

sudo nano /usr/local/bin/update-git

Содержимое скрипта:

#!/bin/bash
set -e

INSTALL_PREFIX="/usr/local"
BUILD_DIR="$HOME/git-build"

if [ "$(id -u)" -eq 0 ]; then
    echo "Run this script as a regular user; use sudo only for install steps."
    exit 1
fi

for cmd in curl tar make gcc; do
    if ! command -v "$cmd" >/dev/null 2>&1; then
        echo "Error: $cmd is required but not installed."
        exit 1
    fi
done

mkdir -p "$BUILD_DIR"

CURRENT_VERSION=$($INSTALL_PREFIX/bin/git --version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -n 1 || echo "none")
CURRENT_TAG="v$CURRENT_VERSION"

LATEST_TAG=$(curl -s https://api.github.com/repos/git/git/tags | grep -oE '"name": "v[0-9]+\.[0-9]+\.[0-9]+"' | head -n 1 | cut -d '"' -f4)

if [ -z "$LATEST_TAG" ]; then
    echo "Error: Could not fetch the latest version from GitHub."
    exit 1
fi

echo "Current version: $CURRENT_TAG"
echo "Latest version:  $LATEST_TAG"

if [ "$CURRENT_TAG" = "$LATEST_TAG" ]; then
    echo "Already up to date."
    exit 0
fi

cd "$BUILD_DIR"
rm -rf git-*/

echo "Downloading $LATEST_TAG..."
curl -fLO --progress-bar "https://github.com/git/git/archive/refs/tags/${LATEST_TAG}.tar.gz"

echo "Extracting source..."
tar -xzf "${LATEST_TAG}.tar.gz"
rm -f "${LATEST_TAG}.tar.gz"

cd "git-${LATEST_TAG#v}"

echo "Compiling (this can take several minutes)..."
make prefix="$INSTALL_PREFIX" all

echo "Installing..."
sudo make prefix="$INSTALL_PREFIX" install

NEW_VERSION=$($INSTALL_PREFIX/bin/git --version | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -n 1)
echo "Update complete. git version $NEW_VERSION"

Делаем скрипт исполняемым:

sudo chmod +x /usr/local/bin/update-git

Запуск обновления:

update-git

⚠️ Важно: Не автоматизируйте этот скрипт через cron. Компиляция может занимать время и требовать ручного вмешательства.


8. Удаление Git

8.1 Удаление DNF-установки

sudo dnf remove git -y
sudo dnf autoremove -y

8.2 Удаление сборки из исходников

sudo rm -f /usr/local/bin/git /usr/local/bin/git-* /usr/local/bin/gitk /usr/local/bin/scalar
sudo rm -rf /usr/local/libexec/git-core
sudo rm -rf /usr/local/share/git-core
sudo rm -rf /usr/local/share/git-gui
sudo rm -rf /usr/local/share/gitk
sudo rm -rf /usr/local/share/gitweb
sudo rm -rf /usr/local/share/perl5/Git /usr/local/share/perl5/Git.pm
sudo rm -rf /usr/local/share/man/man1/git* /usr/local/share/man/man5/git* /usr/local/share/man/man7/git*
sudo rm -f /usr/local/bin/update-git

8.3 Проверка удаления

git --version

Ожидаемый вывод:

bash: git: command not found

9. Диагностика проблем

9.1 После сборки из исходников показывает старую версию

Причина: Система находит Git из /usr/bin раньше, чем из /usr/local/bin.

Решение:

echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
command -v git   # должно показывать /usr/local/bin/git

9.2 Ошибка «Permission denied (publickey)» при push

Причина: SSH-ключ не добавлен в аккаунт GitHub/GitLab.

Проверка:

ssh -T git@github.com

Решение: Сгенерируйте ключ и добавьте публичный ключ в ваш аккаунт:

ssh-keygen -t ed25519 -C "your.email@example.com"
cat ~/.ssh/id_ed25519.pub

9.3 Ошибка компиляции «cmp: command not found»

Решение:

sudo dnf install diffutils

Чек-лист: всё готово к работе

# 1. Проверка версии Git
git --version

# 2. Проверка конфигурации
git config --list

# 3. Проверка, какой Git используется (для сборки из исходников)
command -v git

# 4. Проверка подключения к GitHub (для SSH)
ssh -T git@github.com

# 5. Создание тестового репозитория
mkdir ~/test-git && cd ~/test-git && git init && echo "test" > file.txt && git add file.txt && git commit -m "test"

Заключение

Вы установили Git на Rocky Linux и настроили его для повседневной работы.

Что теперь есть в системе:

  • ✅ Git (стабильная версия из DNF или последняя из исходников)
  • ✅ Настроенное имя и email для коммитов
  • ✅ Кэширование учётных данных для HTTPS
  • ✅ Готовность к работе с удалёнными репозиториями

Что дальше:

  • Создайте репозиторий на GitHub/GitLab и свяжите его с локальным
  • Изучите основные команды: git log, git branch, git merge, git rebase
  • Настройте Git в своей IDE (VS Code, IntelliJ, PyCharm)
  • Для продвинутой работы изучите Git Flow или GitHub Flow

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *