LPI
101第二部分第三节:构建和安装程序
构建和安装程序
本节讨论初级管理(LPIC-1)考试
101 的主题 1.102.3 的内容。这个主题的权值是 5。
在本节中,您将学习如何从源代码构建和安装可执行程序。您将学习如何解压典型的源代码束并定制 Makefile。
为什么可能需要从源代码安装程序?常见的原因包括:
1. 需要不属于您的发行版的程序。
2. 需要只有源代码可用的程序。
3. 需要程序的某些特性,但是只有从源代码重新构建程序才能获得这些特性。
4. 希望更多地了解程序的工作方式,或者希望参与它的开发。
这些都是考虑从源代码安装程序的好理由。
下载并解压
无论为什么要从源代码进行构建,都需要先获得源代码,然后才能进行构建。可以在用于容纳项目的网站上寻找源代码包,比如 Open Source Technology Group 的 SourceForge.net(请参阅 参考资料)或者某个包专用的网站。
在本节中,我们看看作为 tarball 发行的包。使用 tar(表示 Tape ARchive)命令从目录树中的文件创建和操作存档。尽管名字中有磁带(tape)这个词,但是这种文件可以存储在任何介质上。实际上,将它们存储在硬盘上将允许一些在磁带上不允许的操作,比如删除存档的一部分。tar 命令本身并不对数据进行压缩,它只是以一种形式存储数据,在这种形式中,原来的文件、权限和目录结构都可以保留。tar 命令可以与压缩程序(一般是 gzip 或 bzip2)结合使用来创建压缩的存档,这可以节省存储空间和传输时间。这种压缩的存档是 tarball。
除了简单的 tarball,程序的源代码还可能被打包成源代码包,比如源代码 RPM(即 SRPM)。我们将在本教程后面讨论包管理。目前,只要记住要检查发行版中是否有源代码包,因为发行版中常常有更容易的构建程序的方法,而且可能已经针对这个发行版进行了调整。
在
下载之前,要尽量多了解这个包。如果有安装或构建文档,就要查看它,了解构建这个包是否需要其他包。常常还需要安装几个库和开发工具,然后才能成功地构建
选择的程序。如果程序使用任何图形工具集,那么尤其可能出现这种情况。有时候,您开始构建过程,然后发现需要某个包。不必担心,这很常见。只需找到并安装
缺失的包,然后再试试,直到拥有所需的所有包。
常常使用浏览器或 ftp 程序进行下载。包名的结尾可能是 tar、tar.gz、tar.Z、tgz 或 tar.bz2 之一。有时候使用 CVS(Concurrent Version System)下载包。一个例子是来自 Free Software
Foundation 的 GNU GRUB 2(请参阅 参考资料)。在这种情况下,下载的源代码是已经解压的。偶尔可能看到 .zip 扩展名,这表示 zip 文件。
压缩的 tar 文件
对于没有使用包管理(比如 Red Hat 的
RPM 或 Debian 的包管理)的源代码,压缩的 tar 文件(即 tarball)是最常见的源代码发行形式。这种文件是使用 tar 命令创建的,这将一个目录树以及其中的所有文件存档在一个文件里。常常用某种压缩程序对它们进行压缩,常用的压缩程序是 compress、gzip 或 bzip2。因为存档和压缩是非常常见的操作,所以大多数
Linux 系统上的 GNU tar 命令也可以利用 compress、gzip 或 bzip2 来进行压缩和解压。如果您的 tar 版本不处理某种压缩类型,那么 UNIX 和 Linux 系统的管道功能可以解决这个问题,这种功能允许几个命令对输入的源代码依次进行操作,所以可以用两阶段的过程对 tar 产生的输出进行手工压缩。
为了进行讲解,假设我们下载 Dr. Geo 交互式几何项目(请参阅 参考资料)。在编写本教程时,我们下载了 drgeo-1.1.0.tar.gz。扩展名 gz 表示这个文件是用
gzip 压缩的。我们先讲解如何从压缩的文件提取出 tar 文件,然后讲解如何从 tar 存档中提取出文件。然后讲解用一个命令或管道来进行解压和提取。
为了只提取 tar 存档,可使用 gunzipg 命令,如清单
13 所示。
gJyLinux联盟
清单 13. 解压 Dr Geo 源代码包
|
[ian@localhost ~]$ ls drgeo*
drgeo-1.1.0.tar.gz
[ian@localhost ~]$ gunzip
drgeo-1.1.0.tar.gz
[ian@localhost ~]$ ls drgeo*
drgeo-1.1.0.tar
|
注意,.tar.gz 文件现在已经被一个一般的
.tar 文件替代了。对于前面提到的其他扩展名,使用以下命令提取压缩的 tar 文件。
uncompress
drgeo-1.1.0.tar.Z gJyLinux联盟
gunzip drgeo-1.1.0.tar.Z gJyLinux联盟
gunzip drgeo-1.1.0.tar.gz gJyLinux联盟
gunzip drgeo-1.1.0.tgz gJyLinux联盟
bunzip2 drgeo-1.1.0.tar.bz2
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论