Установка Perl на Debian 13, 12, 11: подробное руководство

Perl — это мощный скриптовый язык, который до сих пор широко используется для обработки текста (регулярные выражения), написания административных скриптов, парсинга логов, а также для поддержки старых приложений (CGI, системы настройки сетевого оборудования и т.д.). В Debian Perl установлен по умолчанию, но частично — пакет perl-base содержит только интерпретатор. Если вам нужны инструменты разработки (cpan, perldoc) или дополнительные модули, нужно установить полный пакет perl. Главные сложности для новичка: понять разницу между perl-base и perl, а также, при сборке из исходников, правильно настроить PATH, чтобы не было конфликта с системным Perl.

💡 В этом руководстве вы установите Perl на Debian двумя способами: через APT (рекомендованный для большинства) и сборкой из исходников (если нужна самая свежая версия). Вы также узнаете, как установить дополнительные модули через APT и CPAN, как проверить работу Perl на тестовом скрипте и решить типичные проблемы.

В этой статье вы узнаете:

  • Как установить полный пакет Perl через APT
  • Как установить дополнительные Perl-модули через APT (lib...-perl)
  • Как установить Perl из исходников (актуальная версия)
  • Как проверить работу Perl на тестовом скрипте
  • Как создать скрипт для обновления source-сборки
  • Как решить типичные проблемы: конфликт версий, отсутствие cpan, ошибки сборки

Для кого: системные администраторы, разработчики, а также все, кому нужен Perl для скриптов или старых приложений на Debian 11, 12 или 13.

Оглавление

1. 🔧 Предварительные требования

Перед установкой убедитесь, что:

  • У вас установлена Debian 11, 12 или 13
  • Подключение к интернету стабильно
  • У вас есть права sudo

⚠️ ВАЖНО: Проверьте права sudo перед установкой

Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:

sudo whoami

Что делает: sudo выполняет команду от имени суперпользователя, whoami показывает имя текущего пользователя.

Зачем: Эта команда проверяет, есть ли у вас права sudo. Без них вы не сможете устанавливать пакеты.

✅ Если выводит root — всё в порядке, можете продолжать.

❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.

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

Перед установкой всегда обновляйте список пакетов.

sudo apt update && sudo apt upgrade -y

Что делает:

  • sudo — права суперпользователя
  • apt update — обновляет список доступных пакетов из репозиториев
  • && — выполняет следующую команду только если предыдущая успешна
  • apt upgrade -y — обновляет все установленные пакеты до последних версий

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

2. 📊 Сравнение способов установки Perl

В Debian есть два основных способа установки Perl. Вот их сравнение:

МетодОткудаВерсияОбновленияПлюсыМинусы
APT
рекомендовано
Репозитории
Debian
Debian 13: 5.40,
Debian 12: 5.36,
Debian 11: 5.32
Автоматически
через
apt upgrade
Простота,
безопасность,
интеграция
с системой
Версия может
быть старой,
особенно на
Debian 11
Сборка из
исходников
Perl.orgПоследняя
стабильная
(5.42)
ВручнуюМаксимальная
свежесть
Требует
установки
инструментов
сборки,
ручное
обновление

💡 Рекомендация: Для большинства пользователей подойдёт APT. Сборку из исходников выбирайте, если вам нужна самая свежая версия Perl или специфические опции компиляции.

3. 📦 Способ 1: Установка Perl через APT (рекомендованный)

Этот способ подходит для большинства пользователей. Вы получаете версию Perl, протестированную для вашего выпуска Debian.

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

perl -v | head -2

Что делает: Показывает установленную версию Perl.

Ожидаемый вывод в терминале (Debian 13):

This is perl 5, version 40, subversion 1 (v5.40.1) built for x86_64-linux-gnu-thread-multi

Но важно: В минимальных установках Debian может быть только пакет perl-base (только интерпретатор, без cpan и perldoc). Проверьте:

command -v cpan

Если вывод пустой — cpan отсутствует.

3.2 Установка полного пакета Perl

sudo apt install perl -y

Что делает: Устанавливает полный пакет Perl, включая cpan, perldoc и другие инструменты.

3.3 Проверка, что теперь cpan доступен

command -v cpan

Ожидаемый вывод: /usr/bin/cpan

3.4 (Опционально) Установка дополнительных Perl-модулей через APT

Debian упаковывает многие Perl-модули в отдельные пакеты с префиксом lib...-perl.

Поиск модуля (например, для MySQL):

apt-cache search perl | grep mysql

Установка модуля DBD::mysql:

