Executando verificação de segurança...
10

O que fazer quando o erro não está no google?

Gru's Plan Meme |  Encontrei um erro; Pesquisa erro no Google; Ninguém encontrou esse erro antes; Ninguém encontrou esse erro antes | image tagged in memes,gru's plan | made w/ Imgflip meme maker

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.

Página de erro 404 do GitHub
Página exibida ao colocar um endereço inválido no GitHub

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.

Cena do filme Carros, pós pit stop com o guido segurando a parafusadeira
"PitStop" nível Guido

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?

Cavaleiro da Lua lançando coisas aleatórias
A primeira abordagem foi um tanto caótica e pouco elegante,

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.

Menina nervosa tremendo enquanto segura xícara de chá
Vamos tentar manter a calma,

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:

  1. Revisar mensagem de erro;
  2. Compreender módulos relacionados;
  3. 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:

  1. Comando executado que falhou;
  2. Arquivo ou etapa que estava sendo executada;
  3. 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 [email protected] 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

Advogado Phoenix Wright apresentando evidências
Agora melhor preparado,

Tentei instalar outra versão do OBS chamada aur/obs-linuxbrowser e tive resultados melhores do que o esperado 🙌 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

Bebê comemorando em jogo de hockey
Solucionamos o erro, o que aprendemos?

Conclusões

  1. Leia as mensagens de erro atentamente, buscando entender os módulos citados e o contexto que o código é executado.
  2. Ler as mensagens prévias ao erro, o que foi possível executar com sucesso.
  3. 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.
  4. Verifique se as dependências de build estão instaladas 😅

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 😉.

Carregando publicação patrocinada...
2

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.

2

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)

1

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.

1

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

-8
3

"Pedir para o chat GPT", expandindo a colocação do @natanael755, retorna ao problema original: você continuará dependendo de trilhar caminhos conhecidos abertos por terceiros.

A reflexão que propus no artigo era que muitas vezes terceirizamos a solução de problemas para um oráculo moderno, não compreendemos os motivos dos erros que encontramos, não nos permitimos sermos educados por eles, temos medo dos erros e, com isso, somos limitados a testar coisas aleatoriamente até funcionar.

ChatGPT, Google ou Akinator, o efeito é o mesmo; são todas ferramentas que a qualidade das respostas depende da qualidade das perguntas.

Falando sobre o ChatGPT especificamente recomendaria o vídeo do Fábio Akita, que mostra como, para quem tem o conhecimento crítico para avaliar os resultados e tecer as perguntas certas, o ChatGPT te trará uma experiência semelhante a interagir com um júnior/trainee.

A leitura e a compreensão de erros pode te agregar valiosos conhecimentos específicos (ferramenta ou app que apareceu o erro) e gerais (solução de problemas), necessários para avançar o estado da arte da tecnologia.

1

Discordo um pouco, estou usando chat gpt para tirar umas dúvidas, faço umas perguntas bem meia boca pra ele e ele já entende, na maioria das vezes não de primeira, mas com o contexto da conversa ele chega no resultado, não to falando de criação de métodos, mas de solução de erros, configurações de ambiente e trechos de codigos rápidos, funcionou muito bem, alias melhor do que as pesquisas que fiz anteriormente e não achei uma resposta atualizada.

1

No estado atual, o ChatGPT ainda erra bastante e sempre vai precisar de alguém para conferir o que ele fez.

Vale a mesma regra de hoje: atualmente muita gente copia e cola código que achou no Stack Overflow e outros sites, sem analisar se aquilo está certo ou se fez sentido, quando o certo seria primeiro conferir e testar em vez de sair usando cegamente. O mesmo vale para o ChatGPT, é uma ferramenta poderosa com muito potencial, mas não use-a sem questionar os resultados.

Abrace a tecnologia, mas com ressalvas. Nunca ache que uma coisa específica vai ser a solução mágica para todos os problemas, por mais incrível e revolucionária que pareça.