Tudo sobre Tecnologia da Informação

Dicas para Linux Parte 1

Instalação de Programas

Via Terminal

Para atualizar ou instalar programas, digite apt-get como root, e utilizando o nome do programa, assim:


sudo apt-get install nomedoprograma

PS: Caso não queira que peça confirmação para instalação, use o parâmetro -y.

Lembrando que o comando sudo dá uma permissão temporária de root para tarefas que exijam o superusuário. Caso você esteja usando o Debian e não encontre o sudo, basta instalar e habilitar ele com esses comandos (como root):


apt-get update

apt-get install sudo

adduser nomedeusuario sudo

shutdown -r now

Para desinstalar, o mesmo processo, substituindo install por remove (o parâmetro purge remove as dependências):


sudo apt-get --purge remove nomedoprograma

PS: Podemos remover programas instalados por deb dessa forma também.

Podemos ver o cache dele para vermos o nome exato do programa pra baixar, por exemplo:


sudo apt-cache search nomedoprograma

Para vermos os dados sobre o programa, fazemos assim:


sudo apt-cache show nomedoprograma

Para vermos as dependências de um programa, fazemos assim:


sudo apt-cache depends nomedoprograma

Lembrando que atualmente, as opções apt-get e apt-cache podem ser resumidas somente para apt, como apt install nomedoprograma.

PS: Para podermos instalar arquivos, comente em /etc/apt/sources.list a parte /media/cd-rom para não pedir disco de instalador.

Para adicionar um usuário como sudo, edite o arquivo em /etc/sudoers, e coloque esse trecho de código:


nomedousuario	ALL=(ALL:ALL) ALL

Instalar Pacotes Tar

Se for instalar programas baixados em arquivos tar:


cd ~/Downloads

# Isso descompactará o pacote tar:

tar -zxvf nomedopacote.tar.gz

sudo mv nomedodiretoriodoprograma /opt/

# Isso é pra criar um link para acessarmos diretamente o programa pelo terminal:

sudo ln -s /opt/nomedodiretoriodoprograma/nomedoprograma /usr/bin/nomedoprograma

rm nomedopacote.tar.gz

O comando ln -s cria um link para a pasta /usr/bin, de forma que possamos abrir ele usando o terminal apenas digitando o nome do programa.

Esse processo pode ser usado para instalar programas (caso já estejam compilados) na pasta /opt, por exemplo, onde ele ficará acessível a todos os usuários.

PS: Se conter um arquivo install ou readme, olhe ele para ver se a forma de instalar pode ter alguma diferença, como dependências ou comandos específicos. A documentação do desenvolvedor no site oficial também pode ter informações do tipo.

Só lembrando de que o tar é apenas um arquivador, as extensões xz, bz2, gz e etc., são as compactações usadas nos arquivos, que se tiverem em c, cpp e h, e tiverem um makefile, eles não foram compilados (são apenas códigos-fontes). Quanto tiverem arquivos so, sh e executáveis (sem extensões, geralmente), ele já está compilado. Sempre olhe dentro da pasta descompactada para ver os tipos de arquivos dentro dela.

Caso o pacote tar venha com os códigos-fonte pra compilar, use esses comandos para compilar o programa (pode demorar um pouco), após mover ele pro diretório definitivo (como o /opt):


# Os processos do configure e make são apenas para programas não compilados:

./configure

make

make clean

sudo make install

Nesses casos podemos ignorar os comandos de mover pra /opt e criar link, pois estes costumam ser incluídos já no makefile do programa.

Alguns pacotes não tem o configure (apesar de que pode estar com o nome do programa, nesse caso use o comando com o nome), só pular pro make, se já estiver compilado e tiver um makefile, vá pro make install. O tar é um arquivador e a extensão (tipo gz, xz ou bz2) é o compactador, então teoricamente pode ter qualquer tipo de arquivo dentro dele, como códigos-fontes pra compilar, programas prontos, ou outros tipos de arquivos como pacotes deb e scripts sh.

Alguns arquivos tar já vem com os programas compilados, nesses não é necessário usar o configure, apenas o make ou pode até usar diretamente, mas pode ser necessário dar o chmod pra execução. Caso o configure não rode, use o comando ./configure --prefix=/usr/local --with-slang=/goodies/lib. Podemos usar o ./configure --disable-pacote para desabilitar algum pacote não instalado. Pode ser necessário usar cmake no lugar de make.

