web-dev-qa-db-ja.com

ターゲットにファイルをコピーするだけのDebianルールファイルが必要です

次のファイルがある大きなプロジェクトがあります。

  • いくつかのサードパーティ製のコンパイル済みバイナリ
  • 独自の社内バイナリ
  • Rubyスクリプトのコレクション
  • かなりのRuby on Railsプロジェクト

この製品は、Ubuntu Linux(Lucid)をターゲットO.S.として使用して、雇用主がすでに選択したアプライアンスハードウェアにインストールされます。インストールとアップグレードを容易にするために、アーカイブをDebianパッケージとして配布することを目標としています。さらに、お客様ごとに適切な値を「入力」する必要のある多くのERBテンプレートがあるため、 ポストインスト スクリプトは、私たちの目的に特に便利です。

補足として、Debianパッケージは、社内で管理するサーバーリポジトリに保存されます。

この段階で私は dh_make debianディレクトリと関連ファイル(例:ルール、コントロールなど)を作成しますが、生成されたルールファイルは私の目的にとってはやり過ぎのようです。

この説明に基づいて、 「ルール」ファイルが本当に必要なのは、単にソースディレクトリ(またはアーカイブ内)から以下に示すターゲットディレクトリにファイルをコピーすることだけです。

  • / opt/company_product/3rd_party_binaries/bin
  • / opt/company_product/3rd_party_binaries/etc
  • / opt/company_product/in_hourse_binaries/bin
  • / opt/company_product/in_hourse_binaries/etc
  • / opt/company_product/Ruby
  • / opt/company_product/Rails_project
  • / opt/company_product/etc
  • / opt/company_product/shared/logs
  • / opt/company_product/shared/tmp
  • / opt/company_product/shared/license
  • ...等々。

Debianポリシーマニュアルといくつかのハウツーを読みました。 いけない 使用するルールファイルを変更する mkdir ディレクトリを作成するには、一般的に dh_ ほぼすべてのインストール目的のニーズに対応できるアプリ(たとえば、dh_installdirsなど)。これらのマニュアルページ dh_ 関連するアプリはせいぜいおおざっぱで、私は「模範」的な人です。

とは言っても、自分を手に入れるための最善のアプローチは何かについて少し迷っています ルール さまざまなコンパイル済みバイナリとRuby/Railsテキストファイルを目的の場所にインストールするためのファイル。

これが私のイニシャルです ルール ファイル。これは、dh_makeが作成する標準の定型ルールファイルです。私の考えでは、 インストール 次に、そのセクション内でディレクトリを作成したり、ファイルをコピーしたりするための適切なコマンドを見つけます。

アドバイスや提案は大歓迎です。

#!/ usr/bin/make -f 
 
 package = testapp 
 
 CC = gcc 
 CFLAGS = -g -壁
 
 ifeq(、$(findstring noopt、$(DEB_BUILD_OPTIONS)))
 CFLAGS + = -O2 
 endif 
 
#export DH_VERBOSE = 1 
 
 clean:
 dh_testdir 
 dh_clean 
 rm -f build 
 
インストール:build 
 dh_clean 
 dh_installdirs 
 echo "ここにインストールスクリプトを配置します" 
 cp $(CURDIR)/testapp-2.0.tar.gz $(CURDIR) /debian/$(package)/opt/testapp-2.0
 echo "Finished copy folder" 
 
 
 build:
 touch build 
 
 binary-indep:install 
#アップロードするアーキテクチャに依存しないファイルはありません
#このパッケージによって生成されました。何かあった場合は、
#ここで作成します。 。] dh_installdocs -a 
 dh_installchangelogs -a 
 dh_strip -a 
 dh_compress -a 
 dh_fixperms -a 
 dh_installdeb -a 
 dh_shlibdeps -a 
 dh_gencontrol -a 
 dh_md5sums -a 
 dh_builddeb -a 
 
 binary:binary-indep binary-Arch 
 
。PHONY:バイナリバイナリ-アーカイブバイナリ-インデップクリーンチェックルート
33
Chip Castle

あなたはすでにあなた自身の答えを持っていますが、私はいくつかのことを指摘します。

あなたはこれを非常に複雑な方法で行っているようです。ファイルを特定のディレクトリにコピーするだけの場合は、debian/mypackagename.installを次の形式で記述します。

path/to/file/relative/to/source/root path/to/install/relative/to/system/root

/の前に/usrを追加しないでください。または/opt、またはターゲットディレクトリが何であれ。詳細についてはman dh_installを参照してください)

次に、debian/rulesは次のようになります。

#!/usr/bin/make -f

%:
    dh $@

ソースルートにある種のメイクファイルなどがある場合は、これを上記のrulesファイルに追加します。

override_dh_auto_build:

override_dh_auto_install:

7debian/compatを入れることを忘れないでください。

また、/opt//usr/local/などにファイルをインストールしないでください。これらは、Debianによってインストールされたファイルではありませんパッケージ。 Debian/usr/share/yourcompany/へのインストールを推奨します。 juzzlin が以下に示すように、Ubuntu Software Centerには異なる要件がある場合があります。

具体的には、mypackage.installファイルは次のようになります。

src/bin/* usr/bin
src/etc/* etc/
58
Umang