DEBファイルを手動で生成するには?

DEBファイルを手動で生成するには?

DEBファイルを手動で作成したいと思います。インストールするデータがあるフォルダと、インストール後に実行するスクリプトを提供したいと思います。

可能ですか?

答え1

ソースコードパッケージの作成

私の提案はソースパッケージを作成することです。インストールする構築に必要デブヘルパーdh-make。インストールするファイルがあるディレクトリに変更し($PACKAGE-$VERSIONたとえば、myapp-4.2-1Myapp V4.2を初めてパッケージ化する場合は、ディレクトリ名は形式である必要があります)、実行しますdh_make --createorig。質問に答えてください。 Debhelperは、debianテンプレートの必須ファイルと選択ファイルを含むサブディレクトリにファイルを作成し、パッケージを構築するために必要な基本インフラストラクチャを作成します。次のファイルの一部を変更する必要があります。

  • 編集するdebian/rulesビルドする必要があるものをビルドし、正しい場所にファイルをインストールします。一部のファイルだけをコピーして内容をコンパイルしたくない場合は、ファイルを編集します。debian/installどのファイルをどこにインストールするかを指定します。
  • 編集するdebian/copyright関連する場合は、パッケージのライセンス情報と最新バージョンを入手できる場所に関する情報を追加してください。
  • 編集するdebian/changelogITPへの参照を削除します(Debianプロジェクトで作業している場合にのみ関連します)。debian/postinst.ex次に名前を変更するdebian/postinstそこにインストール後にコマンドを追加します。後でパッケージを更新する場合は、実行してdebchange -i変更ログエントリを追加するか、Emacsでファイルを編集します(使用)。dpkg-dev-elインストールする)。

パッケージをdpkg-buildpackage -rfakeroot -us -ucビルドするには実行します(PGPキーを使用してパッケージに署名するには削除します)。.deb-us -uc

バイナリパッケージを直接作成

ソースパッケージからビルドせずに直接バイナリパッケージを作成することを決定した場合(プロセスを容易にするためのツールがあまりないので簡単ではありません)、debパッケージ形式に関する基本的な知識が必要です。に記載されていますDebian Policy Manual、特にch.3(バイナリパッケージ形式)チャンネル5(制御ファイル)チャンネル6(インストールスクリプト)そして付録B(バイナリパッケージ作業)

/usr/share/doc/copyrightパッケージが予想ファイル(パッケージコンテンツのライセンスと最新バージョンのパッケージを見つけることができる場所を含む)と/usr/share/doc/changelog.Debian.gz(debパッケージの変更ログを含む)をインストールしていることを確認してください。パッケージを内部的にのみ使用したい場合は必要ありませんが、それをお勧めします。

Debianとその派生物について

利用可能なDebianツールがある場合は、dpkg-debそれを使用してパッケージをビルドしてください。インストールするデータを含むディレクトリに、制御ファイルとDEBIAN管理者スクリプトを含む最上位ディレクトリを追加します。

$ ls mypackage-42
DEBIAN etc usr var
$ dpkg-deb -b mypackage-42

難しい道

Debianツールがない場合は、名前付きファイルアーカイブ、名前付き制御ファイルの別のアーカイブ(サブディレクトリなし)、名前付きテキストを含むテキストdata.tar.gzファイルcontrol.tar.gzを作成します。debian-binary2.0

cd mypackage-42
tar czf ../data.tar.gz [a-z]*
cd DEBIAN
tar czf ../../control.tar.gz *
cd ../..
echo 2.0 > debian-binary
ar r mypackage-42.deb debian-binary control.tar.gz data.tar.gz

少なくとも1つは必要です。制御ファイルPackage、、、、、、MaintainerフィールドPriorityArchitectureおよび必要な依存関係宣言が含まれていますInstalled-SizeVersion

インストール後に実行されるスクリプトと呼ばれますpostinst。実行可能にしてください。並んで行きますcontrol

さまざまな形式のバイナリパッケージ変換

他のディストリビューション用のバイナリパッケージがすでに存在する場合は、次のものを使用できます。エイリアンそれを変換します。

答え2

まず、ビルドフォルダとファイルアーカイブを作成する必要があります。tar czvf data.tar.gz files

その後、ビルドフォルダにいくつかの必須情報を含む制御ファイルを生成する必要があります。

 Package: xxxxxx
 Version: 0.0.1
 Section: user/hidden 
 Priority: optional
 Architecture: armel
 Installed-Size: `du -ks usr|cut -f 1`
 Maintainer: Your Name <[email protected]>
 Description: This is optional, but creates warnings if left out

その後、preinst、postint、prerm、および postrm シェルスクリプトを個別に追加して、.deb ファイルのインストール前、インストール後、アンインストール前、アンインストール後の動作を制御し、tar を使用して制御アーカイブを作成できます。 :tar czvf control.tar.gz control preinst postinst prerm postrm

それからDebianバイナリが必要です:echo 2.0 > debian-binarydebian-binary control.tar.gzこれdata.tar.gzで、ビルドフォルダに次のファイルが必要です。

ar最後に、.debファイルを作成するにはパッケージが必要です。ar -r xxx.deb debian-binary control.tar.gz data.tar.gz

答え3

私は多くの袋を作るし、完全な袋を作ることは小さいことではありません。肯定的な面では、ファイルとスクリプトの作業量ははるかに少ないです。次のツールを使用して、非常に簡単にこれらのパッケージを作成できます。ディスカッション

Debreateは、シンプルなDEBパッケージを作成するための非常にシンプルなGUIです。ファイルの場所とインストール/事前インストール/削除後に実行するアクションを指定するだけです。以前は、すべてのパッケージを標準的な方法で実行しましたが、このツールの使用を開始した後は、必要なときにのみ戻ります。

答え4

DebianでUbuntuパッケージでZimbra 7を使用すると、この問題が発生しました。 (私は頑固で、Debian> bUbuntuを好むでしょうが、ZimbraがUbuntu用にのみリリースされたのですが。)これまでこの問題を解決したかどうかはわかりませんが、これをインストールするときにこれを行う必要はありませんでした。 !

mkdir new
for i in *.deb
 do echo `date`: working on $i
 ar x $i
 cd control
 rm * 2> /dev/null
 tar -xzpvf ../control.tar.gz
 tr "_" "-" < control > control2
 mv -v control2 control
 tar -czpvf ../control.tar.gz .
 cd ..
 ar r new/$i debian-binary control.tar.gz data.tar.gz
done
rm -rf debian-binary control.tar.gz data.tar.gz control

すべての新しい.debファイルはnew/

ノート:wheezy の squeeze-dpkg には --force-bad-version があります。

関連情報