Não consigo instalar nada no Linux, o que eu faço?

Introdução

Resolvi criar este tópico para que eu possa enviá-lo para qualquer pessoa que tenha a dúvida do título, dispensando assim a necessidade de ficar explicando a mesma coisa toda vez. Sempre que possível, atualizarei este post.

Sei que o texto é grande, mas é importante que você entenda bem as bases de como funciona o sistema operacional Linux para que então você possa por a mão na massa.

Você já deve saber que existem muitas distribuições Linux, como Ubuntu, Linux Mint, Manjaro, Arch Linux, Mageia, openSUSE, Fedora, Solus, etc. Embora seja tudo Linux, cada uma pode ter suas peculiaridades, como filosofia, forma de empacotar seus programas, forma de como novas versões são lançadas, escolha de softwares base, etc.

A depender da distribuição, a forma de instalação pode ser diferente. Por exemplo, um tutorial ensinado como instalar um programa X no Ubuntu não lhe servirá se você estiver usando o Mageia. Outra coisa muito importante para você que fica olhando para os tutoriais na internet, observe para que versão aquele tutorial se destina, um tutorial para o Ubuntu 18.04 pode não servir para o Ubuntu 20.04, às vezes você até corre o risco de danificar seu sistema se você não se atentar a isso.

Um comentário rápido: daqui em diante escreverei “*ubuntu” (com asterisco) em vez de “Ubuntu” porque quando se fala “Ubuntu”, se associa muito à versão dessa distribuição com GNOME. Já por “*ubuntu” quero dizer a todas as flavors como Ubuntu, Kubuntu, Xubuntu, Lubuntu, etc.

Olha, este é um tutorial para iniciantes a respeito da instalação de programas no Linux, não a respeito do Linux em si, entretanto senti a necessidade de explicar muitos termos básicos para que o entendimento fosse completo, de forma que este material acabou falando do Linux como um todo, uma coisa acabou puxando a outra :sweat_smile:.

O básico

Não sei o quão iniciante é você no Linux, mas vamos conhecer alguns termos básicos para que você entenda que língua estou falando. Tentarei ser breve.

O kernel Linux

Na verdade, na verdade, Linux é apenas o kernel do sistema operacional. Se formos muito certinhos, o sistema operacional mesmo não é “Linux”, mas “Ubuntu”, “Manjaro”, “Linux Mint”, “Fedora”, etc. Mas como é tudo “da mesma espécie”, usamos o nome do kernel para se referir a todos esses sistemas operacionais.

Componentes do sistema operacional Linux

Serei bem breve aqui e deixarei de falar de muitos componentes que não são do interesse do usuário comum. Você não pode usar apenas o kernel Linux, dizer que você pode usar só o kernel é o mesmo que dizer que você pode digirir um motor de carro.

O sistema operacional Linux é composto de várias peças além do kernel, como sistema init, drivers, servidor gráfico, gerenciador de janela, ambiente de trabalho, toda uma coleção de aplicativos, etc.

Eu sugiro que você ao menos leia um pouco sobre os ambientes de trabalho, que o pessoal também chama muito de “ambiente gráfico”.

Por que há tantas distribuições Linux?

Primeiro você tem que saber o que é software livre. Se você não sabe, dê uma lida rápida no artigo da Wikipédia. Pela própria natureza do software livre, não é difícil que sejam criados forks por N motivos de um determinado software. Bom, saiba que distribuições Linux são compostas em sua maior parte de software livre, o kernel mesmo é livre bem como geralmente são os ambientes gráficos e a esmagadora maioria dos aplicativos instalados.

Agora respondendo a pergunta: é porque qualquer um com um mínimo de conhecimento pode criar uma, geralmente as distribuições são feitas usando uma pré-existente como base, como o *ubuntu que fora feito com base no Debian e o Linux Mint fora feito com base no *ubuntu. Mas há distribuições que foram feitas do zero. Lembra dos componentes de um sistema operacional Linux que eu falei no subcapítulo anterior? A depender do componente, há várias alternativas de “peças” que o desenvolvedor pode usar, de forma que diferentes combinações são possíveis – o que favorece ainda mais o surgimento de novas distribuições –, mas geralmente só um pequeno conjunto de softwares é usado na maioria das distribuições.

