Допустим, у меня есть пакет A версия 1 и пакет A версия 2 , Назову их A1 и A2 соответственно.
Если у меня есть пул пакетов: A1 , A2 , B1 , B2 , C1 , C2 , D1 , D2
A1 зависит от B1 , будет обозначаться как (A1, (B1))
.
Plus A1 зависит от любой версии пакета C" C1 или C2 удовлетворяет A1", будет представлять собой (A1, (C1, C2))
, объединяющих A1 deps вместе, затем A1 структура данных становится: (A1, (B1), (C1, C2))
Также B1 зависит от D1 : (B1, (D1))
A1 структура становится: (A1, ((B1, (D1))), (C1, C2))
аналогично A2 структура (A2, ((B2, (D2))), (C1, C2))
Мой вопрос таков: как выбрать лучшего кандидата пакета A где я могу выбрать на основе условия (дляНапример, условие заключается в том, что пакет не конфликтует с текущими установленными пакетами.)
путем объединения A1 и A2 : ((A1, ((B1, (D1))), (C1, C2)), (A2, ((B2, (D2))), (C1, C2)))
Howмогу ли я пройти эту структуру данных
Так что начните с A1 , если не конфликтует проверка B1 , если не конфликтует проверка D1 , если нет конфликта, проверьте ( C1 , C2 ) и выберите один из них: C1 или C2 .После этого я выбираю (A1, B1, D1, C1)
.
В случае, если A1 или какой-либо из его операций не соответствует условию (например, если B1 конфликтует сустановленных пакетов), затем полностью удалите A1 и перейдите к проверке A2 .затем заканчивайте с (A2, B2, D2, C1)
.
Что это за обход?
Я читал об упорядочении, предзаказе, прохождении после заказа и спрашивал себя, нужно ли мнесделать что-то подобное здесь.