corrompe arquivos do pacote debian em pacotes de banco de dados feitos por si

2

Defino o empacotamento de vários bancos de dados grandes em alguns pacotes debian muito básicos, de modo a facilitar a vida no meu trabalho. No entanto, agora estou encontrando alguns problemas. A maioria dos bancos de dados será instalada de maneira feliz, no entanto, os três maiores falharão.

find . -name "*.deb" -exec du -h '{}' \; | sort -h
# These install fine
4.0K    ./hh-suite-data_1.0_all.deb
422M    ./hh-suite-data-env70/package/hh-suite-data-env70_1.0.0_amd64.deb
660M    ./hh-suite-data-env90/package/hh-suite-data-env90_1.0.0_amd64.deb
795M    ./hh-suite-data-env/package/hh-suite-data-env_1.0.0_amd64.deb
1.6G    ./hh-suite-data-scop70/package/hh-suite-data-scop70_1.0.0_amd64.deb
2.6G    ./hh-suite-data-nr70/package/hh-suite-data-nr70_1.0.0_amd64.deb
2.8G    ./hh-suite-data-pfamA/package/hh-suite-data-pfama_1.0.0_amd64.deb
3.2G    ./hh-suite-data-nr90/package/hh-suite-data-nr90_1.0.0_amd64.deb
# These fail to install
4.3G    ./hh-suite-data-nr20/package/hh-suite-data-nr20_1.0.0_amd64.deb
6.2G    ./hh-suite-data-pdb70/package/hh-suite-data-pdb70_1.0.0_amd64.deb
7.4G    ./hh-suite-data-nr/package/hh-suite-data-nr_1.0.0_amd64.deb

As falhas são assim:

sudo dpkg -i package/hh-suite-data-nr20_1.0.0_amd64.deb 
[sudo] password for esr: 
(Reading database ... 276172 files and directories currently installed.)
Unpacking hh-suite-data-nr20 (from .../hh-suite-data-nr20_1.0.0_amd64.deb) ...
dpkg: error processing package/hh-suite-data-nr20_1.0.0_amd64.deb (--install):
 corrupted filesystem tarfile - corrupted package archive
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Errors were encountered while processing:
 package/hh-suite-data-nr20_1.0.0_amd64.deb

Estou um pouco convencido de que é por causa do tamanho dos arquivos, algo entre 3,2 e 4,3G.

Alguém tem alguma experiência com grandes pacotes muito e seus modos de falha? Alguém tem alguma idéia do porquê isso está acontecendo? Eu não tenho nenhuma razão para acreditar que o arquivo tar está corrompido, eu construí o pacote muitas vezes e ainda vejo esse erro na instalação

Estou reescrevendo meus pacotes para apenas wget dos arquivos a partir de um espelho, em vez de realmente conter os bancos de dados, já que isso contorna o problema do tar.

Executando com -D10

# This file unpacks fine
D000010: tarobject ti->name='./usr/share/hh-suite-data/pdb70/pdb70_19Oct13_a3m_db.index' mode=100644 owner=0.0 type=48(-) ti->linkname='' namenode='/usr/share/hh-suite-data/pdb70/pdb70_19Oct13_a3m_db.index' flags=2 instead='<none>'
D000010: ensure_pathname_nonexisting '/usr/share/hh-suite-data/pdb70/pdb70_19Oct13_a3m_db.index.dpkg-tmp'
D000010: ensure_pathname_nonexisting '/usr/share/hh-suite-data/pdb70/pdb70_19Oct13_a3m_db.index.dpkg-new'
# This is a 16G file and fails IMMEDIATELY.
D000010: tarobject ti->name='./usr/share/hh-suite-data/pdb70/pdb70_19Oct13_a3m_db' mode=100644 owner=0.0 type=48(-) ti->linkname='' namenode='/usr/share/hh-suite-data/pdb70/pdb70_19Oct13_a3m_db' flags=2 instead='<none>'
D000010: ensure_pathname_nonexisting '/usr/share/hh-suite-data/pdb70/pdb70_19Oct13_a3m_db.dpkg-tmp'
D000010: ensure_pathname_nonexisting '/usr/share/hh-suite-data/pdb70/pdb70_19Oct13_a3m_db.dpkg-new'
dpkg: error processing hh-suite-data-pdb70_1.0.0_amd64.deb (--install):
 corrupted filesystem tarfile - corrupted package archive