Mas, no fim do dia, é tudo Linux, por mais diferentes que sejam, essencialmente são o mesmo sistema operacional. Há quem defenda uma unificação (ou seja, que todos usem uma única distribuição Linux), mas, para o bem ou para o mal, a natureza de software livre do Linux não permite que isso seja possível.

Darei uma atenção especial ao *ubuntu porque ele é disparado a distribuição mais popular, se você não o usa diretamente, pode ser que use uma das suas derivações como Linux Mint, Pop!_OS, elementary OS, Zorin OS, etc, ou seja, se você usa Linux Mint, (ou uma das derivações citadas) essencialmente você está usando *ubuntu. Já o *ubuntu por si só foi baseado no Debian. Olha, quando eu falar do *ubuntu, entenda que isso automaticamente também inclui suas derivações, eu quero evitar ficar repetindo “*ubuntu e suas derivações”, por favor tenha isso em mente.

A sua pasta de usuário

A sua pasta de usuário é onde você guarda seus arquivos pessoais (documentos, fotos, música, etc) e é onde ficam os arquivos de configuração do seu usuário em específico. Vamos dizer que você criou o usuário carlos, a pasta de usuário dele será /home/carlos/.

A propósito, quando queremos nos referir à pasta de usuário de forma genérica, usamos a expressão ~. Vamos continuar com o nosso usuário carlos, se eu digo para esse usuário acessar a pasta ~/.config, isso significa que eu quero que ele acesse a pasta /home/carlos/.config. Vamos reforçar, se o nome de usuário é marcela, ~ e ~/.config serão respectivamente /home/marcela/ e /home/marcela/.config

A propósito, arquivos e pastas com um ponto . no início são ocultos, você não pode vê-los a não ser que você configure o seu gerenciador de arquivos para exibi-los.

Terminal

Há muitos tipos de emuladores de terminal, as imagens abaixo mostram só uns.

artigos-linux-terminal-abrir

É um recurso usado para diferentes tarefas. Quando alguém falar para você usar um comando, saiba que é para você abrir o terminal, inserir o código nele e teclar ENTER.

O uso do terminal não é obrigatório, o Linux já oferece muitas opções com interface gráfica para resolver seus problemas, mas o terminal é um recurso muito poderoso. Uma coisa que gosto de fazer com ele é quando estou tendo problemas com um programa, eu o abro através do terminal e vejo que mensagens de erro o terminal exibe, isso é muito útil para resolver problemas.

É imprescindível que você saiba como abrir o terminal numa determinada pasta. Quando você abre o terminal através do menu, ele rodará a partir de ~. Mas digamos que você baixou algo na sua pasta Downloads e necessita manusear aquele arquivo através do terminal. Bom você pode navegar até a pasta Downloads pelo próprio terminal (pesquise sobre os comandos ls e cd), mas acho mais fácil abrir a pasta em questão como você normalmente faria, clicar com o botão direito do mouse em um espaço vazio e procurar por uma opção mais ou menos como “Abrir o terminal aqui”.

Partições importantes

Partição raiz / : onde o sistema operacional é instalado e onde ficam arquivos de configuração e programas disponíveis para todos os usuários daquele sistema operacional.

Partição /home : onde são guardados os arquivos pessoais do(s) usuário(s).

É claro que há outras partições essenciais, mas para o contexto deste tópico, saber dessas duas partições é o suficiente.

A conta root

O Superusuário (ou conta root) é utilizado para fazer alterações na base do sistema (isto é, partição raiz), como adicionar, deletar ou modificar arquivos ou pastas. A conta de usuário que você usa no dia a dia não tem esse poder, isso é algo que contribui para que o Linux seja um sistema operacional bem seguro.

Geralmente você usa a conta root momentaneamente, você percebe isso quando o sistema pede a senha para realizar uma tarefa como instalar um programa. Você usa o superusuário para uma tarefa específica e uma vez que a tarefa é terminada e o programa que a realiza é fechado, o superusuário é “desligado”.

Pacotes

