Estou tentando configurar um ambiente de armazenamento temporário em uma VM, para testar as atualizações antes de aplicá-las ao meu sistema principal.
Para fazer isso, eu fiz uma instalação básica do Debian Wheezy (igual ao sistema principal) na VM e, em seguida, executei como root a partir da VM:
# dpkg --clear-selections
# dpkg --add-architecture i386
# apt-get update
# ssh me@main-system 'dpkg --get-selections | grep -v deinstall' | \
dpkg --set-selections
Infelizmente, a arquitetura i386 é necessária no meu caso; o sistema é amd64 nativo.
O problema está em dpkg --set-selections
execução na VM. Eu tenho alguns pacotes que requerem tratamento especial (esses são, na verdade, a principal razão pela qual eu quero um ambiente de armazenamento temporário), mas quando executo o último comando acima, recebo um zilhão de linhas de saída como:
dpkg: warning: package not in database at line NNN: package-name
para pacotes que realmente devem estar disponíveis no sistema base. Exemplos incluem xterm
, yelp
e zip
.
Agora, minha pergunta:
Qual é o processo específico para transferir a lista de seleção de pacotes de um sistema Debian para outro (assumindo o mesmo nível de lançamento do Debian, no Wheezy) e depois aplicar essas mudanças posteriormente? O objetivo é que ambos tenham a mesma lista de pacotes instalados, idealmente, fazendo um diff
entre as saídas dpkg --get-selections
ou dpkg --list
nas duas voltando, sem mostrar diferenças.
A grep -v deinstall
parte é emprestada dos pacotes Impedir que sejam removidos depois de repetirdpkg --set-selections
o processo no Ask Ubuntu.
Mudei a fonte na VM para ser a mesma do sistema principal, instalando também apt-transport-https
:
deb https://ftp-stud.hs-esslingen.de/debian/ wheezy main non-free
deb-src https://ftp-stud.hs-esslingen.de/debian/ wheezy main non-free
deb https://ftp-stud.hs-esslingen.de/debian/ wheezy-updates main non-free
deb-src https://ftp-stud.hs-esslingen.de/debian/ wheezy-updates main non-free
deb [arch=amd64] http://archive.zfsonlinux.org/debian wheezy main
Olhando para a saída --set-selections, estou vendo:
dpkg: warning: package not in database at line 1: a2ps
dpkg: warning: package not in database at line 1: abiword
dpkg: warning: package not in database at line 1: abiword-common
dpkg: warning: package not in database at line 1: abiword-plugin-grammar
dpkg: warning: package not in database at line 1: abiword-plugin-mathview
dpkg: warning: package not in database at line 1: accountsservice
dpkg: warning: package not in database at line 1: acl
dpkg: warning: package not in database at line 4: aglfn
dpkg: warning: package not in database at line 4: aisleriot
dpkg: warning: package not in database at line 4: alacarte
dpkg: warning: package not in database at line 4: alien
...
Os números das linhas pareciam ímpares, e a parte correspondente da saída de --get-selections é:
a2ps install
abiword install
abiword-common install
abiword-plugin-grammar install
abiword-plugin-mathview install
accountsservice install
acl install
acpi-support-base install
acpid install
adduser install
aglfn install
aisleriot install
alacarte install
alien install
Note que entre acl
e aglfn
são acpi-support-base
, acpid
e adduser
para os quais não erros estão sendo relatados . Parece que os pacotes para os quais os erros estão sendo relatados estão de un
acordo dpkg -l
ou dpkg -l
não têm idéia alguma sobre eles ( dpkg-query: no packages found matching ...
). Eu sei que existem alguns pacotes instalados localmente, mas não muitos. i386
não aparece até gcc-4.7-base:i386 install
muito mais abaixo na lista (linha 342 na saída --get-selections).
dpkg --get-selections
(e eu suponho que você quis dizer a dpkg --set-selections
transcrição?)? Mesmo apenas o primeiro tem mais de 3.600 linhas e cerca de 100 KB.
/var/lib/dpkg/Packages
(que é ainda mais longa) também pode ser útil - isso pode ser um sintoma de um arquivo de Pacotes quebrado.
dpkg --get-selections … | … dpkg --set-selections
é a maneira de replicar seleções de pacotes. Se estiver falhando, você precisará fornecer mais informações sobre o motivo. Poste seu conjunto completo de fontes nos dois sistemas, na saída dedpkg --get-selections
e na transcrição completa dedpkg --get-selections
(talvez possamos discernir um padrão vendo o que funciona e o que não funciona). Se o sistema principal amd64 ou i386? Funciona se você não adicionar a arquitetura i386?