我有点困惑,因为有两种方法来安装应用程序。 一个是从源代码configuration和制作,另一个来自包pipe理器。 如果有人是UNIX / Linuxpipe理员,那么使用软件包pipe理器是否公平?而且值得信赖吗? 我遇到了几个地方,似乎说今天的pipe理员真的不知道他们在做什么,因为他们不是从头做事,而是更喜欢包pipe理。
所以作为一个有抱负的UNIXpipe理员,我知道我应该知道这两个方面,而我应该首先select哪一个。 举例来说,如果要求设置Apache,那么在面试时,是否有人接触到源代码或包pipe理器?
我总是先去找包pipe理员。 但是,我从源代码编译的例子:
作为系统pipe理员,您应该知道如何处理源代码…当然。 在生产环境中,build议使用源码包。 我只会说,在发行版本不支持你的要求的某些情况下。
源代码的问题在于,您负责确保将任何安全补丁应用于应用程序及其依赖的任何库的代码。 或者,你必须不断地进行版本升级,以保持最新的安全代码,这对大多数时间生产服务器来说不是一个好的select。 虽然发行版会将端口安全补丁恢复到多年来支持的版本。 所以简单地告诉你的软件包pipe理器更新系统会使它保持最新的安全补丁。 从长远来看,这是更易于pipe理的。
作为一个系统pipe理员,你也必须考虑谁来到你身后。 inheritance一个含有源代码包混杂的系统并不是什么好玩的东西,从长远来看,这将会给公司带来更多的成本。
我遇到了几个地方,似乎说今天的pipe理员真的不知道他们在做什么,因为他们不是从头做事,而是更喜欢包pipe理。
我相信这个说法是不准确的。 当然,系统pipe理员必须知道如何从源代码编译,而且至less有一次这样做是非常罕见的。
然而,作为生活中的一切,决定使用哪种方法,是根据自己的要求:
1)如果官方发行版的软件包版本涵盖了您对function的需求,那么答案很清楚:使用软件包系统。 包装系统提供的缓解是没有任何借口的。 它会自动安装所有的依赖项,并且你的工作在configuration文件中是有限制的。 大多数着名的发行版(Redhat,Centos,debian)都会不断更新正式的软件包,因为它们可以将所有安全补丁恢复到原始状态,而且不必担心安全更新,因为它们可以自动更新。 这在生产服务器中非常有用,因为您将时间花在系统pipe理,审计等方面,而不是经常检查包是否有新更新。
2)如果你的项目需要最新的function,只有你需要的应用程序的最新版本提供,那么你必须从源代码编译所有的东西。 这是非常耗时的,你必须不断地监视一个新版本是否带有安全漏洞。 那么你必须重新编译一切。 缺点是明显的。 但是,如果您必须pipe理多个服务器,则问题会更大。 在这种情况下,最简单的方法是构build自己的存储库,根据最新版本的源代码构build自己的包,然后再次使用每个服务器上的包pipe理器来使用存储库更新包。
如果你打算使用任何一种自动configurationpipe理,比如puppet , chef , cfadmin等,那么你需要对你的* nix包的工作方式感到满意。 也知道好的第三方存储库在哪里,因为它们通常包含更新的软件包,如果您正在使用企业或LTS分配。
如果你需要从源代码编译东西,那么我build议使用一致的布局和命名scheme。 阅读autoconf工作原理并使用--prefix指令。
就我个人而言,我喜欢在/opt安装自定义编译的东西
/opt/nginx/nginx-0.6.44
然后我创build一个current符号链接
/opt/nginx/current
然后从包中的所有二进制文件符号链接到一个已知的位置
/opt/bin
例如
cd /opt/bin && find /opt/nginx/current/bin -type f -exec ln {} \;
将允许我将/opt/bin添加到我的$PATH并且在nginx版本之间切换与将新版本安装到/opt/nginx/nginx-$VERSION一样简单,并更新符号链接
今天的pipe理员真的不知道自己在做什么,因为他们不是从头做事,而是更喜欢包pipe理。
我不认为pipe理员不知道他们在做什么,因为他们不select使用包pipe理。 使用包pipe理器有很多很好的理由。 我觉得他们不知道自己在做什么 ,他们不去理解; 他们的软件包pipe理系统是如何工作的,如何构build他们自己的软件包,或者他们应该build立自己的软件包。
您通常可以从Redhat和Ubuntu等发行版获得商业支持。 如果您使用官方支持的软件包,而不是您自己构build的东西,则会发现获得支持要容易得多。
还有一些商业应用程序需要使用官方支持的软件包来实现产品function。
如果一个是UNIX / Linuxpipe理员,使用包pipe理器是否公平,是值得信赖的
来自Redhat,Ubuntu,Debian等官方主要发行版的软件包的优点是有很多人在使用它们,数量也很大。 所有主要的分销商都提供您自己重build软件包所需的资源。 但是,如果你不相信分销商build立一个软件包,你怎么能相信你下载的源代码没有错? 您是否具备对源代码进行代码审核的技能? 你能在源头上发现后门还是可以利用的漏洞? 在某个时候,你将不得不相信某人,因为你可能没有时间去检查进入操作系统的每一行代码。
如果要求设置Apache,那么在面试的时候,是否有一个人来源或包pipe理员?
要回答这个问题,您需要花一些时间来研究这些要求。 经常在你的面试中问正确的问题types会更令人印象深刻,然后简单的回答。 你也可以select一种方法,告诉他们为什么这种方法是好的一些原因,以及为什么这种方法不好的一些原因。
我有点困惑,因为有两种方法来安装应用程序。 一个是从源代码configuration和制作,另一个来自包pipe理器。
你跳过了第三个选项。 构build你自己的包,并维护一个包pipe理器引用的本地存储库。 build立你自己的软件包是可取的,因为你已经build立的将是标准系统的一部分。 有人熟悉包pipe理器将知道如何卸载它。 他们将能够获得有关它的信息。
如果你从一个有信誉的地方获得你的包裹,你可能没问题。 我对使用apt-get安装Apache没有任何特别的疑虑,但是我应该注意到,我们主要使用Linux来执行非关键function。