implant self-update
Atualiza o Implant para a versao mais recente. O download e arch-aware (detecta automaticamente a arquitetura do sistema) e protegido por TLS pinning.
Uso
implant self-update [OPTIONS]Flags
| Flag | Descricao |
|---|---|
-f, --force |
Forcar reinstalacao mesmo se ja esta na versao mais recente |
-p, --path <CAMINHO> |
Caminho de instalacao do binario (padrao: /usr/local/bin/implant) |
-u, --url <URL> |
URL alternativa para download do binario |
--json |
Saida em JSON para automacao (o global -o json tem o mesmo efeito) |
--dry-run |
Preview seguro: verifica pin, download, assinatura e versao, sem criar backup nem trocar o binario |
--no-post-update |
Nao executa o passo pos-atualizacao (firewall-restore ensure). Equivale a IMPLANT_NO_POST_UPDATE=1 (v2.59.0+) |
Variaveis de ambiente
| Variavel | Descricao |
|---|---|
IMPLANT_NO_POST_UPDATE |
1, true, yes ou on: o self-update nao executa o passo pos-atualizacao |
Exemplos
Atualizar para ultima versao estavel
implant self-updateForcar reinstalacao
implant self-update --forceSaida JSON para automacao
implant self-update --jsonRetorna um objeto JSON com o resultado da atualizacao, util para integrar em scripts e pipelines. Com -o json ou --json, o stdout contem apenas o JSON (logs vao para o stderr).
Atualizar sem o passo pos-atualizacao
implant self-update --no-post-update
IMPLANT_NO_POST_UPDATE=1 implant self-updateVerificar a atualizacao sem instalar
implant self-update --dry-runExecuta as verificacoes ate a validacao da versao e para antes do backup/substituicao. Em JSON, reporta status=dry_run, backup_created=false e post_update.status=planned.
Trocar entre estavel e release candidate
implant self-update --url https://implant.ccs.systems/$(uname -m)/rc/implantA versao baixada e comparada com a instalada pela string inteira: a atualizacao so e pulada (status=skipped) quando as duas sao exatamente iguais. Assim, ir de X.Y.Z-rc.N para X.Y.Z (ou o contrario) funciona sem --force. Ate a 2.54.0, a comparacao era por substring e esse caso exigia --force.
Processo
- Detecta a arquitetura do sistema (
x86_64ouaarch64) - Verifica versao atual
- Verifica certificado TLS via pinning (SPKI) antes do download
- Baixa binario da URL correspondente a arquitetura
- Verifica a assinatura minisign (
.minisig) do binario - Valida o binario baixado (
--version) - Cria backup do binario atual
- Copia novo binario para o destino
- Define permissoes 755
- Remove backup
- Executa o passo pos-atualizacao com o binario novo (v2.59.0+, ver abaixo)
Passo pos-atualizacao (v2.59.0+)
Quando o binario foi de fato trocado, o self-update executa o binario novo (o caminho instalado, como processo filho) com:
implant firewall-restore ensure -o json --config <a mesma config>O `firewall-restore ensure` so roda o rate-limit reconcile quando ele instalaria a unit de restore no boot (rate-limit gerenciado e ativo, unit faltando, antiga ou desabilitada). Em qualquer outro caso nao faz nada: o rate-limit nao e reaplicado a cada atualizacao. Assim, os servidores que ainda nao tinham a unit implant-firewall-restore passam a te-la na proxima atualizacao, com a mesma guarda do reconcile.
- Quando roda: so com o binario trocado. Nao roda em "ja esta na versao", em falha nem em
--dry-run(que so mostra que rodaria,status: planned). - Teto de 300 s: depois disso o processo filho e encerrado.
- Nunca derruba o update: falha nesse passo vira aviso na saida human e o campo
post_updatedo JSON; oself-updatecontinua bem-sucedido. - Opt-out:
--no-post-updateouIMPLANT_NO_POST_UPDATE=1(status: disabled).
Com --json (ou -o json), o resultado traz post_update quando o status do update e completed ou dry_run:
"post_update": {
"status": "ok", // ok | failed | planned (dry-run) | disabled (opt-out)
"command": "/usr/local/bin/implant firewall-restore ensure",
"boot_unit_action": "already_ok", // o do ensure; null sem execucao
"reconciled": false, // o ensure rodou o rate-limit reconcile
"error": null,
"duration_ms": 412
}Quem roda o passo e o binario que faz o update. O passo existe a partir da v2.59.0, entao a atualizacao para a 2.59.0 (feita por um binario 2.58.0 ou anterior) nao o executa. O servidor so o ganha na atualizacao seguinte. Para nao esperar, rode-o a mao depois de atualizar:
sudo implant firewall-restore ensureURLs de Download
A arquitetura e detectada automaticamente via std::env::consts::ARCH.
| Canal | URL |
|---|---|
| Estavel | https://implant.ccs.systems/{arch}/implant |
| Release candidate | https://implant.ccs.systems/{arch}/rc/implant (via --url; nao ha flag --rc no self-update) |
Onde {arch} e x86_64 ou aarch64, detectado automaticamente.
A base de download pode ser trocada sem recompilar, na secao [endpoints] do config.toml:
[endpoints]
cdn_base = "https://downloads.example.com"Seguranca
- TLS Pinning: o certificado do servidor e verificado via hash SPKI embutido no binario antes de iniciar o download
- Arch-aware: o binario correto e baixado automaticamente para a arquitetura do servidor
- Assinatura minisign: nos dominios oficiais (com pin embutido) a verificacao e graciosa —
.minisigausente gera apenas aviso. Para qualquer outro host (--urloucdn_basealternativos), uma.minisigvalida e obrigatoria; sem ela a atualizacao e recusada - Hosts sem pin: usam validacao TLS padrao (WebPKI); pins SPKI adicionais podem ser declarados em
[[tls_pins]]noconfig.toml - Validacao: o binario baixado e testado com
--versionantes de substituir o atual