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 Copiar o linkLink copiado para a área de transferência!
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)
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)
Conflitos: (pkgA se pkgB)
Portanto, talvez você prefira usar:
Conflitos: (pkgA e pkgB)
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)
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)
Requer: ((pkgA e pkgB) ou pkgC ou pkgP)