Transition to disttag — различия между версиями

Материал из ALT Linux Wiki
Перейти к: навигация, поиск
м (Проверка Conflicts: N < E:V-R (без disttag): записал результаты (впрочем, это неинтересный вариант))
м (Проверка Conflicts: N > E:V-R:D: дописал несколько случаев)
Строка 95: Строка 95:
 
====Проверка Conflicts: N > E:V-R:D====
 
====Проверка Conflicts: N > E:V-R:D====
  
=====Если ставится одновременно с пакетом N = E:V-R:D=====
+
В качестве примера пакета с таким Conflicts возьмём {{pkg|wireshark}}, известный из {{altbug|35930}}, но пересобранный так, чтобы в <code>Conflicts</code> попал disttag:
 +
 
 +
# rpm -qp /home/user/hasher/repo/x86_64/RPMS.hasher/wireshark-base-2.6.6-alt1.x86_64.rpm --conflicts
 +
libwiretap < 2.6.6-alt1:zzz+777
 +
libwiretap > 2.6.6-alt1:zzz+777
 +
# rpm -qp /home/user/hasher/repo/x86_64/RPMS.hasher/libwiretap-2.6.6-alt1.x86_64.rpm --conflicts
 +
# rpm -qp /home/user/hasher/repo/x86_64/RPMS.hasher/libwiretap-2.6.6-alt1.x86_64.rpm --provides
 +
libwiretap.so.8()(64bit) =
 +
set:ld8aYWy1b4sDqBG48DBFCfoLMB7ddqH0djoHz6nkgZxZg0U6Z4hcDibrGMxjeHecL0Im93t540UZhZkWksc6JQSTO5f5MsjHo0otcB67zHX9QF2Aib0Ju7PlbxYsbdSJXxzl9F0s39w1pgg5cHY2sOk4EayatUUDZE6rlcCvCChZdGIJymMi7r6HhL7fFnngAeD3W9u1aZ6XojbFT0s1B70TZma8q98f1K4wqAjqjV3yuVTgZwVQusUpqRSzmGE8AfCSuuYcPgn6ccnLwZJfEUcm30faIAHtdvZ1oARYoa0
 +
libwiretap = 2.6.6-alt1:zzz+777
 +
 
 +
В качестве примера пакета с конфликтом будет {{pkg|wireshark-base}}.
 +
В качестве пакета с <code>N = E:V-R:D</code> будет {{pkg|libwiretap}} с <code>libwiretap = 2.6.6-alt1:zzz+777</code>.
 +
 
 +
Это подпакеты одного исходного пакета, поэтому есть возможность в <code>Conflicts</code> вставить disttag той же самой сборки.
 +
 
 +
====={{ok}}Если ставится одновременно с пакетом N = E:V-R:D=====
 +
 
 +
# rpm -U /home/user/hasher/repo/x86_64/RPMS.hasher/{libwiretap,wireshark-base}-2.6.6-alt1.x86_64.rpm --test; echo $?
 +
0
 +
 
 +
====={{fail}}Если ставится одновременно с пакетом N = E:V-R:D1 (другим)=====
 +
 
 +
(Такой пакет возьмём из архива.)
 +
 
 +
$ curlftpfs -o allow_other,kernel_cache ftp://ftp.altlinux.org/pub/distributions/archive /home/user/MNT/ALT/repo
 +
# rpm -qp /home/user/MNT/ALT/repo/sisyphus/date/2019/01/18/x86_64/RPMS.classic/libwiretap-2.6.6-alt1.x86_64.rpm --provides
 +
libwiretap.so.8()(64bit) = set:ld8aYWy1b4sDqBG48DBFCfoLMB7ddqH0djoHz6nkgZxZg0U6Z4hcDibrGMxjeHecL0Im93t540UZhZkWksc6JQSTO5f5MsjHo0otcB67zHX9QF2Aib0Ju7PlbxYsbdSJXxzl9F0s39w1pgg5cHY2sOk4EayatUUDZE6rlcCvCChZdGIJymMi7r6HhL7fFnngAeD3W9u1aZ6XojbFT0s1B70TZma8q98f1K4wqAjqjV3yuVTgZwVQusUpqRSzmGE8AfCSuuYcPgn6ccnLwZJfEUcm30faIAHtdvZ1oARYoa0
 +
