В чем разница между командами cpan
и cpanm
?
Кажется, что они устанавливают модули perl
, так в чем же разница?
В чем разница между командами cpan
и cpanm
?
Кажется, что они устанавливают модули perl
, так в чем же разница?
cpan
оболочка CPAN поставляется с Perl с 1997 года. Когда вы запускаете ее в первый раз, она задает кучу вопросов и сохраняет ответы в файле конфигурации. Затем вы можете установить модуль, запустив:
cpan -i Module::Name
В оболочке содержатся другие команды для поиска CPAN и просмотра файлов дистрибутива.
Проект создания более новой, более совершенной и более функциональной оболочки CPAN под названием CPANPLUS (cpanp
из командной строки) был запущен Jos Boumans, но это никогда не был полностью завершен до того момента, когда было реализовано первоначальное видение.
Между тем MIYAGAWA решил, что cpanp
пытался сделать слишком много, и что действительно нужен миру, была более простая оболочка, которая делала меньше и задавала меньше вопросов ( в идеале нет вообще). Он создал App::cpanminus, который предоставляет команду cpanm
и делает именно то, что он намеревался. Вы можете использовать его для установки модуля (и всех зависимостей модулей) с помощью команды типа:
cpanm Module::Name
Основное различие между ними состоит в том, что если у вас есть Perl, у вас уже должна быть команда cpan
. Если у вас не будет cpanm
, если/до его установки.
Большинство современных пользователей Perl предпочитают cpanm
для простоты и, в основном, для краткости вывода.
Использование cpan
может привести к сотне строк вывода, поскольку оно показывает вам все, что он делает: загрузка, контрольная сумма, запуск установщика, разбор, загрузка, список продолжается. То же самое относится к каждой зависимости.
cpanm
, с другой стороны, говорит вам, что он делает более кратким и общим способом, а именно: выборка, настройка, построение и тестирование. Выполнено.
Таким образом, основное отличие в использовании заключается в том, что cpanm
подавляет много (обычно) нерелевантную информацию. Иногда, когда модуль выходит из строя, вам может понадобиться дополнительная информация. Там флаг -v|--verbose
, который по существу показывает вам все cpan
.
Кроме того, некоторые модули, которые требуют ввода пользователя, могут показаться "зависающими", когда вы пытаетесь их установить. Это потому, что выход, который просит вас ввести что-то, подавляется. Вы можете использовать флаги --interactive
(или --verbose
), чтобы обойти это.
Для сравнения результатов см. слайды 35-39 здесь или слайды 37-41 здесь. (Они из одного и того же представления. Я просто дублирую ссылки в случае, если один выходит из строя.)