Установка пакета и зависимости - как предотвратить установку существующих библиотек?

Я действительно не понимаю ясно, какие части входа являются переменными и которые являются постоянными. Предположим, Type является переменным и default, super константы, можно использовать следующее sed сценарий

s:<\([^>]\+\)>default</\1>:<\1>super</\1>:
3
10.09.2018, 14:06
2 ответа

Каждый 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 <qgis-developer@lists.osgeo.org>
 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 repo 1.7.3-6ubuntu3 (заметьте, что минимальная версия пакета не обеспечивается!).

Когда Вы компилируете тот lib из источников (./configure && make && make install или что-то как этот), Вы помещаете двоичные файлы того пакета в системных каталогах. Но когда Вы устанавливающий пакет через способный, синаптическое или способность они не заботятся о двоичных файлах. Они используют установленный индекс пакетов (где-нибудь в /var/) и они не знают, что Вы установили ту библиотеку из источников, таким образом, они устанавливают все зависимости. Для создания это оснащает знающий, что существует gdal в системе Вы могли подготовить deb пакет от скомпилированного исходного кода и установить его с помощью dpkg. Должно быть некоторое учебное руководство об этом на Wiki Debian. Но даже когда Вы готовитесь, такие инструменты управления пакета пакета все еще будут искать пакет с именем libgdal1-1.7.0 (конечно, Вы могли подготовить пакет с gdal 1.9.1 и имя это libgdal1-1.7.0, но это не хорошая идея - могли быть некоторые изменения API в более новой версии, и это возможно это qgis откажет или что-то вроде этого).

Почему qgis использует старый gdal?

Ubuntu имеет долгий цикл выпуска, поэтому когда пакет repo был заморожен, это могла быть лучшая идея по некоторым причинам использовать более старую версию этого пакета. Или возможно нет никого готового подготовить новую версию?;)

Существует ли способ изменить список зависимости?

Да. Можно загрузить выбранный пакет и переупаковать его с измененным списком зависимости:

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
27.01.2020, 21:20

Иногда компиляция более новой версии из источника является единственным возможным решением проблемы, но, как правило, лучше избегать его, если это не абсолютно необходимо. Обход системы пакета обычно означает получать краткосрочную фиксацию для большого количества долгосрочной боли. И если Вы компилируете и устанавливаете более новую версию gdal в, скажем,/usr/local затем, необходимо скомпилировать gqis также.

Лучший вопрос был бы: "Где я могу получить более новый gdal пакет библиотеки для Ubuntu?" следовал "и где я могу получить gqis пакет для Ubuntu, скомпилированной для использования его?"

Ответ на оба этих вопроса - то, что более новые версии обоих упаковываются в предстоящей 'quantal' версии Ubuntu, должной быть выпущенной приблизительно за месяц. В настоящее время quantal имеет следующие версии (но это, вероятно, изменится к тому времени, когда он выпущен),

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

Возможно настроить склонный так, чтобы это знало о пакетах и из Точной Ubuntu и из Ubuntu Quantal, но предпочесть пакеты от Точного по умолчанию. Это позволило бы Вам вынуждать quantal версии определенных пакетов быть установленными.

Ищите здесь или на родственных сайтах как https://askubuntu.com/для "Прикрепления APT" для получения дополнительной информации о том, как сделать это - https://askubuntu.com/questions/103320/install-packages-from-newer-release-without-building-apt-pinning, например.

Обратите внимание, что установка более новых пакетов от более новой версии Ubuntu как это может заставить другие пакеты быть обновленными, даже если бы Вы не указывали их - если пакет, который Вы хотите установленный, зависит от более новых версий других пакетов, затем единственный способ удовлетворить те зависимости состоит в том, чтобы установить их также.

Другая альтернатива должна бэкпортировать - т.е. загрузить debianised источники для libgdal1 и gqis от Quantal и перекомпилировать пакеты для Точного. Это может включить загрузку и перекомпиляцию исходных пакетов для любых других пакетов, от которых зависят те два (и в свою очередь, те дополнительные пакеты, возможно, также обновили зависимости, которым нужна перекомпиляция... и так далее). Это - обычно намного больше работы для бэкпортирования пакетов как это, чем это должно использовать способное прикрепление.

2
27.01.2020, 21:20
  • 1
    Спасибо за полное объяснение вам обоим парни. Я думал о компиляции каждой зависимости из источника, но qgis имел так многих, я отчасти разочаровался в той идее hehe. Его иногда запутывающее нахождение правого репозитория с правильными пакетами/версиями. Btw..., если определенный пакет я нашел в 2 репозиториях..., какой предпочтен по другому? –  U2ros 12.09.2012, 11:08
  • 2
    Это - то, что прикрепление для - для определения, какой предпочтен. –  cas 12.09.2012, 11:19

Теги

Похожие вопросы