neue Bibliothek hinzugefügt, alte herumhängen

7

In Ubuntu 12.04 habe ich die Quelle für eine Geodatenbibliothek, gdal-1.11.0, in ~ / src heruntergeladen, konfiguriert und anscheinend erfolgreich kompiliert. Neue Dateien wie z. B. wurden libgdal.ain / usr / local / lib abgelegt.

Wenn ich jedoch ein Programm ausführe, das davon abhängt,

$ ogrinfo --formats

Ich bekomme

ERROR 1: ogrinfo was compiled against GDAL 1.11 but current library version is 1.10

Anscheinend habe ich die ältere Version von GDAL nicht entfernt. Wie soll ich das machen

Einige Infos zu meinem System:

$ uname -a
Linux ubuntu 3.11.0-15-generic #25~precise1-Ubuntu SMP Thu Jan 30 17:39:31 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
user1416227
quelle

Antworten:

3

Anscheinend habe ich die ältere Version von GDAL nicht entfernt. Wie soll ich das machen

Der Versuch make uninstallist eine vernünftige Option, wenn Sie die Quellen beibehalten haben. Dies ist eine gute Vorgehensweise, wenn Sie lokale Installationen durchführen.

Eine einfache Alternative besteht darin, alle alten und neuen Dateien zu entfernen und die neue neu zu installieren.

Ich muss mich jedoch fragen, warum Sie von der Quelle installieren, wenn das Paket unter Debian und daher unter Ubuntu verfügbar ist. Wenn Sie eine ältere Version / Version von Ubuntu verwenden und keine geeigneten PPAs verfügbar sind, beachten Sie, dass das Backportieren von einer neueren Version / Version von Ubuntu möglich und in den meisten Fällen nicht schwierig ist.

Die aufgelisteten Build-Abhängigkeiten von GDAL 1.11 in Debian sind

Build-Depends: debhelper (> = 9), dh-autoreconf, zlib1g-dev, libnetcdf-dev (> = 1: 4.0.0), netcdf-bin, libjasper-dev, libpng-dev, libjpeg-dev, libgif- dev, libwebp-dev, libhdf4-alt-dev [! ppc64], libhdf5-dev (> = 1.8.8), libpcre3-dev, libpq-dev, libxerces-c-dev, unixodbc-dev (> = 2.2.11 ), Sauerstoff, d-shlibs, libgeos-dev, libmysqlclient-dev, dh-python, python-all-dev (> = 2.6.6-3 ~), python-numpy, python3-all-dev, python3-numpy, libcurl4-gnutls-dev | libcurl-ssl-dev, libsqlite3-dev, libogdi3.2-dev, chrpath, swig, patch, libexpat1-dev, libproj-dev, libdap-dev, libxml2-dev, libspatialite-dev (> = 2.4.0 ~ rc2- 4), libepsilon-dev (> = 0.9.1-1 ~), libpoppler-private-dev, liblzma-dev, libopenjpeg-dev, libarmadillo-dev, libfreexl-dev (> = 1.0.0), libkml-dev ( > = 1.3.0 ~), liburiparser-dev, default-jdk, ant

das sieht nicht schlecht aus. Um klar zu sein, besteht die Idee hier darin, Debian / Ubuntu-Quellen in Ihrer Version neu zu erstellen. Wenn Sie Tipps oder weitere Details wünschen, kann ich näher darauf eingehen.

Hier sind die Versionen von GDAL, die in Debian verfügbar sind.

$ apt-cache policy libgdal1-dev
libgdal1-dev:
  Installed: (none)
  Candidate: 1.9.0-3.1
  Version table:
     1.11.0+dfsg1-1~exp2 0
          1 http://debian.lcs.mit.edu/debian/ experimental/main amd64 Packages
     1.10.1+dfsg-6 0
         50 http://debian.lcs.mit.edu/debian/ testing/main amd64 Packages
         50 http://debian.lcs.mit.edu/debian/ unstable/main amd64 Packages
     1.9.0-3.1 0
        500 http://debian.lcs.mit.edu/debian/ wheezy/main amd64 Packages
     1.6.3-4+b1 0
        500 http://debian.lcs.mit.edu/debian/ squeeze/main amd64 Packages
