
Это просто путь установки? Если это так, то любой пакет, имеющий версию в имени/пути, никогда не обновит другой, так что это не может быть так. Я не вижу упоминания об этом в информации о зависимостях вручную. При создании RPM, как мне сообщить cAPI-3.1.6-x86_64.rpm, что он должен обновить cAPI-2.1.7-x86_64.rpm, когда я его устанавливаю, а не создавать новый путь в /usr/lib и игнорировать существующий пакет?
решение1
В целом согласен с@msuchyчто соответствующей функцией является сочетание пакетаимяиархитектура, это поможет дать некоторый обзор.
Место, где следует искать информацию, — это не «обновление», аустановка нескольких версийиз пакета:
Несколько установленных версий(на rpm.org) дает хороший обзор:
Все инструменты управления пакетами работают с использованием определенных ключей для ссылки на пакеты/программы. Обычно этот ключ — package имя или пакет имя и пакет арка
То есть, есть два варианта (обычно): имя пакета само по себе или имя пакета в сочетании с архитектурой. Далее говорится
Пакеты ядра создаются специально таким образом, чтобы не допускать конфликтующих файлов между версиями ядра.
То есть ядра обрабатываются по-особому, поскольку известно (разработчикам пакетов), что все файлы в пакете ядра Linux имеют разные имена (либо имена файлов имеют встроенную версию, либо файлы находятся в каталогах со встроенной версией). Это один особый случай. Слишком много особых случаев усложняют работу для сопровождающих RPM.
Далее показано, как пакеты для программ с долгосрочно стабильными версиями создаются с использованием этих номеров версий как части пакета.имя, тем самым позволяя устанавливать несколько версий программы на одной машине. Приведенный пример относится к python. Другие программы, которые вы можете увидеть, используют ту же схему, включают apache, autoconf, gcc, java. Вот несколько примеров из Fedora22:
SDL2-2.0.3-5.fc22.x86_64
openjpeg2-2.1.0-6.fc22.x86_64
pygobject2-2.28.6-13.fc22.x86_64
pygobject3-3.16.2-1.fc22.x86_64
pygobject3-base-3.16.2-1.fc22.x86_64
python3-3.4.2-6.fc22.x86_64
qt5-qtbase-5.5.0-15.fc22.x86_64
vte291-0.40.2-1.fc22.x86_64
vte3-0.36.4-1.fc22.x86_64
webkitgtk3-2.4.9-1.fc22.x86_64
webkitgtk4-2.8.5-2.fc22.x86_64
Когда вы видите эти пакеты, легко запутаться, какие цифры являются частью названия пакета, а какие — его частью.версияивыпускать. RPM использует тире ( -
) для их разделения: если тире нет, то число является частью имени.
решение2
Это %{name}.%{arch}
комбинация. Если она одинаковая, то это обновление. Если она отличается, то это другая установка.
То есть вы можете иметь cAPI-3.1.6-x86_64
и cAPI-3.1.6-i386
установленными одновременно. Но вы не можете иметь cAPI-3.1.6-x86_64
и cAPI-2.1.7-x86_64
на одной системе (если вы не делаете действительно грязных трюков).