Debianシステムを最新のパッケージで維持する方法は?


9

サーバーにインストールする「ソフトウェア」のほとんどは、最新のリリース(Java、Tomcat、MySQL-Cluster)である必要があります。だから、私は運が悪いので、ビルド済みのDebianパッケージ(ディストリビューション内)が利用可能です。したがって、すべてのソフトウェアはプロジェクトのウェブページからダウンロードされ、ソースからビルドされます。

今私の質問は、私のDebianシステムにそれらをインストールする正しい方法は何ですか?

私の主な問題は、それらをソースから直接インストールする場合、パッケージ管理(aptitudeを使用)に含まれていないことです。Checkinstallは、実際に使用することは推奨されていないようで、同等のものにも欠点があります。dh_makeとdpkg-buildpackageで自分のパッケージをビルドすることによってこれを処理する唯一の正しい方法はありますか?

常に最新バージョンが必要な場合はどうしますか?

回答:


10

より新しいパッケージが必要なことは、どのOSでもよくある問題です。Debianのリリースサイクルは近年平均して2年であり、このサイクルの終わりに向かって、それはおそらくより差し迫った問題です。これを軽減する1つの方法は、次のバージョンがほぼ安定している安定したリリースサイクルの終わり頃にテストに移行することです。それがテストに関してより一般的に安定について話しているのか、それとも不安定について話しているのかという質問からは明らかではありません。いずれにせよ、最新バージョンがまだパッケージ化されていない可能性があるため、不安定な状態で実行している場合でも、最新バージョンがあると問題になる可能性があります。Debian開発者/パッケージャはボランティアなので、退屈したり、他のことに忙しくなり、結果としてパッケージが衰弱する可能性があります。

簡潔さと具体性のために、私は以下の計画ではパッケージを安定版にバックポートすることを想定していますが、より一般的に適用されます。したがって、安定した状態で存在しない最新バージョンのソフトウェアがおおよその順序で必要な場合は、次のようにします。

  1. Debianバックポートでパッケージを探します。時には、目的を満たすのに十分新しいパッケージを見つけることができます。ただし、これらのパッケージは、不安定版、実験版、またはアップストリームのバージョンと比較して古くなっていることがよくあります。

  2. テスト版、不安定版、または実験版から直接パッケージをインストールしてみてください。安定版がインストールしようとしているどのバージョンからもほとんど逸脱していない場合、これでうまくいくかもしれません。システムが最新のバージョンから基本パッケージをインストールまたはアップグレードしようとする場合、このアプローチが悪いアプローチであることがわかります。不安定版からインストールしようとしているとします。

    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は安定しているようです。そのため、アップグレードしなくても済むようになりました。パッケージが安定版の実行時の依存関係を満たしていても、正しく機能しない場合は、バグを報告してください。パッケージャがバグではないとあなたに言った場合、それらは間違っています。:-)

  3. テスト版、不安定版、または実験版から自分でパッケージをバックポートします。

    上記のように、バックポートは1つのオプションですが、多くの場合、これらのパッケージは、不安定版、実験版、またはアップストリームのバージョンに比べて古くなっています。

    多くの場合、これには再帰的な依存関係ビルドループタイプのものが必要になります。まず、ビルドの依存関係を取得する必要があります

    apt-get build-dep packagename    
    

    依存関係の1つが十分に最近ではないためにこれが失敗した場合は、最初にその依存関係をバックポートする必要があります。これは、制御不能になってしまいます。2レベルを超える再帰を処理する必要がある場合は、通常、あきらめます。ただし、実際の依存関係は必ずしも述べられているほど厳密ではないことに注意してください。古いバージョンでも動作する場合があります。パッケージャは、動作するビルド(または実際にはランタイム)依存関係の最も古いバージョンを見つけようとしないことがよくあります。

  4. 対応するアップストリームからパッケージの可用性を確認します。これらはディストリビューションのバージョンと一致するのが理想的ですが、必要に応じて再構築できる場合もあります。

  5. 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行を変更して機能させるだけで済みました。私はすべてのリンティアの苦情も同様に鎮圧することになり ましたが、それは厳密にオプションでした。


