首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在linux中“自己编译”思想的来源是什么?

在linux中“自己编译”思想的来源是什么?
EN

Unix & Linux用户
提问于 2017-06-14 17:28:04
回答 3查看 3.9K关注 0票数 11

我在大学时使用过Linux,并且熟悉这些术语。我经常用.NET语言发展,所以我不是电脑文盲。

也就是说,我不能说我真的理解存在于*nix圈子中的“自己编译它”的西尼心态。我知道它会消失,但我还是会时不时地听到。作为一名开发人员,我知道设置编译器和必要的依赖关系是很痛苦的,所以我觉得CIY的工作流程帮助*nix变得更难访问了。

是什么社会或技术因素导致了CIY心态的上升?

EN

回答 3

Unix & Linux用户

回答已采纳

发布于 2017-06-14 17:41:57

很简单,在*nix的大部分历史中,没有其他选择。程序是作为源tarball分发的,使用它们的唯一方法是从源代码编译。所以,这与其说是一种心态,不如说是一种必要的邪恶。

尽管如此,我们有很好的理由自己编译一些东西,因为它们将被专门为您的硬件进行编译,您可以选择哪些选项启用或不启用,因此您可以得到一个精心调整的可执行文件,这正是您喜欢的方式。然而,这显然只是对专家用户来说有意义的事情,而不是那些只想让工作机器读取电子邮件的人。

现在,在Linux世界中,主要发行版在很多年前都已经从这个版本中移开了。现在,您很少需要自己编译任何东西,除非您正在使用一个专为像Gentoo这样做的人设计的发行版。然而,对于绝大多数发行版来说,您的普通用户都不需要编译任何东西,因为他们所需要的几乎所有东西都在他们的发行版的存储库中进行编译。

所以你所说的CIY心态已经基本消失了。在UNIX世界中,它可能仍然很活跃,我在那里没有经验,但是在Linux中,如果您使用的是一个流行的发行版,并且有一个很好的存储库,那么您几乎不需要自己编译任何东西。

票数 27
EN

Unix & Linux用户

发布于 2017-06-14 18:03:49

造成这种心态的原因有几个,来自最终用户、发行版维护人员和代码供应商/开发人员/项目组,其中每一个都是完全有效的。

开源方面

有些人喜欢使用免费软件,并选择从源代码编译来验证这一点。这就是像Linux从头开始的项目/howto/guide/book之类的东西出现的地方。

优化和选项方面

想要为您的特定CPU体系结构编译具有特定优化的内容吗?也许有一个编译时选项(或创建一个补丁)来启用或禁用您需要的特定特性。这方面的例子可能是修补postfix具有管理配额的能力,或者使用Gentoo这样的发行版,在Gentoo中,您可以选择不使用systemd,或者由于许可证问题或其他原因,您专门选择支持ogg/theora/vorbis/任何东西,而不是支持mp3。

CPU体系结构方面

你的工作场所是否使用高端的非x86/ end 64机器?您需要/想要的包可能无法用于CPU体系结构的预编译,更不用说您正在运行的发行版了。当然,大多数运行这种硬件的地方也都依赖于IBM等的支持,而不是随意地安装/编译东西。但是,如果你从剩余的销售中挑选一个,挖出一个旧的iMac w/PPC处理器等等呢?

分布方面

发行“家庭”( Debian / Ubuntu,Mint,et al和RedHat以及CentOS,Whitebox,Fedora,等等)都使用不同的包格式。每个版本都附带了不同的库版本,等等。即使是简单的单个文件shell脚本,设置一个适当的Debian .deb文件也需要时间和精力。如果你写了一些软件来止痒,并且想让它自由,然后把它发布到gitlab,你自己的own服务器上,不管怎么样,你是想发布一个通用的.tar.gz源文件,上面有关于构建的说明,或者你更愿意打包两个版本的Debian版本(稳定和测试,可能是老稳定的),多个版本的Redhat和Fedora作为RPM,一个用于Slackware的TGZ,一个用于Gentoo的ebuild配置文件等等等等。

票数 13
EN

Unix & Linux用户

发布于 2017-06-14 17:52:36

正如@terdon说的那样,现在编译东西的需要已经很小了,尤其是对于家庭用户来说。

过去,在Unix世界中,我高度依赖编译源代码,例如,我管理Solaris、AIX、Ultrix、Digital Ultrix和HP/UX系统,这些系统有时不再由供应商维护,或者公共服务的实现远远落后于其他Unix,包括Linux。

现在仍然确实需要编译一些东西,要么是为了获得一些不存在于存储库中的更晦涩或过时的软件,要么是使用一个您没有兼容二进制文件的包的最新版本,或者当您想要添加额外的功能或者很少的时候,如果您能够为它编写一个补丁或模块的话。

在对移植到Debian和/或Debian的新版本的系统进行重新设计时,我还必须手工编译软件,因为Debian的框架不再受操作系统支持。

例如,在过去,我必须手工编译DHCP守护进程,以便支持(当时) Windows对协议的更改,或者支持在电信世界中提供特定的修补程序。

我仍然保存在本地存储库中,用于我自己从dev git编译的FreeRadius版本,因为在Debian中有一串稳定的版本存在(严重的)bug,而且通常对应的Debian/Ubuntu的.debs还不足以满足我们的需要。

不用说,在一段时间内,我们还必须运行/或编译自己编写的东西。

现在安装依赖项并不像过去那么困难,有些软件甚至为一些常见的Linux发行版定制了规则文件,指定依赖项来编译,并使用内置的依赖项列表创建包文件。从本地存储库安装这样的包与从官方存储库安装相同的包没有多大区别。

票数 9
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/371150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档