使用 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