libwiretap = 2.6.6-alt1:sisyphus+219299.100.2.1
 +
# rpm -U /home/user/MNT/ALT/repo/sisyphus/date/2019/01/18/x86_64/RPMS.classic/libwiretap-2.6.6-alt1.x86_64.rpm /home/user/hasher/repo/x86_64/RPMS.hasher/wireshark-base-2.6.6-alt1.x86_64.rpm --test; echo $?
 +
error: Failed dependencies:
 +
wireshark-base = 2.6.6-alt1:sisyphus+219299.100.2.1 is needed by libwiretap-2.6.6-alt1.x86_64
 +
libwiretap = 2.6.6-alt1:zzz+777 is needed by wireshark-base-2.6.6-alt1.x86_64
 +
libwiretap < 2.6.6-alt1:zzz+777 conflicts with wireshark-base-2.6.6-alt1.x86_64
 +
2
 +
 
 +
(Тут подействовал <code>Conflicts</code> со знаком <, но мог подействовать и > при другом значении.)
  
 
=====Если ставится одновременно с пакетом N = E:V-R=====
 
=====Если ставится одновременно с пакетом N = E:V-R=====
  
=====Если ставится в систему с пакетом N = E:V-R:D=====
+
(Такой пакет возьмём позже из другой сборки.)
 +
 
 +
====={{ok}}Если ставится в систему с пакетом N = E:V-R:D=====
 +
 
 +
# rpm -U /home/user/hasher/repo/x86_64/RPMS.hasher/libwiretap-2.6.6-alt1.x86_64.rpm --nodeps
 +
# rpm -q libwiretap --provides
 +
libwiretap.so.8()(64bit) = set:ld8aYWy1b4sDqBG48DBFCfoLMB7ddqH0djoHz6nkgZxZg0U6Z4hcDibrGMxjeHecL0Im93t540UZhZkWksc6JQSTO5f5MsjHo0otcB67zHX9QF2Aib0Ju7PlbxYsbdSJXxzl9F0s39w1pgg5cHY2sOk4EayatUUDZE6rlcCvCChZdGIJymMi7r6HhL7fFnngAeD3W9u1aZ6XojbFT0s1B70TZma8q98f1K4wqAjqjV3yuVTgZwVQusUpqRSzmGE8AfCSuuYcPgn6ccnLwZJfEUcm30faIAHtdvZ1oARYoa0
 +
libwiretap = 2.6.6-alt1:zzz+777
 +
# rpm -U /home/user/hasher/repo/x86_64/RPMS.hasher/wireshark-base-2.6.6-alt1.x86_64.rpm --test; echo $?
 +
0
 +
 
 +
====={{fail}}Если ставится в систему с пакетом N = E:V-R:D1 (disstag другой)=====
 +
 
 +
# rpm -U /home/user/MNT/ALT/repo/sisyphus/date/2019/01/18/x86_64/RPMS.classic/libwiretap-2.6.6-alt1.x86_64.rpm --nodeps
 +
# rpm -q libwiretap --provides
 +
libwiretap.so.8()(64bit) = set:ld8aYWy1b4sDqBG48DBFCfoLMB7ddqH0djoHz6nkgZxZg0U6Z4hcDibrGMxjeHecL0Im93t540UZhZkWksc6JQSTO5f5MsjHo0otcB67zHX9QF2Aib0Ju7PlbxYsbdSJXxzl9F0s39w1pgg5cHY2sOk4EayatUUDZE6rlcCvCChZdGIJymMi7r6HhL7fFnngAeD3W9u1aZ6XojbFT0s1B70TZma8q98f1K4wqAjqjV3yuVTgZwVQusUpqRSzmGE8AfCSuuYcPgn6ccnLwZJfEUcm30faIAHtdvZ1oARYoa0
 +
libwiretap = 2.6.6-alt1:sisyphus+219299.100.2.1
 +
# rpm -U /home/user/hasher/repo/x86_64/RPMS.hasher/wireshark-base-2.6.6-alt1.x86_64.rpm --test; echo $?
 +
error: Failed dependencies:
 +
