パッケージのインストールと依存関係 - 既存のライブラリがインストールされるのを防ぐ方法は?

パッケージのインストールと依存関係 - 既存のライブラリがインストールされるのを防ぐ方法は?

私は比較的新しいUbuntuサーバーユーザーなので、私は学び続けています。私がインストールしているパッケージ(QGIS)に問題があります。このパッケージにはいくつかの依存関係があり、そのうちの1つがgdalライブラリです。私が使用しているインストーラ(apt、synaptic、またはaptitude)に関係なく、このパッケージはかなり古いgdalバージョン1.7.3(現在の安定バージョンは1.9.1)をインストールします。まだ最新バージョンのgdalをビルド/コンパイルしていない場合は、自分でビルド/コンパイルすることに問題はありませんでした(いくつかの一般的なラスター形式のサポートを含めることができるようにこれを選択しました)。

と入力すると、dpkg --list2つのライブラリが並んでいることがわかりますが、古いライブラリは望ましくありません。わずかな修正後にシナプティックを使用し、インストール中にgdal依存関係を手動で無効にし、コンパイルされたgdal 1.9.1バージョンが実行を開始しました。 QGISが最初から最後のバージョンを使用しないのはなぜですか?

また、Linuxに依存関係をインストールする必要があるかどうかを確認する方法はありますか?または、インストール後に特定のパッケージが使用するライブラリを変更する方法はありますか?

答え1

各 deb パッケージには、インストール前に満たす必要がある依存関係のリストがあります。 debファイルのリスト依存関係を使用できますdpkg --info path_to.deb。例は次のとおりです。

 new debian package, version 2.0.
 size 5800810 bytes: control archive=2527 bytes.
    1301 bytes,    20 lines      control              
    3074 bytes,    41 lines      md5sums              
     721 bytes,    22 lines   *  postinst             #!/bin/sh
     637 bytes,    18 lines   *  postrm               #!/bin/sh
 Package: qgis
 Version: 1.8.0~precise1
 Architecture: i386
 Maintainer: Quantum GIS developers <[email protected]>
 Installed-Size: 10374
 Depends: libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), libgdal1-1.7.0, libgsl0ldbl (>= 1.9), libpq5, libproj0, libqgis1.8.0, libqt4-network (>= 4:4.5.3), libqt4-sql (>= 4:4.5.3), libqt4-svg (>= 4:4.5.3), libqt4-xml (>= 4:4.5.3), libqtcore4 (>= 4:4.8.0), libqtgui4 (>= 4:4.8.0), libqtwebkit4 (>= 2.2~2011week36), libqwt5-qt4, libspatialite3 (>= 3.0.0~beta20110817), libsqlite3-0 (>= 3.5.9), libstdc++6 (>= 4.6), qgis-providers (= 1.8.0~precise1), qgis-common (= 1.8.0~precise1)
 Recommends: qgis-plugin-globe, qgis-plugin-grass, python-qgis
 Suggests: gpsbabel
 Conflicts: uim-qt3
 Section: science
 Priority: extra
 Homepage: http://qgis.org/
 Description: Geographic Information System (GIS)
  A Geographic Information System (GIS) manages, analyzes, and displays
  databases of geographic information. Quantum GIS (QGIS) supports shape file
  viewing and editing, spatial data storage with PostgreSQL/PostGIS, projection
  on-the-fly, map composition, and a number of other features via a plugin
  interface. QGIS also supports display of various georeferenced raster and
  Digital Elevation Model (DEM) formats including GeoTIFF, Arc/Info ASCII Grid,
  and USGS ASCII DEM.

最も重要なのは、「依存先」セクションにパッケージのリストと、パッケージをインストールするためにインストールする必要がある対応するバージョンが含まれていることです。各パッケージには、正確なバージョン、最小バージョン、または最大バージョンに関する情報が含まれている場合があります。

上記のようにqgis必須ですlibgdal1-1.7.0(バージョンではなく名前です)。 Ubuntuリポジトリにあるこのパッケージの現在のバージョンは次のとおりです1.7.3-6ubuntu3(パッケージの最小バージョンは提供されていません!)。

