首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Windows 到 Linux 之旅 第 9 部分. 安装软件-2

Windows 到 Linux 之旅 第 9 部分. 安装软件-2

RPM 前端从控制台操作         rpm 很容易,但有时使用图形用户界面会更方便。在典型的 Linux 风格中,有一些前端程序为 rpm 程序提供界面。每种发行版本都有一个前端,但是它们各不相同。请参考您的发行版本文挡,以了解关于所提供的包管理工具的信息。      
Webmin 软件包Webmin 也为处理 RPM 包提供了一个基于 Web 的简单前端。
图 1. Webmin RPM 界面
软件可以从这个界面容易地安装、删除和查询。还可以直接从 URL 站点安装软件。如果安装了诸如         apt 或 Redhat Network之类的 rpm 增强工具,Webmin 将识别它们并为它们提供一个界面。      
源代码由于 Linux 是开放源代码的操作系统,它附带了编译软件所需的所有开发工具。虽然您使用的大多数包将以二进制 RPM 的形式提供,但是您并不仅限于使用那些包。如果愿意,您可以为您的系统下载原始源代码,并以自定义的方式进行编译。
应该对在生产系统上编译源代码保持谨慎,因为这样可能导致问题,或者不再支持系统上正在使用的商业软件(比如 IBM DB2)。然而,熟悉从源代码编译软件的过程将使您能够对软件应用补丁,以及使用从其他环境移植过来的包。一旦成功地编译代码,创建您自己的RPM 也是可以做到的!
Corewars 源代码演示为演示从源代码编译软件有多简单,我们将编译一个名为 Corewars 的模拟游戏(请参阅 )。下面是来自他们Web 站点的关于 Corewars 的说明:“Corewars 是一款模拟游戏,其中许多武士在虚拟的计算机中奔跑时竭力相互攻击对方。可以采用两种类似汇编程序的语言中的一种来编写武士程序,这两种语言分别叫做Corewars 和 Redcode。Corewars 是默认语言,更易于学习和理解。Redcode 提供更高级和更强大的指令,但是需要更多的时间来学习。”      
编译源代码的第一步是从 Web 站点下载源代码包:
在代码下载完成之后,需要展开这个包。
tar -xvzf corewars-0.9.13.tar.gz文件将展开到当前目录。标准的做法是将源代码包含在一个与产品名称匹配的目录中。在此例中,源代码位于一个名为 corewars-0.9.13的目录。
首先进入该目录,找到源代码和一些文档、配置脚本和 README 文件。大多数源代码包都带有一个名为 INSTALL 和一个名为 README的文件。您应该在编译软件之前首先阅读这些材料。它们在问题出现之前识别问题,并为您建议正确的编译和安装步骤,这样通常可以让您少走许多弯路。我在编译源代码时遇到的大多数问题都是因为我没有遵循那些指导。
通常执行的下一步是运行         configure 脚本。         configure 是 Autoconf 包的一部分,包括在 Linux 发行版本的开发工具中。这里引用一段Autoconf 的包描述:“GNU 的 Autoconf 是一个用于配置源代码和 Makefile 的工具。通过使用 Autoconf,程序员能够创建可移植和可配置的包,因为建立包的人可以指定各种配置选项。”      
configure 脚本在系统上运行一系列测试,以确定为您的发行版本和系统体系结构编译包的最佳方式。然后它为您的系统创建一个定制的Makefile。如果在您的系统上编译时遇到问题,         configure 将会告诉您。         configure 通常允许您自定义将要在编译中包括的特性,或允许您提供关于库或者其他必需文件的位置参数,以便能够成功地编译包。下面我们将不带参数执行         configure :      
./configure在系统上多执行几次测试,最终就会编译成功。下面使用如下命令来生成程序:
make如果编译有错误,就需要确定问题并修复它们。这可能是一件繁琐的任务,也许需要关于环境和程序设计的大量一般知识。如果一切顺利,我们一般会使用以下命令来安装软件:
make install文件将被复制到系统中的正确位置,文件权限会被更新,配置文件将被复制,文档也会被添加到手册页。
现在通过执行该程序来测试我们的劳动成果。它是一个图形化的程序,因此要在启动它前运行 X 系统。上面执行的         make install 命令应该已将程序放到了可执行文件路径中。      
corewars作为对我们的奖赏,一个图形化的屏幕应该会出现。
图 2. 大功告成!
corewars 规则的主题超出了本文的讨论范围,不过您会在手册页(         man corewars )中找到关于这款有趣的模拟游戏的文档。      
corewars 的编译是一个典型的场景。可能会有其他许多种变化形式,包括在         configure 脚本上使用开关来调整要编译到程序中的特性,以及从Makefile 使用不同的命令来调整编译方式,等等。      
由于这个程序不是使用 rpm 来安装的,因此 rpm 数据库中没有相应的条目。如果某个程序在安装后没有按预期运行,大多数 Makefile都包括了一个卸载参数来删除软件:
make uninstall务必牢记,使用原始源代码不会在 RPM 数据库中添加任何内容。以这种方式安装的软件是非托管的(unmanaged),因此应该小心进行。
源代码 RPM当 RPM 被创建时,还有一个称作源代码 RPM 的产物。这是一个与源代码组合在一起的 SPEC 文件,设计它的目的是为了在一个或多个体系结构上生成程序。这对源代码和二进制这两个世界来说是最佳的!对于源代码RPM,您可以在系统上定制编译软件,但是完成的产品将是一个可安装的 RPM,而不是原始的二进制。以预编译 RPM 的形式可用的大多数包还以SRPM 的形式可用。这也许是在 Linux 中软件跨平台转移的简单途径。当您在一个不同的平台上成功地重新编译时,可考虑与整个开发社区共享完成的RPM。
也许源代码更适合您如果您是 Linux 新手,安装软件的方法与您过去习惯使用的方法不同。然而,RPM 安装方法是优雅的,同时提供了您很快就会欣赏的新能力。
您应该熟悉从控制台使用 rpm 的选项,不过对于日常使用,有一些前端界面选项使得 rpm 更易于管理。您的发行版本提供了这样一个界面,也有其他类似的界面可供使用,比如Webmin 中的那一个界面。
您并不仅限于使用预编译的 rpm,还可以利用 Linux 的开放源代码性质,直接从源代码编译应用程序。对于成熟的项目,编译通常是很容易的。记住,从源代码安装的代码在rpm 数据库中没有相应的条目。在使用源代码时,可考虑使用源代码 rpm,它组合了已编译源代码的强大能力和 rpm 的可管理性。
返回列表