最初の段落の最後の文は誤解を招く可能性があります。問題が時々しか発生しないことを明確にしてください。あなたが置く方法は、DDが一般的にそのようであるように思わせます。
tshepang

@シェパン:良い点。今大丈夫?
Faheem Mitha、2011

ええ、はるかに良いです。
tshepang

5

あなたは確かにあなた自身のパッケージを構築することができ、それはうまくいくでしょう。ただし、必要なものが利用できる場合は、最初にバックポートを使用することをお勧めします。

バックポートはDebianで管理されており、セキュリティアップデートを入手できます。


3

独自のパッケージを構築するのがよい方法です(IMHO)。Debianのパッケージのバージョンの古さと変更点によっては、パッケージの説明でソースtarballのファイル名を置き換えるのと同じくらい簡単で、最悪の場合でも独自のバージョンのテンプレートとして使用できます。


1

常に最新バージョンが必要な場合はどうしますか?

  1. すでに述べたように、使用するバックポート。

  2. Debianパッケージのごく一部のみがバックポートされているため、Debian Testingを使用することをお勧めします。安定性と最新性のバランスがよく、ローリングディストリビューションのようなものです。

  3. もう少し大胆であれば、Debian Unstableを使用してください。かなり安定していると言われています。他のディストリビューションの「安定した」リリースよりも安定していると主張する人もいます。とにかく、Unstableは新しいパッケージバージョンが通常上陸する場所です。彼らは通常、Testingに移行する前に、テストを可能にするために約10日間そこに座っています。

  4. これら2つを使用しても、最新のバージョンがない可能性があります。その場合は、Debian Experimentalをご覧ください。これは通常、新しいパッケージが通常のアーカイブ(不安定およびテスト)に対して破壊的すぎる場合に使用されます。

  5. それでもExperimentalに十分なソフトウェアバージョンがない場合は、UbuntuのPPAを参照してください。上記のすべてのアーカイブに欠けているソフトウェアバージョンよりも新しいソフトウェアバージョンを確認しました。ただし、UbuntuはDebianと100%互換性がないため、注意して使用してください(ただし、ほとんどの場合、問題はありません)。

  6. 上記失敗した場合、私はちょうど、独自のパッケージを構築推測述べたように


Debianの不安定版は他のディストリビューションの安定版よりも安定していると言っている人は、せいぜい冗談を言っています。不安定な変更は毎日行われ、安定したリポジトリは固定されています。不安定であってもクラッシュするわけではありませんが、開発者がパッケージに多くの変更を加えることを意味します。安定とは、それがリリースされ、セキュリティ修正のみが追加されることを意味します。私は不安定な実行中の奇妙なクラッシュは一度もありませんでした。アップグレード後、パッケージが壊れて依存関係の問題が発生するのを見ました。この文脈には「より安定した」ものはありません。変化するかしないか。
Arjan Drieman、2011年

@ArjanDrieman:実際、それらの人々は冗談を言っているわけではありません。
tshepang

彼らはまだせいぜい冗談です。私は人々がそれについて冗談を言うのを見ました。マイクロディストリビューションフレーム;-)私は長い間いくつかのディストリビューションを使用しており、他のいずれかを実行している奇妙なクラッシュは一度もありませんでした。それは無知、傲慢さ、偏見などなんかもかもしれませんが、冗談よりはましでしょうか。これらの不思議な「いくつか」は誰なのか教えてもらえますか?「いくつかは遠くまで行く」...それらはイタチ言葉です。回答、事実、または世論とあいまいな主張で何を望みますか?
Arjan Drieman、2011年

1
@Arjan Drieman:私は実際には不安定であることに同意し、その名前に「たまに」生きることができます。あなたは安定性を限界に近づくことと交換します、それがそうでないと主張する人は誰でもせいぜい不誠実です。全体的に驚くほど安定していますが、不安定は不安定性の最優先事項ではありません。「滑りやすい」言葉遣いに関しても、私はあなたに同意する傾向があります。絶対的/直接的な発言はすぐに攻撃されるため、これはほとんど防御メカニズムです。
JMベッカー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.