当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 探讨 ebuild 系统Daniel Robbins总裁兼 CEO, Gentoo Technologies, Inc.2000 年 5 月 Daniel Robbins 在其最后一篇 Bash实例文章中详细讲述了 Gentoo Linux ebuild 系统,这个展示 bash能力的极佳范例。
 

 

 ·创建能够超时的socket连结api    »显示摘要«
    摘要:在socket编程中调用connect函数连接一远程机器,如果该ip不存在的话,connect将在一段时间内返回-1表示失败。问题是有时候我们需要准确控制connect函数连接的时间,这就需要我们能够控制这个connect函数。但是,gcc给我们提供的api没有这个功能。我自己设计了一个这样的api函数--connect2,它能够在用户设置的一段时间后,连接超时退出。 这个connect2的初步设......
 ·修改grub的显示标题    »显示摘要«
    摘要:如果由grub来引导多个系统,我们可以改变grub的配置文件,使引导的显示单词改成自己喜欢的语句.su到root, 更改/boot/grub/grub.conf文件,将文件中title后面的单词换成你喜欢的就可以了.我的如下:title red hat linux (2.4.20-8),good day, happy workingroot (hd0,5)kernel /boot/vmlinuz-......


Bash 实例,第 3 部分
探讨 ebuild 系统

daniel robbins 【程序编程相关:dhcp server

【推荐阅读:让Debian不长一点赘肉

总裁兼 ceo, gentoo technologies, inc. 【扩展信息:oracle入门知识

2000 年 5 月

daniel robbins 在其最后一篇 bash实例文章中详细讲述了 gentoo linux ebuild 系统,这个展示 bash能力的极佳范例.循序渐进地,他为您展示如何实现 ebuild系统,并触及很多方便的 bash技术与设计策略.在本文末尾,您将很好地掌握制造完全基于 bash的应用所涉及的技术,并开始为自己的自动构建系统编码.

进入 ebuild 系统

我真是一直期待着这第三篇.也是最后一篇 bash 实例文章,因为既然已经在 第 1 篇与 第 2 篇 中讲述了 bash 编程基础,就可以集中讲述象 bash 应用开发与程序设计这样更高级的主题.在本文中,将通过我花了许多时间来编码与细化的项目,gentoo linux ebuild 系统,来给您大量实际的.现实世界的 bash 开发经验.

我是 gentoo linux(目前还是 beta 版的下一代 linux os)的首席设计师.我的主要责任之一就是确保所有二进制包(类似于 rpm)都正确创建并一起使用.正如您可能知道的,标准 linux 系统不是由一棵统一的源树组成(象 bsd),而实际上是由超过 25 个协同工作的核心包组成.这其中包括:

包 描述 linux实际内核util-linux与 linux 相关的杂项程序集合e2fsprogs与 ext2 文件系统相关的实用程序集合glibcgnu c 库

每个包都位于各自的 tar 压缩包中,并由不同的独立开发人员或开发小组维护.要创建一个发行版,必须对每个包分别进行下载.编译与打包处理.每次要修复.升级或改进包时,都必须重复编译与打包步骤(并且,包确实更新得很快).为了帮助消除创建与更新包所涉及的重复步骤,我创建了 ebuild 系统,该系统几乎全用 bash 编写.为了增加您的 bash 知识,我将循序渐进地为您演示如何实现该 ebuild 系统的解包与编译部分.在解释每一步时,还将讨论为什么要作出某些设计决定.在本文末尾,您不仅将极好地掌握大型 bash 编程项目,还实现了完整自动构建系统的很大一部分.

为什么选择 bash?

bash 是 gentoo linux ebuild 系统的基本组件.选择它做为 ebuild 的主要语言有几个原因.首先,其语法不复杂,并且为人们所熟悉,这特别适合于调用外部程序.自动构建系统是自动调用外部程序的“胶合代码”,而 bash 非常适合于这种类型的应用.第二,bash 对函数的支持允许 ebuild 系统使用模块化.易于理解的代码.第三,ebuild 系统利用了 bash 对环境变量的支持,允许包维护人员与开发人员在运行时对其进行方便的在线配置.

构建过程回顾

在讨论 ebuild 系统之前,让我们回顾一下编译与安装包都牵涉些什么.例如,让我们看一下 "sed" 包,这个作为所有 linux 版本一部分的标准 gnu 文本流编辑实用程序.首先,下载源代码 tar 压缩包 (sed-3.02.tar.gz)(请参阅 参考资料 ).我们将把这个档案存储在 /usr/src/distfiles 中,将使用环境变量 "$distdir" 来引用该目录."$distdir" 是所有原始源代码 tar 压缩包所在的目录,它是一个大型源代码库.

下一步是创建名为 "work" 的临时目录,该目录存放已经解压的源代码.以后将使用 "$workdir" 环境变量引用该目录.
...   下一页

 ·用户帐号管理    »显示摘要«
    摘要:1、用户帐号数据文件—— /etc/passwd 和 /etc/shadow)^(/7i1b:在进行用户帐号管理前,必须具备与 root 同一等级的权限帐号(也就是与 root 属于同一组的所有成员)。root 是 linux 中权限最高的帐号,它可以在系统中执行任何的设置。因此,除非必要,应该尽量避免使用 root 帐号登陆系统,最好的方式是以一般的用户帐号登陆,然后再用 su - 命令来变更管......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE