5.2.4. Semântica
Usar Boolean dependencies
não muda a semântica das dependências regulares.
Se for utilizado o site Boolean dependencies
, a verificação de uma correspondência é feita em todos os nomes e o valor booleano da correspondência é então agregado sobre os operadores booleanos.
Para todas as dependências, com exceção de Conflicts:
, o resultado tem que ser True
para não impedir uma instalação. Para Conflicts:
, o resultado tem que ser False
para não impedir uma instalação.
Provides
não são dependências e não podem conter expressões booleanas.
5.2.4.1. Compreender a saída do se operador
O operador if
também está devolvendo um valor booleano, que normalmente está próximo do que é a compreensão intuitiva. Entretanto, os exemplos abaixo mostram que, em alguns casos, a compreensão intuitiva do if
pode ser enganosa.
Exemplo 5.3. Resultados enganosos do se operador
Esta afirmação é verdadeira se o pkgB não for instalado. Entretanto, se esta declaração for usada onde o resultado padrão for falso, as coisas se tornam complicadas:
Requer: (pkgA se pkgB)
Esta declaração é um conflito, a menos que o pkgB esteja instalado e o pkgA não esteja:
Conflitos: (pkgA se pkgB)
Portanto, talvez você prefira usar:
Conflitos: (pkgA e pkgB)
O mesmo é verdade se o operador if
estiver aninhado em termos de or
:
Requer: ((pkgA se pkgB) ou pkgC ou pkgC)
Isto também torna todo o termo verdadeiro, pois o termo if
é verdadeiro se o pkgB não for instalado. Se o pkgA só ajuda se o pkgB estiver instalado, use and
em seu lugar:
Requer: ((pkgA e pkgB) ou pkgC ou pkgP)