Warum ist Perl bei den meisten Linux-Distributionen standardmäßig installiert?

Antworten:

27

Die Antwort ist / ist nicht sexy, abhängig von Ihrer Sichtweise.

Perl ist sehr nützlich. Viele der Systemdienstprogramme sind in Perl geschrieben oder hängen von Perl ab. Die meisten Systeme funktionieren nicht richtig, wenn Perl deinstalliert wird.

Vor einigen Jahren hat FreeBSD große Anstrengungen unternommen, um Perl als Abhängigkeit für das Basissystem zu entfernen . Es war keine leichte Aufgabe.

Bahamat
quelle
Wird Perl im Kernel selbst verwendet? In diesem Artikel wird behauptet, dass der Kernel ungefähr 2.200 Zeilen Perl-Code verwendet, um die Größe von GNU Linux abzuschätzen . Auch was veranlasste die Frage; während Arch Linux installieren, bemerkte ich , dass Perl in der Installation Basispaket gibt es Kern Dienstprogramme , die Perl verwenden?
9
@JoshVoigts Der Kernel selbst verwendet kein Perl. Der Prozess des Aufbaus des Kernels verbraucht jedoch eine ganze Menge Perl. Was Arch angeht, muss jemand anderes darauf antworten.
Patrick
3
Wodurch hat FreeBSD aus Neugier Perl ersetzt?
Shadur
4
@ire_and_curses: Perl5 verlässt das Basissystem für 5.0 und höher ! Ebenfalls ab 2011: FreeBSD: Zusammenführen von Paketsystemen (unter OpenBSD).
Bahamat
7
Das FreeBSD-Basissystem ist im Grunde ein riesiges Quellcode-Repo mit dem Kernel, den Dienstprogrammen und allem. Also haben sie in diesem Repo ihre eigene Perl-Fork beibehalten, was eine große Anstrengung war und es schwierig war, mit dem Upstream-Perl auf dem neuesten Stand zu bleiben. Daher war es für sie sinnvoll, Perl vom Basissystem zu entfernen und es einfach als Port zu installieren. Dies ist viel einfacher, um auf dem neuesten Stand zu bleiben (weil sie nur die vorgelagerten Perl-Releases abrufen und kompilieren).
CJM
24

In Larry Walls ursprünglicher Veröffentlichung von Perl v1.0 in der Newsgroup comp.sources.misc vom 18. Dezember 1987 sagte er:

Wenn Sie ein Problem haben, das normalerweise sed oder awk oder sh verwendet, aber deren Fähigkeiten übersteigt oder etwas schneller ausgeführt werden muss, und Sie das dumme Ding nicht in C schreiben möchten, ist Perl möglicherweise das Richtige für Sie.

In einer viel späteren Darstellung ging er auf etwas mehr ein:

Aber die Frustrationen der Unix-Shell-Programmierung führten direkt zur Entwicklung von Perl, für das ich keine Zeit habe. Aber im Wesentlichen stellte ich fest, dass Shell-Scripting von Natur aus durch die Tatsache eingeschränkt ist, dass die meisten seiner Verben nicht unter seiner Kontrolle stehen und daher weitgehend inkonsistent miteinander sind. Und die Substantive sind verarmt, auf Zeichenfolgen und Dateien beschränkt, mit wer-weiß-was-Typologie ...

Destruktiver war die Einstellung, dass es sich um ein eindimensionales Universum handelte: Sie haben entweder in C programmiert oder Sie haben in Shell programmiert, weil sie sich offensichtlich am entgegengesetzten Ende des Einen Wahren Kontinuums befinden. Perl entstand, als mir klar wurde, dass Skripten nicht immer das Gegenteil von Programmieren sein muss, sondern dass eine einzige Sprache für beide ziemlich gut sein kann. Das hat eine riesige ökologische Nische geöffnet. Viele von Ihnen haben mein altes Klappendiagramm mit den beiden Dimensionen Manipulexität und Peitsche gesehen.

Heutzutage ist Perl eine Standardalternative / -ersatz für Shell-Scripting- und Textanalyse-Anforderungen und mit viel mehr Leistung als die herkömmlichen Tools. Aufgrund seiner extremen Flexibilität (manche würden sagen, unelegant) wurde Perl als " die Kettensäge der Schweizer Armee für Skriptsprachen " beschrieben. Aufgaben können bei der Lösung mit Perl oft erheblich kürzer, einfacher oder erweiterbarer sein. Viele, viele Systemtools, Skripte und größere Programme werden routinemäßig in Perl geschrieben. In der modernen Linux-Umgebung ist Perl nun ein weiteres Standard-Unix-Tool und wirklich unverzichtbar.