Os programas para Linux tradicionalmente são distribuídos em pacotes .deb (no caso do Debian, *ubuntu e seus incontáveis derivados) ou .rpm (no caso do Mageia, PCLinuxOS, Fedora, openSUSE, etc). Na verdade, há mais formas de empacotamento, por exemplo, Manjaro e Solus não usam os formatos .rpm e .deb. Eu me focarei nos pacotes .rpm e .deb porque basicamente você só encontrará esses dois avulsos na internet, mas tudo o que eu falar deles valerá para as outras formas de empacotamento.

Entenda que um pacote .rpm não pode ser instalado no *ubuntu da mesma forma que um pacote .deb não pode ser instalado no Fedora. Falo isso para que você não estranhe porque você não está conseguindo instalar aquele pacorte .rpm no *ubuntu. Bom, existem programas que podem fazer uma conversão, mas este não seria o cenário ideal.

Um programa geralmente é composto por mais de um pacote. Por exemplo, o pacote vlc (do reprodutor VLC), no *ubuntu, exige pelo menos os pacotes vlc-bin , vlc-plugin-base, vlc-plugin-qt e vlc-plugin-video-output para que o programa VLC seja instalado e funcione, eles são as “dependências” do pacote vlc. Mas atenção, o instalador de pacotes da sua distribuição Linux instala as dependências pra você, você não precisa instalar cada um deles na unha!!!

Veja só as dependências do firefox, para instalar o pacote firefox no *ubuntu 20.04 você precisaria dos pacotes abaixo:

  • lsb-release
  • libatk1.0-0
  • libc6
  • libcairo-gobject2
  • libcairo2
  • libdbus-1-3
  • libdbus-glib-1-2
  • libfontconfig1
  • libfreetype6
  • libgcc-s1
  • libgdk-pixbuf2.0-0
  • libglib2.0-0
  • libgtk-3-0
  • libharfbuzz0b
  • libpango-1.0-0
  • libpangocairo-1.0-0
  • libpangoft2-1.0-0
  • libstdc++6
  • libx11-6
  • libx11-xcb1
  • libxcb-shm0
  • libxcb1
  • libxcomposite1
  • libxcursor1
  • libxdamage1
  • libxext6
  • libxfixes3
  • libxi6
  • libxrender1
  • libxt6

Outro ponto importante é que esses pacotes listados logo acima não são usados apenas pelo Firefox, mas também por outros programas (de forma que muitos deles – se não todos – já são pré-instalados no *ubuntu), por isso que é necessário muito cuidado quando você altera manualmente os pacotes porque você pode quebrar o sistema. Os pacotes formam uma rede toda interconectada.

Realisticamente, você instalará seus programas através da “loja de aplicativos” ou gerenciador de pacotes da sua distribuição. Eu repito, eles instalarão todas as dependências para você sem que você não precise se preocupar com nada!

Não confunda um pacote do Linux (como .deb ou .rpm) com um arquivo .exe ou .msi do Windows. De fato todos eles serão usados para instalar o programa, mas enquanto um arquivo .exe do Windows geralmente carregará TUDO o que o programa precisa (OK, às vezes o programa exige um Microsoft Visual C++ ou .NET Framework, mas você entendeu…), um pacote .deb ou .rpm do Linux carrega apenas parte do programa. Às vezes você pensa que o pacote .deb ou .rpm traz o programa completo porque bastou um único arquivo para instalar o programa, mas o que aconteceu foi que ou o seu sistema operacional já tinha todas as dependências instaladas ou o instalador de pacotes instalou as dependências sem você perceber.

Um exemplo: baixei um pacote .deb do aplicativo MEGA para desktop para instalar no meu Kubuntu, abri-o com o QApt e o instalador me avisou que eu necessitaria instalar 5 pacotes adicionais para que o aplicativo do MEGA fosse instalado e funcionasse corretamente:


Não precisei me preocupar com esses “pacotes extras” (que são as dependências do MEGA) porque o QApt cuidou deles pra mim. A propósito, o QApt é o instalador de pacotes que vem no Kubuntu 20.04, se você não usa essa distribuição em específico, pode ser que o instalador de pacotes seja outro.

Existem outras formas de empacotamento que eliminam a preocupação com dependências e são universais (isto é, podem ser instaladas em qualquer distribuição), elas são o AppImage, Flatpak e Snap. Talvez você queira ler o artigo do Blog DioLinux sobre esse assunto. Mas deixe isso para depois, se foque em como instalar programas no modo tradicional.

