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

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

私は比較的新しい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

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

おすすめ記事