Faheem Mitha
quelle
Ich muss von der Quelle installieren, da ich Unterstützung für FileGDB einschließen möchte (vielleicht mehr als Sie wissen möchten, aber bevor makeich es ausführe configure --with-fgdb=/usr/local/FileGDB_API --with-pg=/usr/bin/pg_config). Die Version 1.10 wurde jedoch nicht von mir kompiliert, ich habe es auf einfache Weise gemacht und sie nur mit apt-get abgerufen, oder vielleicht wurde sie als Abhängigkeit abgerufen, ich erinnere mich nicht. Wenn ich make uninstall ausführe, wird die Version 1.10 nicht deinstalliert, oder? Sie schlagen vor, "alle Dateien zu entfernen, die sich auf diese Bibliothek beziehen". Welche Dateien sind das?
user1416227
Sie müssen dafür nicht von der Quelle installieren. Ändern Sie einfach den Befehl, den Debian für die Kompilierung verwendet. Sie finden es in der Datei debian/rules.
Faheem Mitha
Dies hätte den unglücklichen Nebeneffekt, dass Sie abhängig von einem lokal installierten Paket ein binäres Systempaket haben, aber ich werde es niemandem sagen, wenn Sie dies nicht tun.
Faheem Mitha
Interessant. Wo finde ich die Datei debian/rules?
user1416227
2
Okay. Ich habe Ihren einfachsten Vorschlag angenommen, "alle Dateien, die sich auf die Bibliothek beziehen, zu entfernen und dann neu zu installieren". Also habe ich diese Befehle erfolgreich ausgeführt, wodurch der Fehler beseitigt wurde: Zuerst, $ sudo apt-get remove python-gdal python3-gdal libgdal1h libgdal1-dev libgdal-perl libgdal-java libgdal-doc libgdal-dev gdal-bindann $ sudo make installvom Quellcode für gdal-1.11.0 und $ sudo ldconfiganschließend $ ogrinfo --formatskein Fehler erzeugt. Die längere Liste der Pakete, die ich entfernen musste, fand ich unter packages.debian.org/source/sid/gdal
user1416227
6

Die Datei libgdal.awird nur verwendet, wenn Sie ogrinfoohne Verwendung gemeinsam genutzter Bibliotheken einen Link dazu erstellen . Wenn dies ogrinfoauf diese Weise verknüpft wäre (ohne gemeinsam genutzte Bibliotheken), würde der Fehler nicht angezeigt, da die Bibliothek (Version 1.11) Teil der ausführbaren Datei wäre.

Was Sie versuchen sollten, ist laufen

sudo ldconfig

Nach dem Kompilieren und Installieren der neuen Version von gdalsollte dies das System (in dem Version 1.10 bereits als gemeinsam genutzte Bibliothek geladen ist) darüber informieren, dass eine neue Version verfügbar ist.

Anthon
quelle
Ich rannte sudo ldconfig, wiederholte es dann ogrinfo --formatsund bekam den gleichen Fehler.
user1416227
Können Sie anhand der Ausgabe der Kompilierung / Installation sehen, wo die neue libdalXXXX.soBibliothek kopiert wurde ? Sie können dann versuchen, export LD_DEBUG=fileszu sehen, welche vor dem Startogrinfo
Anthon
Ich habe mein Problem gelöst (Details in Kommentaren zu @ faheem-mitha), indem ich alte GDAL-Bibliotheken entfernt, die neue GDAL neu kompiliert und dann sudo ldconfigwie von Ihnen vorgeschlagen ausgeführt habe.
user1416227
@ user1416227 Ich bin froh, dass es behoben wurde.
Anthon
Dies ist die richtige Antwort. Wenn Sie alte Versionen von ogr2ogr oder GDAL haben und eine neue Version installiert haben, z. B. durch Kompilieren mit HAND, sudo ldconfigsollte sie auf die neue Bibliothek verweisen und funktionieren.
George Silva