我对 Linux 系统还不太熟悉。我可以选择安装软件 (图像魔术师) 使用其 .rpm 或从 .tar.gz 编译源代码(我已经做了)。
我(你会)应该选择哪一个?
如果我选择 rpm,我应该使用
rpm -Uvh <filename>
还是使用yum
来安装 rpm?如果我选择安装二进制文件,通常的安装方式是什么(供 Apache/httpd 使用)?我想我应该将文件下载
.tar.gz
到/usr/local/src
,使用 解压tar zxvf <filename>
,然后./configure
,make
,make install
。通常,如果我这样做,二进制文件是否会自动转到类似位置/usr/bin
(对于 ImageMagick 确实如此)并为所有用户设置环境路径?
答案1
我(你会)应该选择哪一个?
使用 RPM 并坚持使用 RPM。RPM 比源代码更易于使用,更容易更新和安装安全更新,并且从长远来看将节省您的时间。我可以在大约 5 分钟内更新 CentOS 机器上的所有软件。如果从源代码编译,则需要数小时甚至数天才能完成相同的操作。
此外,由于您是 Linux 系统的新手,您会希望您的系统与社区其他成员使用的系统保持一致,以便文档和论坛帖子中的示例与您本地系统上可用的内容相匹配。文档通常假设您通过 RPM 安装软件。如果您有一个由 RPM 构建的混合系统,但又从源代码安装了十几个程序,调试将更加困难,需要更多的知识和技能。
从源代码编译更复杂,需要您在编译过程中解决依赖关系问题。在编译软件之前,您需要在系统上安装依赖项,例如头文件、编译器,这些通常通过 RPM 安装。
但是,请注意,RHEL 和 CentOS 通常坚持使用产品的一个主要版本(例如,CentOS5 为 PHP 5.3 提供 RPM,但永远不会为 5.4 提供 RPM)。RedHat 将安全修复和一些功能更改“反向移植”到当前版本中。
如果您想要 CentOS 中没有的特定版本的软件,或者想要自己定制源代码,请从源代码安装。对于初学者,请尽量避免这种情况。
对于 ImageMagick,请安装 CentOS 提供的 RPM。如果它不能满足您的需求,请研究您需要哪个版本,然后从源代码安装。
rpm -Uvh 或者使用 yum
使用 yum,它是 RPM(RPM 库)的包装器,可为您完成大部分工作。同样,这会节省您的时间。
RPM 用于从本地文件安装 RPM,这意味着您需要找到 RPM 并下载它及其所有依赖项。Yum 将执行依赖项检查,并为您下载和安装 RPM。
二进制文件是否会自动转到 /usr/bin
我更喜欢 sourcecode 将二进制文件放入/usr/local/bin
而不是/usr/bin
。/usr/bin
是针对供应商提供的软件,/usr/local/bin
应该保留给本地编译的软件包。 如果 sourcecode 将二进制文件安装到/usr/bin
,则意味着下次运行 时这些二进制文件可能会被意外替换yum update --yes
。
另请参阅https://unix.stackexchange.com/questions/8656/usr-bin-vs-usr-local-bin-on-linux
还有其他 Unix 变体会从源代码编译所有软件,但这些系统往往有好的方法和好工具来保持所有这些源文件井然有序。FreeBSD 是一种流行的操作系统,管理员倾向于从称为“Ports”的源包编译软件,这是了解操作系统和源代码的好方法。
答案2
我尽量坚持使用发行版软件包。这往往是一种更一致的软件管理方法。如果您发现没有 RPM 软件包的项目,您可以从源 tarball 构建自己的 RPM。
如果您选择 RPM,则使用 yum 可以从软件存储库中提取软件并通过 RPM 安装。RPM 是实际的包管理器框架。