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

Perl — это мощный скриптовый язык, широко используемый для автоматизации задач, обработки логов, системного администрирования и разработки веб-приложений. Его сила — в обработке текста, регулярных выражениях и огромном репозитории модулей CPAN (Comprehensive Perl Archive Network). Хотя в современных системах Perl часто устанавливается по умолчанию, на серверных и минимальных установках Rocky Linux его может не быть.

💡 Если вам нужно автоматизировать рутинные задачи (резервное копирование, очистку логов), парсить логи или писать скрипты для системного администрирования — Perl предоставит надёжный и проверенный годами инструментарий.

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

  • Как установить Perl через DNF (рекомендованный способ)
  • Как установить последнюю версию Perl из исходников
  • Как управлять модулями CPAN с помощью cpanm
  • Как проверить установку и написать простой скрипт
  • Как обновлять и удалять Perl

Для кого: сисадмины (автоматизация задач, обработка логов), разработчики (веб-приложения на Perl), DevOps (скрипты для CI/CD), новички (изучение Perl).


Оглавление

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

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

МетодКаналВерсияОбновленияДля кого
DNFСтандартные репозитории Rocky5.26.3 (Rocky 8),
5.32.1 (Rocky 9),
5.40.2 (Rocky 10)
Автоматические
через
dnf upgrade
Большинство пользователей, нужны стабильные пакеты
Сборка из
исходников
Perl.orgПоследняя
стабильная (5.42.0)
Требуется ручная
перекомпиляция
Разработчики, которым нужны новейшие функции или специфические флаги
сборки

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


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

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

sudo dnf upgrade --refresh -y

Что делает:

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

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


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

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

perl -v

Если Perl не установлен, вы увидите:

bash: perl: command not found

3.2 Установка Perl и инструментов для модулей

sudo dnf install -y perl perl-App-cpanminus perl-devel

Что делает:

  • perl — сам интерпретатор Perl
  • perl-App-cpanminus — утилита cpanm для установки модулей из CPAN
  • perl-devel — заголовочные файлы и библиотеки для компиляции XS-модулей (модули на C)

Зачем: perl-devel нужен для модулей, которые компилируют C-код. Без него установка некоторых модулей из CPAN будет падать с ошибками.

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

perl -v

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

This is perl 5, version 40, subversion 2 (v5.40.2) built for x86_64-linux-thread-multi
(with 16 registered patches, see perl -V for more detail)

Copyright 1987-2025, Larry Wall
...

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

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

cpanm --version | head -n 2

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

cpanm (App::cpanminus) version 1.7047 (/usr/bin/cpanm)
perl version 5.040002 (/usr/bin/perl)

4. Управление модулями Perl с помощью cpanm

cpanm (CPAN Minus) — это лёгкий менеджер пакетов для установки модулей из CPAN.

4.1 Установка модуля

sudo cpanm Module::Name

Пример установки модуля JSON:

sudo cpanm JSON

4.2 Поиск модулей на CPAN

Используйте MetaCPAN для поиска модулей по ключевым словам.

4.3 Обновление модуля

sudo cpanm Module::Name

cpanm автоматически установит последнюю версию, если она новее установленной.

4.4 Список установленных модулей

perl -MExtUtils::Installed -E 'say for ExtUtils::Installed->new->modules'

4.5 Удаление модуля (экспериментально)

sudo cpanm -U Module::Name

⚠️ Примечание: Функция удаления экспериментальная и может не удалить все файлы модуля.


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

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

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

sudo dnf groupinstall -y "Development Tools"

Что делает: Устанавливает компиляторы (gcc, make) и утилиты сборки.

5.2 Создание директории для сборки

mkdir -p ~/src/perl-build
cd ~/src/perl-build

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

Автоматическое определение последней версии:

