Установите конкретную версию пакета apt для конкретной версии Ubuntu - PullRequest
0 голосов
/ 27 сентября 2018

Я хочу установить пакет foo версия 1234 в Docker-контейнере.Я предпочитаю это последней версии, так как она всегда будет работать одинаково.

Так что мой Dockerfile имеет это:

RUN apt-get update && apt-get install -y foo=1234

Но базовый образ mongodb:4.0.2, который наслоен на Ubuntu xenial.

Когда я собираю образ, установка apt завершается неудачно, поскольку он не может найти эту версию.Я думаю, что xenial не поддерживает эту версию.

Итак, как мне найти последнюю поддерживаемую версию пакета foo для xenial?Если я запускаю apt policy foo, он показывает мне последнюю версию для Ubuntu, которую я использую (бионический), а не для xenial.

1 Ответ

0 голосов
/ 01 октября 2018

Если речь идет о пакете, скажем, rlwrap, вы можете просто взглянуть на веб-страницу https://packages.ubuntu.com/xenial/rlwrap

Но если вы хотите правильно получить информацию о версии программно, вы можетеположитесь на Launchpad API , который поставляется с официальным API-клиентом, реализованным в виде библиотеки Python .

В противном случае вы можете напрямую запросить API с помощью таких инструментов, как curl и jq (для анализа полученных данных JSON):

$ curl -fsSL "https://api.launchpad.net/1.0/ubuntu/+archive/primary?ws.op=getPublishedSources&source_name=rlwrap&exact_match=true&distro_series=https://api.launchpad.net/1.0/ubuntu/xenial" \
  | jq --raw-output ".entries | .[0] | .source_package_version"

→ 0.41-1build1

Как уже упоминалось в этом вопросе Askubuntu , аналогичный API существует и для Debian.

...