ire_and_curses
quelle
4
  1. Perl wurde für Unix entwickelt, weil die Tools nicht leistungsfähig genug waren. Für den Sport kann man suchen awkund seddrin (Perl).
  2. Perl wurde (unter anderem) von der Unix-Shell inspiriert (und C, das für Unix sehr wichtig ist - oder umgekehrt).
  3. Auch kann Perl unter einer GNU - Lizenz vertrieben werden . Einige Leute würden das als technisch irrelevant ansehen, aber es zeigt die Vermischung.
  4. Das Letzte, woran ich denken kann, ist LAMP, ein Netzwerk-Softwarepaket. (Schau mal bei Wikipedia vorbei: Das P ist oder war zumindest Perl; das L ist Linux.) (Aber dieser letzte Punkt ist ein bisschen "Huhn oder Ei".)
Emanuel Berg
quelle
4
Das P in LAMP ist heutzutage viel häufiger PHP oder Python. Ich denke, Perl ist außerdem eine Legacy-Verwendung des Akronyms.
Darvids0n
Notepad ++ wird unter einer GNU-Lizenz (insbesondere der GNU GPL) veröffentlicht. AFAIK gibt es wenig "Vermischung" zwischen Notepad ++ und verschiedenen Linux-Distributionen. Nur um ein Gegenbeispiel zu Punkt 3 zu nennen.
ein Lebenslauf
@ MichaelKjörling: Würden Sie nicht zustimmen, dass bestimmte Lizenzen die Verbreitung Ihrer Anwendung (oder in diesem Fall einer Programmiersprache) in der Linux-Welt behindern, während andere solche Hindernisse nicht darstellen? Das bedeutet nicht, dass Sie Ihren Weg in eine Distribution lizenzieren könnten, wenn Sie wirklich dachten, dass dies das war, was ich sagte. (Ich denke nicht.)
Emanuel Berg
@darvidsOn: Ja ... das habe ich gesagt (?). (Ich denke, es ist ein Zufall, dass diese großen Skriptsprachen alle mit einem P beginnen.)
Emanuel Berg
@EmanuelBerg Sie haben die "Vermischung" zwischen Perl und Linux erwähnt, da Perl eine GNU-Lizenz besitzt. Sowohl in den FreeBSD-Ports als auch in vielen Linux-Distributionen, die andere Lizenzen besitzen, ist eine Menge Software enthalten, die auch nicht unter den verschiedenen GNU-Lizenzen (GPL, LGPL, FDL, ...) ausgeführt werden kann.
ein CVn
1

Ich denke, die Antwort auf diese Frage ist teilweise historisch, teilweise praktisch.

Was die Geschichte betrifft, ist Perl eine noble Sprache. Es ist edler als Python (ganz zu schweigen von PHP), obwohl ich keine Ahnung habe, was "besser" ist (wenn das irgendwie formal analysiert werden könnte, was ich bezweifle). Und die noblen Leute, die Perl benutzen (oder benutzten), sind typischerweise die Leute, die entscheiden, was Teil einer Linux-Distribution sein soll.

Was das Praktische angeht , ist Perl immer noch das Bindeglied vieler Dinge: Betriebssysteme und das Web (wieder LAMP, nicht zu vergessen Python oder PHP). Warum also nicht etwas hinzufügen, das für viele Zwecke nützlich ist? Und vor allem, warum etwas entfernen, was da ist (und keinen Schaden anrichtet) und was nützlich ist?

In der neuesten Ausgabe des Linux-Magazins (Nr. 151, Juni 2013) ist dies jedoch ausdrücklich vermerkt. Um den Linux-Kernel zu kompilieren, werden anscheinend ein paar kurze und einfache Perl-Skripte verwendet. (Wieder die "Kleberolle" von Perl in Betriebssystemen.) Nun hat einer der Kernel-Entwickler Patches für ein erneutes Schreiben dieser Skripte eingereicht, diesmal nicht in Perl, sondern als "Unix-Shell-Skripte" (oder so) sh?). Auf diese Weise müsste Perl für niemanden installiert werden, der den Kernel kompiliert. Dieser Patch (mehrmals eingereicht) wurde jedoch nicht aufgegriffen. Und ein Grund dafür ist, dass Perl, sobald es einmal kalt ist, wahrscheinlich nicht hereingelassen wird. Leute wie Perl, und sie wollen sich nicht davon trennen.

Dies berührt nur den Rand dieser Frage, da wahrscheinlich eine sehr kleine Minderheit von Linux-Benutzern den Kernel kompilieren wird. Aber es ist noch ein weiteres Puzzleteil (und ich vermute, es gibt viele).

Emanuel Berg
quelle
1
Für dich kein Kommentar, Emanuel, aber für Leute, die sich nicht von Perl trennen wollen, wie schwer kann es sein, es einfach zu installieren, wenn du es brauchst / willst?
MattBianco