CLR 軟件打包準則
32 位 – CLR – CMake – Cross – DKMS – Eclipse – Electron – Font – Free Pascal – GNOME – Go – Haskell – Java – KDE – 內核模塊 – Lisp – Meson – MinGW – Node.js – Nonfree – OCaml – Perl – PHP – Python – R – Ruby – Rust – VCS – Web – Wine
本文檔定義了在 Arch Linux 下打包 Common Language Runtime (.NET)項目的標準。當前,只有 Mono 能夠為多個系統提供可用的,高效的 CLR runtime,並且該標準將反映其用法。請注意,許多 CLR 程序是在考慮到 Microsoft .NET 的情況下開發的,因此,由於 P/Invoke 調用和 Microsoft 數字版權管理(DRM)API 等 .NET 專有的因素,它們可能在 Mono 下運行,也可能無法在 Mono 下運行。因此不會為 Arch Linux 提供可用的軟件包。但是,如果與 1.5.6 版(?)或更高版本的 Wine 結合使用,則您的程序包可能有機會在其下運行。如果是這種情況,請參閱 Wine PKGBUILD Guidelines 以獲取更多信息。
打包注意[編輯 | 編輯原始碼]
- 始終將 mono包 添加到
depends
- 始終設置
arch
為any
。Mono 尚不支持編譯(運行)64-bit 程序集。 - 始終添加
!strip
到options
- 如果程序包是一個庫(DLL),則要將該程序包用作依賴項,請考慮將其安裝到 Mono 的全局程序集緩存(GAC)中。
- 如果程序集是預編譯的,並且帶有程序調試數據庫文件(Foo.dll.pdb),請考慮將其轉換為:{ic|pdb2mdb Foo.dll}}
- 如果要執行該程序包(EXE),請確保安裝到
/usr/bin
,使用 shell 腳本以運行它,類似於以下程序:
#!/bin/sh mono foo.exe "$@"
簽名的程序集[編輯 | 編輯原始碼]
如果要將軟件包安裝到 GAC 中,請確保它具有簽名的密鑰文件。如果沒有,您可以生成一個這樣的:sn -k 1024 Foo.snk
。隨後,嵌入密鑰文件到組件的最簡單方法是拆卸它,是這樣的:monodis Foo.dll --output=Foo.il
。然後,像這樣重新組裝它:ilasm /dll /key:Foo.snk Foo.il
PKGBUILD 示例[編輯 | 編輯原始碼]
以下示例將嘗試涵蓋一些最常見的約定和構建系統。
xbuild[編輯 | 編輯原始碼]
未簽名的 DLL[編輯 | 編輯原始碼]
# Maintainer: yourname <yourmail> pkgname=foo pkgver=1.0 pkgrel=1 pkgdesc="Fantabulous library for .Net" arch=('any') url="http://www.foo.bar" license=('GPL') depends=('mono') options=('!strip') source=("http://www.foo.bar/foobar.tar.gz") md5sums=('4736ac4f34fd9a41fa0197eac23bbc24') build() { cd "${srcdir}/foobar" xbuild Foo.sln # if the package is unsigned, do the following: cd "/bin/x86/Debug" monodis Foo.dll --output=Foo.il sn -k 1024 Foo.snk ilasm /dll /key:Foo.snk Foo.il } package() { cd "${srcdir}/foobar/bin/x86/Debug" install -Dm644 Foo.dll "$pkgdir/usr/lib/foobar/Foo.dll" install -Dm644 Foo.dll.mdb "$pkgdir/usr/lib/foobar/Foo.dll.mdb" # Register assembly into Mono's GAC gacutil -i Foo.dll -root "$pkgdir/usr/lib" }