より新しいパッケージが必要なことは、どのOSでもよくある問題です。Debianのリリースサイクルは近年平均して2年であり、このサイクルの終わりに向かって、それはおそらくより差し迫った問題です。これを軽減する1つの方法は、次のバージョンがほぼ安定している安定したリリースサイクルの終わり頃にテストに移行することです。それがテストに関してより一般的に安定について話しているのか、それとも不安定について話しているのかという質問からは明らかではありません。いずれにせよ、最新バージョンがまだパッケージ化されていない可能性があるため、不安定な状態で実行している場合でも、最新バージョンがあると問題になる可能性があります。Debian開発者/パッケージャはボランティアなので、退屈したり、他のことに忙しくなり、結果としてパッケージが衰弱する可能性があります。
簡潔さと具体性のために、私は以下の計画ではパッケージを安定版にバックポートすることを想定していますが、より一般的に適用されます。したがって、安定した状態で存在しない最新バージョンのソフトウェアがおおよその順序で必要な場合は、次のようにします。
Debianバックポートでパッケージを探します。時には、目的を満たすのに十分新しいパッケージを見つけることができます。ただし、これらのパッケージは、不安定版、実験版、またはアップストリームのバージョンと比較して古くなっていることがよくあります。
テスト版、不安定版、または実験版から直接パッケージをインストールしてみてください。安定版がインストールしようとしているどのバージョンからもほとんど逸脱していない場合、これでうまくいくかもしれません。システムが最新のバージョンから基本パッケージをインストールまたはアップグレードしようとする場合、このアプローチが悪いアプローチであることがわかります。不安定版からインストールしようとしているとします。
apt-get install packagename/unstable
最初に試すことです。apt inのバージョンがstableの場合、unstableの他のパッケージが必要になるため、これは失敗することがよくありますpackagename
。これが何を意味するのか理解できない場合は、離れて読んでくださいman
apt_preferences
。不安定なパッケージから依存関係を追加し、基本パッケージをアップグレードしようとしていないことを確認してください。たとえば、libc6、X、KDE、またはGnomeをアップグレードしようとした場合は、すぐに中止します。同じソースパッケージから他のパッケージをアップグレードしようとする場合、通常は密に結合されているため、通常は問題ありません。バイナリパッケージが依存しているソースパッケージを確認するには、次のようにします。
apt-cache showsrc packagename
多くのものがGNU Cライブラリ(libc6)に依存しているため、これは以前は問題でした。最近では、APIは安定しているようです。そのため、アップグレードしなくても済むようになりました。パッケージが安定版の実行時の依存関係を満たしていても、正しく機能しない場合は、バグを報告してください。パッケージャがバグではないとあなたに言った場合、それらは間違っています。:-)
テスト版、不安定版、または実験版から自分でパッケージをバックポートします。
上記のように、バックポートは1つのオプションですが、多くの場合、これらのパッケージは、不安定版、実験版、またはアップストリームのバージョンに比べて古くなっています。
多くの場合、これには再帰的な依存関係ビルドループタイプのものが必要になります。まず、ビルドの依存関係を取得する必要があります
apt-get build-dep packagename
依存関係の1つが十分に最近ではないためにこれが失敗した場合は、最初にその依存関係をバックポートする必要があります。これは、制御不能になってしまいます。2レベルを超える再帰を処理する必要がある場合は、通常、あきらめます。ただし、実際の依存関係は必ずしも述べられているほど厳密ではないことに注意してください。古いバージョンでも動作する場合があります。パッケージャは、動作するビルド(または実際にはランタイム)依存関係の最も古いバージョンを見つけようとしないことがよくあります。
対応するアップストリームからパッケージの可用性を確認します。これらはディストリビューションのバージョンと一致するのが理想的ですが、必要に応じて再構築できる場合もあります。
Testing / unstable / experimentalの最新のパッケージよりも新しいバージョンのソフトウェアのパッケージを作成します。これは比較的困難な場合がありますが、それでも時には驚くほど実行可能です。最初に注意すべきことは、すでにDebianにあるより新しいバージョンのパッケージをパッケージ化しようとしている場合、すでに大きな利点、つまり既存のパッケージで作業できるということです。するだけ
apt-get source packagename
そしてapt-get
、パッケージが存在するdebianサブディレクトリを含む、対応するソースパッケージをダウンロードします。さらに、最近では、このパッケージングはversonコントロールリポジトリ(gitはDebianで人気があるようです)内にあることが多く、安定したapt(現在は0.8.10.3)は、を起動しapt-get source
たときにこれがどこにあるかをわかりやすく示します
。パッケージャには、リリースされたパッケージに対応するよりも新しいバージョンのパッケージが含まれている可能性があるため、これを確認する必要があります。例えば。
$ apt-get source mercurial
Reading package lists... Done
Building dependency tree
Reading state information... Done
NOTICE: 'mercurial' packaging is maintained in the 'Svn' version control system at:
svn://svn.debian.org/python-apps/packages/mercurial/trunk
または、単に使用することもできます
apt-cache showsrc mercurial | grep Vcs
リポジトリを一覧表示します。
パッケージが
かなり古くなっている場合は、パッケージに変更を加え、適用されたパッチを更新する必要があるかもしれませんが、それでも通常は良い出発
点です。Debianは
、dpkg-source 3.0(キルト)形式に従ってキルトのパッケージ管理を標準化しているようで、パッチの更新に役立ちます。
最後に、
pgfのDebianパッケージをバックポートした実際の例を示します。pgfの最後のパッケージバージョンは2008年に2.00で、それ以来2.10がリリースされました。pgf(2.10)の最新の安定したバージョンに更新してくださいの説明と、パッチpgf:2.0 Debianパッケージに対するパッチのフォローアップバグを参照してください。結局のところ、pgfのDebianパッケージは非常にシンプルで、2.10パッケージの1行を変更して機能させるだけで済みました。私はすべてのリンティアの苦情も同様に鎮圧することになり
ましたが、それは厳密にオプションでした。