libwiretap = 2.6.6-alt1:zzz+777 is needed by wireshark-base-2.6.6-alt1.x86_64
 +
libwiretap < 2.6.6-alt1:zzz+777 conflicts with wireshark-base-2.6.6-alt1.x86_64
 +
1
 +
#
 +
 
  
 
=====Если ставится в систему с пакетом N = E:V-R=====
 
=====Если ставится в систему с пакетом N = E:V-R=====
 +
 +
(Такой пакет возьмём позже из другой сборки.)
  
 
=====Если уже стоит, а ставится пакет N = E:V-R:D=====
 
=====Если уже стоит, а ставится пакет N = E:V-R:D=====
 +
 +
=====Если уже стоит, а ставится пакет N = E:V-R:D1 (disstag другой)=====
  
 
=====Если уже стоит, а ставится пакет N = E:V-R=====
 
=====Если уже стоит, а ставится пакет N = E:V-R=====
 +
 +
(Такой пакет возьмём позже из другой сборки.)
  
 
====Проверка Conflicts: N < E:V-R (без disttag)====
 
====Проверка Conflicts: N < E:V-R (без disttag)====

Версия 12:25, 24 января 2019


В "идентификаторах" пакетов (основных Provides) появился disttag (D: N-E:V-R:D), который различает разные сборки пакета из одних и тех же исходников (E:V-R). Disttag имеет особую семантику при участии в удовлетворении зависимостей и т.п., а также при принятии решения об обновлении (какая сборка пакета будет предпочтительна).

Содержание

Желаемое поведение

Желаемое поведение rpm ("rpm-install") в отношении disttag вот такое:

...

Мы полагаем, что такое поведение уже реализовано в "новом" rpm ("rpm-install"), а именно 4.13.0.1-alt5.

Особенности поведения "нового" и "старого" rpm ("rpm-install") в отношении disttag

Здесь нас особенно волнует поведение "старого" rpm ("rpm-install"), а именно 4.13.0.1-alt4 или старого из p8 и пр., при столкновении с пакетом, где уже используется disttag (был добавлен туда "новым" rpm-build).

Что касается "нового" rpm ("rpm-install"), то он задуман так, что требования N > E:V-R:D и N > E:V-R (без disttag) будут удволетворяться одним и тем же множеством пакетов (потому что disttag-и несравнимы), а значит, будут иметь одинаковый эффект:

  • Requires: N > E:V-R:D и Requires: N > E:V-R (без disttag);
  • Conflicts: N > E:V-R:D и Conflicts: N > E:V-R (без disttag);
  • Obsoletes: N > E:V-R:D и Obsoletes: N > E:V-R (без disttag).

То же самое верно для другого строгого знака: требования N < E:V-R:D и N < E:V-R (без disttag) будут удволетворяться одним и тем же множеством пакетов.

Так что выбор между двумя возможностям (как записать такие Conflicts, Obsoletes; такой Requires бесполезен) может быть сделан на основе более желательного поведения "старого" rpm ("rpm-install") при столкновении с такими пакетами.

Проверка Conflicts старым rpm

Проверка Conflicts: N > E:V-R (без disttag)

В качестве примера пакета с таким Conflicts возьмём wireshark, известный из altbug #35930:

$ curlftpfs -o allow_other,kernel_cache ftp://ftp.altlinux.org/pub/distributions/archive /home/user/MNT/ALT/repo
$ rpm -qp /home/user/MNT/ALT/repo/sisyphus/date/2019/01/18/x86_64/RPMS.classic/wireshark-base-2.6.6-alt1.x86_64.rpm --conflicts
libwiretap < 2.6.6-alt1
libwiretap > 2.6.6-alt1
$ rpm -qp /home/user/MNT/ALT/repo/sisyphus/date/2019/01/18/x86_64/RPMS.classic/libwiretap-2.6.6-alt1.x86_64.rpm --conflicts
$ rpm -qp /home/user/MNT/ALT/repo/sisyphus/date/2019/01/18/x86_64/RPMS.classic/libwiretap-2.6.6-alt1.x86_64.rpm --provides
libwiretap.so.8()(64bit) = set:ld8aYWy1b4sDqBG48DBFCfoLMB7ddqH0djoHz6nkgZxZg0U6Z4hcDibrGMxjeHecL0Im93t540UZhZkWksc6JQSTO5f5MsjHo0otcB67zHX9QF2Aib0Ju7PlbxYsbdSJXxzl9F0s39w1pgg5cHY2sOk4EayatUUDZE6rlcCvCChZdGIJymMi7r6HhL7fFnngAeD3W9u1aZ6XojbFT0s1B70TZma8q98f1K4wqAjqjV3yuVTgZwVQusUpqRSzmGE8AfCSuuYcPgn6ccnLwZJfEUcm30faIAHtdvZ1oARYoa0
libwiretap = 2.6.6-alt1:sisyphus+219299.100.2.1
$ 