PS: Ao usar o configure, pode ter algum pacote não instalado no sistema, nesse caso de um apt-get no pacote e depois tente rodar o configure, tente também um sudo apt-get -f install.

Para deinstalar é só ir no diretório onde ele se localiza e dar make uninstall.

PS: Para compilar corretamente é necessário ter instalado o build-essential, usando um sudo apt-get install build-essential, que contém as ferramentas necessárias, incluindo o gcc e g++. Também é necessário instalar o zlib, com sudo apt-get install zlib, sudo apt-get install zlib-devel, ou já faça tudo com sudo apt-get install build-essential libglib2.0-dev libgtk2.0-dev libxml2-dev openbsd-inetd ckermit libgtk-3-dev checkinstall.

Lembrando que cara tipo de arquivo tem seu comando específico para descompactar, como podem ver:

Criar Atalhos

No Ubuntu podemos criar atalhos dessa forma:


cd ~/Desktop

touch nomedolancador.desktop

chmod +x nomedolancador.desktop

E editar o lançador criado, com esse código aqui, substituindo pelas partes desejadas:


[Desktop Entry]
Name=NomeDoPrograma
Type=Application
Exec=/usr/bin/nomedoprograma
Icon=/usr/share/icons/gnome/48x48/caminhodaimagem.png 

Caso queira um atalho com acesso root, faça ele assim:


[Desktop Entry]
Name=NomeDoPrograma
Type=Application
TryExec=su-to-root
Exec=su-to-root -X -c /usr/bin/nomedoprograma
Icon=/usr/share/icons/gnome/48x48/caminhodaimagem.png 

Um lançador para diretórios também pode ser feito, da seguinte forma:


[Desktop Entry]
Name=NomeDoDiretorio
Type=Link
URL=file:///usr/bin/
Icon=folder

PS: Se colocarmos o atalho na pasta padrão (que é /usr/local/share/applications), ele aparecerá na lista de aplicativos normalmente.

