Как версионируются и совмещаются библиотеки из разных репозиториев

Давайте на примере btrfs-progs 4.19.1 и ffmpeg рассмотрим особенности сборки, версионирования пакетов и библиотек в дистрибутивах с продвинутой пакетной системой, то есть Deb или RPM, но не pacman или порты BSD (emerge из Gentoo имеет совсем иные принципы решения этих задач).

deb src: https://gitlab.com/nixtux-packaging/btrfs-progs/tree/master/btrfs-progs-4.19.1/debian
RPM src: https://abf.io/import/btrfs-progs
RPM binary: https://abf.io/build_lists/2957703

В приведенных примерах принцип упаковки и разделения на подпакеты идентичен.
Есть исходный пакет btrfs-progs, то есть исходные коды, расположенные по адресу https://github.com/kdave/btrfs-progs

Как можете наглядно видеть по ссылке «RPM binary: https://abf.io/build_lists/2957703» из одного исходного пакета собраны следующие бинарные, у каждого из которых стоит одинаковое значение %EVRD, то есть эпоха, версия, релиз и дистрибутив (в Альте %EVR вместо %EVRD в Росе):
— btrfs-progs
— libbtrfs0
— libbtrfsutil1
Читать далее Как версионируются и совмещаются библиотеки из разных репозиториев

Добавлено многопоточное сжатие XZ в RPM 5

В тестингах ROSA 2016.1 RPM 5, наученный упаковывать .rpm и .src.rpm, используя многопоточное сжатие xz.

Сжатие .src.rpm переведено с gzip на xz по умолчанию.
Сжатием .rpm был xz, он и остался, но стал многопоточным по умолчанию.

Пример проверки использованного в пакете сжатия:
Читать далее Добавлено многопоточное сжатие XZ в RPM 5

Какие исходные пакеты нужно пересобрать в Росе при обновлении библиотеки до новой мажорной версии

$ ( for i in $(urpmq --whatrequires libllvm6.0); do urpmq --sourcerpm "$i" | awk -F ': ' '{print $2}' | rev | cut -d '-' -f 3- | rev ; done ) | sort | uniq
ldc
lld
llvm
mesa

Более быстро работающий вариант, но ничего не выдает, если у хотя бы одного из пакетов в списке нет обратных зависимостей:
urpmq --whatrequires --sourcerpm lib64krb5_3 lib64kdb5_8 lib64kadm5srv_mit10 lib64kadm5clnt_mit10 lib64krad0 lib64krb5support0 lib64k5crypto3 lib64gssrpc4 lib64gssapi_krb5 | awk -F ': ' '{print $2}' | rev | cut -d '-' -f 3- | rev | sort -u

Обратите внимание, что при обновлении мажорной версии библиотеки, например, когда было lib64kdb5_8, а стало lib64kdb5_9, обратные зависимости нужно искать у старой версии, lib64kdb5_8.

Макрос %clang_gcc_wrapper в ROSA. Сборка RPM-пакетов компилятором Clang вместо GCC.

Начиная с версии 6.0.1-3 пакета llvm/clang в дистрибутиве ROSA Fresh есть макрос %clang_gcc_wrapper.
Читать далее Макрос %clang_gcc_wrapper в ROSA. Сборка RPM-пакетов компилятором Clang вместо GCC.

Сравниваем рецепты сборки пакетов в Haiku и Arch Linux.

Возьмем Audacity.

Haiku: https://github.com/haikuports/haikuports/blob/master/media-sound/audacity/audacity-2.1.2.recipe
Arch: https://git.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/audacity
Читать далее Сравниваем рецепты сборки пакетов в Haiku и Arch Linux.