Para instalar um programa na base do sistema Linux, você precisa usar a conta de superusuário.

As “lojas de aplicativos” e gerenciadores de pacotes

Esses dois fazem a mesma coisa, eles baixam e instalam programas para você. A grosso modo, a “loja de aplicativos” é mais bonitinha enquanto (a interface gráfica d)o gerenciador de pacotes exibe os pacotes com mais detalhes.

Creio que você deve estar se perguntando por que escrevo “lojas de aplicativos” entre aspas. É porque, a depender da distribuição e/ou ambiente gráfico, ela pode se apresentar por outro nome. No Ubuntu 20.04 é o GNOME Software enquanto no Kubuntu 20.04 é Discover.

Sobre (a interface gráfica de) gerenciador de pacotes, creio que o mais famoso seja o Synaptic. Na verdade, o Synaptic, e outras ferramentas que citarei neste parágrafo, são front-ends gráficos de gerenciadores de pacotes, então entenda que uso o termo “gerenciador de pacote” para as front-ends para manter o conteúdo deste tutorial mais simples. Pois bem, o Synaptic está disponível para o *ubuntu e também para o PCLinuxOS; mas no Kubuntu 20.04 o Muon veio no lugar do Synaptic, mas você pode baixar este último através do comando abaixo, que usa o gerenciador de pacotes via terminal:

sudo apt install synaptic

O Synaptic é uma front-end para o gerenciador de pacotes APT. Veja só, o Manjaro não usa o APT, ele usa o Pacman, então você precisa do equivalente ao Synaptic do Manjaro que consegue lidar com o Pacman, que seria o Octopi.

Um toque, da mesma forma que programas como Synaptic e Octopi são interfaces gráficas para o gerenciador gráfico, “loja de aplicativos” como Discover e GNOME Software também o são; ou seja, no fim do dia todo mundo está ligado ao gerenciador de pacotes.

Repositório

Para 99% dos casos, você usa a “loja de aplicativos” ou gerenciador de pacotes da sua distribuição para baixar os programas dos repositórios da sua distribuição, que é um local online de onde você baixa os programas. Falo isso porque muita gente vem do Windows com aquela cultura de baixar o instalador do programa de um site para então instala-lo no sistema operacional (se bem que o Windows tem sua loja, mas…). Mas no Linux, geralmente você não precisa “caçar” o instalador em diferentes sites da internet, a maioria deles se encontram nos repositórios. O gerenciador de pacotes baixa e instala os pacotes do(s) programa(s) para você, tudo no automático.

Cada distribuição tem seu conjunto próprio de repositórios. Por exemplo: os repositórios do *ubuntu não se misturam com os repositórios do Mageia.

Preciso dizer que existem distribuições com repositórios mais ricos de programas que os repositórios de outras distribuições, por exemplo, os repositórios do Arch Linux são mais ricos que os do *ubuntu. Outra coisa, lembre-se que certas distribuições podem parecer ser diferentes, mas compartilham a mesma base. Lembra de quando eu disse que o Linux Mint é “a mesma coisa” que o *ubuntu? O que estou querendo dizer é que o Linux Mint (assim como qualquer outro derivado do *ubuntu) usa os repositórios do *ubuntu. É importante que você conheça a base da distribuição que você está utilizando! Uma pesquisa rápida na Wikipédia é o suficiente.

Para complementar o conteúdo dos repositórios, é possível adicionar repositórios extras, os exemplos mais comuns são as PPAs do *ubuntu ou o AUR do Arch Linux (observe, não é possível utilizar o repositório AUR no *ubuntu ou PPAs no Arch Linux); por exemplo, eu uso o *ubuntu 20.04 e quero instalar o reprodutor de música DeaDBeeF, mas ele não se encontra nos repositórios oficiais, felizmente posso adicionar uma PPA desse programa em específico e ele estará disponível para ser baixado e instalado pelo gerenciador de pacotes. Tenha muito cuidado com as PPAs e o AUR porque eles podem quebrar alguma coisa no seu sistema. Não quero fazer terrorismo, eu mesmo uso muitas PPAs, mas use-os apenas quando você entender um pouco mais a respeito das dependências do Linux.

