Debianシステムを最新のパッケージで最新の状態に保つにはどうすればよいですか?

Debianシステムを最新のパッケージで最新の状態に保つにはどうすればよいですか?

サーバーにインストールするほとんどの「ソフトウェア」は、最新バージョン(Java、Tomcat、MySQL-Cluster)でなければなりません。だから私は事前に構築されたDebianパッケージを(配布版で)利用できるほど幸運だったことはありません。したがって、すべてのソフトウェアはプロジェクトのWebページからダウンロードされ、ソースコードでビルドされます。

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

私の主な問題は、ソースから直接インストールするときにパッケージ管理(適性を使用して)に含まれないことです。 Checkinstallは実際には推奨されないようで、Equivには欠点があります。この問題を処理する唯一の正しい方法は、dh_makeとdpkg-buildpackageを使用して独自のパッケージを構築することですか?

常に最新バージョンが必要な場合はどうすればよいですか?

ベストアンサー1

ソフトウェアパッケージを更新しようとするのは、すべてのオペレーティングシステムでよく見られる問題です。 Debian のリリースサイクルは近年の平均 2 年であるため、このサイクルの終わりにはこれがより緊急の問題になる可能性があります。これを軽減する1つの方法は、次のバージョンがほぼ安定しているときに安定したリリースサイクルの終わりにテストすることです。テストおよび/または不安定性についてより広範に話しているかどうかは、質問では明確ではありません。それにもかかわらず、最新バージョンがまだパッケージ化されていない可能性があるため、不安定に実行されても最新バージョンを持つことは問題になる可能性があります。 Debian 開発者/パッケージはボランティアなので、退屈したり他のことで忙しくなったりしてパッケージが中断される可能性があります。

簡単で具体的にするために、将来の計画はパッケージを安定したリリースにバックポートすることを前提としていますが、これはより一般的な場合に適用されます。したがって、安定したバージョンにない最新バージョンのソフトウェアが必要な場合は、おおよその順序で次の操作を行います。

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

  2. テスト、不安定、または実験から直接パッケージをインストールしてみてください。安定版がインストールするバージョンと大きく異なる場合は、この方法が機能する可能性があります。システムが最新バージョンで基本パッケージをインストールまたはアップグレードしようとすると、このアプローチが悪いことがわかります。不安定なバージョンからインストールしようとすると

    apt-get install packagename/unstable
    

    最初に試してみることです。これは不安定なバージョンの追加パッケージが必要なため、安定したバージョンpackagenameでは通常失敗します。これが何を意味するのかわからない場合は、行って読んでくださいman apt_preferences。引き続き不安定な依存関係を追加して、基本パッケージをアップグレードしようとしていないことを確認してください。たとえば、libc6、X、KDE、Gnomeのアップグレード試行が開始されたらすぐに停止します。通常、パッケージは互いに密接に結合されているため、同じソースパッケージから別のパッケージをアップグレードしようとすると通常問題はありません。バイナリパッケージが依存するソースパッケージを確認するには、次の手順を実行します。

    apt-cache showsrc packagename
    

    多くのものがGNU Cライブラリ(libc6)に依存していたので、これは問題になりました。最近はAPIが安定しているようで、今では通常アップグレードする必要はありません。パッケージがstableへのランタイム依存関係を満たしていてもまだ機能していない場合は、バグを報告してください。パッケージャがこれがバグではないと言うならば、彼らは間違っています。 :-)

  3. テスト、不安定、または実験的なリリースのパッケージを直接バックポートします。

    前述のように、バックポーティングはオプションですが、これらのパッケージは不安定、実験的、またはアップストリームバージョンよりも古いことがよくあります。

    通常、再帰的な依存関係のビルドループ型が必要です。まず、ビルドの依存関係を取得する必要があります。

    apt-get build-dep packagename    
    

    依存関係の1つが十分に新しくないために失敗した場合は、まずその依存関係をバックポートする必要があります。これは手から離れることができます。 2つ以上の再帰レベルを処理する必要がある場合は、通常、あきらめます。しかし、実際の依存関係は、指定されたほど厳密である必要はありません。以前のバージョンが機能する可能性があります。パッケージャは通常、動作するビルド(または実際にはランタイム)依存関係の最も古いバージョンを見つけることを試みません。

  4. そのアップストリームでパッケージの可用性を確認してください。理想的にはディストリビューションと一致しますが、必要に応じて再構築できます。

  5. Testing/Unstable/experimentalで、最新のパッケージよりも最新のソフトウェアバージョン用のパッケージを作成します。これは比較的難しいかもしれませんが、時には驚くほど実行可能です。最初に注目すべき点は、Debianにすでに存在するパッケージのアップデートバージョンをパッケージ化しようとすると、既存のパッケージをすでに使用できるという点で大きな利点を持ち始めることです。ただ

    apt-get source packagename
    

    そして、apt-getパッケージを含むdebianサブディレクトリを含む対応するソースコードパッケージがダウンロードされます。また、このパッケージはいくつかのバージョン管理リポジトリ(gitはDebianで人気があるようです)とstable 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(キルト)形式、パッチを更新するのに役立ちます。

    バックポート方式の実際の事例で仕上げます。Debian パッケージ~の PGF。 pgfの最後のパッケージバージョンは2008年2.00で、その後2.10がリリースされました。の議論を参照してください。最新の安定版pgf(2.10)にアップデートしてください。、そしてその後のエラーパッチ、pgf:2.0 Debian用パッチパッケージ。 pgfのDebianパッケージングは​​非常に簡単であることがわかりました。 2.10 パッケージングで 1 行だけ変更すると動作するようになりました。ついにすべてと和解しました。 リンティアン苦情もありますが、これは完全にオプションです。

おすすめ記事