Contudo as vezes você está rodando uma instalação que não precisa disto, por exemplo, dentro de uma máquina virtual. Você pode desativar o ModemManager no Ubuntu sem problemas, caso não precise dele.
A maneira mais comun de desativá-lo é utilizando os comandos:
O pyenv é uma ferramenta popular de linha de comando que permite instalar, gerenciar e alternar entre várias versões do Python no mesmo sistema sem depender de ambientes virtuais.
O que o pyenv resolve
Seu sistema operacional (linux ou Mac) geralmente vem com uma versão padrão do Python. Contudo ele vem com uma versão específica instalada. Por exemplo, você pode precisar do Python 3.8 para um projeto, do 3.12 para outro e talvez também do PyPy ou Miniconda.
Instalar várias versões do Python manualmente é trabalhoso. Além disto, alterar a versão global do Python geralmente quebra as ferramentas do sistema.
O pyenv resolve tudo isso permitindo que você:
Instale várias versões: pyenv install 3.12.1
Defina a versão global: pyenv global 3.10.0
Defina uma versão local (por projeto): pyenv local 3.9.18
Use automaticamente a versão correta com base no arquivo .python-version
Instalação passo a passo do PyENV no Ubuntu
As instruções a seguir irão ajudar na instalação do PyENV no Ubuntu. Estes passos foram testados no Ubuntu 22 e 24.
1) Atualizar pacotes do sistema: Comece atualizando a lista de pacotes do sistema para garantir o acesso às versões mais recentes dos softwares:
sudo apt update
2) Instalar dependências necessárias: O PyENV pode exigir certas dependências para funcionar de forma otimizada. Você pode instalar esses pacotes usando o seguinte comando:
A combinação Vscode com Windsurf é muito boa pois permite autocorreção de alta qualidade do seu código. Contudo, estou acessando uma VM remotamente via SSH e o Windsurf não consegue fazer login. Se acesso diremente a GUI da VM, o Vscode abre e o Windsurf loga normalmente, excluindo assim algum problema de configuração ou instalação dos dois.
Note que ao solicitar o login do Windsurf, aparece na tela da console SSH a seguinte mensagem de erro: "X11 connection rejected because of wrong authentication.".
Esse erro geralmente significa que há um problema com a autenticação de encaminhamento do X11.
O que fazer então?
1. Verifique seu arquivo .Xauthority:
Execute ls -al ~/.Xauthority para ver se o arquivo existe. Se estiver ausente ou tiver permissões incorretas, você pode regenerá-lo executando: xauth generate $DISPLAY. Se for isto, faça a correção e reinicie a sessão SSH.
2. Garanta que o encaminhamento (forwarding) está habilitado tanto no servidor como no cliente.
- No servidor, você precisa conferir no arquivo /etc/ssh/sshd_config se as linha abaixo existem:
X11Forwarding yes X11UseLocalhost yes
Faça a correção se necessário e reinicie o serviço SSH com o comando sudo systemctl restart sshd.
- No cliente, abra o arquivo /etc/ssh/ssh_config e confira as seguinte linhas:
ForwardX11 yes ForwardX11Trusted yes
3. Garanta que exista a variável de ambiente XAUTHORITY. Você pode usar o comando `env` para listar todas. Se não existir, abra o arquivo ~/.bashrc com um editor de textos e acrescente a seguinte linha ao final do arquivo.
export XAUTHORITY=$HOME/.Xauthority
No meu caso, faltavam as configurações de ForwardX11Trusted e XAUTHORITY.
Acrescentando as duas opções, o Windsurf foi capaz de abrir a tela de login corretamente.
Se você tentar acessar uma VM do Hyper-V utilizando a console do WSL no Windows, você verá que não irá funcionar, mesmo que o Powershell você consiga pingar a VM. O WSL 2 roda em uma máquina virtual leve e tem seu próprio endereço IP interno. Para acessar serviços rodando no WSL a partir da VM (ou vice-versa), você precisa garantir que as duas faixas de IP conversem entre si.
Por exemplo, minha VM é um Ubuntu e o IP retornado pelo comando `ip address` é mostrado abaixo:
Se tento acessar via shell do WSL, o ping não funciona
Para resolver isto entre o command prompt do Windows ou no powershell e entre com o comando `ipconfig`. Você verá um conjunto de adaptadores de rede com diversos endereços. No meu caso, a informação importante estava no final da lista, como mostrado abaixo. O primeiro adaptador é do Hyper-V e o segundo é para o WSL.
São necessários dois comandos para liberar o acesso à estas redes. Você precisa entrar comandos abaixo no PowerShell em modo administrador para ter as permissões de liberação.
Ao tentar atualizar os pacotes instalados no ubuntu, a mensagem de erro mostrada abaixo foi gerada pelo apt. Nenhuma alteração havia sido feita no servidor que pudesse ter causado o problema.
Neste post mostramos como configurar o apt-get para usar somente IPv4 (ou IPv6).
Os passos mostrados aqui foram testados no Ubuntu.
Opção de linha de comando
Se você quiser forçar o apt-get a usar IPv4 ou IPv6 somente uma vez, você pode usar um parametro no comando apt-get. Este recurso está disponível após a versão 0.9.7.9~exp1 do apt-get.
Para verificar se sua versão do apt-get é mais recente, execute:
sudo apt-get --version
Se a versão for igual ou superior, você pode forçar o IPv4 com:
sudo apt-get -o Acquire::ForceIPv4=true update
ou forçar o IPv6 com:
sudo apt-get -o Acquire::ForceIPv6=true update
Isso atualizará os repositórios, resolvendo as URLs em /etc/apt/sources.list para IPv4 (ou IPv6) somente.
Opção persistente alterando a configuração
Para tornar a configuração, crie o arquivo 99force-ipv4 em /etc/apt/apt.conf.d/. Você precisa ser `root` para editá-lo. Coloque o seguinte conteúdo no arqivo:
Acquire::ForceIPv4 "true";
Salve o arquivo e pronto.
Se quiser forçar o IPv6, altere o nome do arquivo de 99force-ipv4 para 99force-ipv4 e o método para ForceIPv6 nas configurações.
Se você utiliza o Raspberry Pi Imager, você pode configurar o acesso ao raspberry via "Edit settings" conforme mostrado abaixo:
Na primeira aba, você pode configurar a conexão do raspberry a sua rede WiFi e o usuário padrão.
Já na próxima aba, habilite o SSH.
Contudo isto não configura o endereço IP da rede cabeada. Felizmente, isso é fácil de fazer. Com o cartão SD ainda conectado, abra a partição de inicialização (bootfs) e edite o arquivo "cmdline.txt" neste diretório utilizando um editor de texto. Você deve colocar no final do texto existem ip=x.x.x.x, onde x.x.x.x é o endereço que você deseja (veja um exemplo abaixo):
Agora você precisa ir na sua conta do github para dar o acesso via chave.
Selecione Settings (esta opção aparece quando você clica no seu avatar no canto superior direito da janela). Esta opção irá abrir uma tela similar a mostrada abaixo. Selecione "SSH and GPG keys" e clique no botão "New SSH key".
Preencha os campos colocando no campo da chave o conteudo do arquivo da chave pública que você gerou no passo anterior (id_ed25519_github_ssh.pub neste exemplo).
Pronto. Agora podemos testar se o acesso está funcionando.
Vamos tentar uma chamada SSH informando explicitamente a chave de criptografia no comando:
Se tudo funcionar você irá ver um conjunto de linhas semelhante ao mostrado abaixo:
Warning: No xauth data; using fake authentication data for X11 forwarding.
X11 forwarding request failed on channel 0
Hi h3dema! You've successfully authenticated, but GitHub does not provide shell access.
Se não funcionar, acrescente -v ao comando ssh para ver mais detalhes. Pode ser que, por exemplo, o nome do arquivo com a chave privada esteja errada, ou pode ser permissão de acesso, etc.
Se o comando funcionou, faça novo teste sem informar a chave explicitamente.
ssh -T git@github.com
No meu caso, na primeira vez que tentei o comando acima retornou:
git@github.com: Permission denied (publickey).
Usando o -v, descobri que o ssh não estava identificando a chave correta.
O GitHub sugere instalar um SSH agent forwarding.
Eu preferi, ao invés disto, criar um arquivo de configuração.
Criei o arquivo ~/.ssh/config e acrescentei as seguinte linhas
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_github_ssh
Você adicionou o PyENV no seu computador (veja o nosso post).
Agora precisa criar o ambiente virtual onde irá trabalhar.
Portanto, precisa decidir qual versão do Python irá adiciona.
Depois de configurar o PyENV, você pode instalar as versões Python de sua escolha.
Você pode visualizar as versões disponíveis do Python usando o seguinte comando. Ele irá apresentar uma extensa lista de opções. Selecione a versão desejada desta lista.
pyenv install --list
Instalação da versão Python
Por exemplo, para instalar o Python 3.9.19 basta digitar o comando abaixo que irá baixar e configurar o Python 3.9.19.
pyenv install 3.9.19
Selecionar uma versão instalada como padrão
Você selecionar entre as diversas versões do Python instaladas pelo PyENV, qual é a versão o padrão para comandos Python.
pyenv global 3.9.19
Isto fará que o Python 3.9.19 será seu padrão de instalação.
Você também pode definir como a versão local de um projeto específico executando o seguinte comando no diretório deste projeto.
pyenv local 3.9.19
Criar um ambiente virtual
Vamos testarse o comando pyenv virtualenv funciona. Nesse caso, ele deve retornar "nenhum nome virtualenv fornecido", pois é necessário especificar um nome de ambiente para criá-lo.
Depois de instalar a versão do Python, como mostramos acima, você irá criar um ambiente digitando:
Os passos mostrados neste post irão guiá-lo através do processo de instalação do PyENV no Ubuntu. Os passos mostrados abaixo foram testados no Ubuntu 22 bem como na mesma versão rodada no ambiente WSL do Windows.
Passo 1:
Comece atualizando a lista de pacotes do sistema para garantir o acesso às versões de software mais recentes:
sudo apt -y update
Passo 2:
Instale as dependências necessárias para o PyENV.
Normalmente ele irá exigir certas dependências para funcionar de maneira ideal.
Para começar, verifique se sua CPU suporta tecnologia de virtualização. Seu sistema precisa ter um processador Intel VT-x (vmx) ou AMD-V (svm). Para verificar isso, execute o seguinte comando egrep. A saída do comando deverá ser maior que 0, se a virtualização for suportada.
egrep -c '(vmx|svm)' /proc/cpuinfo
Verifique se a virtualização KVM é suportada usando `kvm-ok`. Se este comando estiver faltando,, instale o pacote cpu-checker da seguinte maneira:
sudo apt install cpu-checker -y
Para verificar a compatibilidade do seu sistema, execute o seguinte comando:
kvm-ok
Para instalar, atualize as listas de pacotes e repositórios e, em seguida, instale o QEMU/KVM junto com outros pacotes de virtualização da seguinte maneira:
Neste ponto, instalamos o QEMU e todos os pacotes essenciais de virtualização. A próxima etapa é iniciar e ativar o daemon de virtualização libvirtd. Portanto, execute os seguintes comandos para habilitá-lo/iniciá-lo:
Para verificar se o serviço de virtualização está funcionando, basta executar o seguinte comando:
sudo systemctl status libvirtd
Ajustar as permissões
Finalmente, se você deseja adicionar o usuário atualmente logado aos grupos kvm e libvirt para que ele possa gerenciar as máquinas virtuais, basta inserir os dois comandos a seguir:
Você precisa fazer logoff e logon para receber as permissões corretas.
Virt-manager
Você pode iniciar a ferramenta QEMU/KVM GUI, que é o Virtual Machine Manager na linha de comando digitando:
virt-manager
A tela inicial é:
Se você receber uma mensagem de erro e você adicionou seu usuário aos grupos (como mostrado anteriormente), pode ser que você esqueceu de fazer logoff e logon para que o usuário possa receber estas opções.