sudo apt install libdbd-mysql-perl -y

Что делает: Устанавливает модуль Perl для работы с MySQL.

Другие полезные пакеты:

ПакетЧто добавляет
perl-docДокументация (perldoc)
libperl-devЗаголовочные файлы для разработки
libjson-perlJSON-парсер
libdatetime-perlРабота с датами и временем

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

Этот способ подходит, если вам нужна самая свежая версия Perl (например, 5.42.x), которая ещё не попала в репозитории Debian.

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

sudo apt install build-essential curl libgdbm-dev libdb-dev libgdbm-compat-dev zlib1g-dev -y

Что делает: Устанавливает компилятор, утилиты и библиотеки, необходимые для сборки Perl.

4.2 Определение последней версии и скачивание исходников

mkdir -p ~/perl-build && cd ~/perl-build
TARBALL=$(curl -fsSL https://www.perl.org/get.html | grep -oE 'perl-[0-9]+\.[0-9]+\.[0-9]+\.tar\.gz' | head -n 1)
curl -fLO --progress-bar "https://www.cpan.org/src/5.0/$TARBALL"

Что делает: Запрашивает страницу загрузки Perl.org, извлекает ссылку на последний tarball и скачивает его.

4.3 Проверка контрольной суммы (рекомендуется)

CHECKSUM_FILE="${TARBALL}.sha256.txt"
curl -fLO --progress-bar "https://www.cpan.org/src/5.0/$CHECKSUM_FILE"
EXPECTED=$(tr -d '\n\r' < "$CHECKSUM_FILE")
printf '%s  %s\n' "$EXPECTED" "$TARBALL" | sha256sum -c -

Ожидаемый вывод: perl-5.42.1.tar.gz: OK

4.4 Распаковка и конфигурация

tar -xzf "$TARBALL"
SOURCE_DIR="${TARBALL%.tar.gz}"
cd "$SOURCE_DIR"
./Configure -des -Dprefix=/usr/local

Что делает: Настраивает сборку для установки в /usr/local.

4.5 Компиляция и тестирование

make -j$(nproc)
make test

Сколько длится: Тесты могут занимать несколько минут.

4.6 Установка

sudo make install

Что делает: Устанавливает собранный Perl в /usr/local.

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

which perl
/usr/local/bin/perl -v | head -2

Ожидаемый вывод: /usr/local/bin/perl и версия v5.42.1.

5. 🧪 Проверка установки: тестовый скрипт

После установки Perl любым способом стоит убедиться, что он работает.

cat <<'EOF' > hello.pl
#!/usr/bin/env perl
print "Hello, world!\n";
EOF

chmod +x hello.pl
./hello.pl

Ожидаемый вывод: Hello, world!

6. 🔄 Обновление source-сборки (скрипт)

Если вы собрали Perl из исходников, обновлять его нужно вручную. Вот скрипт, который автоматически скачивает последнюю версию, собирает и устанавливает её.

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

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

INSTALL_PREFIX="/usr/local"
BUILD_DIR="$HOME/perl-build"
LOG_FILE="$BUILD_DIR/perl-update.log"

for cmd in curl gcc make sha256sum; do
    if ! command -v "$cmd" >/dev/null 2>&1; then
        echo "Ошибка: $cmd не установлен."
        exit 1
    fi
done

CURRENT_VERSION=$($INSTALL_PREFIX/bin/perl -v 2>/dev/null | grep -oE 'v[0-9]+\.[0-9]+\.[0-9]+' | head -n 1 || echo "none")
TARBALL=$(curl -fsSL https://www.perl.org/get.html | grep -oE 'perl-[0-9]+\.[0-9]+\.[0-9]+\.tar\.gz' | head -n 1)

if [ -z "$TARBALL" ]; then
    echo "Не удалось определить последнюю версию Perl."
    exit 1
fi

LATEST_VERSION=${TARBALL#perl-}
LATEST_VERSION=${LATEST_VERSION%.tar.gz}

echo "Текущая версия: $CURRENT_VERSION"
echo "Последняя версия:  v$LATEST_VERSION"

if [ "$CURRENT_VERSION" = "v$LATEST_VERSION" ]; then
    echo "Perl уже последней версии."
    exit 0
fi

mkdir -p "$BUILD_DIR"
cd "$BUILD_DIR"

echo "$(date): Начало обновления до v$LATEST_VERSION" >> "$LOG_FILE"

rm -rf perl-[0-9]*.tar.gz perl-[0-9]*.tar.gz.sha256.txt
curl -fL --retry 3 --progress-bar -o "$TARBALL" "https://www.cpan.org/src/5.0/$TARBALL"
CHECKSUM_FILE="${TARBALL}.sha256.txt"
curl -fL --retry 3 --progress-bar -o "$CHECKSUM_FILE" "https://www.cpan.org/src/5.0/$CHECKSUM_FILE"
EXPECTED=$(tr -d '\n\r' < "$CHECKSUM_FILE")
printf '%s  %s\n' "$EXPECTED" "$TARBALL" | sha256sum -c -

SOURCE_DIR="${TARBALL%.tar.gz}"
rm -rf "$SOURCE_DIR"
tar -xzf "$TARBALL"
cd "$SOURCE_DIR"

./Configure -des -Dprefix="$INSTALL_PREFIX"
make -j$(nproc)
make test
sudo make install

NEW_VERSION=$($INSTALL_PREFIX/bin/perl -v | grep -oE 'v[0-9]+\.[0-9]+\.[0-9]+' | head -n 1)
echo "$(date): Обновлено до $NEW_VERSION" >> "$LOG_FILE"
echo "Perl успешно обновлён до $NEW_VERSION"
EOF

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

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

~/perl-build/update-perl.sh

7. ⚠️ Решение типичных проблем

7.1 Ошибка: cpan: command not found

Симптом: cpan не найден, хотя perl -v работает.

Причина: Установлен только базовый пакет perl-base.

Решение: Установите полный пакет:

sudo apt install perl -y

7.2 Конфликт версий: после source-сборки показывает старый Perl

Симптом: Вы собрали Perl из исходников, но perl -v показывает старую версию (из APT).

Причина: Ваш shell находит бинарный файл в /usr/bin (APT-версия) раньше, чем в /usr/local/bin (source-сборка).

Пошаговое решение:

Шаг 1: Проверьте, какой бинарный файл используется:

which perl

Шаг 2: Если выводит /usr/bin/perl, измените порядок PATH:

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

Шаг 3: Проверьте снова:

which perl

Ожидаемый вывод: /usr/local/bin/perl

7.3 Ошибка компиляции: libperl.so: cannot open shared object file

Симптом: При компиляции модулей или запуске скриптов ошибка о том, что libperl.so не найдена.

Причина: Библиотеки Perl из source-сборки не в LD_LIBRARY_PATH.

Решение: Добавьте путь к библиотекам:

echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

7.4 Ошибка: /usr/bin/perl: bad interpreter: No such file or directory

Симптом: Скрипт с шебангом #!/usr/bin/perl не работает.

Причина: В системе нет Perl по пути /usr/bin/perl (только source-сборка в /usr/local/bin).

Решение: Измените шебанг в скрипте на #!/usr/bin/env perl или создайте симлинк:

sudo ln -s /usr/local/bin/perl /usr/local/bin/perl

8. ❌ Удаление Perl

Удаление APT-версии

sudo apt remove perl -y
sudo apt autoremove -y

Примечание: Пакет perl-base (базовый интерпретатор) не удалится, так как он нужен системе.

Удаление source-сборки

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

Или используйте лог установки (если сохранили):

grep '^  /usr/local/' ~/perl-build/perl-install.log | sed 's/^  //' | sudo xargs -r rm -f
sudo rm -rf ~/perl-build

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

which perl

Ожидаемый вывод: /usr/bin/perl (системная версия).

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

  • [ ] Система обновлена (sudo apt update && sudo apt upgrade -y)
  • [ ] Выбран и выполнен один из способов установки (APT / Source)
  • [ ] perl -v показывает ожидаемую версию
  • [ ] cpan доступен (для APT — после установки полного пакета)
  • [ ] Тестовый скрипт работает (./hello.pl выводит Hello, world!)
  • [ ] (Для source-сборки) which perl показывает /usr/local/bin/perl

Заключение

Вы установили Perl на Debian. Если вы выбрали APT — получили стабильную, проверенную версию, которая будет обновляться вместе с системой. Если собрали из исходников — получили самую свежую версию, которую можно обновлять скриптом из раздела 6. Perl — это мощный язык для обработки текста, написания скриптов автоматизации и поддержки старых приложений.

Что дальше:

  • Установите дополнительные модули через cpan (например, cpan install JSON)
  • Изучите официальную документацию: perldoc perl
  • Напишите скрипт для парсинга логов с использованием регулярных выражений
  • Если вы работаете с базами данных, установите libdbd-mysql-perl или libdbd-pg-perl