저는 작업을 더 쉽게 만들기 위해 매우 기본적인 데비안 패키지에 여러 개의 대규모 데이터베이스를 패키징하는 것으로 시작했습니다. 그러나 지금 몇 가지 문제에 직면하고 있습니다. 대부분의 데이터베이스는 성공적으로 설치되지만 가장 큰 세 개의 데이터베이스는 실패합니다.
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
실패는 다음과 같습니다.
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
나는 이것이 3.2에서 4.3G 사이의 파일 크기 때문이라고 어느 정도 확신합니다.
누구든지 경험이 있습니까?매우대형 패키지와 실패 모드? 왜 이런 일이 일어나는지 아는 사람이 있나요? tar 아카이브가 손상되었다고 믿을 이유가 없습니다. 패키지를 여러 번 빌드했는데도 설치할 때 이 오류가 계속 표시됩니다.
wget
tar 문제를 해결하기 위해 실제로 데이터베이스를 포함하는 대신 미러의 파일 만으로 패키지를 다시 작성하고 있습니다 .
-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
-D100으로 실행
이 섹션에는 두 개의 항목이 있습니다. 하나는 좋은 항목이고, 하나는 잘못된 항목이고, 일부는 실패한 항목입니다. 제가 걱정하는 것은 "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
답변1
이 명령의 출력을 주의 깊게 읽어 보세요.
$ apt-config dump | less
특히 이러한 옵션은 다음과 같습니다.
$ 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";
이 출력에는 다른 많은 압축 관련 명령이 있습니다. 나는 이러한 도구가 귀하가 직면하고 있는 것으로 보이는 4GB 이상의 임계값보다 큰 파일을 처리할 수 있는 도구를 가리키도록 할 것입니다. 둘 다 64비트 버전인지 확인하세요.
32비트와 64비트
나는 이것이 근본 원인이라고 거의 확신합니다. 이 질문에 대한 내 답변을 참조하십시오.Linux의 32비트, 64비트 CPU 작동 모드, 시스템의 CPU 비트폭 및 운영 체제 컴파일 아키텍처를 결정하는 방법에 대한 예입니다.
운영 체제
$ getconf LONG_BIT
64
CPU
$ hwinfo --cpu | grep Arch | tail -1
Arch: X86-64