Вы можете указать конкретную версию для установки пакета следующим образом: apt-get install pkg=version
.
Но можете ли вы указать минимальную версию?
Например, мне нужен как минимум gcc 8, но меня вполне устроит gcc 9.
Что-то вроде этого (очевидно, не работает):apt-get install pkg>=version
решение1
Начиная с версии 1.9 (выпущенной 17 июня 2019 г.), вы можете использовать apt(-get) satisfy
:
sudo apt-get satisfy "foo (>= 1.0), bar (>= 2.0)"
Синтаксис строки зависимости описан здесь:
https://www.debian.org/doc/debian-policy/ch-relationships.html#синтаксис-полей-отношений
решение2
apt
Параметры пакетов позволяют пользователю выбирать среди различных версий пакета, о которых apt
он знает; они не позволяют пользователю указывать общие ограничения пакетов.
Самый простой подход к достижению желаемого — использовать equivs
. Запишите следующее в файл, скажем mingcc
:
Section: devel
Priority: optional
Standards-Version: 4.5.0
Package: gcc-8-or-later
Depends: gcc (>= 4:8)
Description: dependency package ensuring GCC 8 or later is installed
This meta-package ensures that GCC 8 or later is installed.
Затем соберите пакет:
equivs-build mingcc
Это сгенерирует пакет, gcc-8-or-later_1.0_all.deb
либо в текущем каталоге, либо в $TMP
. Вы можете установить его с помощью apt
:
apt install ./gcc-8-or-later_1.0_all.deb
Установка будет работать только при наличии GCC 8 или более поздней версии.
( gcc
Метапакеты в Debian и Ubuntu используют эпоху, в настоящее время 4, отсюда >= 4:8
.)