No artigo, abordo diversos problemas encontrados nos 3 mais populares gerenciadores de pacotes para Linux.
Eu já tinha certa noção que eram bastante problemáticos, mas admito que ao escrever o artigo acabei descobrindo que são ainda piores do que eu imaginava. É muito curioso que esse tipo de software deficiente seja a base de sistemas críticos no mundo todo.
14 comentários
No geral isso depende muito da política de cada distro com os pacotes. Em algumas o empacotador coloca como dependência todas aquelas que proveem funcionalidades “interessantes”, ou as mais comuns/utilizadas do pacote.
Por exemplo, fui na página de dependências do neofetch e apesar dele requerer obrigatoriamente apenas o bash, qualquer outra funcionalidade mais atraente precisa de algum outro software/lib. É por isso que o empacotador linkou várias outras dependências lá no pacote padrão.
Uma alternativa (que até onde sei o Debian emprega) é você ter o pacote basicão disponível e para cada funcionalidade adicional ter um pacote diferente com a extensão. No caso teríamos algo como o pacote neofetch cruzão, e se alguém quisesse ter imagens no neofetch precisaria do pacote neofetch-images com todas as dependências de imagens instaladas.
Nesse último caso ao invés de termos um texto no Medium falando sobre como os pacotes no Linux são quebrados porque eles instalam várias dependências sem necessidade, teríamos um texto sobre como para ter um software funcionando legal em nossas distros precisamos instalar um monte de pacotes diferentes. :)
Eu também nunca entendi qual é a grande importância desses package managers. Sempre tive a sensação de que eles solucionam quase o mesmo tanto de problemas que eles criam.
Meu sistema tem o APT, uso ocasionalmente, porém cada vez menos. Estou mais e mais seguindo o caminho antigo: baixar, descompactar, ler o README, etc. Como nos velhos tempos. É mais trabalhoso, mas tenho o controle. Há programas que tenho que copiar seus arquivos pras devidas pastas de sistema manualmente. Não é a tarefa mais gostosa do dia, mas com o tempo acostuma.
Estou no Ubuntu, e como você disse no artigo, Snap é uma piada. Instalei o Inkscape com ele e ao usá-lo pela primeira vez ele não “enxergava” meu sistema de arquivos completo quando fui exportar um arquivo. Fique pasmo por ver uma falha numa função tão básica, por um momento pensei que era um bug do Inkscape. Instalei o Inkscape do jeito tradicional e funcionou perfeito.
Mas tarde pesquisei e vi que o Snap segue um conceito de sandbox na qual os programas rodam meio que isolados do sistema. Parece que fizerem isso por questões de segurança, mas enfim, isso é exatamente o oposto do que muitos querem quando se instala um software: ter o aplicativo totalmente integrado ao sistema, partilharem livrarias, evitar repetição de arquivos e desperdício de espaço.
Esse comportamento é provavelmente configurável, mas sei lá, só de ver que é um sistema que foi tão mal pensado… Não é pra mim.
AppImage, embora também não seja uma solução perfeita, parece o mais próximo que o Linux tem de ficar tão fácil quanto o Windows em questão de instalar programas.
Parabéns pelo artigo!
Quando usei o snap aconteceu a mesma coisa, é brincadeira?! Agora imagina um usuário desavisado?
O desenvolvimento do Linux ainda muito ranço nerd, uma preferência pela dificuldade.
Ninguém gosta dos snaps no mundo linux também, exceto a canonical que fica tentando empurrar isso
provavelmente o problema não são os gerenciadores, mas os empacotadores
e nem estou culpando eles, dependendo do caso montar um pacote pode ser complicado
mas pelo menos o Linux sempre teve gerenciadores de pacotes, ao contrário daquele outro sistema que a gente tinha que sair catando as coisas pela internet …
ps.
hoje existem pelo menos 2 gerenciadores para Windows, o Chocolatey (que uso) e o Scoop
e o Windows tem se próprio gerenciador, o winget, mas minha impressão é que seu uso não é estimulado
…isso porque o “testador” não decidiu testar os Flatpak.
Em tempo: os gerenciadores de pacote tem melhorado bastante com o tempo, especialmente o DNF. Mas esperar que sejam a bala de prata aí é querer demais.
Minha experiência é o oposto. Em vinte anos de uso doméstico (e dois de aplicação profissional) tive problemas duas ou três vezes, nenhuma delas fatal. Fedora, Ubuntu e Arch.
Eu uso Debian há 20 e poucos anos. Só vi alguma coisa quebrar quando usaram ppa’s de Ubuntu. Comigo nunca aconteceu. E já atualizei a mesma máquina por 3 lançamentos.
Gerenciadores de pacotes são todos ruins porque é um problema complexo.
Já tive pesadelos com npm e com o nuget do c#
npm é tenso demais. Outro dia, tive que colocar o “resolutions” no package.json porque uma dependencia da dependencia tava dando erro.
O melhorzinho que já usei foi o cargo do rust e mesmo assim ele dá umas engasgadas
Será que as dependências supostamente desnecessárias não são requisitadas apenas em certos contextos, como na execução de uma funcionalidade ou em determinando ambiente gráfico?
Ghedin, faz sentido o que você fala, sim, mas nos casos que mencionei no artigo não há nenhuma relação entre a aplicação e algumas das supostas dependências. Falo porque conheço bem os exemplos ali citados.