В качестве примера пакета с конфликтом будет wireshark-base. В качестве пакета с N = E:V-R:D будет libwiretap с libwiretap = 2.6.6-alt1:sisyphus+219299.100.2.1.

Это подпакеты одного исходного пакета, поэтому есть возможность в Conflicts вставить disttag той же самой сборки.

Test-result-fail.png Если ставится одновременно с пакетом N = E:V-R:D
# rpm -U /home/user/MNT/ALT/repo/sisyphus/date/2019/01/18/x86_64/RPMS.classic/{libwiretap,wireshark-base}-2.6.6-alt1.x86_64.rpm --test
error: Failed dependencies:
	libwiretap > 2.6.6-alt1 conflicts with wireshark-base-2.6.6-alt1.x86_64

Эффект объясним тем, что 2.6.6-alt1:sisyphus+219299.100.2.1 лексикографически больше 2.6.6-alt1 (для "старого" rpm ("rpm-install"), который не отделяет disttag).

Test-result-pass.png Если ставится одновременно с пакетом N = E:V-R

Это совпадает со старой ситуацией, когда disttag-а нет ни в Provides, ни в Conflicts; поэтому не буду проверять.

Test-result-fail.png Если ставится в систему с пакетом N = E:V-R:D
# rpm -U /home/user/MNT/ALT/repo/sisyphus/date/2019/01/18/x86_64/RPMS.classic/libwiretap-2.6.6-alt1.x86_64.rpm --nodeps
# rpm -U /home/user/MNT/ALT/repo/sisyphus/date/2019/01/18/x86_64/RPMS.classic/wireshark-base-2.6.6-alt1.x86_64.rpm --test
error: Failed dependencies:
	libwiretap > 2.6.6-alt1 conflicts with wireshark-base-2.6.6-alt1.x86_64
# rpm -q libwiretap
libwiretap-2.6.6-alt1.x86_64
# rpm -q libwiretap --provides
libwiretap.so.8()(64bit) = 
set:ld8aYWy1b4sDqBG48DBFCfoLMB7ddqH0djoHz6nkgZxZg0U6Z4hcDibrGMxjeHecL0Im93t540UZhZkWksc6JQSTO5f5MsjHo0otcB67zHX9QF2Aib0Ju7PlbxYsbdSJXxzl9F0s39w1pgg5cHY2sOk4EayatUUDZE6rlcCvCChZdGIJymMi7r6HhL7fFnngAeD3W9u1aZ6XojbFT0s1B70TZma8q98f1K4wqAjqjV3yuVTgZwVQusUpqRSzmGE8AfCSuuYcPgn6ccnLwZJfEUcm30faIAHtdvZ1oARYoa0
libwiretap = 2.6.6-alt1:sisyphus+219299.100.2.1
#
Test-result-pass.png Если ставится в систему с пакетом N = E:V-R

Это совпадает со старой ситуацией, когда disttag-а нет ни в Provides, ни в Conflicts; поэтому не буду проверять.

Test-result-fail.png Если уже стоит, а ставится пакет N = E:V-R:D

В качестве примера пакета с конфликтом будет wireshark-base.

# rpm -U /home/user/MNT/ALT/repo/sisyphus/date/2019/01/18/x86_64/RPMS.classic/wireshark-base-2.6.6-alt1.x86_64.rpm --nodeps
# rpm -q wireshark-base --conflicts
libwiretap < 2.6.6-alt1
libwiretap > 2.6.6-alt1
# rpm -U /home/user/MNT/ALT/repo/sisyphus/date/2019/01/18/x86_64/RPMS.classic/libwiretap-2.6.6-alt1.x86_64.rpm --test
error: Failed dependencies:
	libwiretap > 2.6.6-alt1 conflicts with (installed) wireshark-base-2.6.6-alt1.x86_64