Mas é verdade que ainda haverá programas que você terá que baixar diretamente do site, isso geralmente acontece com programas proprietários, mas alguns programas livres podem não estar presentes nos repositórios da sua distribuição por um motivo ou outro. Eles poderão estar disponíveis em diferentes formas, como em pacotes .deb ou .rpm, em AppImage, em uma PPA e por aí vai.

fixed release, rolling-release e o *ubuntu LTS

Fixed release e rolling-release são duas formas de lançamento de novas versões do sistema operacional.

O fixed release é aquela maneira tradicional em que, de tempos em tempos, você precisa instalar uma nova versão do seu sistema operacional. Por exemplo, no caso do Windows em que houve a evolução do Windows 7 para o Windows 8, do Windows 8 para o Windows 8.1 e do Windows 8.1 para o Windows 10, correto? Muitas distribuições seguem esse modelo em que, de tempos em tempos, você precisa formatar o computador para instalar a nova versão. Por exemplo: Mageia 5, Mageia 6, Mageia 7 e por aí vai.
Exemplos de distribuições fixed release: *ubuntu, Fedora, Mageia

O modelo rolling release é aquele em que você só precisa instalar o sistema operacional uma única vez e ele ficará atualizando continuadamente pelo resto da vida, ou seja, você não precisa formatar a máquina de tempos em tempos, pois tudo é atualizado sem parar. A propósito, o Windows 10 meio que adotou essa abordagem. Você verá novas versões sendo lançadas de uma distribuição rolling release, mas isso é apenas para que você instale o sistema operacional com programas mais atualizados e não precise fazer uma primeira atualização gigante.
Exemplos de distribuições rolling release: Manjaro, Solus, PCLinuxOS

Saiba que mesmo dentro de uma mesma distribuição fixed release, os repositórios são separados. Ou seja, o *ubuntu 18.04 tem o conjunto de repositórios dele enquanto o *ubuntu 20.04 tem seus próprios repositórios, eles não se misturam. Mas distribuições rolling release têm um único conjunto de repositórios, uma vez que não há a noção de versão nessas distribuições.

Falarei especialmente do *ubuntu porque ela e suas derivações são muito populares, então é importante conhecer seu modelo. Até o momento que escrevi este tópico, o *ubuntu era uma distribuição fixed-release. A cada seis meses (uma em abril e outra em outubro) uma nova versão do *ubuntu é lançada. A numeração de versão do *ubuntu indica a sua data de lançamento, por exemplo, o *ubuntu 18.10 foi lançado no mês 10 de 2018 enquanto o *ubuntu 20.04 foi lançado no mês 04 de 2020.

Normalmente, cada versão do *ubuntu é mantida por 9 meses (depois disso elas não recebem atualizações de segurança e os repositórios não tardam para serem fechados). Mas, a cada dois anos, é lançada uma versão LTS do *ubuntu, que são mais estáveis e cujo suporte dura 5 anos. Veja só:
*ubuntu 20.04 = lançado em abril de 2020, seu suporte durará até abril de 2025.
*ubuntu 20.10 = lançado em outubro de 2020, seu suporte durará até julho de 2021.
Você percebe que mesmo que o *ubuntu 20.10 tenha sido lançado depois, seu suporte acabará muito antes que o do *ubuntu 20.04? O usuário comum deve preferir as versões LTS por serem mais estáveis e terem maior tempo de suporte.

Muitos derivados do *ubuntu são baseados na versão LTS do *ubuntu. Se você usa o Linux Mint 20, você essencialmente está usando o *ubuntu 20.04, da mesma forma que o Linux Mint 19 era baseado no *ubuntu 18.04.

Principais causas para você não estar conseguindo baixar, instalar ou rodar programas

Usarei mais o *ubuntu como exemplo porque é a base que eu mais conheço e porque muitas distribuições são baseadas nele. E repito, quando falo de *ubuntu, automaticamente também me refiro às derivações dele.

Lista de repositórios desatualizada (aproveite e atualize o sistema)

No *ubuntu, rode o seguinte comando para atualizar a lista de repositórios && atualizar o sistema:

sudo apt update && sudo apt upgrade

Essa palavrinha sudo serve para chamar o superusuário. Repare que o terminal pedirá sua senha. É normal que a senha não apareça a medida que você digita.

No Manjaro, rode o seguinte comando:

