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 | Стандартные репозитории Rocky | 5.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— сам интерпретатор Perlperl-App-cpanminus— утилитаcpanmдля установки модулей из CPANperl-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 для автоматизации задач администрирования (бэкапы, очистка логов)