我有点困惑,因为安装应用程序有两种方式。一种是从源代码配置和制作,另一种是从包管理器安装。如果一个人是 UNIX/Linux 管理员,使用包管理器是否公平,是否值得信赖?我遇到过一些地方,似乎表明当今的管理员真的不知道自己在做什么,因为他们不会从头开始做事,而是更喜欢包管理。
因此,作为一名有抱负的 UNIX 管理员,我知道我应该了解这两种方法,而且我也确实了解,但应该先选择哪一种呢?例如,在工作面试中,如果被要求设置 Apache,应该选择源代码还是包管理器?
答案1
我总是首先使用包管理器。但是,我从源代码编译的情况如下:
- 该包裹已经严重过时了。这种现象比实际更为常见。
- 我想安装到与包默认位置不同的位置。 我经常在我的 Amazon EC2 实例上执行此操作,以便我可以安装到我的 EBS 设备而不是临时的本地存储。
- 该应用程序需要使用不同的选项或源补丁进行编译。 PHP 是这里最常见的罪魁祸首。
- 该应用程序是您想要安装的其他程序的依赖项,并且您的包管理器没有匹配的标头/开发包。虽然这种情况并不常见,但确实时有发生。
答案2
作为系统管理员,您应该知道如何处理源代码吗?当然。在生产环境中,建议使用源代码包。我认为只有在发行版不支持您的要求的情况下才可以。
源代码的问题在于,您随后有责任确保将任何安全补丁应用于应用程序及其依赖的任何库的代码。或者您必须不断升级版本以保持最新的安全代码,而这在大多数情况下对生产服务器来说不是一个好选择。而发行版会将安全补丁移植回他们多年来支持的版本。因此,只需告诉您的包管理器更新系统即可使其保持最新的安全补丁。从长远来看,这更容易管理。
作为系统管理员,您还必须考虑谁会接替您。继承一个包含各种源包的系统并不是一件有趣的事情,而且从长远来看会给公司带来更多损失。
答案3
我遇到过一些地方,似乎表明今天的管理员真的不知道他们在做什么,因为他们不会从头开始做事,而是更喜欢包管理。
我认为这种说法并不准确。当然,系统管理员必须知道如何从源代码进行编译,很少有人至少做过一次。
然而,就像生活中的一切一样,决定使用哪种方法取决于个人的需求:
1) 如果官方发行版的软件包版本满足了您对功能的需求,那么答案就很明显了:使用软件包系统。软件包系统提供的便利是无可厚非的。它会自动安装所有依赖项,您的工作仅限于配置文件。大多数著名的发行版(Redhat、Centos、debian)都会不断更新官方软件包,因为它们会反向移植所有安全补丁,而且您不必担心安全更新,因为它们可以自动更新。这在生产服务器中非常有用,因为您可以将时间花在系统管理、审计等方面,而不是不断检查软件包是否有新的更新。
2) 如果您的项目需要最新的功能,而这些功能只有最新版本(您需要的应用程序)才能提供,那么您必须从源代码编译所有内容。这很耗时,而且您必须不断监视新版本是否出现安全漏洞。然后您必须重新编译所有内容。缺点很明显。但是,如果您必须管理多台服务器,问题会更大。在这种情况下,最简单的方法是构建您自己的存储库,根据最新版本的源代码构建您自己的包,然后再次使用每台服务器上的包管理器使用您的存储库更新包。
答案4
今天的管理员真的不知道他们在做什么,因为他们不会从头开始做事,而是更喜欢包管理。
我不认为管理员不知道他们在做什么因为他们不选择使用包管理器。使用包管理器有很多好的理由。我认为他们不知道他们在做什么当他们不愿意去理解他们的包管理系统如何工作、如何构建自己的包或何时应该构建自己的包时。
您通常可以从 Redhat 和 Ubuntu 等发行版获得商业支持。如果您使用官方支持的软件包而不是您自己构建的软件包,您会发现获得支持要容易得多。
还有一些商业应用程序需要您使用官方支持的软件包才能真正使产品发挥作用。
如果一个人是 UNIX/Linux 管理员,使用包管理器是否公平,是否值得信赖
Redhat、Ubuntu、Debian 等官方主流发行版的软件包的优势在于,许多人都在使用它们,人多力量大。所有主流发行版都提供您自己重建软件包所需的源代码。但如果您不信任发行版构建的软件包,您怎么能相信您下载的源代码没有问题呢?您是否有能力对源代码进行代码审计?您是否能够检测到源代码中的后门或可利用的漏洞?在某个时候,您将不得不信任某人,因为您可能没有时间检查操作系统中的每一行代码。
在工作面试中,如果被要求设置 Apache,人们会去寻找源代码还是包管理器?
要回答这个问题,你需要花一些时间研究要求。在面试中经常问正确类型的问题会比简单的回答更令人印象深刻。你也可以只选择一种方法,告诉他们这种方法好的几个原因,以及这种方法不好的几个原因。
- 他们是否需要稳定的商业支持
- 他们是否需要一些尚未启用的不寻常功能
- 将来有望支持多台服务器
- 您的网络上运行 apache 的主机是否足够多,以便您可以自行监控上游安全源和安全列表。
我有点困惑,因为安装应用程序有两种方式。一种是从源代码进行配置和制作,另一种是从包管理器进行安装。
您跳过了第三个选项。构建您自己的软件包并维护软件包管理器引用的本地存储库。构建您自己的软件包是更好的选择,因为您构建的软件包将成为标准系统的一部分。熟悉软件包管理器的人会知道如何卸载它。他们将能够获得有关它的信息。