Caso queira criar um atalho para uma programa instalado pelo repositório, veja as pastas que os executáveis e as imagens estão digitando whereis nomedoaplicativo (geralmente é em /usr/bin e /usr/lib, respectivamente. Também podemos colocar um ícone padrão do sistema, como o "folder" no código acima, que pode ser o nome do aplicativo, por exemplo.

Usando Pacotes deb e o dpkg

As principais distros são baseadas na Debian, como o Ubuntu, Kali, Parrot e Mint. Esses sistemas usam os instaladores deb e o dpkg para os instalar.

Se for um arquivo deb, apenas digite sudo dpkg -i nomedopacote.deb ou clique com o botão direito no arquivo e selecione a opção instalar pacote. Pode ser necessário baixar algumas dependências antes. O mesmo serve pra atualizar um pacote já instalado.

Se formos instalar um arquivo rpm em sistemas baseados em Debian, instale o alien e digite sudo alien nomedopacote.rpm e depois sudo dpkg -i nomedopacote.deb.

Ao instalar deb, ele já instalará os arquivos nas pastas específicas, assim como o apt pelo repositório. É parecido com os apk do Android.

Para remover um arquivo deb, digite sudo dpkg -r nomedoaplicativo, ou use o apt para isso.

Para listar os pacotes deb instalados, digite dpkg -l (podendo usar também dpkg -l | wc -l). Para listar um pacote específico, digite dpkg -l nomedopacote ou apt list nomedopacote.

Para reconfigurar o dpkg, digite sudo dpkg --configure -a.

Outras Formas de Instalar Programas

Para instalar um arquivo sh, basta dar permissão de execução com sudo chmod +x nomedoscript.sh e rodar ele com sudo ./nomedoscript.sh. O processo com arquivos run, bin, appimage ou sem extensão (mas que seja executável ou script) é o mesmo. Pode ser necessário instalar dependências caso a instalação dê erro.

Um arquivo .AppImage pode ser executado diretamente sem instalar e sem dar permissões, no entanto, requer um pouco de cautela ao executar esses tipos de programas.

Algumas distros como o Ubuntu tem loja de aplicativos, onde podemos baixar diretamente vários programas, podemos procurar por exemplo, o BleachBit (limpador de sistema para Linux) e instalar sem dificuldades.

Adicionando Repositórios

Para adicionar um repositório, podemos fazer algo assim (esse exemplo é pro Java):


sudo add-apt-repository ppa:linuxuprising/java
sudo apt-get update
sudo apt-get install oracle-java14-installer

Para remover é só digitar sudo add-apt-repository http://ppa.launchpad.net/linuxuprising/java/ubuntu --remove.

Para corrigir erros no download do Java, primeiramente pegue o link do download certo e seu checksum no site da Oracle: https://www.oracle.com/java/technologies/javase-downloads.html

Tente instalar o Java pelo repositório normalmente, depois edite o arquivo localizado em /var/lib/dpkg/info/ com o nome oracle-java14-installer.postinst (ou versão equivalente) como root, e altere essa linha para o checksum da versão especificada do Java:


SHA256SUM_TGZ="927cfcfff502c5e73db33bb6fee7f29f62bd0e831233fd78cd58a5b998bc73be"

E no mesmo arquivo, altere a versão e a versão menor aqui:


JAVA_VERSION=14.0.1
JAVA_VERSION_2nd_PART=
JAVA_VERSION_MINOR=7

E corrija o restante do link aqui (no caso, o hash do link):


PARTNER_URL="http://download.oracle.com/otn-pub/java/jdk/${JAVA_VERSION}+${JAVA_VERSION_MINOR}/664493ef4a6946b186ff29eb326336a2/$FILENAME"

Caso não consiga atualizar por esse método, copie o conteúdo do pacote tar.gz na pasta java-14-oracle ou equivalente em /usr/lib/jvm. Ou jogue o tar.gz na pasta /var/cache/oracle-jdk14-installer-local ou equivalente.

Baixando um deb pelo Terminal

Também é possível baixar arquivos de um servidor pro Linux com o comando wget, veja um exemplo pra baixar o otimizador Stacer, para instalação posterior:


wget https://github.com/oguzhaninan/Stacer/releases/download/v1.0.6/Stacer_1.0.6_i386.deb -O stacer.deb

PS: É possível baixar qualquer tipo de conteúdo dessa forma.

Atualização do Sistema

Para atualizar o sistema, usamos esses comandos:


sudo apt-get -f install
sudo apt-get update
sudo apt-get upgrade
sudo apt-get -u dist-upgrade
sudo apt-get clean
sudo apt-get autoclean
sudo apt-get autoremove

Atualmente, podendo ser também só com apt, assim:


sudo apt install -f
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
sudo apt clean
sudo apt autoclean
sudo apt autoremove

PS: O dist-upgrade pode ser substituído por full-upgrade.

O comando update apenas atualiza a lista de programas a atualizar, para atualizar os mesmos usamos os comandos upgrade e dist-upgrade.

Esteja atento as diferenças:

PS: Caso apareça algum erro tipo "não foi possível obter trava /var/lib/dpkg/lock", execute sudo rm /var/lib/dpkg/lock (coloque o caminho que aparecer no erro). Mas o recomendado é matar o processo, usando kill -9 1503 (o número do processo mostrado).

Para listar os pacotes já instalados, use o comando sudo apt list --installed ou dpkg -l. Para listar os pacotes digite apt list e para lista os pacotes a atualizar, digite apt list --upgradable.

Se tiver problemas com atualizações de repositórios, digite sudo rm -r /var/lib/apt/lists/* -vf.

Ao dar erro em busca de arquivos, tente dar um update ou digite sudo apt-get upgrade --fix-missing (podendo fazer também com dist-upgrade).

Se algum pacote não atualizar com upgrade nem dist-upgrade, apenas dê um sudo apt install nomedopacote para forçar a atualização.

Se aparecer problemas com dependências de arquivos ao instalar, execute esses comandos:


sudo apt-get clean
sudo apt-get update
sudo dpkg --configure -a
sudo apt-get install -f
sudo apt --fix-broken install
sudo rm /var/cache/debconf/*.dat 

Em algumas situações, principalmente ao instalar arquivos DEB, as dependências já são corrigidas com o sudo apt-get install -f. Dependendo do caso, pode ser necessário rodar sudo dpkg --reconfigure -a, podendo também ser especificado um pacote específico (o mesmo vale para o configure).

PS: O apt-get clean também é usado para limpar arquivos de instalação já usados, pode ser usado apt-get autoclean também, ou autoremove para remover pacotes não usados.

Limpando RAM

Para limpar a RAM do Linux, use esses comandos na ordem:


sudo sync

sudo sysctl vm.drop_caches=3

sudo sh -c 'echo 3>/proc/sys/vm/drop_caches'

Distros Baseadas em Red Hat

As dicas dessa página foram em sua maioria, usadas em distros baseadas em Debian (como Ubuntu, Mint, Kali, Parrot), mas a maioria consegue também ser aplicada em distros baseadas em Red Hat (como Fedora, CentOS, OpenSUSE, Oracle Linux), no entanto, essas últimas não utilizam o apt-get e nem o dpkg, e sim o yum e o rpm.

Para atualizar distros baseadas em Red Hat, digite esses comandos:


yum check-update # Checa o que tem pra atualizar
yum upgrade # Atualiza os programas
yum upgrade system-upgrade # Atualiza os programas e o sistema
yum clean packages # Limpa os pacotes em cache
yum clean all # Limpa os pacotes já baixados
yum autoremove # Remove pacotes não usados

Para instalar um pacote específico digite yum install nomedopacote, para remover digite yum remove nomedopacote, e para procurar um pacote, yum search nomedopacote. Para listar os pacotes, digite yum list e se for listar um determinado pacote, use o comando yum list nomedopacote. Para listar pacotes a atualizar use yum list --updates e para listar os pacotes já instalados, digite yum list --installed.

Para instalar um pacote rpm baixado, use o comando rpm -i nomedopacote.rpm (pode ser necessário instalar dependências antes), para atualizar um pacote use o comando rpm -U nomedopacote.rpm e para remover um pacote digite rpm -e nomedopacote (sem a extensão mesmo).

Para listar os pacotes já instalados, use o comando rpm -qa.

Em distros baseadas em Red Hat, também podemos usar o programa Alien para converter deb para rpm, digitando o comando alien --to-rpm nomedopacote.deb como root, e depois pra instalar use normalmente rpm -i nomedopacote.rpm.

Hoje temos como opção também o gerenciador de pacotes dnf, cujos comandos básicos são esses:


dnf check-update # Verifica atualizações
dnf upgrade # Atualiza os programas
dnf system-upgrade # Atualiza o sistema
dnf clean packages # Limpa os pacotes em cache
dnf clean all # Limpa os pacotes já baixados
dnf autoremove # Remove pacotes não usados

dnf install nomedopacote # Instala um pacote
dnf remove nomedopacote # Remove um pacote
dnf search nomedopacote # Procura um pacote
dnf list # Lista os pacotes disponíveis
dnf info nomedopacote # Mostra informações sobre um pacote
dnf check-update # Também lista os pacotes a atualizar
dnf list installed # Lista os pacotes instalados

PS: Todos os comandos devem ser executados como root.

Diretórios Importantes do Sistema

Esses são os diretórios mais importantes do Linux e sistemas baseados em Unix:

PS: Os diretórios são reconhecidos como arquivos no Linux.

O Android (que também usa Kernel Linux) também possuí a maioria desses diretórios (exceto /boot, /cdrom, /home, /mnt, /opt, /run, /srv, /usr e /var) não acessíveis em sistemas sem root, e tem outras pastas como a /cache (armazenamento de dados pra execução), /data (dados), /init (inicialização), /sdcard (cartão SD), /storage (área de armazenamento) e /system (sistema).

PS: A pasta /opt: Pode ser usado para instalar arquivos de downloads.

Para mover entre pastas usamos cd (igual no DOS), para exibir conteúdo do diretório ls.

O arquivo ~/.bashrc é onde está o path do usuário, onde podemos adicionar variáveis de ambiente colocando export PATH=$PATH:/caminhododiretorios/, e em /etc/bash.bashrc podemos colocar outras variáveis de ambiente, na sintaxe NOMEDAVARIAVEL=conteudo. Podemos também colocar outros diretórios no path de forma global no arquivo /etc/environment, separado por dois pontos (como :/caminhododiretorio).

PS: Evite colocar caminhos com espaços.

Parte 2 da Matéria