Ubuntu 12.04 LTSサーバーを実行しています。現在、使用しているパッケージの1つに迷惑なバグがあるという問題があります。ソースを削除してソースからビルドする代わりに、Ubuntu/Debiansパッケージ管理に統合したいと思います。
ArchLinuxから、元のPKGBUILDをコピーし、newパッケージをコンパイルするように変更することでこれを行いました。これは非常に簡単なプロセスですが、ローカルリポジトリにない場合でも、パッケージマネージャーにこのパッケージについて通知します。
Ubuntu/Debianにも同様の方法はありますか?パッケージを古いUbuntuバージョンに簡単に基づいて、元のリポジトリの代わりにこのパッケージをインストールできますか?
注:関係するソフトウェアはlibvirt(少なくとも0.9.13が必要で、12.04は0.9.8を実行します)コメント内のパッケージでは、将来それらが発生した場合にそのような問題のより一般的な解決策を探しています。
質問とは逆に 「ハードな方法」で自分のパッケージを手動でアセンブルするにはどうすればよいですか? および 最も単純なDebianパッケージングガイドとは何ですか?newパッケージですが、代わりに既存のリソースを使用し、それらを新しいバージョンに更新します。
最初に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はカスタムバージョンをビルドします。
自分のホーンを鳴らすために、私はこの正確な状況の解決策を作成しています。 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
次のようにして、パッケージの最新バージョンをダウンロードできます。
debtool --download zsh
次のように特定のバージョンをダウンロードできます。
debtool --download zsh=5.0.2-3ubuntu6
ハードドライブでパッケージを展開できます。
debtool --unpack package.deb
システムに現在インストールされているパッケージを解凍することもできます。
debtool --unpack package
インストールされたファイルのいずれかに変更を加えた場合、それらも同様に組み込まれます。これは、ソースから入手できなくなったパッケージを使用したい場合や、既存の修正を「パッチを適用した」デバッグに組み込む場合に最適です。