CRC32C と crcmod のインストール
概要
Cloud Storage には、クライアントでオブジェクトのコンテンツの整合性を検証するための巡回冗長検査(CRC)ヘッダーが用意されています。Cloud Storage では、非複合オブジェクトの整合性を MD5 ヘッダーで検証できますが、複合オブジェクトの場合には CRC しか使用できません。gsutil は、すべてのアップロードとダウンロードに整合性検査を自動的に実行します。また、gsutil hash
コマンドを使用して、ローカル ファイルの CRC を計算することもできます。
Cloud Storage で使用される CRC バリアントは CRC32C(Castagnoli)と呼ばれ、標準の Python ディストリビューションでは使用できません。gsutil で使用する CRC32C は、サードパーティの Python モジュール(crcmod)で実装されています。
crcmod モジュールには、pure Python の CRC32C が含まれていますが、これを使用すると、チェックサムの計算が遅くなり、結果としてパフォーマンスが大幅に低下します。crcmod には Python C 拡張機能も含まれていますが、使用前にバイナリ モジュールにコンパイルする必要があります。gsutil には macOS 用にプリコンパイルされている crcmod C 拡張機能が含まれています。他のプラットフォームについては、以下のインストール手順をご覧ください。
gsutil cp
、gsutil mv
、gsutil rsync
コマンドは、各コピー オペレーションの最後に、コピー元ファイル / オブジェクトのチェックサムがコピー先ファイル / オブジェクトのチェックサムと一致することを確認します。チェックサムが一致しない場合、gsutil は無効なコピーを削除し、警告メッセージを表示します。これが発生するのは非常にまれですが、発生した場合はオペレーションを再試行してください。
構成
Python 環境でコンパイル済みの crcmod が使用可能かどうか確認するには、gsutil version
コマンドを実行して "compiled crcmod" エントリを確認します。
$ gsutil version -l
...
compiled crcmod: True
...
crcmod ライブラリがネイティブ バイナリにコンパイルされていると、この値が True になっています。Python の純粋バージョンの場合には False になります。
crcmod のステータスに応じて gsutil の動作を制御するには、boto 構成ファイルで check_hashes
変数を設定します。この変数の詳細については、boto 構成ファイル内のコメントをご覧ください。check_hashes
が構成ファイルに存在しない場合は、gsutil config
を再実行してファイルを再生成してください。
インストール
こうしたインストール手順では、次のことを想定しています。
pip
がインストールされている。pip
のインストール方法について詳しくは、pip のインストール手順をご覧ください。pip
のインストールはPATH
環境変数にあります。見つからない場合は、下のコマンドのpip3
を実行可能ファイルへのフルパスに置き換える必要があります。Python のシステム インストールで使用する crcmod パッケージをインストールし、
sudo
コマンドを使用します。virtualenv など、別の Python 環境用に crcmod をインストールする場合は、下のコマンドでsudo
を省略する必要があります。gsutil で Python 3 バージョンを使用します。gsutil で使用されている Python のバージョンを確認するには、
gsutil version -l
を実行し、python version: 2.x.x
またはpython version: 3.x.x
の行を探します。
CentOS、RHEL、Fedora
crcmod をコンパイルしてインストールする:
yum install gcc python3-devel python3-setuptools redhat-rpm-config
sudo pip3 uninstall crcmod
sudo pip3 install --no-cache-dir -U crcmod
Debian と Ubuntu
crcmod をコンパイルしてインストールする:
sudo apt-get install gcc python3-dev python3-setuptools
sudo pip3 uninstall crcmod
sudo pip3 install --no-cache-dir -U crcmod
Enterprise SUSE
Enterprise SUSE for SAP 12 を使用しているときに crcmod をコンパイルしてインストールするには:
sudo zypper install gcc python-devel
sudo pip uninstall crcmod
sudo pip install --no-cache-dir -U crcmod
Enterprise SUSE for SAP 15 を使用しているときに crcmod をコンパイルしてインストールするには:
sudo zypper install gcc python3-devel
sudo pip uninstall crcmod
sudo pip install --no-cache-dir -U crcmod
macOS
gsutil では macOS 用のコンパイル済みバージョンの crcmod が配布されるため、ご自身でコンパイルしてインストールする必要はありません。なんらかの理由でコンパイル済みバージョンが検出されない場合は、Cloud Storage チームにお知らせください(gsutil help support
を参照)。
macOS で手動でコンパイルするには、Xcode をインストールしてから実行する必要があります。
pip3 install -U crcmod
Windows
コンパイル済みの crcmod のインストーラが Python Package Index(PyPi)で公開されています。次の URL をご覧ください。
https://pypi.python.org/pypi/crcmod/1.7
インストーラが間違って <python_dir>\Lib\site-packages\crcmod\ にインストールする場合があります。
その場合には、crcmod ディレクトリを正しい場所に手動でコピーすると、問題が解決します。