O que fazer quando o erro não está no google?
Lidar com erros faz parte da rotina de todo usuário de computador, é papel dos desenvolvedores exibir informações para seus usuários de forma clara, especialmente quando algo dá errado; existem mensagens de erro dos mais variados formatos e tamanhos, desde as mais criativas e coloridas às mais simples, contudo uma verdade permanece: é importante transmitir o que aconteceu e como proceder.
Caso seu interesse seja pela arte de escrever essas mensagens e tornar sua comunicação mais eficiente, sinto muito mas sua princesa está em outro castelo, minha recomendação de leitura nesse caso é o artigo de Jenni Nadler, contando sobre a experiência de melhorar as mensagens de erro no wix; nossa missão exploratória, caso deseje aceitar, é analisar o processo de instalação do Open Broadcaster Software (OBS) no Manjaro linux utilizando o repositório de usuários arch linux (aur, do inglês, Arch linux User Repository).
Senta que lá vem história
Sou um usuário de linux que com alguma frequência formata seu computador, não necessariamente para alterar ambientes gráficos e distribuições, mas buscando ter sempre um ambiente minimal e praticar para um dia chuvoso de uma possível perda total do meu sistema, validando backups e scripts para ter um tempo máximo de 1 hora para uma recuperação completa do meu ambiente de trabalho.
No fim de 2022, comecei a fazer lives na twitch, então o OBS faz parte do cinto de utilidades do batman desde então; dentre as versões disponíveis no manjaro, a que mais me agrada é o pacote obs-studio-tytan652
, e aqui começamos a nossa saga. Usualmente, seria um simples yay -S obs-studio-tytan652
e esperar a compilação, mas a vida é uma caixinha de surpresas e recebi a mensagem.
ERROR: gnutls not found using pkg-config
E agora, quem poderá nos proteger?
Seguindo o primeiro instinto, tentei novamente sem alterar nada, para descartar a possibilidade de um erro aleatório ocasional; mesmo resultado, comecei a verificar minha rede de internet, tentei desativar o ipv6 e cheguei ao ponto de reverter uma atualização de kernel, para descartar essa possibilidade, contudo, igualmente o erro se apresentava todas as vezes. Então decidi parar de tentar a sorte e pesquisar a mensagem de erro no google e, para minha surpresa, os resultados não tinham nada a ver com o meu erro: nenhum deles nem envolvia OBS.
Apesar do nervosismo inicial que essa informação causou, resolvi abordar o problema não mais como usuário de computador, mas como desenvolvedor, então segui os passos:
- Revisar mensagem de erro;
- Compreender módulos relacionados;
- Propor novos testes e hipóteses.
O que significa a mensagem de erro?
Uma atividade muitas vezes negligenciada é a leitura das mensagens de erro, nos restringindo a indignação do porque não funcionou perfeitamente de primeira e nos privando da oportunidade de aprender mais sobre o funcionamento das nossas ferramentas de trabalho.
Uma mensagem de erro de compilação normalmente é composta de 3 elementos principais:
- Comando executado que falhou;
- Arquivo ou etapa que estava sendo executada;
- Caminho de execução do programa para chegar até ali.
Nesse caso, ampliando a nossa visão do erro apresentado, temos:
==> Iniciando build()...
ERROR: gnutls not found using pkg-config
If you think configure made a mistake, make sure you are using the latest version from Git. If the latest version fails, report the problem to the ffmpeg-user@ffmpeg.org mailing list or IRC ffmpeg on irc.libera.chat. Include the log file "ffbuild/config.log" produced by configure as this will help solve the problem.
==> ERRO: Uma falha ocorreu em build().
Abortando...
-> erro ao construir: ffmpeg-obs
Analisando os módulos envolvidos, descobri que o GnuTLS é uma biblioteca que implementa protocolos de comunicação segura e o pkg-config
é um utilitário usado na compilação de aplicativos e bibliotecas.
Ampliando nosso horizonte além da linha do erro, vemos que a compilação falhou na fase build()
da biblioteca ffmpeg-obs
. O script de compilação está disponível no aur/ffmpeg-obs
, e ali podemos confirmar que o gnutls
é uma das dependências listadas e existe uma função chamada build
; mas não recebi nenhuma pista ao redor do que poderia ser o problema nesse caso.
Então, vamos verificar se existe alguma instalação alternativa do obs que não dependa desse pacote, para validar se esse pacote tem algum erro ou se esse erro aparece novamente em outros lugares.
Contra-ataque
Tentei instalar outra versão do OBS chamada aur/obs-linuxbrowser
e tive resultados melhores do que o esperado :raised_hands: um novo erro
# yay -S aur/obs-linuxbrowser
checking for pkg-config >= 0.14.0...
testing pkg-config... not found.
***Error***: You must have pkg-config >= 0.14.0 installed
to build GConf. Download the appropriate package for
from your distribution or get the source tarball at
'http://www.freedesktop.org/software/pkgconfig/releases/pkgconfig-0.14.0.tar.gz
Que mostrou que eu nem tinha o pkg-config
baixado por padrão na minha máquina, agora eu tinha uma nova busca no google pronta:
!g pkg-config arch wiki
com ela encontramos o pacote pkgconf
que provê, dentre outros, o utilitário pkg-config
Conclusões
- Leia as mensagens de erro atentamente, buscando entender os módulos citados e o contexto que o código é executado.
- Ler as mensagens prévias ao erro, o que foi possível executar com sucesso.
- Tente isolar o menor ponto de falha, seja um pacote inteiro ou uma função no seu código, tente se aprofundar e descobrir qual a menor unidade que quando removida soluciona o problema e comece a analisar esse pequeno conjunto para encontrar a causa e construir sua solução.
- Verifique se as dependências de build estão instaladas :sweat_smile:
Reflexão Bônus
Não há nada de errado em pedir ajuda, contudo o seu esforço de tentar solucionar e compartilhar os seus experimentos anteriores valoriza o tempo de quem porventura te ajudará; fora que o próprio ato de formular uma pergunta contextualizada te ajuda, muitas vezes, a solucionar o problema inicial.
Eu cheguei a comentar sobre o erro no fórum do aur, para algumas horas mais tarde solucionar sozinho e editar o comentário, mas foi uma experiência valiosa por si só. O mesmo assunto já foi abordado antes e fica aqui as recomendações de leitura do artigo pelo Silva97 e do gugadeschamps, e seus fios de comentários respectivos.
Sobre o autor
Olá, sou Thales Menezes, e se você chegou até aqui muito obrigado por ler esse conteúdo, eu fiz com muito carinho e espero ter provido algumas risadas e alguma reflexão sobre o comportamento automático de jogar o erro no google e seguir roboticamente o que estiver proposto.
Curso Bacharelado em Ciência da Computação desde 2017, ajudo a introduzir alunos à programação desde 2018, programo profissionalmente desde 2019, abri minha própria empresa em 2021, crio conteúdo em blog e lives na Twitch desde 2022 e em 2023 quero movimentar meu LinkedIn.
Entusiasmado com educação e automação de processos, se te interessa pode gostar de ler sobre a creche. Mas, deixando um pequeno spoiler do próximo conteúdo escrito, planejo integrar os posts escritos no tabnews no meu blog pessoal, e caso a experiência seja interessante, trago o relato pra vocês :wink:.
Como sempre, teus textos são muito bem humorados, super bem explicados e com otimos memes e easter eggs.. Hahahaha amo teu trabalho e amo te ter como amigo, professor e conselheiro.
Estou com um problema no git, mais especificamente em upar arquivos dele pra um repositório no github, tentei de tudo, nada parece funcionar, procurei em fóruns e também não achei nada, vou aplicar os ensinamentos desse post e tentar novamente, se não conseguir posto o problema aqui e dou um cookie pra quem resolver kkkkkkk(se eu conseguir resolver sozinho eu documento e posto aqui no tabnews)
Caraca mano, que interessante, sei que estou no time que a primeira coisa que faço quando recebo uma mensagem de erro é apenas pesquisar no Google. Muitas vezes o erro está gritando na minha cara mas mesmo assim a força do hábito é grande. Outro ponto a ser analisado é quando o software não trata os erros de forma amigável, o que atrapalha e desestimula a leitura e a curiosidade do usuário.
Talvez essa situação se aplique para quem ja tem mais experiencia e esteja lidando com as camadas mais profundas da programação... Pra quem esta em nivel junior/pleno , se seu erro não esta no google, o problema é você kk, saber perguntar também é uma habilidade importante.. as vezes aquele problema é exatamente oq outras 1000 pessoas ja tiveram, porem em outro contexto