Команда corelist в Linux: проверка базовых модулей Perl

Введение

При разработке и сопровождении скриптов в операционных системах Linux нередко требуется выяснить, входит ли нужная библиотека в стандартный комплект поставки интерпретатора Perl или же потребуется её отдельная инсталляция из CPAN либо репозиториев дистрибутива. Для решения этой задачи служит консольная утилита corelist. Ниже рассмотрен процесс её развёртывания, базовый синтаксис, определение истории появления библиотек в различных ветках Perl, а также сравнительный анализ версий.

Установка corelist и базовый синтаксис запросов

Для работы с инструментом в среде Ubuntu достаточно инсталлировать базовый рантайм языка вместе с пакетом libmodule-corelist-perl, обратившись к менеджеру пакетов APT:

Установка Perl и пакета libmodule-corelist-perl через apt-get

Инструмент corelist обращается к встроенной базе метаданных, позволяя мгновенно выяснить статус любого модуля в официальном дистрибутиве Perl. Флаг -v без дополнительных параметров выводит перечень всех поддерживаемых утилитой релизов интерпретатора.

⚙️ [Ключевые параметры запуска]

-v : отображает полный перечень поддерживаемых выпусков Perl либо выводит состав библиотек конкретной версии.
-a : выводит исчерпывающую хронологию версий модуля по всем существующим релизам языка.
-d : позволяет определить выпуск, начиная с которого модуль признан устаревшим (deprecated).
-r : предоставляет точные даты публикации официальных релизов Perl.
--diff : сопоставляет структуру двух редакций интерпретатора и генерирует отчет о расхождениях в библиотеках.

Просмотр поддерживаемых версий Perl с помощью corelist -v

Чтобы выяснить, с какого момента системная библиотека манипуляции файловыми путями File::Spec стала поставляться из коробки, выполним следующую команду:

Запрос возвращает точные сведения: компонент File::Spec впервые появился в составе дистрибутива Perl версии 5.00405.

Проверка первого появления File::Spec в составе ядра Perl

Аналогичным образом проверяется парсер JSON::PP, написанный на чистом Perl:

Вывод терминала подтверждает, что сериализатор JSON::PP официально интегрирован в базовую поставку начиная с выпуска Perl v5.13.9.

Определение версии включения JSON::PP в базовый дистрибутив

Отслеживание истории изменений библиотек по всем выпускам

Флаг -a открывает доступ к полной эволюции интересующего пакета. Запустим анализ для средства форматированного вывода структур данных Data::Dumper:

В выводе консоли наглядно видно, что Data::Dumper дебютировал в релизе 5.005, после чего его внутренняя версия последовательно обновлялась при каждом крупном обновлении среды выполнения.

Анализ истории версий модуля Data::Dumper через флаг -a

Проверим сетевой интерфейс низкоуровневых сокетов с помощью команды corelist -a Socket:

Сгенерированный отчет показывает непрерывную поддержку модуля Socket со времен первых сборок ветки Perl 5, отражая постепенную модернизацию его кодовой базы от релиза к релизу.

Хронология обновлений модуля Socket по всем релизам Perl

Исследование состава конкретного релиза и поиск по шаблону

Если перед инженером стоит задача изучить полный набор библиотек фиксированного дистрибутива (например, Perl 5.034), используется флаг -v с указанием версии:

Утилита формирует исчерпывающий каталог стандартных модулей с соответствующими номерами сборок, доступных по умолчанию в целевой среде исполнения без обращения к сторонним репозиториям.

Просмотр всех встроенных модулей релиза Perl 5.034

Для фильтрации списка по маске имени поддерживаются регулярные выражения, обрамленные прямыми слэшами (/.../). Выполним поиск всех криптографических компонентов хэширования:

Консоль выведет семейство модулей, имя которых содержит фрагмент ‘Digest’, сопроводив каждую найденную запись версией Perl, в которой она была впервые представлена.

Поиск криптографических модулей по регулярному выражению /Digest/

Сравнение редакций Perl и выявление исключенных компонентов

Перед обновлением среды на серверах критически важно предотвратить возможные регрессии. Сравнить модульные составы выпусков 5.030 и 5.034 позволяет флаг --diff:

Сформированный отчет наглядно подсвечивает изменения версий пакетов между релизами, помогая оценить совместимость существующей кодовой базы с новым окружением.

Сравнение изменений в составе библиотек между Perl 5.030 и 5.034

Кроме того, команда corelist --removed 5.034 помогает выявить модули, которые были полностью выведены из стандартного комплекта поставки в указанном релизе:

Полученный список предупреждает системного администратора о необходимости явной установки устаревших или исключенных пакетов через CPAN, исключая сбои при миграции на более свежие версии интерпретатора.

Выявление удаленных модулей из ядра Perl 5.034 через –removed

Утилита corelist представляет собой компактный, но мощный инструмент для аудита стандартной библиотеки Perl. Грамотное использование её возможностей избавляет от избыточных внешних зависимостей и существенно упрощает планирование межверсионных обновлений на серверах под управлением Linux.