PERL_TARBALL_URL=$(curl -fsSL https://www.perl.org/get.html | grep -oE 'https://www\.cpan\.org/src/5\.0/perl-[0-9]+\.[0-9]+\.[0-9]+\.tar\.gz' | head -n 1)
curl -fLO --progress-bar "$PERL_TARBALL_URL"

Если API недоступен — скачайте вручную с perl.org.

5.4 Распаковка и настройка

tar -xzf perl-*.tar.gz
cd perl-*/
./Configure -des -Dprefix=/usr/local

Что делают флаги:

  • -des — принимает ответы по умолчанию
  • -Dprefix=/usr/local — устанавливает Perl в /usr/local (отдельно от системного)

5.5 Компиляция

make -j$(nproc)

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

5.6 (Опционально) Запуск тестов

make test

Тесты могут занять 5–10 минут. Рекомендуется запускать их перед установкой.

5.7 Установка

sudo make install

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

/usr/local/bin/perl -v

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

This is perl 5, version 42, subversion 0 (v5.42.0) built for x86_64-linux
...

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

💡 Примечание: Если /usr/local/bin находится в PATH перед /usr/bin, то команда perl -v покажет новую версию. В противном случае используйте полный путь /usr/local/bin/perl.


6. Проверка Perl с помощью простого скрипта

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

cat > hello.pl <<'EOF'
#!/usr/bin/env perl
use strict;
use warnings;

print "Hello, World!\n";
EOF

Что делает: Создаёт скрипт, который печатает «Hello, World!». Shebang #!/usr/bin/env perl использует первый Perl в PATH.

6.2 Запуск скрипта

chmod +x hello.pl
./hello.pl

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

Hello, World!

6.3 Проверка синтаксиса (опционально)

perl -c hello.pl

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

hello.pl syntax OK

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

7.1 Обновление DNF-установки

Только Perl:

sudo dnf upgrade --refresh perl

Вместе со всей системой:

sudo dnf upgrade --refresh

7.2 Обновление сборки из исходников

Скрипт автоматического обновления:

Создайте файл ~/update-perl.sh:

cat > ~/update-perl.sh <<'EOF'
#!/usr/bin/env bash
set -euo pipefail

INSTALL_DIR="/usr/local"
PERL_BIN="$INSTALL_DIR/bin/perl"

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

if [[ $EUID -ne 0 ]]; then
    SUDO="sudo"
else
    SUDO=""
fi

if [[ -x "$PERL_BIN" ]]; then
    CURRENT="$("$PERL_BIN" -e 'print $^V')"
else
    CURRENT="not installed"
fi

LATEST_URL=$(curl -fsSL https://www.perl.org/get.html | grep -oE 'https://www\.cpan\.org/src/5\.0/perl-[0-9]+\.[0-9]+\.[0-9]+\.tar\.gz' | head -n 1)
if [[ -z "$LATEST_URL" ]]; then
    echo "Error: Could not detect the latest Perl version."
    exit 1
fi

LATEST_TARBALL="${LATEST_URL##*/}"
LATEST_VERSION="v${LATEST_TARBALL#perl-}"
LATEST_VERSION="${LATEST_VERSION%.tar.gz}"

echo "Current installed version: $CURRENT"
echo "Latest available version: $LATEST_VERSION"

if [[ "$CURRENT" == "$LATEST_VERSION" ]]; then
    echo "Perl is already up to date."
    exit 0
fi

read -rp "Proceed with update? [y/N] " confirm
if [[ "$confirm" != "y" ]]; then
    echo "Update cancelled."
    exit 0
fi

WORKDIR=$(mktemp -d -p "$HOME" perl-build-XXXXXXXX)
trap 'rm -rf "$WORKDIR"' EXIT

cd "$WORKDIR"
echo "Downloading $LATEST_TARBALL..."
curl -fLO --progress-bar "$LATEST_URL"

tar -xzf "$LATEST_TARBALL"
cd perl-*/

./Configure -des -Dprefix="$INSTALL_DIR"
make -j"$(nproc)"
$SUDO make install

echo "Update complete."
"$PERL_BIN" -e 'print $^V'
echo
EOF

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

chmod +x ~/update-perl.sh
~/update-perl.sh

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


8. Удаление Perl

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

sudo dnf remove perl perl-App-cpanminus perl-devel -y

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

sudo rm -rf /usr/local/bin/perl*
sudo rm -rf /usr/local/lib/perl5/
sudo rm -rf /usr/local/share/man/man1/perl*
sudo rm -rf /usr/local/share/man/man3/

8.3 Удаление кэша cpanm (опционально)

rm -rf ~/.cpanm/ ~/.cpan/

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

perl -v

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

bash: perl: command not found

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

9.1 Shebang указывает на неправильный Perl

Ошибка: cannot execute: required file not found

Решение: Узнайте путь к Perl:

command -v perl

Обновите shebang в скрипте или используйте универсальный #!/usr/bin/env perl.

9.2 Ошибка компиляции модуля CPAN

Ошибка: Установка модуля падает с ошибками компиляции.

Решение:

sudo dnf install -y perl-devel gcc make

9.3 Отсутствуют инструменты сборки для исходников

Ошибка: Configure: No C compiler found

Решение:

sudo dnf groupinstall -y "Development Tools"

9.4 Конфликт между системным Perl и самодельным

Решение: Используйте полные пути:

  • Системный: /usr/bin/perl
  • Самодельный: /usr/local/bin/perl

Или настройте PATH:

export PATH="/usr/local/bin:$PATH"

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

# 1. Проверка версии Perl
perl -v

# 2. Проверка cpanm
cpanm --version

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

# 4. Тестовый скрипт
echo 'print "Hello, World!\n";' > test.pl && perl test.pl && rm test.pl

# 5. Проверка установленных модулей
perl -MExtUtils::Installed -E 'say for ExtUtils::Installed->new->modules' | head -5

Заключение

Вы установили Perl на Rocky Linux через DNF или из исходников, настроили инструменты для работы с модулями CPAN и проверили установку.

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

  • ✅ Интерпретатор Perl (стабильная версия из DNF или последняя из исходников)
  • ✅ Утилита cpanm для установки модулей
  • ✅ Заголовочные файлы для компиляции XS-модулей
  • ✅ Возможность запуска Perl-скриптов

Что дальше:

  • Изучите основы Perl: perldoc perlintro
  • Установите популярные модули: sudo cpanm JSON LWP::UserAgent DBI
  • Для веб-разработки на Perl изучите Mojolicious или Dancer
  • Используйте Perl для автоматизации задач администрирования (бэкапы, очистка логов)

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

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