Correndo com -D100

Existem duas entradas nessa parte, uma boa e a ruim, e algumas após a falha. O que me preocupa é o bit "tarobject file open size = 0".

D000100: setupvnamevbs main='/usr/share/hh-suite-data/pdb70/pdb70_19Oct13_a3m_db.index' tmp='/usr/share/hh-suite-data/pdb70/pdb70_19Oct13_a3m_db.index.dpkg-tmp' new='/usr/share/hh-suite-data/pdb70/pdb70_19Oct13_a3m_db.index.dpkg-new'
D000100: tarobject already exists
D000100: tarobject file open size=900749
D000100: tarobject nondirectory, 'link' backup
D000100: tarobject done and installation deferred
D000100: setupvnamevbs main='/usr/share/hh-suite-data/pdb70/pdb70_19Oct13_a3m_db' tmp='/usr/share/hh-suite-data/pdb70/pdb70_19Oct13_a3m_db.dpkg-tmp' new='/usr/share/hh-suite-data/pdb70/pdb70_19Oct13_a3m_db.dpkg-new'
D000100: tarobject already exists
D000100: tarobject file open size=0
D000100: tarobject nondirectory, 'link' backup
D000100: tarobject done and installation deferred
dpkg: error processing hh-suite-data-pdb70_1.0.0_amd64.deb (--install):
 corrupted filesystem tarfile - corrupted package archive
D000100: setupvnamevbs main='//usr/share/hh-suite-data/pdb70/pdb70_19Oct13_a3m_db' tmp='//usr/share/hh-suite-data/pdb70/pdb70_19Oct13_a3m_db.dpkg-tmp' new='//usr/share/hh-suite-data/pdb70/pdb70_19Oct13_a3m_db.dpkg-new'
D000100: cu_installnew restoring atomic
D000100: secure_remove '//usr/share/hh-suite-data/pdb70/pdb70_19Oct13_a3m_db.dpkg-new' unlink OK
    
por EricR 12.11.2013 / 19:12

1 resposta

0

Você pode querer examinar a saída deste comando:

$ apt-config dump | less

Especificamente, estas opções:

$ apt-config dump|grep bzip
APT::Compressor::bzip2 "";
APT::Compressor::bzip2::Name "bzip2";
APT::Compressor::bzip2::Extension ".bz2";
APT::Compressor::bzip2::Binary "bzip2";
APT::Compressor::bzip2::Cost "3";
APT::Compressor::bzip2::CompressArg "";
APT::Compressor::bzip2::CompressArg:: "-9";
APT::Compressor::bzip2::UncompressArg "";
APT::Compressor::bzip2::UncompressArg:: "-d";
Dir::Bin::bzip2 "/bin/bzip2";

Existem muitos outros comandos relacionados à compactação nesta saída. Eu me certificaria de que as ferramentas para as quais eles apontam possam manipular arquivos maiores que o limite de 4 GB que você parece encontrar. Certifique-se de que são todas as variedades de 64 bits.

32 bits vs. 64 bits

Estou quase certo de que esta é a causa raiz. Veja a minha resposta a esta pergunta, intitulada: Modo operacional da CPU de 32 bits e 64 bits no Linux , para exemplos de como determinar a largura de bits da CPU do seu sistema & você é a arquitetura compilada do SO.

OS

$ getconf LONG_BIT
64

CPU

$ hwinfo --cpu | grep Arch | tail -1
  Arch: X86-64
    
por 13.11.2013 / 03:13