# MANUAL TÉCNICO - GERENCIAMENTO DE PACOTES E ATUALIZAÇÕES

**Código:** ITGINF 0010/26 | **Classificação:** RESTRITO
**Responsável:** João Pedro Toledo Gonçalves | **Data:** {{DATA_ATUAL}}

## 1. HISTÓRICO DE REVISÃO

| Data | Versão | Descrição | Autor |
| :--- | :--- | :--- | :--- |
| {{DATA_ATUAL}} | 1.0 | Criação Inicial | João Pedro Toledo Gonçalves |

## 2. OBJETIVO
Orientar a instalação, remoção, atualização de softwares e resolução de problemas de repositórios em servidores Linux (Debian/Ubuntu e RHEL/CentOS).

## 3. PRÉ-REQUISITOS
*   [ ] Acesso root ou usuário com permissão `sudo`.
*   [ ] Conexão com a internet liberada no Firewall (Portas 80/443).

---

## 4. COMANDOS POR FAMÍLIA DE DISTRIBUIÇÃO

> ⚠️ **IDENTIFIQUE O SISTEMA:**
> Use `cat /etc/os-release` para saber se está no **Debian/Ubuntu** ou **RHEL/CentOS**.

### Família Debian (Ubuntu 24.04, Debian 11/12)
Gerenciador: **APT** (`apt`) e **DPKG**.

| Ação | Comando |
| :--- | :--- |
| **Atualizar lista** | `sudo apt update` |
| **Aplicar updates** | `sudo apt upgrade -y` |
| **Instalar App** | `sudo apt install [pacote]` |
| **Remover App** | `sudo apt remove [pacote]` |
| **Remover + Configs** | `sudo apt purge [pacote]` |
| **Buscar Pacote** | `apt search [termo]` |

### Família RHEL (AlmaLinux, Rocky, CentOS)
Gerenciador: **DNF** (`dnf`) ou YUM (Legado).

| Ação | Comando |
| :--- | :--- |
| **Atualizar tudo** | `sudo dnf update -y` |
| **Instalar App** | `sudo dnf install [pacote]` |
| **Remover App** | `sudo dnf remove [pacote]` |
| **Buscar Pacote** | `dnf search [termo]` |
| **Info do Pacote** | `dnf info [pacote]` |

### Família Alpine (Alpine Linux)
Gerenciador: **APK** (`apk`). Extremamente rápido.

| Ação | Comando |
| :--- | :--- |
| **Atualizar lista** | `sudo apk update` |
| **Atualizar tudo** | `sudo apk upgrade` |
| **Instalar App** | `sudo apk add [pacote]` |
| **Instalar sem Cache** | `sudo apk add --no-cache [pacote]` (Comum em Docker) |
| **Remover App** | `sudo apk del [pacote]` |
| **Buscar Pacote** | `apk search [termo]` |

---

## 5. SOLUÇÃO DE PROBLEMAS (TROUBLESHOOTING)

### Problema 1: Erro "Server Not Found" ou Lentidão (Troca de Mirrors)

Muitas vezes o repositório padrão é lento ou está fora do ar.

**No Debian/Ubuntu:**
1.  Instale o `netselect-apt` para achar o mirror mais rápido (opcional, ou edite manualmente).
2.  Edite a lista de fontes:
    ```bash
    sudo nano /etc/apt/sources.list
    ```
    *(No Ubuntu atual, pode ser `/etc/apt/sources.list.d/ubuntu.sources`)*.
3.  Substitua URLs lentas (ex: `br.archive.ubuntu.com`) por outras oficiais (ex: `mirror.unesp.br`).

**No Alpine Linux:**
1.  Edite `/etc/apk/repositories`.
2.  Descomente ou adicione o mirror desejado (ex: `http://dl-cdn.alpinelinux.org/alpine/v3.18/main`).
3.  Rode `apk update`.

**No RHEL/CentOS:**
1.  Os mirrors ficam em `/etc/yum.repos.d/`.
2.  Geralmente o sistema escolhe o melhor automaticamente (`fastestmirror`). Tente limpar o cache:
    ```bash
    sudo dnf clean all
    sudo dnf makecache
    ```

### Problema 2: Erro de Chave GPG (GPG Error / NO_PUBKEY)

Acorre ao adicionar repositórios de terceiros (ex: Docker, Zabbix).

**Correção Padrão:**
```bash
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys [CÓDIGO_DA_CHAVE_DO_ERRO]
```
Ou baixe a chave atualizada do fornecedor e coloque em `/etc/apt/trusted.gpg.d/`.

### Problema 3: Lock File ("Could not get lock /var/lib/dpkg/lock")

Significa que **outro processo** (como updates automáticos) está usando o APT.

1.  **Não force o delete do arquivo de lock** exceto em último caso.
2.  Verifique quem está usando:
    ```bash
    ps aux | grep apt
    ```
3.  Aguarde o processo terminar ou mate-o se estiver travado (`sudo kill [PID]`).
4.  Se persistir após reboot, remova o lock:
    ```bash
    sudo rm /var/lib/dpkg/lock-frontend
    sudo dpkg --configure -a
    ```

## 6. DADOS TÉCNICOS
| Sistema | Arquivo de Repositórios | Logs de Instalação |
| :--- | :--- | :--- |
| **Debian/Ubuntu** | `/etc/apt/sources.list` | `/var/log/apt/history.log` |
| **RHEL/CentOS** | `/etc/yum.repos.d/*.repo` | `/var/log/dnf.log` |

## 7. VALIDAÇÃO FINAL
- [ ] O comando de update rodou sem erros vermelhos?
- [ ] Conseguiu instalar um pacote de teste (ex: `neofetch` ou `htop`)?
- [ ] O sistema não reporta dependências quebradas?