./configure && make && make installソース(または同様のもの)からライブラリをコンパイルするときは、パッケージのバイナリをシステムディレクトリに配置します。しかし、apt、synaptic、またはaptitudeを介してパッケージをインストールすると、バイナリを気にしません。彼らはインストールされたパッケージインデックス(どこかにあります/var/)を使用しており、ソースからライブラリをインストールしたことを知らないので、すべての依存関係をインストールしています。ツールがシステムに存在することを認識させるには、gdalコンパイルされたソースコードからdebパッケージを準備し、dpkgを使用してインストールできます。 Debian Wikiにはこれに関するチュートリアルがあります。しかし、そのようなパッケージを準備しても、パッケージ管理ツールはまだ名前のあるパッケージを探しますlibgdal1-1.7.0(もちろんgdal1.9.1でパッケージを準備して名前を付けることができますが、libgdal1-1.7.0これは良い考えではありません。新しいバージョンではAPIが変更され、qgis競合が発生する可能性があります) .)

なぜqgis古いものを使用するのですgdalか?

Ubuntuはリリースサイクルが長いため、パッケージリポジトリが凍結した場合は、何らかの理由で以前のバージョンのパッケージを使用する方が良い考えかもしれません。それとも誰も新しいバージョンを準備したくないでしょうか? ;)

依存関係リストを変更する方法はありますか?

はい。選択したパッケージをダウンロードし、変更された依存関係のリストに再パッケージできます。

mkdir tmp
dpkg -x package.deb ./tmp
dpkg -e package.deb

nano ./tmp/DEBIAN/control and change dependency list
mkdir ./build
dpkg-deb -b ./tmp ./build

これは可能ですが、グローバルにインストールされたパッケージのリストが一貫していないため、後でソフトウェアをインストールする際にいくつかの問題が発生する可能性があります。

答え2

場合によっては、ソースから新しいバージョンをコンパイルすることが問題に対する唯一の解決策ですが、通常は必ずしも必要でない限り、これを実行しないことをお勧めします。パッケージシステムを迂回することは、多くの長期的な問題に対する短期的な解決策を得ることを意味することがよくあります。最新バージョンのgdalを/usr/localにコンパイルしてインストールした場合は、gqisもコンパイルする必要があります。

より良い質問は、「Ubuntu用の更新されたgdalライブラリパッケージをどこで入手できますか?」です。次の質問は、「Ubuntuコンパイル用のgqisパッケージをどこで入手できますか?」です。

2つの質問に対する答えは、2つの新しいバージョンが約1ヶ月後にリリースされるとすぐにリリースされるUbuntuの「Quantum」バージョンにパッケージされていることです。現在、Quantalは次のバージョンで利用できます(ただし、リリース時に変更される可能性があります)

http://packages.ubuntu.com/qualal/qgis (1.7.4+1.7.5~20120320-1.1)
http://packages.ubuntu.com/qualal/libgdal1 (1.9.0-3 Ubuntu 3)

aptはUbuntu PreciseとUbuntu Quantalのパッケージを認識するように設定できますが、デフォルトではPreciseのパッケージを好みます。これにより、特定のパッケージの量子バージョンを強制的にインストールできます。

ここまたは姉妹サイトで検索してください。https://askubuntu.com/「APT固定」の場合は、どのように実行するかをご覧ください。https://askubuntu.com/questions/103320/install-packages-from-newer-release-without-building-apt-pinning例えば。

このように、最新バージョンのUbuntuから最新のパッケージをインストールすると、指定しない場合でも他のパッケージがアップグレードされる可能性があります。インストールするパッケージが最新バージョンの他のパッケージに依存する場合も同様です。これらの依存関係をインストールする唯一の方法は、依存関係もインストールすることです。

別のオプションはバックポートすることです。つまり、Quantalからlibgdal1とgqisのDebian化されたソースをダウンロードし、Preciseパッケージを再コンパイルすることです。これには、これら2つのパッケージが依存する他のパッケージのソースパッケージをダウンロードして再コンパイルすることも含まれます(これらの追加パッケージは、再コンパイルする必要がある依存関係を更新することもできます...など)。通常、これらのパッケージをバックポートするには、適切な固定を使用するよりも多くの作業が必要です。

関連情報