以文本方式查看主题 - 曙海教育集团论坛 (http://peixun0.cn/bbs/index.asp) -- Linux应用开发 (http://peixun0.cn/bbs/list.asp?boardid=32) ---- 在 Power 上使用 Linux 开放源代码工具 (http://peixun0.cn/bbs/dispbbs.asp?boardid=32&id=1678) |
||||||||||||||||
-- 作者:wangxinxin -- 发布时间:2010-11-23 13:14:44 -- 在 Power 上使用 Linux 开放源代码工具 本文主要介绍用于 POWER 微处理器体系结构上的 Linux 的开放源代码工具,不过其中讨论的问题对开放源代码软件在 Linux 中的使用都是共同的。本文中提及的所有项目都对(但不限于)POWER 上的 Linux 可用。 什么是开放源代码? 开放源代码软件是现代计算环境的宝贵资源。本质上,开放源代码软件使得源代码对使用软件的任何人可用,即不对最终用户隐藏任何内容。开放源代码软件不一定是免费的,虽然大多数都是免费的。许可证协议决定了软件的使用方式;最流行的许可证是 GNU 公共许可证(GNU Public License,GPL)。 开放源代码软件是由许多不同的发起者所开发的,包括选择与其他人共享其工作成果的技术爱好者所开发的项目。商业性的公司,比如 IBM,也在为开放源代码出力,以便在社区中提供优秀的技术,同时确保他们的专有硬件和软件得到开放工具的支持。能够编程、编写文档或执行其他一些软件开发相关任务的任何人,都能够帮助创建开放源代码软件 —— 并且他们正是这样做的! 为什么要使用开放源代码工具? 许多人选择开放源代码工具是因为它们便宜(开放源代码软件经常是免费的,这当然非常便宜)。开放源代码软件还倾向于非常可靠。由于有技术兴趣的任何人都能够查看源代码,因而可能会有数千个质量控制机构在评估代码。程序员能够无隔阂地直接接触用户,因此问题和 bug 通常是大家都知道的,从而迅速得到纠正。此外,由于没有对用户隐藏任何东西,这样有利于更好的技术脱颖而出。 对于担心安全问题的用户,开放源代码软件能够给他们带来心灵的平静。如果怀疑应用程序隐藏有“后门(back door)”,您可以获得源代码,自己检查它,或让您信任的人检查它。然后您可以自己编译该代码,确保它和您预期的完全一样。当发现与安全相关的缺陷时,社区会立即采取行动,并且通常会在几小时内提供建议使用的补丁。正式的项目解决办法可能要花稍长一点的时间,但是通常不会超出几小时或几天。开放源代码软件使您能够在必要时对您的资源采取动作。 开放源代码软件还有助于确保技术不会被忽略。由于开发过程对感兴趣的任何人都是开放的,您通常会找到人们为不常见的硬件开发的驱动程序。此外,您还能找到由那些利用不常见协议的小社区为此类协议提供的支持。Linux 之所以在广泛的 IBM 硬件上可用,正是由于采用了这种开放方法。这有助于保持您的硬件的生命力,同时帮助保护您避免失去对某种关键技术的软件支持。如果某个项目不再提供官方支持了,您总是能够选择自己提供该支持! 获得开放源代码工具 获得开放源代码软件是很容易的;Linux 内核本身就是开关放源代码的。当您安装 Linux 时,就开始使用开放源代码了。除了内核外,Linux 发行套件中还包含其他许多开放源代码包,其中包括开发工具、库和应用程序。对于所有这些包,它们的源代码都是可用的,您可以编译任何包以优化或为特定用途而自定义它。 除了发行套件中包含的包外,Internet 上还有其他开放源代码软件可供使用。有些是专用的项目或正处于首次开发中的新技术,而其他则是与 Linux 发行套件中包含的包相竞争的方法。这是一个思想的自由市场。成功的开放源代码软件通常最终会作为辅助包或公共包被接纳到发行套件中。有些项目甚至被接纳为 Linux 内核的一部分,此时这个单独的项目将解散,而它的开发将作为标准内核维护的一部分继续进行。 SourceForge SourceForge.net(请参阅 参考资料)是一个很受欢迎的针对开放源代码项目的知识库。它通过易于使用的 Web 界面来组织项目,该界面具有搜索功能以帮助您查找项目。每个 SourceForge 项目都有版本历史记录、bug 列表、讨论组、文档,当然还包括源代码。如果拥有自己的开放源代码项目,您也可以利用 SourceForge。 RPM 与源代码 无论何时只要可能,预编译的二进制 RPM 都是在 Linux POWER 环境中使用开放源代码软件的最简单方式。软件的所有部分都以二进制的形式准备好了,只需直接安装即可。安装通常只需几秒钟就能完成,软件马上就可供使用了。 由于 RPM 的工作方式,系统将自动接受依赖关系和兼容性检查,在软件开始安装之前,您会接到关于缺少某个组件的通知。此外,升级、管理和删除 RPM 包也很简单。无论何时只要可能,采用 RPM 都是可取的。 针对 RPM 的一个优秀知识库是 Rpmfind.net(请参阅 参考资料)。它具有一个来自许多发行套件的可搜索索引,以及大多数主要发行套件和升级的镜像。为 PPC 列出的任何包都应该与 POWER 系统兼容。您既可以搜索包的名称,也可以搜索某个包中包含的单独文件。得到的搜索结果将跨越广泛的 Linux 发行套件,包括非常罕见的发行套件。所列出的每个包通常还指向对应项目的主页,因此如果在查找某个项目资源时遇到问题, 使用源代码 由于 POWER 体系结构上的 Linux 还比较新,并非所有开放源代码项目拥有者都曾想到过它。因此可能还没有对那些包可用的 RPM 包。在这种情况下,您必须自己编译源代码。这对于诸如 Samba 这样成熟的项目来说通常不是一件难事,但是对于不太常见的项目来说,可能需要做更多的工作。应该对在生产系统上编译源代码保持谨慎,因为这样可能导致问题,或者失去对正在该系统上运行的商业软件的支持。 Linux 本质上在不同的体系结构上都是相同的;因此,许多项目的源代码无需多少经验就能成功地编译。源代码通常作为压缩的 tar 文件来提供。Gzip 是最常用的压缩方式,不过 bzip2 正在变得流行起来,因为它创建的压缩文件更小一些。 首先,您必须展开压缩包。让我们使用 Gimp 作为一个例子。Gimp 是一个照片编辑包,它处理各种各样的图像格式,并且包括昂贵的商业产品中具有的功能。 图 1. Gimp 实际应用
要下载 Gimp 源代码,请参阅本文后面 参考资料中指向 Gimp Web 站点的链接。要展开源代码,请使用 文件将解压缩到当前目录。标准的方法是将源代码包含在一个与产品名称相同的目录中。在此例中,文件包含在一个名为 gimp-1.2.4 的目录中。 切换到该目录就会看到源代码、一些文档、配置脚本,以及 README 文件。大多数源代码包都有一个名为 INSTALL 和一个名为 README 的文件。在编译软件之前应该阅读这些文件。通过阅读这些文件,您可以在产生问题之前识别它们,并且获得正确的编译和安装步骤,从而省去一些麻烦。我在编译源代码时遇到的大多数问题,都只是因为我没有遵循那些文件中的指示。 最常见的下一个步骤是运行 “GNU 的 Autoconf 是一个用于配置源代码和 Makefile 的工具。使用 Autoconf,程序员能够创建可移植和可配置的包,因为生成包的人能够指定各种配置选项。” 这个配置脚本在系统上运行一系列测试,以确定针对您的发行套件和体系结构编译包的最佳方式。然后它为您的系统创建一个自定义的 Makefile。如果在系统上执行编译时遇到问题,
它将在系统用上执行多个测试并成功地结束。要生成程序,请使用如下命令:
如果编译出错,您需要确定问题并修复它们。这些问题也许比较棘手,可能需要关于您的环境和总体编程的大量知识。如果一切顺利,下一步通常是使用如下命令来安装软件:
这个命令将把文件复制到系统中的适当位置,更新文件权限,复制配置文件,并把文档添加到手册页。 这种方案存在许多可能的变化形式。这其中包括对 如果程序在安装后无法工作,大多数 Makefile 都包含一个 uninstall 参数来删除该程序。
务必记住,使用原始源代码不会向 RPM 数据库输入任何内容。以这种方式安装的软件是非托管的(unmanaged),因此应该小心进行。 创建自定义 RPM 如果打算使用大量纯源代码,您应该了解更多关于创建自己的 RPM 的信息。创建 RPM 并不是特别困难,虽然这个主题超出了本文的讨论范围。从您自己的代码创建 RPM 要比从陌生人编写的代码创建 RPM 容易得多。要创建良好的 RPM 包,您需要足够了解某个软件部分中的所有组件。本质上,这个过程就是创建一个名为 SPEC 的配置文件,它识别 RPM 数据库所必需的所有信息。关于依赖关系的信息、生成该文件的步骤,以及安装后的操作连同该包中所有文件的列表,都包括在这个 SPEC 文件中。RPM 使用这个 SPEC 文件来编译代码和创建二进制包。请查看您的源包,以确定是否已经创建了一个示例 SPEC 文件。包括 SPEC 文件已经成了一个普遍习惯,这样还可能允许您只需做很少工作或不需要做工作就能创建一个自定义的 RPM。 源 RPM 在创建 RPM 时,存在一个叫做源 RPM(Source RPM,SRPM)的工件(artifact)。这是一个与源代码组合后的 SPEC 文件,设计用于构建一个或多个体系结构。这对两个世界来说都是最好的!使用源 RPM,您能够在系统上自定义编译软件,但是完成后的产品将是可安装的 RPM 而不只是原始的二进制。作为预编译 RPM 可用的大多数包也作为 SRPM 可用。这可能是在 Linux 中跨平台移动软件的一种简单方式。当您在一个不同的平台上成功地重新编译时,可考虑与社区共享完成后的 RPM。
|