pacman -Syu

Outro programa (ou processo) de instalação de pacotes está aberto…

…,portanto, bloqueando o novo processo de instalação de pacote que você quer realizar. Veja direitinho o que você tem aberto. Na dúvida, reinicie o sistema.

Pacote .deb ou .rpm não quer instalar devido a problemas com dependências

Quando você clica duas vezes no pacote .deb ou .rpm, teoricamente era para abrir um instalador de pacotes que organizaria tudo pra você, como o QApt do Kubuntu. Pode ser que o sistema esteja abrindo o pacote com um descompactador de arquivos, clique com o botão direito do mouse sobre o pacote, vá em Abrir com... e veja se não tem a opção de gerenciador de pacotes.

Bom, há outro método. Abra o terminal na pasta onde se encontra o pacote baixado e rode o comando adequado.

No caso do *ubuntu, rode o comando abaixo em que você substitui ## pelo nome do arquivo.

sudo dpkg -i ##.deb

Depois de instalado o pacote, rode o comando abaixo pra ver se nenhuma dependência ficou de fora:

sudo apt install -f

Aparece uma mensagem de erro com o dpkg

Rode o comando abaixo para ver se corrige a bagunça:

sudo dpkg --configure -a

AppImage não quer rodar

Ele está na pasta Downloads, né? Geralmente essa pasta tem uma trava para executáveis. Normalmente o povo sugere que você use o comando abaixo, em que você substitiu o ## pelo nome do programa, para dar pemissão ao arquivo:

chmod a+x ##.AppImage

E então o executar pelo comando abaixo (não se esqueça de substituir o ##)

./##.AppImage

Mas eu acho mais fácil mover o AppImage para outra pasta e executa-lo com um duplo clique se seu ambiente gráfico permitir isso. Eu mesmo sempre tenho uma pasta ~/Programas para esse tipo de coisa.

12 Curtidas

Ficou muito legal, mesmo faltando algumas coisas… a medida que o pessoal vá comentando, complete o tutorial, @rasolar!
Parabéns!! :clap:t2: :clap:t2: :clap:t2:

1 Curtida

Você poderia me dizer o que é, assim poderei complementar.

Vou dar umas sugestões então

  1. Falar dos instaladores, como o GDebi e o Eddy, além do QApt
  2. Falar de como desinstalar via terminal sem quebrar pacotes
  3. Ensinar a retirar os “restos” das desinstalações de menus etc. quando eles não saem
1 Curtida

Por conta do meu uso do Linux, que se limita ao Kubuntu e do fato de eu não ter o costume de deletar programas, não domino esses tópicos.

Tem como você mesmo comentar rapidinho sobre eles aqui?

1 Curtida

Por partes:

  1. O GDebi costuma ser o padrão das principais distros .deb; é bem intuitivo e costuma resolver os pacotes que faltam; o Eddy é o padrão do Elementary, funciona como no MacOS, vc joga o pacote nele e já começa a instalar (tem um vídeo do Dio ensinando a usar)
  2. Eu não uso *ubuntu faz um tempo, mas tem o apt autoremove, o apt autoclean e o apt install -f (ou algo assim, não lembro). Seria legal falar das diferenças e como usar cada um em sudo
  3. Tem que pesquisar, mas se não me engano esses restos ficam na pasta opt - e por isso acabam no menu das distros mesmo após desinstalados. Acho que vale a pesquisa (aqui no fórum tem tópicos sobre, creio)
    Um adendo é ensinar a usar o Appimage Tool (que coloca os appimages no menu, acho) e o Appimage Update (que atualiza, quando possível, os appimages) - já que vc fala de Appimages no tópico
3 Curtidas

Esse tópico é ótimo para iniciantes, uso linux a 5 meses e o que sei é basicamente isso aí, o problema é que se eu o tivesse encontrado quando comecei (e se ele já existisse) provavelmente eu nao reconheceria o seu valor e não leria, acho que isso vai acontecer com muita gente, principalmente se eles quiserem (como diz o título) apenas instalar um programa. Talvez seria melhor se o título fosse outro, algo que convencesse alguem a ler tudo, como “Adquira 5 meses de experiencia no linux em 30 minutos” kkkkk.

De qualquer forma parabéns pela iniciativa.

1 Curtida