
私は、作業を簡単にするために、非常に基本的なDebianパッケージに複数の大規模データベースをパッケージ化することから始めました。しかし今、いくつかの問題に直面しています。ほとんどのデータベースは正常にインストールされますが、最大3つのデータベースは失敗します。
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で実行
このセクションには2つの項目があります。 1 つは良い項目、1 つは無効な項目、一部は失敗した項目です。私が心配するのは "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