quinta-feira, 20 de junho de 2019

Erro de protocolo no TMUX

Se você utiliza TMUX para poder acessar (e criar) diversos ambientes de terminal no seu linux, você pode ter um problema. Se algumas sessões estiverem rodando no seu computador, enquanto o tmux é atualizado, você pode receber uma mensagem de erro ao tentar reconectar.

Por exemplo, o comando abaixo deveria mostrar todas as sessões ativas, mas retorna uma mensagem de erro. Mesmo se você já souber a número da sessão, tentar conectar diretamente com ela vai gerar o mesmo erro.


 # tmux list-sessions
protocol version mismatch (client 8, server 7)

# tmux attach-session -t 0
protocol version mismatch (client 8, server 7)



Isso basicamente diz a você, que você já tem um servidor tmux (antigo) rodando e o novo tmux não pode se conectar a ele porque eles não se entendem mais. Uma opção é sair de todas as suas sessões tmux existentes e começar uma nova usando a nova versão e tudo ficará bem. Contudo e se você não puder (ou quiser) matar a sua sessão?

Um hack bacana é mostrado a seguir. Você precisa identificar qual o ID da sua sessão. Use o comando pgrep mostrado abaixo. Ele irá fornecer o ID, que o meu caso é 32726.
# pgrep tmux
32726

Agora você deve rodar um comando que é criado dentro de /proc/. Vamos listar o diretório /proc/32726 para ver o que tem lá. Basta dar um ls: 

# ls /proc/32726/
attr             cpuset   limits      net            projid_map  stat
autogroup        cwd      loginuid    ns             root        statm
auxv             environ  map_files   numa_maps      sched       status
cgroup           exe      maps        oom_adj        schedstat   syscall
clear_refs       fd       mem         oom_score      sessionid   task
cmdline          fdinfo   mountinfo   oom_score_adj  setgroups   timers
comm             gid_map  mounts      pagemap        smaps       uid_map
coredump_filter  io       mountstats  personality    stack       wchan
root@arpia:/home/h3dema#


Veja que tem um comando exe neste diretório. É ele que precisamos. Basta dar o comando abaixo e você será conectado de novo na sua sessão, com a versão antiga.

 /proc/32726/exe attach

Agora você pode terminar a sua sessão normalmente.

sexta-feira, 14 de junho de 2019

GPG error: http://extras.ubuntu.com

Ao dar manutenção em um computador com Ubuntu 14 LTS me deparei com um erro durante a atualização. Ao tentar executar o comando abaixo para obter as atualizações

$ sudo apt-get -y update


Obtive a seguinte mensagem de erro.

....
Lendo listas de pacotes... Pronto
W: Erro GPG: http://extras.ubuntu.com trusty Release: As assinaturas a seguir não puderam ser verificadas devido à chave pública não estar disponível: NO_PUBKEY 16126D3A3E5C1192

E com isto o Ubuntu não atualiza mais.
O problema é que a chave não está mais disponível e portanto precisa ser reinstalada.
Depois de alguma busca na Internet, achei a solução para o problema que compartilho aqui.
São dois comandos que precisam ser dados como superusuário para atualizar a chave, a saída e os comandos são mostrados abaixo:

$ gpg --keyserver keyserver.ubuntu.com --recv 3E5C1192
gpg: requisitando chave 3E5C1192 de servidor hkp - keyserver.ubuntu.com
gpg: chave 3E5C1192: chave pública "Ubuntu Extras Archive Automatic Signing Key <ftpmaster@ubuntu.com>" importada
gpg: ultimamente não encontradas chaves confiáveis
gpg: Número total processado: 1
gpg:               importados: 1
$ gpg --export --armor  3E5C1192 | sudo apt-key add -
OK

Agora o comando de atualização pode ser chamado novamente e ele funciona corretamente.

$ sudo apt-get -y update

Desabilitar ModemManager no Ubuntu

 ModemManager provides a unified, high-level interface to control all kinds of modems: 4G/5G modems (LTE/NR) 3G modems NB-IoT / Cat-M1 modul...