Estou tentando criar um Dockerfile para uma imagem do Arch Linux com iptables-nft
instalado. Se eu executar a archlinux
imagem do Docker interativamente e então pacman -Syu iptables-nft
, me perguntam iptables-nft-1:1.8.10-2 and iptables-1:1.8.10-2 are in conflict. Remove iptables? [y/N]
e Proceed with installation? [Y/n]
. Responder sim para ambas as perguntas faz o que eu quero.
O problema surge quando tento fazer o script no Dockerfile, onde não consigo responder interativamente a essas perguntas. Minha primeira tentativa foi RUN pacman --noconfirm -Syu iptables-nft
, mas isso não funciona porque --noconfirm
significa ir com a resposta padrão, e a resposta padrão para a primeira pergunta é não. Então tentei remover iptables
primeiro antes de instalar iptables-nft
, mas iproute2
depende de ou iptables
, iptables-nft
e base
depende de iproute2
.
Isso me deixa com algumas abordagens que funcionam tecnicamente, mas todas me deixam com preocupações:
RUN yes | pacman -Syu iptables-nft
funciona, mas responder cegamentey
a qualquer pergunta que o pacman fizer quebraria se ele fizesse uma pergunta que não fosse sim-não, e se ele fizesse qualquer pergunta padrão não diferente de "Remover iptables?", provavelmente seria ruim responder sim cegamente a elas também.RUN pacman --noconfirm -Rdd iptables && pacman --noconfirm -Syu iptables-nft
funciona, mas seiptables
alguma vez surgirem dependências queiptables-nft
não sejam satisfatórias, o sistema ficará quebrado e, se houver pacotes que foram instalados apenas porque o antigoiptables
precisava deles, eles ficarão para trás indefinidamente.RUN pacman --noconfirm -Rsdd iptables && pacman --noconfirm -Syu iptables-nft
funciona, mas apresenta o mesmo risco de quebra de sistema que o #2, e também desinstala vários outros pacotes apenas para reinstalá-los imediatamente.
Existe uma solução melhor do que qualquer uma das acima? Idealmente, eu gostaria apenas de um equivalente pacman de dnf swap
, mas não consigo encontrar nada parecido.