CLR 軟體打包準則 - Arch Linux 中文维基

跳至內容

# CLR 軟體打包準則

出自 Arch Linux 中文维基
翻譯狀態：

- 本文（或部分內容）譯自 CLR package guidelines，最近一次同步於 2020-05-03，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

Arch 打包準則

32 位 – 安全 – CLR – CMake – DKMS – Eclipse – Electron – Free Pascal – GNOME – Go – Haskell – Java – 交叉編譯工具 – KDE – Lisp – Meson – MinGW – 內核模塊 – Node.js – Nonfree – OCaml – Perl – PHP – Python – R – Ruby – Rust – Shell – 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"
    }

分類：​

- Arch 打包準則

CLR 軟體打包準則
新增話題