然后,解压缩 tar 压缩包,创建一个包含所有源代码.名为 sed-3.02 的目录.以后将使用环境变量 "$srcdir" 引用 sed-3.02 目录.要编译程序,输入:
$ cd sed-3.02 $ ./configure --prefix=/usr (autoconf 生成适当的 make 文件,这要花一些时间) $ make (从源代码编译包,也要花一点时间)因为在本文中只讲述解包与编译步骤,所以将略过 "make install" 步骤.如果要编写 bash 脚本来执行所有这些步骤,则代码可能类似于:
要执行解包/编译过程的样本 bash 脚本 #!/usr/bin/env bash if [ -d work ] then # remove old work directory if it exists rm -rf work fi mkdir work cd work tar xzf /usr/src/distfiles/sed-3.02.tar.gz cd sed-3.02 ./configure --prefix=/usr make使代码通用
虽然可以使用这个自动编译脚本,但它不是很灵活.基本上,bash 脚本只包含在命令行输入的所有命令列表.虽然可以使用这种解决方案,但是,最好做一个只通过更改几行就可以快速解包与编译任何包的适用脚本.这样,包维护人员将新包添加到发行版所需的工作就大为减少.让我们先尝试一下使用许多不同的环境变量来完成,使构建脚本更加适用:新的.更通用的脚本 #!/usr/bin/env bash # p is the package name p=sed-3.02 # a is the archive name a=$.tar.gz export origdir=`pwd` export workdir=$/work export srcdir=$/$ if [ -z "$distdir" ] then # set distdir to /usr/src/distfiles if not already set distdir=/usr/src/distfiles fi export distdir if [ -d $ ] then # remove old work directory if it exists rm -rf $ fi mkdir $ cd $ tar xzf $/$ cd $ ./configure --prefix=/usr make已经向代码中添加了很多环境变量,但是,它基本上还是执行同一功能.但是,如果现在要要编译任何标准的 gnu 基于 autoconf 的源代码 tar 压缩包,只需简单地将该文件复制到一个新文件(用合适的名称来反映它所编译的新包名),然后将 "$a" 与 "$p" 的值更改成新值即可.所有其它环境变量都自动调整成正确设置,并且脚本按预想工作.虽然这很方便,但是代码还有改进余地.这段代码比我们开始创建的 "transcript" 脚本要长很多.... 下一页