#
Test-result-pass.png Если уже стоит, а ставится пакет N = E:V-R

Это совпадает со старой ситуацией, когда disttag-а нет ни в Provides, ни в Conflicts; поэтому не буду проверять.

Проверка Conflicts: N > E:V-R:D

В качестве примера пакета с таким Conflicts возьмём wireshark, известный из altbug #35930, но пересобранный так, чтобы в Conflicts попал disttag:

# rpm -qp /home/user/hasher/repo/x86_64/RPMS.hasher/wireshark-base-2.6.6-alt1.x86_64.rpm --conflicts
libwiretap < 2.6.6-alt1:zzz+777
libwiretap > 2.6.6-alt1:zzz+777
# rpm -qp /home/user/hasher/repo/x86_64/RPMS.hasher/libwiretap-2.6.6-alt1.x86_64.rpm --conflicts
# rpm -qp /home/user/hasher/repo/x86_64/RPMS.hasher/libwiretap-2.6.6-alt1.x86_64.rpm --provides
libwiretap.so.8()(64bit) = 
set:ld8aYWy1b4sDqBG48DBFCfoLMB7ddqH0djoHz6nkgZxZg0U6Z4hcDibrGMxjeHecL0Im93t540UZhZkWksc6JQSTO5f5MsjHo0otcB67zHX9QF2Aib0Ju7PlbxYsbdSJXxzl9F0s39w1pgg5cHY2sOk4EayatUUDZE6rlcCvCChZdGIJymMi7r6HhL7fFnngAeD3W9u1aZ6XojbFT0s1B70TZma8q98f1K4wqAjqjV3yuVTgZwVQusUpqRSzmGE8AfCSuuYcPgn6ccnLwZJfEUcm30faIAHtdvZ1oARYoa0
libwiretap = 2.6.6-alt1:zzz+777

В качестве примера пакета с конфликтом будет wireshark-base. В качестве пакета с N = E:V-R:D будет libwiretap с libwiretap = 2.6.6-alt1:zzz+777.

Это подпакеты одного исходного пакета, поэтому есть возможность в Conflicts вставить disttag той же самой сборки.

Test-result-pass.png Если ставится одновременно с пакетом N = E:V-R:D
# rpm -U /home/user/hasher/repo/x86_64/RPMS.hasher/{libwiretap,wireshark-base}-2.6.6-alt1.x86_64.rpm --test; echo $?
0
Test-result-fail.png Если ставится одновременно с пакетом N = E:V-R:D1 (другим)

(Такой пакет возьмём из архива.)

$ curlftpfs -o allow_other,kernel_cache ftp://ftp.altlinux.org/pub/distributions/archive /home/user/MNT/ALT/repo
# rpm -qp /home/user/MNT/ALT/repo/sisyphus/date/2019/01/18/x86_64/RPMS.classic/libwiretap-2.6.6-alt1.x86_64.rpm --provides
libwiretap.so.8()(64bit) = set:ld8aYWy1b4sDqBG48DBFCfoLMB7ddqH0djoHz6nkgZxZg0U6Z4hcDibrGMxjeHecL0Im93t540UZhZkWksc6JQSTO5f5MsjHo0otcB67zHX9QF2Aib0Ju7PlbxYsbdSJXxzl9F0s39w1pgg5cHY2sOk4EayatUUDZE6rlcCvCChZdGIJymMi7r6HhL7fFnngAeD3W9u1aZ6XojbFT0s1B70TZma8q98f1K4wqAjqjV3yuVTgZwVQusUpqRSzmGE8AfCSuuYcPgn6ccnLwZJfEUcm30faIAHtdvZ1oARYoa0
libwiretap = 2.6.6-alt1:sisyphus+219299.100.2.1
# rpm -U /home/user/MNT/ALT/repo/sisyphus/date/2019/01/18/x86_64/RPMS.classic/libwiretap-2.6.6-alt1.x86_64.rpm /home/user/hasher/repo/x86_64/RPMS.hasher/wireshark-base-2.6.6-alt1.x86_64.rpm --test; echo $?
error: Failed dependencies:
	wireshark-base = 2.6.6-alt1:sisyphus+219299.100.2.1 is needed by libwiretap-2.6.6-alt1.x86_64
	libwiretap = 2.6.6-alt1:zzz+777 is needed by wireshark-base-2.6.6-alt1.x86_64
	libwiretap < 2.6.6-alt1:zzz+777 conflicts with wireshark-base-2.6.6-alt1.x86_64
