为什么大多数Linux发行版默认都安装了Perl?


Answers:


27

答案是否是性感的,取决于您的观点。

Perl非常有用。许多系统实用程序都用perl编写或依赖于perl。如果卸载了Perl,大多数系统将无法正常运行。

几年前,FreeBSD 付出了很多努力来删除Perl作为基本系统的依赖项。这不是一件容易的事。


Perl是否在内核本身中使用?我正在看的这篇文章声称内核使用了大约2,200行Perl代码来估计GNU Linux的大小。另外,是什么引起了这个问题?在安装Arch Linux时,我注意到Perl已安装在基本软件包中,是否有使用Perl的核心实用程序?

9
@JoshVoigts内核本身不使用perl no。但是,构建内核的过程确实使用了大量的perl。至于Arch,其他人将不得不回答那个问题。
Patrick

3
出于好奇,FreeBSD用什么代替了Perl?
Shadur 2012年

4
@ire_and_curses:Perl5将离开基本系统5.0及更高版本同样从2011年开始:FreeBSD:软件包系统合并(在OpenBSD下)。
bahamat 2012年

7
FreeBSD基本系统基本上是一个包含内核,实用程序和所有内容的大型源代码存储库。因此,他们在该仓库中维护着自己的Perl分支,这是一项巨大的工作,并且很难与上游Perl保持同步。因此,对于他们来说,从基本系统中删除Perl并将其安装为端口是很有意义的,这使保持最新状态更加容易(因为它们只是获取上游Perl版本并对其进行编译)。
cjm 2012年

24

在1987年12月18日Larry Wall 在Per。v1.0原始发布comp.sources.misc新闻组中,他说:

如果您遇到一个通常使用sed或awk或sh的问题,但是它超出了它们的功能,或者必须运行得更快一些,并且您不想用C语言编写愚蠢的东西,那么perl可能适合您。

后来的展览中,他详细说明了一些:

但是Unix shell编程的失败直接导致了Perl的创建,我真的没有时间讲。但是从本质上讲,我发现shell脚本在本质上受到以下事实的限制:它的大多数动词不受其控制,因此在很大程度上彼此不一致。而且名词是贫穷的,仅限于字符串和文件,具有谁知道什么类型学...

更具破坏性的是这样的观念,那就是一维宇宙:您要么用C编写程序,要么用Shell编写程序,因为它们显然位于“一个真实连续体”的相反两端。当我意识到脚本并不一定总是被视为编程的对立面时,Perl就诞生了,但是单一的语言对两种语言都可能是很好的。这开辟了巨大的生态环境。你们中的许多人都看到了我的旧翻盖图,具有操纵性和鞭打性的两个维度。

如今,Perl已成为满足Shell脚本和文本解析需求的标准替代品/替代品,并且具有比传统工具强大的功能。因为它是极端的(有些人会说不雅)的灵活性,Perl已经被形容为“ 脚本语言的瑞士军刀 ”。当使用Perl解决时,任务通常可以明显更短,更容易或更可扩展。许多系统工具,脚本和较大的程序通常都是用Perl编写的。因此,在现代Linux环境中,Perl现在是另一个标准的Unix工具,并且确实不可或缺。


4
  1. Perl是为Unix开发的,因为这些工具不够强大。对于体育,你可以看看awk,并sed在它(的Perl)。
  2. Perl(除其他外)受到Unix shell(以及C,这对Unix非常重要-或反之亦然)的启发。
  3. 此外,Perl可以在一个GNU许可证分发。从技术的角度来看,有些人会认为这无关紧要,但这表明了两者的混杂。
  4. 我能想到的最后一件事是LAMP,它是一个网络“软件捆绑包”。(在Wikipedia上检查一下:P是或至少是Perl; L是Linux。)(但最后一点是“鸡还是蛋”。)

4
如今,LAMP中的P通常是PHP或Python。我认为Perl还是该缩写的传统用法。
darvids0n 2012年

Notepad ++是根据GNU许可证(特别是GNU GPL)发行的。AFAIK在Notepad ++和各种Linux发行版之间几乎没有“混杂”。仅提及您的第3点的一个反例。
CVn 2012年

@MichaelKjörling:您是否同意某些许可会阻碍您的应用程序(或本例中的编程语言)在Linux世界中的传播,而其他人则不会设置此类障碍?如果您真的认为那是我所说的,那并不意味着您可以许可自己进入发行版。(我认为不是。)
Emanuel Berg 2012年

@darvidsOn:是的,这就是我说的(?)。(我想那些大的脚本语言都以P开头是一个巧合。)
Emanuel Berg

@EmanuelBerg您提到Perl与Linux之间的“混合”是基于Perl拥有GNU许可证。FreeBSD端口和许多具有其他许可证的Linux发行版中都有大量软件,并且有许多软件未在任何一种均已获得各种GNU许可证(GPL,LGPL,FDL等)的许可下运行。
CVn 2012年

1

我认为这个问题的答案部分是历史性的,部分是实际的。

至于历史,Perl是一种经典语言。尽管我不知道什么是“更好的”(如果可以通过某种方式对其进行正式分析,我对此表示怀疑),但它比Python(更不用说PHP)更优雅。使用(或使用过)Perl的优雅人士通常会决定Linux发行版中应包含的内容。

至于什么是可行的,Perl的仍然有很多东西的胶水:操作系统和网络一样(再次,LAMP,不要忘记Python或PHP)。那么,为什么不包括任何对很多目的有用的东西呢?更是这样,为什么删除任何有(并且不会造成任何伤害),并且是有用的?

但是,碰巧的是,最新一期的《 Linux杂志》(2013年6月,第151号)中对此进行了说明。显然,为了编译Linux内核,使用了两个简短的Perl脚本。(同样,Perl在OS中的“胶水”角色。)现在,一位内核开发人员一直在提交重新编写这些脚本的补丁,这次不是在Perl中,而是作为“ Unix shell脚本”(是sh?)。这样,任何编译内核的人都不必安装Perl。但是,该补丁(已提交几次)尚未被获取。造成这种情况的原因之一是,一旦冷落,Perl就不太可能被接受。人们喜欢Perl,他们不想与Perl分离。

现在,这仅触及了这个问题的边缘,因为可能只有极少数的Linux用户可以编译内核。但这是另一个难题(我怀疑还有很多)。


1
伊曼纽尔(Emanuel)不是对您发表评论,但是对于不想退出perl的人们来说,如果需要/想要安装perl,会有多困难?
MattBianco 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.