ConfigurandoUmRepositorioDebian - UFSC/moodle-provas-livecd-provas GitHub Wiki
ATENÇÃO: ATUALMENTE NÃO HÁ NENHUM REPOSITÓRIO LOCAL EM USO COM O CD DE PROVAS (NOVEMBRO/2014).
Um repositório Debian é um repositório de pacotes do tipo DEB, utilizado para instalação de pacotes por distribuições baseadas no Debian, como o Ubuntu. Esta página descreverá a configuração de um repositório com pacotes DEB digitalmente assinados.
Para criar o repositório é necessário ter um servidor web instalado e configurado, usualmente o Apache, não é preciso fazer qualquer configuração especial além de criar um virtual host onde o repositório ficará acessível.
OBS: O Codename da versão do Ubuntu que aparece ao longo desta página (precise), é o Codename referente a versão 12.04 do Ubuntu, ele pode ser obtido executando o comando: $ lsb_release -a
Para que o comando apt-get confie no repositório que estamos criando, devemos disponibilizar uma chave pública que possa comprovar a confiabilidade dele, para isso iremos gerar uma chave GPG em formato texto, que deverá ser adicionada com o comando apt-key.
As chaves geradas são gravadas no diretório $HOME/.gnupg/, ou seja, elas são acessíveis apenas pelo usuário que as gerou, lembre disso quando for assinar algum pacote.
Para listar as chaves já cadastradas no GPG, utilize o comando: $ gpg -k
Passo a passo para gerar a chave GPG:
- Execute o comando:
$ gpg --gen-key
- Selecione a opção 4 para gerar uma chave RSA (sign only).
- Selecione o tamanho da chave (pode ser o valor padrão).
- Deixe o tempo de expiração em zero, para a chave não expirar.
- Insira seu nome e e-mail.
- Insira uma frase senha, se desejado (pode deixar em branco).
Se a chave GPG foi criada com sucesso, agora podemos gerar uma chave pública no formato texto, que será usada para informar ao apt-get que nosso repositório é confiável.
Execute o comando abaixo substituindo o e-mail pelo e-mail usado para gerar a chave GPG.
gpg --armor --output [email protected] --export [email protected]
Salve este arquivo na raiz do repositório que ficará acessível pela internet.
Além do servidor web, é necessário instalar um gerenciador do repositório, usaremos o reprepro. O reprepro é um aplicativo que atualiza o índice de pacotes disponíveis quando novos pacotes são adicionados. Ele utiliza a Berkeley libdb para armazenar os dados, isso significa que ele não precisa de um servidor de banco de dados como outros aplicativos do mesmo tipo. Sua instalação e configuração será descrita abaixo.
apt-get install dpkg-sig reprepro
Crie o diretório onde o repositório ficará, ele também será um virtualhost no Apache.
Na nossa instalação, o reprepro precisa do seguinte arquivo de configuração:
- conf/distributions : descreve o layout do repositório, as distribuições suportadas e os componentes
Este arquivo deve ser criado dentro do diretório conf, que por sua vez deve estar dentro do diretório raiz do repositório (virtualhost do Apache).
conf/distributions
O campo Origin deve ser configurado de acordo com o domínio onde o repositório ficará.
O campo SignWith deve ser preenchido com a id da chave GPG, que pode ser obtido listando as chaves GPG cadastradas (comando $ gpg -k
, campo uid), geralmente é o nome e o e-mail, neste formato: Nome [email protected].
O conteúdo abaixo pode ser duplicado para adicionar novas distribuições nesse mesmo arquivo, apenas ajustando os campos chaves (Codename, Version, etc.).
Origin: <DOMINIO>
Label: apt repository
Suite: stable
Codename: precise
Version: 12.04
Architectures: i386
Components: main
Description: Repositório de pacotes Debian do Moodle Provas para Ubuntu
SignWith: <GPG_KEY_ID>
Utilize o comando de adicionar pacote manualmente, descrito na seção Comandos úteis, ou o script atualizar-pacotes.sh para adicionar automaticamente os pacotes que estão no diretório temp.
Este não é um procedimento obrigatório, mas é bastante simples de ser feito se for desejado, basta executar o comando abaixo para cada pacote, substituindo a id da chave GPG e o nome do pacote.
dpkg-sig -k <GPG_KEY_ID> --sign builder <PACOTE>
OBS: Na maioria das distribuições que usam pacotes debian, o dpkg/apt não verifica a assinatura dos pacotes quando os está instalando, mesmo que eles estejam assinados. Essa checagem pode ser ativada no arquivo /etc/dpkg/dpkg.cfg, apenas removendo ou comentando a linha no-debsig
.
Para verificar as assinaturas de um pacote, execute o seguinte comando:
dpkg-sig --verify <PACOTE>
Para que os pacotes do nosso repositório tenham prioridade sobre os pacotes da distribuição, nosso repositório deve ser adicionado no topo do arquivo sources.list, pois se houver o mesmo pacote com a mesma versão no nosso repositório e no repositório oficial da distribuição, o pacote escolhido para ser instalado será aquele que está no repositório que aparece primeiro no arquivo sources.list.
Devemos adicionar a seguinte linha ao topo do arquivo /etc/apt/sources.list:
deb http://subdomain.example.org precise main
E em seguida importar a chave pública do repositório com o seguinte comando:
wget -q -O - http://subdomain.example.org/[email protected] | apt-key add -
OBS: Os comandos devem ser executados de dentro do diretório base do repositório (onde estão os diretórios conf, db, dists, pool), ou a base do repositório deve ser informada utilizando o parâmetro -b
, por exemplo:
$ reprepro -b /var/www/repo ls <pacote>
Mostrar informaçõeS sobre um pacote:
$ reprepro ls <pacote>
Listar todos os pacotes de uma distribuição:
$ reprepro list <distribuição>
Listar todos os pacotes de todos os repositórios:
$ reprepro dumpreferences
Remover um pacote do repositório
$ reprepro remove <distribuição> <pacote>
Adicionar um pacote manualmente ao repositório
$ reprepro -V includedeb <distribuição> <caminho_pacote>