2

(Тут подействовал Conflicts со знаком <, но мог подействовать и > при другом значении.)

Если ставится одновременно с пакетом N = E:V-R

(Такой пакет возьмём позже из другой сборки.)

Test-result-pass.png Если ставится в систему с пакетом N = E:V-R:D
# rpm -U /home/user/hasher/repo/x86_64/RPMS.hasher/libwiretap-2.6.6-alt1.x86_64.rpm --nodeps
# rpm -q libwiretap --provides
libwiretap.so.8()(64bit) = set:ld8aYWy1b4sDqBG48DBFCfoLMB7ddqH0djoHz6nkgZxZg0U6Z4hcDibrGMxjeHecL0Im93t540UZhZkWksc6JQSTO5f5MsjHo0otcB67zHX9QF2Aib0Ju7PlbxYsbdSJXxzl9F0s39w1pgg5cHY2sOk4EayatUUDZE6rlcCvCChZdGIJymMi7r6HhL7fFnngAeD3W9u1aZ6XojbFT0s1B70TZma8q98f1K4wqAjqjV3yuVTgZwVQusUpqRSzmGE8AfCSuuYcPgn6ccnLwZJfEUcm30faIAHtdvZ1oARYoa0
libwiretap = 2.6.6-alt1:zzz+777
# rpm -U /home/user/hasher/repo/x86_64/RPMS.hasher/wireshark-base-2.6.6-alt1.x86_64.rpm --test; echo $?
0
Test-result-fail.png Если ставится в систему с пакетом N = E:V-R:D1 (disstag другой)
# rpm -U /home/user/MNT/ALT/repo/sisyphus/date/2019/01/18/x86_64/RPMS.classic/libwiretap-2.6.6-alt1.x86_64.rpm --nodeps
# rpm -q libwiretap --provides
libwiretap.so.8()(64bit) = set:ld8aYWy1b4sDqBG48DBFCfoLMB7ddqH0djoHz6nkgZxZg0U6Z4hcDibrGMxjeHecL0Im93t540UZhZkWksc6JQSTO5f5MsjHo0otcB67zHX9QF2Aib0Ju7PlbxYsbdSJXxzl9F0s39w1pgg5cHY2sOk4EayatUUDZE6rlcCvCChZdGIJymMi7r6HhL7fFnngAeD3W9u1aZ6XojbFT0s1B70TZma8q98f1K4wqAjqjV3yuVTgZwVQusUpqRSzmGE8AfCSuuYcPgn6ccnLwZJfEUcm30faIAHtdvZ1oARYoa0
libwiretap = 2.6.6-alt1:sisyphus+219299.100.2.1
# rpm -U /home/user/hasher/repo/x86_64/RPMS.hasher/wireshark-base-2.6.6-alt1.x86_64.rpm --test; echo $?
error: Failed dependencies:
	libwiretap = 2.6.6-alt1:zzz+777 is needed by wireshark-base-2.6.6-alt1.x86_64
	libwiretap < 2.6.6-alt1:zzz+777 conflicts with wireshark-base-2.6.6-alt1.x86_64
1
# 


Если ставится в систему с пакетом N = E:V-R

(Такой пакет возьмём позже из другой сборки.)

Если уже стоит, а ставится пакет N = E:V-R:D
Если уже стоит, а ставится пакет N = E:V-R:D1 (disstag другой)
Если уже стоит, а ставится пакет N = E:V-R

(Такой пакет возьмём позже из другой сборки.)

Проверка Conflicts: N < E:V-R (без disttag)

