Рейтинг:1

Установите конкретную версию пакета через метапакет

флаг in

У меня есть мета-пакет для тензор который представляет собой просто список зависимостей для конкретных версий библиотек. Здесь контроль файл его:

Пакет: tensorrt
Источник: tensorrt (7.1.3-1+cuda10.2)
Версия: 7.1.3.4-1+cuda10.2
Архитектура: amd64
Сопровождающий: cudatools <[email protected]>
Установленный размер: 11
Зависит: libnvinfer7 (= 7.1.3-1+cuda10.2), libnvinfer-plugin7 (= 7.1.3-1+cuda10.2), libnvparsers7 (= 7.1.3-1+cuda10.2), libnvonnxparsers7 (= 7.1 .3-1+cuda10.2), libnvinfer-bin (= 7.1.3-1+cud
a10.2), libnvinfer-dev (= 7.1.3-1+cuda10.2), libnvinfer-plugin-dev (= 7.1.3-1+cuda10.2), libnvparsers-dev (= 7.1.3-1+ cuda10.2), libnvonnxparsers-dev (= 7.1.3-1+cuda10.2), libnvinfer-samples
 (= 7.1.3-1+cuda10.2), libnvinfer-doc (= 7.1.3-1+cuda10.2)
Раздел: мультивселенная/разработка
Приоритет: необязательно
Описание: Метапакет TensorRT
 Метапакет TensorRT.

Теперь, когда я хочу установить тензор он говорит:

Следующие пакеты имеют неудовлетворенные зависимости:
 tensorrt : зависит: libnvinfer-dev (= 7.1.3-1+cuda10.2), но необходимо установить 8.0.3-1+cuda11.3
            Зависит: libnvinfer-plugin-dev (= 7.1.3-1+cuda10.2), но нужно установить 8.0.3-1+cuda11.3
            Зависит: libnvparsers-dev (= 7.1.3-1+cuda10.2), но нужно установить 8.0.3-1+cuda11.3
            Зависит: libnvonnxparsers-dev (= 7.1.3-1+cuda10.2), но необходимо установить 8.0.3-1+cuda11.3
            Зависит: libnvinfer-samples (= 7.1.3-1+cuda10.2), но не будет установлен
E: Невозможно исправить проблемы, у вас есть сломанные пакеты.

Если мы возьмем конкретную библиотеку, например libnvinfer-dev, согласно с политика apt-кеша, у меня есть несколько версий:

(ubuntu-xenial-amd64)svc_moma_usr@PL1LXD-529389:/$ политика apt-cache libnvinfer-dev
libnvinfer-dev:
  Установлено: 7.1.3-1+cuda10.2
  Кандидат: 8.0.3-1+cuda11.3
  Таблица версий:
     8.0.3-1+cuda11.3 500
        500 http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64 Пакеты
     8.0.3-1+cuda10.2 500
        500 http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64 Пакеты
     8.0.1-1+cuda11.3 500
        500 http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64 Пакеты
     8.0.1-1+cuda10.2 500
        500 http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64 Пакеты
     8.0.0-1+cuda11.3 500
        500 http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64 Пакеты
     8.0.0-1+cuda11.0 500
        500 http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64 Пакеты
     8.0.0-1+cuda10.2 500
        500 http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64 Пакеты
 *** 7.1.3-1+cuda10.2 500
        500 https://repository.ttgroup.com/repository/rozbad-xenial xenial/main Пакеты amd64
        100 /var/lib/dpkg/status
     7.0.0-1+cuda10.2 500
        500 файлов:/var/nv-tensorrt-repo-cuda10.2-trt7.0.0.11-ga-20191216
        500 https://repository.ttgroup.com/repository/rozbad-xenial xenial/main Пакеты amd64

Как видите, мне удалось установить нужную версию явно с помощью apt установить libnvinfer-dev=7.1.3-1+cuda-10.2, хоть версия и старее, но установка этой версии невозможна через тензор мета-пакет, хотя и более старые версии там явно указаны. Как заставить APT установить этот пакет?

Я знаю, что можно изменить приоритеты в /etc/apt/preferences.d, но это делается на системном уровне, а я хочу указать APT устанавливать эти пакеты через контроль файл.

muru avatar
флаг us
Вы не можете, не только используя настройки зависимостей вашего метапакета
Piotr G avatar
флаг in
Как насчет обходного пути? Например, я знаю, что могу установить зависимости вручную с определенной версией. Когда в файлы пакетов debian (control.rules и т.д.) я мог добавить команду bash, в которой я устанавливаю пакеты, а не с механизмом разрешения зависимостей.
muru avatar
флаг us
Это также не сработает, так как система управления пакетами заблокирована во время установки, поэтому команды установки в сценариях сопровождающего не будут выполнены. Вы можете предоставить сценарий для установки вашего пакета, который затем может выполнять такие действия, как `apt-get install meta-pkg=x.y dep1=a.b dep2=c.d` и т. д., или поместить все зависимости в ваш репозиторий и добавить этот репозиторий с высоким приоритет булавки.
Piotr G avatar
флаг in
Спасибо. Но я мог запустить команды bash, содержащие `apt-get ...` перед установкой. Я не упомянул об этом изначально, но мне нужно установить tensorrt для сборки другого пакета с помощью sbuild, а установка tensorrt была запущена из debian/control. Возможно, я мог бы запустить эти команды `apt-get` до запуска установки tensorrt, но я не совсем уверен в порядке, в котором выполняются шаги `sbuild`. Моя идея состояла в том, чтобы переопределить sth. в `debian/rules`

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.