If not explicitly stated, the virsh binary uses the 'qemu:///session' URI (at least under debian).
Portanto, não apenas virsh net-list
, mas praticamente qualquer comando, incluindo virsh list
, se comportou de maneira diferente ao executar com sudo
. Em outras palavras, virsh net-list
estava usando o escopo do usuário em vez do global.
Isso faz sentido; tentar criar a conexão padrão e, em seguida, iniciá-la levou ao erro "A rede já está em uso pela interface virbr0" - sem saber, eu estava iniciando uma conexão segundo chamada "padrão", enquanto uma já estava correndo.
A solução é direta:
virsh --connect qemu:///system net-list
faz o que eu esperava, enquanto:
virsh net-list
não.
Por que a máquina Ubuntu não está tendo o problema?
De acordo com a documentação :
If virsh finds the environment variable
VIRSH_DEFAULT_CONNECT_URI
set, it will try this URI by default. Use of this environment variable is, however, deprecated now that libvirt supportsLIBVIRT_DEFAULT_URI
itself.
Aparentemente, na máquina Ubuntu, a segunda variável foi definida:
ubuntu:~$ echo $VIRSH_DEFAULT_CONNECT_URI ubuntu:~$ echo $LIBVIRT_DEFAULT_URI qemu:///system
Na máquina Debian, por outro lado, nenhuma dessas variáveis está definida:
debian:~$ echo $VIRSH_DEFAULT_CONNECT_URI debian:~$ echo $LIBVIRT_DEFAULT_URI
A configuração de uma dessas variáveis para qemu:///system
provavelmente funcionaria, mas, bem, é mais fácil especificar a string de conexão diretamente no comando virsh
(pelo menos ao escrever um script).