(Вообще, это неинтересный вариант, потому что мы ожидаем, что всё получится, т.е. в отличие от #Проверка Conflicts: N > E:V-R (без disttag) он не выявляет никаких ошибок и неявляется исследованием нового предложния.)

Точно так же, как в #Проверка Conflicts: N > E:V-R (без disttag):

В качестве примера пакета с конфликтом будет wireshark-base (с только одним оставленным конфлкиктом в результате пересборки, в отличие от примера из #Проверка Conflicts: N > E:V-R (без disttag)).

В качестве пакета с N = E:V-R:D будет libwiretap с libwiretap = 2.6.6-alt1:zzz+777.

Это подпакеты одного исходного пакета.

$ rpm -qp /home/user/hasher/repo/x86_64/RPMS.hasher/wireshark-base-2.6.6-alt1.x86_64.rpm --conflicts
libwiretap < 2.6.6-alt1
$ rpm -qp /home/user/hasher/repo/x86_64/RPMS.hasher/libwiretap-2.6.6-alt1.x86_64.rpm 
libwiretap-2.6.6-alt1.x86_64
$ rpm -qp /home/user/hasher/repo/x86_64/RPMS.hasher/libwiretap-2.6.6-alt1.x86_64.rpm --provides
libwiretap.so.8()(64bit) = set:ld8aYWy1b4sDqBG48DBFCfoLMB7ddqH0djoHz6nkgZxZg0U6Z4hcDibrGMxjeHecL0Im93t540UZhZkWksc6JQSTO5f5MsjHo0otcB67zHX9QF2Aib0Ju7PlbxYsbdSJXxzl9F0s39w1pgg5cHY2sOk4EayatUUDZE6rlcCvCChZdGIJymMi7r6HhL7fFnngAeD3W9u1aZ6XojbFT0s1B70TZma8q98f1K4wqAjqjV3yuVTgZwVQusUpqRSzmGE8AfCSuuYcPgn6ccnLwZJfEUcm30faIAHtdvZ1oARYoa0
libwiretap = 2.6.6-alt1:zzz+777
$ 
Test-result-pass.png Если ставится одновременно с пакетом N = E:V-R:D

Как и ожидалось (по лексикографическому сравнению):

# rpm -U /home/user/hasher/repo/x86_64/RPMS.hasher/{libwiretap,wireshark-base}-2.6.6-alt1.x86_64.rpm --test
# echo $?
0
Test-result-pass.png Если ставится одновременно с пакетом N = E:V-R

Это совпадает со старой ситуацией, когда disttag-а нет ни в Provides, ни в Conflicts; поэтому не буду проверять.

Test-result-pass.png Если ставится в систему с пакетом N = E:V-R:D

Как и ожидалось (по лексикографическому сравнению):

# rpm -U /home/user/hasher/repo/x86_64/RPMS.hasher/libwiretap-2.6.6-alt1.x86_64.rpm --nodeps
# rpm -U /home/user/hasher/repo/x86_64/RPMS.hasher/wireshark-base-2.6.6-alt1.x86_64.rpm --test; echo $?
0
Test-result-pass.png Если ставится в систему с пакетом N = E:V-R

Это совпадает со старой ситуацией, когда disttag-а нет ни в Provides, ни в Conflicts; поэтому не буду проверять.

Test-result-pass.png Если уже стоит, а ставится пакет N = E:V-R:D

Как и ожидалось (по лексикографическому сравнению):

# rpm -U /home/user/hasher/repo/x86_64/RPMS.hasher/wireshark-base-2.6.6-alt1.x86_64.rpm --nodeps
# rpm -U /home/user/hasher/repo/x86_64/RPMS.hasher/libwiretap-2.6.6-alt1.x86_64.rpm --test; echo $?
0
Test-result-pass.png Если уже стоит, а ставится пакет N = E:V-R

Это совпадает со старой ситуацией, когда disttag-а нет ни в Provides, ни в Conflicts; поэтому не буду проверять.

Проверка Conflicts: N < E:V-R:D

Если ставится одновременно с пакетом N = E:V-R:D
Если ставится одновременно с пакетом N = E:V-R
Если ставится в систему с пакетом N = E:V-R:D
Если ставится в систему с пакетом N = E:V-R
Если уже стоит, а ставится пакет N = E:V-R:D
Если уже стоит, а ставится пакет N = E:V-R