使用 TWW 的 CPAM/开发者指南
外观
使用此 HPMS 工具的打包程序可以通过将知识数字化为 XML 文件,以编程方式、可重复使用的方式捕获他们所有与包相关的知识。
TWW 公司拥有三种工具来自动执行包管理流程,即软件构建、打包以及包安装和删除。
- 软件构建
- sbutils
[root] ls -l /opt/TWWfsw/sbutils12/bin/ total 164 -rwxr-xr-x 1 root root 38551 Dec 1 15:17 gen-sb-db -rwxr-xr-x 1 root root 44418 Dec 1 15:17 sb [root]
- 包构建
- pbutils
[root] ls -l /opt/TWWfsw/pbutils11/bin/ total 186 -rwxr-xr-x 1 root root 29975 Apr 30 2004 gen-pb-db -rwxr-xr-x 1 root root 29169 Apr 30 2004 gen-pkg-db -rwxr-xr-x 1 root root 34023 Apr 30 2004 pb [root]
- 包管理
- pkgutils
[root] ls -l /opt/TWWfsw/pkgutils15/bin/ total 542 -rwxr-xr-x 1 root root 32434 Jan 25 2004 chk-pkg-updates -rwxr-xr-x 1 root root 18751 Jan 25 2004 pkg-config -rwxr-xr-x 1 root root 48281 Jan 25 2004 pkg-info -rwxr-xr-x 1 root root 70570 Jan 25 2004 pkg-inst -rwxr-xr-x 1 root other 68887 May 18 2003 pkg-inst~ -rwxr-xr-x 1 root root 35692 Jan 25 2004 pkg-rm [root]
在本教程中,我们将使用传统的 hello world 示例来说明软件包创建流程的数字化。也就是说,您从 stepwise 阅读了关于 TN2137 的新闻更新,该更新介绍了如何配置来自 GNU 的 hello-world 示例以成为一个包含 ppc 和 i386 二进制代码的 fatbinary 可执行文件。
通过将流程自动化到 hello-2.1.1/sb-db.xml 中,我们可以在 tn3127 文档中进一步提高数字化程度。一旦流程被数字化,我们就可以重复实现 tn3127 中目标的准确结果。
上图是创建 TWW 包并上传到应用程序仓库服务器的过程。
- 安装 TWW 开发工具。
- 从 newtww.sh 脚本创建包模板。
- 通过 "sb small-1.0.sb" 构建软件,它将经历以下步骤。
- sb -u hello-2.1.1.sb : 解压缩源代码。
- sb -C hello-2.1.1.sb : 配置源代码树以生成 fat binary。
- sb -B hello-2.1.1.sb : 调用 make 命令来构建源代码。
- sb -i hello-2.1.1.sb : 将二进制文件安装到安装目录。
- sb -t hello-2.1.1.sb : 在安装目录上测试安装的二进制文件
- pb -1 hello-2.1.1.pb 将将安装目录中的二进制文件打包成本地 PMS 格式。
- 然后,我们将本地 PMS(在本例中为 Solaris pkgadd)转换为一个 zip 文件。
- 生成一个 MD5 校验和文件,以便能够验证文件的完整性。
- 将 small-1.0.pkgadd.pkg-inst、small-1.0.pkgadd.pkg-inst.md5sum 上传到包仓库服务器。
- 在包仓库服务器的 pkg-db.xml 中添加一个条目。
- 现在,包可以通过 Solaris 机器上简单的 "pkg-inst hello" 命令进行检索。
HPMS TWW PMS RPM PKGADD WiX SD-UX --------- ----------- ----------- ---------- | Linux | | Solaris | | Windows | | HP-UX | OS | | | | | | | | -------- ---------- ----------- ----------
- 简要介绍几种 PMS 及其包格式
- RPM
- Solaris pkgadd
- HP-UX SD-UX
- GNUstep pkg
- MacOS X pkg
- Debian dpkg
- 用于嵌入式 Linux 系统的 ipkg。
- PMS 的比较
- HPMS 的比较
- 针对 sparc 的 Sun WorkShop、Sun Studio、Sun Forte
- 编译器标志
cc -I. -I. -mr -Qn -xstrconst -xO2 -xtarget=generic -DHAVE_CONFIG_H -I./popt -c rsync.c -o rsync.o -mr : -Qn : -xstrconst : -xO2 : -xtarget :
- 针对 intel 的 Sun 编译器
-m : -
- Gnu 编译器
- HP ANSI 编译器
将 TWW HPMS 工具移植到其他操作系统时,需要执行以下任务。
- 移植 TWW HPMS 工具本身。
- sb 需要添加新的操作系统标识代码。
- pb 需要有一个新的 Python 模块来处理新的 PMS。
- 移植包源代码。
- 包源代码包含特定操作系统的说明。我们需要将新的受支持的操作系统添加到包源代码中。
- 用于自动化 TWW 工具移植的 Makefile。
- 与 Makefile 相同,每个 Makefile 都包含特定操作系统的说明,如果添加了新的操作系统,则也需要更新 Makefile。
- 一个 Makefile,用于从 sbutils python/C 源代码为 nslu2 构建 TWW sbutils 工具。
- 编译 sbtuils 工具以生成 sb
- 使用 sb 编译和构建 pb 和 pkgutils
- 移植 sbtools
- 包构建架构:比较使用 Mac OS X wayd 和为 Mac OS X 移植的 TWW pb。
HPMS way MacOS X way -------------------------------------------- | SimpleFirst.pb = SimpleFirst | -------------------------------------------- | | | - TWW pb/Mac OS X ----------------------- | | pbuild | -------------------------------------------- | SimpleFirst.app | -------------------------------------------- | Mac OS X | --------------------------------------------
- 一个 Makefile,用于为 MacOS X 构建 TWW 工具。
- 编译 sbtuils 工具以生成 sb
- 使用 sb 编译和构建 pb 和 pkgutils
- 移植 sbtools
- 包构建架构
-------------------------------------------- | SimpleFirst.pb | |----------------------------------------- | | pb that support WiX | | -----------------------------------------| | candle.exe | |----------------------------------------- | | light.exe | |------------------------------------------| | MingW | |----------------------------------------- | | Win32 OS | --------------------------------------------
- 步骤
- 一个 Makefile,用于为 Win32 构建 TWW 工具。
- 编译 sbtuils 工具以生成 sb
- 使用 sb 编译和构建 pb 和 pkgutils
- 移植 sbtools
- 一个 Makefile,用于为 FreeBSD 构建 TWW 工具。
- 编译 sbtuils 工具以生成 sb
- 使用 sb 编译和构建 pb 和 pkgutils
- 移植 sbtools
- 一个 Makefile,用于为 Debian 构建 TWW 工具。
- 编译 sbtuils 工具以生成 sb
- 使用 sb 编译和构建 pb 和 pkgutils
- 移植 sbtools