arch-wiki-md-repo
Version:
All arch-wiki articles in markdown format, updated every two days.
331 lines (246 loc) • 13.4 kB
Markdown
Artigos relacionados
* [Fazendo downgrade de pacotes](/index.php/Fazendo_downgrade_de_pacotes "Fazendo downgrade de pacotes")
O **Arch Linux Archive** (também conhecido como **ALA**), antigamente conhecido como **Arch Linux Rollback Machine** (ou **ARM**), armazena *snapshots de repositórios oficiais*, *imagens iso* e *traballs de bootstrap* ao longo do tempo.
**Você pode usá-lo para**
* Fazer downgrade para uma versão anterior de um pacote (última versão está quebrada, desejo usar a anterior)
* Restaurar todos seus pacotes para um momento específico (meu sistema está quebrado, desejo voltar para 2 meses atrás)
* Localizar uma versão anterior de uma imagem ISO
Os pacotes são mantidos apenas por poucos anos e, posteriormente, eles são movidos para [Arch Linux Historical Archive](#Historical_Archive) no archive.org.
## Contents
* [1 Localização](#Localiza.C3.A7.C3.A3o)
* [2 Diretórios](#Diret.C3.B3rios)
* [2.1 /repos](#.2Frepos)
* [2.2 /packages](#.2Fpackages)
* [2.3 /iso](#.2Fiso)
* [3 FAQ](#FAQ)
* [3.1 Como fazer downgrade de um pacote](#Como_fazer_downgrade_de_um_pacote)
* [3.2 Como restaurar todos os pacotes para uma data específica](#Como_restaurar_todos_os_pacotes_para_uma_data_espec.C3.ADfica)
* [4 Historical Archive](#Historical_Archive)
* [4.1 Localizando pacotes no Historical Archive](#Localizando_pacotes_no_Historical_Archive)
* [4.2 Baixando pacotes do Historical Archive](#Baixando_pacotes_do_Historical_Archive)
* [4.3 Redirecionando downloads de pacote para o Historical Archive](#Redirecionando_downloads_de_pacote_para_o_Historical_Archive)
* [5 História](#Hist.C3.B3ria)
## Localização
O Arch Linux Archive está disponível em [https://archive.archlinux.org/](https://archive.archlinux.org/).
O [código fonte](https://github.com/seblu/archivetools) também está disponível para configurar seu próprio espelho.
## Diretórios
O **Archive** é dividido em 3 diretórios principais detalhados abaixo.
```
├── iso
├── packages
└── repos
```
### /repos
O diretório [repos](https://archive.archlinux.org/repos) contém snapshots diários de espelho oficial organizado por data como o exemplo a seguir.
```
repos
├── 2013
│ ├── 08
│ │ └── 31
│ │ ├── community
│ │ ├── community-staging
│ │ ├── community-testing
│ │ ├── core
│ │ ├── extra
│ │ ├── gnome-unstable
│ │ ├── kde-unstable
│ │ ├── lastsync
│ │ ├── multilib
│ │ ├── multilib-staging
│ │ ├── multilib-testing
│ │ ├── pool
│ │ ├── staging
│ │ └── testing
│ ├── 09
│ │ ├── 01
│ │ ├── 02
│ │ ├── ...
│ │ ├── 21
│ │ └── 22
│ ├── 10
│ │ ├── 01
│ │ ├── 02
│ │ ├── ...
│ │
│ ├── 11
│ └── 12
├── 2014
│ ├── 01
│ │ ├── 01
│ │ ├── 02
│ │ ├── ...
│ │
│ ├── 02
│ ├── 03
│ ├── ...
│ └── 09
│ ├── 01
│ ├── ...
│ └── 28
├── last
├── month
└── week
```
Nota: Os últimos 3 diretórios especiais (**last**, **week** and **month**) vinculam respectivamente ao último repositório sincronizado, para a última segunda-feira e para a primeira do mês atual.
### /packages
O diretório [packages](https://archive.archlinux.org/packages) contém todas as versões de cada pacote com suas assinaturas. Um diretório por pacote e diretórios de pacotes são agrupadas pela sua primeira letra.
```
├── packages
│ ├── a
│ │ ├── awesome
│ │ │ ├── awesome-3.5.0-1-i686.pkg.tar.xz
│ │ │ ├── awesome-3.5.0-1-i686.pkg.tar.xz.sig
│ │ │ ├── awesome-3.5.0-1-x86_64.pkg.tar.xz
│ │ │ ├── awesome-3.5.0-1-x86_64.pkg.tar.xz.sig
│ │ │ ├── awesome-3.5.1-1-i686.pkg.tar.xz
│ │ │ ├── awesome-3.5.1-1-i686.pkg.tar.xz.sig
│ │ │ ├── ...
│ │ │
│ │ ├── ...
│ │ ├── awstats
│ │ └── axel
│ │
│ ├── b
│ ├── ...
│ └── z
```
Você pode usar o subdiretório mágico [.all](https://archive.archlinux.org/packages/.all) para acessar todos os pacotes pelo nome deles. Ele atua como um diretório plano contendo todas as versões de cada pacote.
```
├── packages
│ ├── .all
│ │ ├── awesome-3.5.1-1-i686.pkg.tar.xz
│ │ ├── ...
│ │ ├── zsh-5.0.2-3-i686.pkg.tar.xz
│ │ ├── zsh-5.0.2-4-i686.pkg.tar.xz
│ │ └── ...
```
Você pode baixar a lista de pacotes completos (existem mais de cem mil pacotes) como um índice compactado: [index.0.xz](https://archive.archlinux.org/packages/.all/index.0.xz).
`$ curl https://archive.archlinux.org/packages/.all/index.0.xz | unxz`
```
0ad-a14-1-i686
0ad-a14-1-x86_64
0ad-a14-2-i686
...
zziplib-0.13.62-1-x86_64
zziplib-0.13.62-2-i686
zziplib-0.13.62-2-x86_64
```
### /iso
O diretório [iso](https://archive.archlinux.org/iso) contém imagens ISO oficiais e tarballs bootstrap ordenados por data de lançamento.
```
├── 2014.09.03
├── 2014.10.01
├── 2014.11.01
├── 2014.12.01
├── 2015.07.01
├── 2015.08.01
├── 2015.09.01
└── 2017.04.01
├── arch
├── archlinux-2017.04.01-x86_64.iso
├── archlinux-2017.04.01-x86_64.iso.sig
├── archlinux-2017.04.01-x86_64.iso.torrent
├── archlinux-bootstrap-2017.04.01-x86_64.tar.gz
├── archlinux-bootstrap-2017.04.01-x86_64.tar.gz.sig
├── md5sums.txt
└── sha1sums.txt
```
## FAQ
### Como fazer downgrade de um pacote
Encontre o pacote que deseja em [/packages](#.2Fpackages) e deixe o pacman buscá-lo para instalação. Por exemplo
```
# pacman -U https://archive.archlinux.org/packages/ ... *nomepacote*.pkg.tar.xz
```
Deixar o pacman buscá-lo irá baixar automaticamente o arquivo *.sig* separado do pacote e verificá-lo de acordo com as configurações `/etc/pacman.conf`.
Alternativamente, baixe e instale o pacote manualmente usando `pacman -U`.
Veja também [Fazendo downgrade de pacotes#Automação](/index.php/Fazendo_downgrade_de_pacotes#Automa.C3.A7.C3.A3o "Fazendo downgrade de pacotes") para as ferramentas que simplificam o processo.
### Como restaurar todos os pacotes para uma data específica
Para restaurar todos os pacotes em sua versão em uma data específica, digamos, 30 de março de 2014, você deve direcionar o [pacman](/index.php/Pacman_(Portugu%C3%AAs) "Pacman (Português)") para essa data, editando seu `/etc/pacman.conf` e use o seguinte diretiva do servidor:
```
[core]
SigLevel = PackageRequired
Server=https://archive.archlinux.org/repos/2014/03/30/$repo/os/$arch
[extra]
SigLevel = PackageRequired
Server=https://archive.archlinux.org/repos/2014/03/30/$repo/os/$arch
[community]
SigLevel = PackageRequired
Server=https://archive.archlinux.org/repos/2014/03/30/$repo/os/$arch
```
ou substituindo seu `/etc/pacman.d/mirrorlist` com o seguinte conteúdo:
```
##
## Arch Linux repository mirrorlist
## Generated on 2042-01-01
##
Server=https://archive.archlinux.org/repos/2014/03/30/$repo/os/$arch
```
Então, atualize sua base de dados e force o downgrade:
```
# pacman -Syyuu
```
**Nota:** [Não é seguro](/index.php/Atualiza%C3%A7%C3%B5es_parciais "Atualizações parciais") misturar os espelhos Archive e os atualizados. No caso de uma falha de download, você acabará ficando com um pacote de *upstream* e você terá pacotes não da mesma época do resto do sistema.
## Historical Archive
A manutenção do Arch Linux Archive consome uma quantidade significativa de recursos, portanto, os pacotes antigos são removidos de tempos em tempos.
Antes de removê-los, os pacotes antigos são enviados para uma [coleção dedicada "Arch Linux Historical Archive" em archive.org](https://archive.org/details/archlinuxarchive).
O Historical Archive não fornece uma maneira de acessar um "snapshot" de pacotes do Arch em um determinado momento. No entanto, há um redirecionamento em `archive.archlinux.org` para que os downloads de pacotes antigos sejam redirecionados para o Historical Archive em `archive.org`. Não deve haver impacto visível do lado do usuário, exceto pelo fato de que o `archive.org` é geralmente muito lento para baixar.
### Localizando pacotes no Historical Archive
A coleção **Arch Linux Historical Archive** tem um índice de todos os pacotes: [https://archive.org/details/archlinuxarchive](https://archive.org/details/archlinuxarchive)
Também é possível acessar diretamente um pacote por seu **identificado**. O padrão geral para os identificadores é:
```
archlinux_pkg_<nome do pacote saneado>
```
Para obter o nome de pacote **saneado**, basta substituir qualquer caractere `@`, `+` ou `.` no nome de pacote por um sublinhado `_`.
Por exemplo, o identificado para [lucene++](https://www.archlinux.org/packages/?name=lucene%2B%2B) é `archlinux_pkg_lucene__`.
Você pode, então, acessar a página de detalhes de um pacote por meio de seu identificador, por exemplo: [https://archive.org/details/archlinux_pkg_lucene__](https://archive.org/details/archlinux_pkg_lucene__)
Também é possível executar pesquisas com o [archive.org cliente Python](https://github.com/jjjake/internetarchive):
```
$ ia search subject:"archlinux package" subject:'mysql'
{"identifier": "archlinux_pkg_ejabberd-mod_mysql"}
{"identifier": "archlinux_pkg_ejabberd-mod_mysql-svn"}
{"identifier": "archlinux_pkg_gambas3-gb-db-mysql"}
{"identifier": "archlinux_pkg_gambas3-gb-mysql"}
{"identifier": "archlinux_pkg_libgda-mysql"}
```
### Baixando pacotes do Historical Archive
Todas as versões de pacotes disponíveis (e sua assinatura) podem ser acessadas através da página de download de um pacote: [https://archive.org/download/archlinux_pkg_lucene__](https://archive.org/download/archlinux_pkg_lucene__)
Aqui estão algumas maneiras de buscar um pacote:
```
$ wget https://archive.org/download/archlinux_pkg_cjdns/cjdns-16.1-3-x86_64.pkg.tar.xz{,.sig}
$ pacman -U https://archive.org/download/archlinux_pkg_cjdns/cjdns-16.1-3-x86_64.pkg.tar.xz
```
Observe que, se você usar o pacman, terá que descobrir as dependências sozinho.
Também é possível usar o [archive.org cliente Python](https://github.com/jjjake/internetarchive):
```
# Baixa uma versão específica de um pacote
$ ia download archlinux_pkg_cjdns cjdns-16.1-3-x86_64.pkg.tar.xz{,.sig}
# Baixa todas as versões x86_64 de um pacote, com assinaturas
$ ia download archlinux_pkg_cjdns --glob="*x86_64.pkg.tar.xz*"
```
### Redirecionando downloads de pacote para o Historical Archive
Para redirecionar downloads de pacotes antigos ao `archive.org`, arqui está a configuração Nginx no orion:
```
location ~ /repos/201[3456]/.*/.*\.pkg\.tar\.xz(\.sig)? {
# Truque de regexp para separar o pkgname do pkgver (ambos podem conter "-")
rewrite ^/repos/.*/((.*?)-[^-/]+-[0-9]+-[^-]+.*\.pkg\.tar\.xz(\.sig)?)$ /archive.org/archlinux_pkg_$2/$1 last;
}
# URLs de download do archive.org se parecem com:
# https://archive.org/download/archlinux_pkg_lucene__/lucene++-1.4.2-3-i686.pkg.tar.xz
# Nós precisamos remover @.+ no identificador (archlinux_pkg_*), mas mantê-lo no nome de arquivo ao final.
location /archive.org/ {
# Reescreve @, + e . para _
# Isso é recursivo, então vai funcionar mesmo para substituição múltipla,
# com até 10 substituições para cada caractere (limie de recursão do nginx).
# Ideia de https://stackoverflow.com/a/15934256
rewrite ^/archive\.org/([^@]*)@(.*)/(.*)$ /archive.org/$1_$2/$3;
rewrite ^/archive\.org/([^\.]*)\.(.*)/(.*)$ /archive.org/$1_$2/$3;
rewrite ^/archive\.org/([^\+]*)\+(.*)/(.*)$ /archive.org/$1_$2/$3;
# Quando não tiver mais @.+ na parte do identificador, redirecione para archive.org
rewrite ^/archive\.org/([^@\+\.]*/.*)$ https://archive.org/download/$1 permanent;
}
```
## História
* O ARM (*Archlinux Rollback Machine*) original foi fechado em 2013-08-18.[[1]](https://bbs.archlinux.org/viewtopic.php?pid=1313360#p1313360)
* O novo está hospedado em [seblu.net](http://seblu.net) desde 2013-08-31.
* Nova URL e fechamento a hierarquia antiga do ARM em 2015-10-13\. Um novo software, [agetpkg-git](https://aur.archlinux.org/packages/agetpkg-git/), foi introduzido.
* Movido para [archive.archlinux.org](https://archive.archlinux.org) em 2015-12-19.[[2]](https://lists.archlinux.org/pipermail/arch-dev-public/2015-December/027635.html)