CLR 軟件打包準則

出自 Arch Linux 中文维基
Arch 打包準則

32 位CLRCMakeCrossDKMSEclipseElectronFontFree PascalGNOMEGoHaskellJavaKDE內核模塊LispMesonMinGWNode.jsNonfreeOCamlPerlPHPPythonRRubyRustVCSWebWine

本文檔定義了在 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
  • 始終設置 archany。Mono 尚不支持編譯(運行)64-bit 程序集。
  • 始終添加 !stripoptions
  • 如果程序包是一個庫(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"
}