6

MonoDevelopを使用してC#で記述された趣味のプロジェクトがあります。Linuxのパッケージングに頭を悩ませようとしばらく努力してきましたが、イライラして圧倒されてしまいます。

私のプログラムは以下で構成されています:

  • 私のプログラムによって作成されたデータを処理するライブラリプロジェクト(「ジェネレータ」)。
  • Gtk#を使用したui(「インターフェース」)プロジェクト。このプロジェクトには、「glade」(gtkがウィジェットの作成に使用するxmlファイル)と「book」(私のプログラムで使用されるデータ)の2つのサブディレクトリがあります。
  • ライブラリプロジェクトとインターフェイスプロジェクトの両方で使用されるユーティリティプロジェクト(「Utils」)。
  • インターフェイスを開始するだけのメインプロジェクト( "MyProgramName")。

私がやりたいこと(私は思う)は本当にとても簡単です(私は思う):

  • アプリケーションをコンパイルする
  • .exeファイルと.dllファイルを(/ usr / local / bin?に)コピーします。
  • 「book」ディレクトリを(/ usr / local / binに)コピーしますか?
  • 「glade」ディレクトリを(/ usr / local / binに)コピーしますか?

ああ、これを.debパッケージとして実行したいと思います。tarballを機能させることができれば、.debパッケージはそれほど問題にならないはずですが、最終的にはそれを実行したいと思います。

私はまだこれを行う方法が本当にわかりません。私はMonoDevelopを使用してTarballを作成しました。tarballをインストールすると(、、を使用して./configuremakesudo checkinstall実行可能コードがインストールされているように見えます(さらに、プログラムを実行するコマンドを作成しているようです)が、「book」および「glade」ディレクトリを忘れています。

どうすればこれを行うことができますか?これが基本的/幅広い質問である場合は申し訳ありません。私はこれについて調べてきましたが、パッケージングの基本を知っていることを前提としないものは何も見つかりません(これを前提としないと主張している場合でも)。

4

2 に答える 2

5

Debian パッケージは tar ファイルのようなもので、ファイル システムのコピーが含まれています。Debian パッケージを作成するには...

  1. ビルド ディレクトリに tarball をインストールします。
  2. 制御ファイルを含む DEBIAN ディレクトリを追加します。この記事は役に立ちました。
  3. でパッケージを作成しますdpkg --build

まず、GNU の自動ツールである autoconf と automake を学ぶことから始めます。これにより、プログラムをビルド ディレクトリに簡単にインストールできます。あなたは言及し./configureました。したがって、このプロジェクトにはすでにいくつかの構造があると思います。説明から、プロジェクトには必要なように思えます...

  • "book" と "glade" 内のファイルのconfigure.in内のエントリ。
  • "book" と "glade" の Makefile.am ファイル。

すべてをまとめると、次のコマンドを実行すると、project.debという名前のパッケージ ファイルが生成されます。

# ./configure --prefix build/usr
# make && make install
# dpkg --build build project.deb
于 2009-11-16T04:46:03.630 に答える
4

もしかしたら、このブログ記事があなたの役に立つかもしれません。

次のように、debパッケージの構造を完全に説明しています。

<YOUR PACKAGE NAME>
└── deb
    ├── DEBIAN
    │   ├── conffiles
    │   ├── control
    │   └── preinst
    └── opt
        └── <YOUR APPLICATION>
            └── <Your Application Contents>  

基本的に、パッケージ内に deb フォルダーがあり、その中に次の 2 つの必須フォルダーがあります。

  • DEBIAN - deb パッケージ自体を説明するファイルを含む
  • パッケージのインストール先を反映したファイルシステム構造。/opt/<YOUR APPLICATION>上記の例では、パッケージはディレクトリ内にデプロイされます。

DEBIAN ディレクトリから、少なくともcontrol平文のファイルが必要です。リンクされたページで詳細に説明されている特定の形式のエントリを含める必要があります。以下は、サンプル制御ファイルを使用した単なる例 (そこから取得) です。

Package:packagingmono
Version:1.0
Maintainer:Mikael Chudinov <mikael@chudinov.net>
Architecture:amd64
Section:net
Description:Template for Debian packaged Mono application.
Depends:mono-complete (>=3)
  • Packageあなたのパッケージ名でなければなりません。大文字/小文字のラテン文字、数字、-.
  • Version- パッケージのバージョン。そのフィールドにはアセンブリ バージョンを使用することをお勧めします。
  • Maintainer- パッケージ開発者の名前と連絡先情報。
  • Architecture- またはのいずれi386amd64。x86 および x64 用に最適化されたアプリケーションをプラットフォームごとに個別の実行可能ファイルとして配布する場合 (AnyCPU を使用せずに、x64 または x86 用に明示的にビルドすることを意味します)、それぞれに個別の .deb パッケージを作成し、Architectureフィールドを適切に設定する必要があります。残りのフィールドは同じままである可​​能性があります。
  • Section- オプション。debian apt システムで許可されているパッケージ カテゴリのいずれかです。
  • Description. 2 つのトークン - 短い説明 (改行記号の前の最初の項目) とオプションで長い説明 (最初の改行の後のテキスト) で構成されます。
  • Depends- パッケージへの依存関係のリスト。この例mono-completeでは、mono ランタイムのパッケージ名を示しており、さらにバージョン 3 以上に制限しています。

deb パッケージについて知っておくべき重要なことは、実際にはアプリケーション全体 (bin フォルダーの内容) を 1 つのパッケージに入れることができるということです。参照されるライブラリを個別のパッケージに入れ、それらを依存関係としてマークする必要はありません。後者は、同じライブラリに依存する他のアプリケーションをインストールする予定がある場合に意味があります。さらに、アプリケーションを一緒にパッケージ化しても、dll 地獄の問題がいつの日かパッケージ地獄の問題になることはありません。これの欠点は、パッケージのサイズが大きくなる可能性があることです。

この記事では、パッケージの作成に役立ついくつかのネイティブ GNU/Linux ツールも推奨しています。たとえばxbuild、パッケージ化を行う MSBuild ファイルを実行するために使用できます。これは、Windows 開発者にとって物事をより身近なものにするのに役立ちます。このlintianツールは、生成された .deb ファイルの問題を修正するのにも役立ちます。残りのツールは、MSBuild のパッケージ化プロセス中に呼び出される中間ユーティリティです。

于 2016-04-14T14:55:33.000 に答える