패키지 설치 및 종속성 - 기존 라이브러리가 설치되는 것을 방지하는 방법은 무엇입니까?

패키지 설치 및 종속성 - 기존 라이브러리가 설치되는 것을 방지하는 방법은 무엇입니까?

저는 비교적 새로운 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(물론 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 패키지를 어디서 구할 수 있나요?"입니다.

두 질문에 대한 대답은 두 가지의 새 버전이 약 한 달 후에 출시될 곧 출시될 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 패키지를 다시 컴파일하는 것입니다. 여기에는 이 두 패키지가 의존하는 다른 패키지의 소스 패키지를 다운로드하고 다시 컴파일하는 작업이 포함될 수 있습니다(또한 이러한 추가 패키지는 다시 컴파일해야 하는 종속성을 업데이트할 수도 있습니다... 등). 일반적으로 이러한 패키지를 백포트하려면 적절한 고정을 사용하는 것보다 더 많은 작업이 필요합니다.

관련 정보