저는 비교적 새로운 Ubuntu 서버 사용자이므로 계속해서 배우고 있습니다. 제가 설치하고 있는 패키지(QGIS)에 문제가 있습니다. 이 패키지에는 여러 종속성이 있으며 그 중 하나가 gdal
라이브러리입니다. 내가 사용하는 설치 관리자(apt, synaptic 또는 aptitude)에 관계없이 이 패키지는 다소 오래된 gdal 버전 1.7.3(현재 안정 버전은 1.9.1)을 설치합니다. 아직 최신 버전의 gdal을 빌드/컴파일하지 않았다면 직접 빌드/컴파일하는 데 아무런 문제가 없었을 것입니다(몇 가지 흔하지 않은 래스터 형식에 대한 지원을 포함할 수 있도록 이 작업을 선택했습니다).
을 입력하면 dpkg --list
두 라이브러리가 나란히 존재하는 것을 볼 수 있지만 이전 라이브러리는 원하지 않습니다. 약간의 수정 후에 시냅틱을 사용하고 설치 중에 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를 사용하여 설치할 수 있습니다. 데비안 위키에는 이에 대한 튜토리얼이 있을 것입니다. 그러나 그러한 패키지를 준비하더라도 패키지 관리 도구는 여전히 이름이 있는 패키지를 찾습니다 libgdal1-1.7.0
(물론 gdal
1.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 패키지를 어디서 구할 수 있나요?"입니다.
두 질문에 대한 대답은 두 가지의 새 버전이 약 한 달 후에 출시될 곧 출시될 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우분투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의 데비안화된 소스를 다운로드하고 Precise 패키지를 다시 컴파일하는 것입니다. 여기에는 이 두 패키지가 의존하는 다른 패키지의 소스 패키지를 다운로드하고 다시 컴파일하는 작업이 포함될 수 있습니다(또한 이러한 추가 패키지는 다시 컴파일해야 하는 종속성을 업데이트할 수도 있습니다... 등). 일반적으로 이러한 패키지를 백포트하려면 적절한 고정을 사용하는 것보다 더 많은 작업이 필요합니다.