プログラムのソースがあり(cvs/svn/git/...から取得)、そのためのDebian/Ubuntuパッケージをビルドしたいと思います。パッケージはリポジトリにありますが、次のとおりです。
最も簡単な方法は何ですか?私はいくつかのことを心配しています
最初に、タイトルの質問:debianディレクトリが既に存在すると仮定して、ソースディレクトリ(debianディレクトリを含むディレクトリ)にあり、dpkg-buildpackageを呼び出します。私はこれらのオプションでそれを実行したい:
dpkg-buildpackage -us -uc -nc
つまり、結果に署名せず、クリーンアップしません。
すべての依存関係を正しくリストしたかどうかを確認するにはどうすればよいですか?
依存関係を取得することは、ブラックアートです。 「公式」な方法は、ビルドがベースシステム、「ビルド必須」パッケージ、および指定したビルド依存関係のみでビルドされるかどうかを確認することです。通常の依存関係の一般的な答えがわからない、ただ歩いてください:)
更新のレポに古いバージョンをインストールする更新システムを防ぐにはどうすればよいですか?システムが新しいバージョンをインストールするのを防ぎ(そのバージョンが出たとき)、カスタムパッケージを上書きする方法を教えてください。
私の知識はこれについては時代遅れかもしれませんが、両方に対処するには:dpkg --set-selectionsを使用します。 nullidentdがあなたが置いておきたいパッケージだと仮定し、rootとして実行する
echo 'nullidentd hold' | dpkg --set-selections
あるいは、ソースからビルドしているため、 Epoch を使用して、バージョン番号を人為的に高く設定し、二度と煩わされることはありません。エポックを使用するには、debian/changelogファイルに新しいエントリを追加し、バージョン番号の前に99:を入力します。 nullidentdの例では、更新された変更ログの最初の行は次のようになります。
nullidentd (99:1.0-4) unstable; urgency=low
Bernardのリンク は、特にdebianディレクトリを自分で作成する必要がある場合に適しています- 開発者リファレンス および 一般リソースページ も役立ちます アダムのリンク も良さそうですが、私はそれに慣れていません。
CcacheのサンプルUbuntuベースのビルド:
Sudo apt-get update
Sudo apt-get build-dep ccache
apt-get -b source ccache
Sudo dpkg -i ccache*.deb
詳細: http://blog.aplikacja.info/2011/11/building-packages-from-sources-in-debianubuntu/
あなたがしたいことのために、おそらくdebianソースdiffを使用したいので、あなたのパッケージは使用されているアップストリームバージョンを除いて公式のものに似ています。 packages.debian.org からソースdiffをダウンロードするか、「apt-get source」を使用して.dscおよび元のソースアーカイブと一緒に入手できます。
次に、新しいバージョンのアップストリームソースを解凍し、そのディレクトリに移動して、ダウンロードした差分を適用します。
zcat ~/downloaded.diff.gz | patch -p1
chmod +x debian/rules
次に、オプションをコンパイルするために必要な変更を行い、以下を実行してパッケージをビルドします
dpkg-buildpackage -rfakeroot -us -uc
this はDebianパッケージの「聖書」だと思います。
まあ、それはDebianの新しいメンテナーのガイドなので、その多くは当てはまりませんが、どこに行くのかをカバーしています。
Ubuntuを使用している場合は、pkgcreatorプロジェクトを確認してください。 http://code.google.com/p/pkgcreator
すべての依存関係を正しくリストしたかどうかを確認するにはどうすればよいですか?
pbuilder
は、chroot環境内でクリーンなベースシステムをセットアップすることにより、ビルドの依存関係と依存関係の両方をチェックするための優れたツールです。 pbuilder内でパッケージをコンパイルすることにより、ビルドの依存関係を簡単に確認でき、pbuilder環境内でテストすることにより、依存関係を確認できます。
ここ は、Debianパッケージを構築するためのチュートリアルです。
基本的に、次のことが必要です。
私は通常、Makefileでこれをすべて実行するので、makeと入力するだけでバイナリを吐き出し、一度にパッケージ化できます。
ビルドの依存関係をすばやく汚い方法でインストールする場合は、次を使用します。
apt-get build-dep
これにより、依存関係がインストールされます。このためには、sources.listにソース行が必要です。
deb-src http://ftp.nl.debian.org/debian/ squeeze-updates main contrib non-free
パッケージをテストから安定版にバックポートする場合は、依存関係が変更されている可能性があることに注意してください。コマンドapt-get build-debは、現在のリポジトリにソースパッケージの依存関係をインストールします。
しかし、もちろん、dpkg-buildpackage -us -ucはアンインストールされた依存関係を表示します。
より頻繁にコンパイルする場合は、cowbuilderを使用します。
apt-get install cowbuilder
次に、ビルド領域を作成します。
Sudo DIST = squeeze Arch = AMD64 cowbuilder --create
次に、ソースパッケージをコンパイルします。
apt-get source cowsay
# do your magic editing
dpkg-source -b cowsay-3.03+dfsg1 # build the new source packages
cowbuilder --build cowsay_3.03+dfsg1-2.dsc # build the packages from source
カウビルダーが結果のパッケージをどこに置くかを見てください。
幸運を!