web-dev-qa-db-ja.com

ローカルインストール用に独自のパッケージを作成する正しい方法は何ですか?

Ubuntu 12.04 LTSサーバーを実行しています。現在、使用しているパッケージの1つに迷惑なバグがあるという問題があります。ソースを削除してソースからビルドする代わりに、Ubuntu/Debiansパッケージ管理に統合したいと思います。

ArchLinuxから、元のPKGBUILDをコピーし、newパッケージをコンパイルするように変更することでこれを行いました。これは非常に簡単なプロセスですが、ローカルリポジトリにない場合でも、パッケージマネージャーにこのパッケージについて通知します。

Ubuntu/Debianにも同様の方法はありますか?パッケージを古いUbuntuバージョンに簡単に基づいて、元のリポジトリの代わりにこのパッケージをインストールできますか?

:関係するソフトウェアはlibvirt(少なくとも0.9.13が必要で、12.04は0.9.8を実行します)コメント内のパッケージでは、将来それらが発生した場合にそのような問題のより一般的な解決策を探しています。

質問とは逆に 「ハードな方法」で自分のパッケージを手動でアセンブルするにはどうすればよいですか? および 最も単純なDebianパッケージングガイドとは何ですか?newパッケージですが、代わりに既存のリソースを使用し、それらを新しいバージョンに更新します。

6
javex

最初にUbuntuバージョンのソースとビルドの依存関係をダウンロードします。

apt-get install dpkg-dev
apt-get build-dep <package>
apt-get source <package>

Ubuntuバージョンの基になっている未修正のアップストリームソースは、<pkg> _ <ver> .orig.tar.gzというファイルにあります(圧縮方式は異なる場合があります)-これを1つのディレクトリに解凍します(「dir」と呼びましょう) A ")、バグ修正バージョンのソースを別のディレクトリ(" dir B ")にダウンロードし、変更内容のパッチを生成します。

diff -Nur <dirA> <dirB> >/tmp/upgrade.patch

次に、apt-getソースが変更されたUbuntuバージョンを解凍したディレクトリに移動し、パッチを適用します

patch -p1 </tmp/upgrade.patch

2つのアップストリームバージョンの間に多くの変更がなく、Ubuntuパッケージャーの変更と競合しないと仮定すると、これは機能するはずです。次に、Ubuntuパッケージのdebian/changelogを編集して新しいバージョン番号を付けます。dpkg-buildpackageはカスタムバージョンをビルドします。

4
Steve Dee

自分のホーンを鳴らすために、私はこの正確な状況の解決策を作成しています。 Debianパッケージは、2つまたは3つのコマンドでダウンロード、アンパック、ビルド、および再インストールできます。

これはシェルスクリプト debtool であり、前述のリンクからGitHubで入手できます。

Debianパッケージをソースからビルドするのは面倒な場合があります。特に、毎日のドライバーでは、多くのビルド依存関係などに煩わされたくない場合があります。

libvirtがソース経由で利用可能であると仮定して、次のコマンドを実行します。

debtool --download --unpack libvirt

上記のコマンドはlibvirt_0.9.8_all.debファイルをダウンロードし、ディレクトリlibvirt_0.9.8_allに解凍しました

あるいは、現在システムにインストールされているlibvirtのバージョンを解凍することもできます。

debtool --unpack libvirt

この時点で、ディレクトリ内のファイルにすべての変更を加える必要があります。 ./ libvirt_0.9.8_all/DEBIAN/controlにあるパッケージのバージョン番号(つまり0.9.8-custom1)を増やすこともできます。 。

次のコマンドを実行してパッケージをビルドします。

debtool --build ./libvirt_0.9.8_all

完成したパッケージは、現在のディレクトリにlibvirt_0.9.8-custom1_all.debとしてあります。

debtool --reinst ./libvirt_0.9.8-custom1_all.debまたはdebtool --build --reinst ./libvirt_0.9.8_allを実行してこのパッケージをすばやく再インストールし、一気にビルドして再インストールできます。

エッテテラ

debtoolを使用して、他の関連タスクをいくつか実行することもできます。

利用可能なバージョンを表示

リポジトリで利用可能なパッケージのバージョンが複数ある場合、次のようにリストできます。

debtool --show zsh

上記のコマンドは次を返します。

zsh 5.0.5-4ubuntu1~ubuntu14.04.1 AMD64
zsh 5.0.2-3ubuntu6 AMD64

パッケージを手動でダウンロードする場合は、--show-formatオプションを使用できます。

debtool --show --show-format zsh

以下を返します。

apt-get download zsh=5.0.5-4ubuntu1~ubuntu14.04.1 -a=AMD64
apt-get download zsh=5.0.2-3ubuntu6 -a=AMD64

Debianアーカイブをダウンロードする

次のようにして、パッケージの最新バージョンをダウンロードできます。

debtool --download zsh

次のように特定のバージョンをダウンロードできます。

debtool --download zsh=5.0.2-3ubuntu6

パッケージの開梱

ハードドライブでパッケージを展開できます。

debtool --unpack package.deb

システムに現在インストールされているパッケージを解凍することもできます。

debtool --unpack package

インストールされたファイルのいずれかに変更を加えた場合、それらも同様に組み込まれます。これは、ソースから入手できなくなったパッケージを使用したい場合や、既存の修正を「パッチを適用した」デバッグに組み込む場合に最適です。

1
Six