Почему Perl установлен по умолчанию в большинстве дистрибутивов Linux?

Ответы:

27

Ответ / не сексуален, в зависимости от вашей точки зрения.

Perl очень полезен Многие системные утилиты написаны на Perl или зависят от него. Большинство систем не будут работать должным образом, если Perl удален.

Несколько лет назад FreeBSD приложила немало усилий, чтобы удалить Perl как зависимость для базовой системы. Это была нелегкая задача.

bahamat
источник
Используется ли Perl в самом ядре? Я смотрю на эту статью, в которой утверждается, что ядро ​​использует около 2200 строк кода Perl, оценивая размер GNU Linux . Кроме того, что вызвало вопрос; при установке Arch Linux я заметил, что Perl установлен в базовом пакете, есть ли основные утилиты, которые используют Perl?
9
@JoshVoigts само ядро ​​не использует perl no. Однако процесс сборки ядра использует довольно много perl. Что касается Арка, кто-то еще должен будет ответить на этот.
Патрик
3
Из любопытства, чем FreeBSD заменил Perl?
Шадур
4
@ire_and_curses: Perl5 покидает базовую систему для 5.0 и позже! Также с 2011 года: FreeBSD: слияние систем пакетов (в рамках OpenBSD).
Багамат
7
Базовая система FreeBSD представляет собой гигантское хранилище исходного кода с ядром, утилитами и всем остальным. Таким образом, они поддерживали свой собственный форк Perl в этом репо, что было большим усилием, и его было сложно держать в курсе вышестоящего Perl. Поэтому имело смысл исключить Perl из базовой системы и просто установить его как порт, который гораздо проще поддерживать в актуальном состоянии (потому что они просто выбирают исходные версии Perl и компилируют их).
Cjm
24

В оригинальной публикации Perl v1.0 Ларри Уолла 18 декабря 1987 года в новостной группе comp.sources.misc он сказал:

Если у вас есть проблема, которая обычно использует sed или awk или sh, но она превышает их возможности или должна выполняться немного быстрее, и вы не хотите писать глупые вещи на C, тогда Perl может быть для вас.

В гораздо более позднем изложении он разработал немного больше:

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

Более разрушительным было мышление о том, что это была одномерная вселенная: вы либо программировали на C, либо программировали в оболочке, потому что они явно на противоположных концах Единого Истинного Континуума. Perl появился, когда я понял, что сценарии не всегда должны рассматриваться как противоположность программированию, но что один язык может быть довольно хорошим для обоих. Это открыло огромную экологическую нишу. Многие из вас видели мою старую диаграмму раскладушки, с двумя измерениями манипулирования и бодрости.

Сегодня Perl - это стандартная альтернатива / замена для сценариев оболочки и анализа текста, обладающая гораздо большей мощностью, чем традиционные инструменты. Из-за его чрезвычайной (некоторые сказали бы неэлегантной) гибкости Perl был описан как « бензопила швейцарской армии языков сценариев ». Задачи часто могут быть значительно короче, проще или более расширяемыми при решении с помощью Perl. Многие, многие системные инструменты, скрипты и большие программы обычно пишутся на Perl. Таким образом, в современной среде Linux Perl является еще одним стандартным инструментом Unix, и он действительно незаменим.

ire_and_curses
источник
4
  1. Perl был разработан для Unix, потому что инструменты были недостаточно мощными. Для спорта вы можете искать awkиsed в нем (Perl).
  2. Perl был (помимо всего прочего) вдохновлен оболочкой Unix (и C, что очень важно для Unix - или наоборот, возможно).
  3. Кроме того, Perl может распространяться под лицензией GNU . Некоторые люди считают это неуместным с технической точки зрения, но это показывает смешение.
  4. Последнее, что я могу вспомнить, это LAMP, который является сетевым «программным пакетом». (Проверьте это в Википедии: P - или, по крайней мере, Perl; L - Linux.) (Но этот последний пункт немного «курица или яйцо».)
Эмануэль Берг
источник
5
P в LAMP в наши дни гораздо чаще PHP или Python. Я думаю, что Perl - более унылое использование аббревиатуры.
darvids0n
Notepad ++ выпускается под лицензией GNU (в частности, GNU GPL). AFAIK, между Notepad ++ и различными дистрибутивами Linux мало "перемешивания". Просто упомяну один контрпример к вашей точке №3.
CVN
@ MichaelKjörling: Вы не согласны с тем, что определенные лицензии будут препятствовать распространению вашего приложения (или, в данном случае, языка программирования) в мире Linux, в то время как другие не будут создавать таких препятствий? Это не значит, что вы могли бы лицензировать свой путь к дистрибуции, если действительно думали, что это то, что я сказал. (Я думаю, что нет.)
Эмануэль Берг
@darvidsOn: Да ... вот что я сказал (?). (Полагаю, это совпадение, что все эти большие скриптовые языки начинаются с P.)
Эмануэль Берг,
@EmanuelBerg Вы упомянули «смешивание» между Perl и Linux на основании того факта, что Perl имеет лицензию GNU. В портах FreeBSD и во многих дистрибутивах Linux имеется много программного обеспечения, имеющего другие лицензии, и множество программ, на которых не работает ни один, лицензируемых по различным лицензиям GNU (GPL, LGPL, FDL, ...).
CVn
1

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

Что касается истории, Perl - классный язык. Он более стильный, чем Python (не говоря уже о PHP), хотя я понятия не имею, что «лучше» (если это можно как-то формально проанализировать, в чем я сомневаюсь). И классные парни, которые используют (или использовали) Perl, обычно являются парнями, решающими, что должно быть частью дистрибутива Linux.

Что касается практичности, Perl по- прежнему является связующим звеном для многих вещей: ОС и веб-сайтов (опять же, LAMP, не забывая ни Python, ни PHP). Так почему бы не включить что-нибудь полезное для многих целей? И даже более того, зачем удалять все, что есть (и не причиняет никакого вреда) и полезно?

Но, как оказалось, об этом есть заметка в последнем выпуске The Linux Magazine (# 151, июнь 2013). Очевидно, для компиляции ядра Linux используется пара коротких и простых сценариев Perl. (Опять же, «склеивающая» роль Perl в ОС.) Теперь один из разработчиков ядра представляет патчи для перезаписи этих сценариев, на этот раз не в Perl, а в виде «сценариев оболочки Unix» ( sh?). Таким образом, Perl не нужно было бы устанавливать для тех, кто собирает ядро. Но этот патч (представлен несколько раз) не был поднят. И одна из причин этого заключается в том, что в холодную погоду Perl вряд ли впустят. Людям нравится Perl, и они не хотят с этим расставаться.

Теперь это касается только границ этого вопроса, так как, вероятно, очень небольшое меньшинство пользователей Linux, вероятно, скомпилирует ядро. Но это еще одна часть головоломки (и я подозреваю, что их много).

Эмануэль Берг
источник
1
Не комментарий для вас, Эмануэль, но для людей, не желающих расставаться с Perl, насколько сложно это просто установить, если вам это нужно / нужно?
MattBianco