libzipのインストール

GNOME Terminal

プログラムでzip圧縮時に必要となるlibzipをソースコードからインストールする。

libzipはPHPのzip拡張機能の有効化に必要なライブラリーだ。

インストール情報
項目 説明
配布元 libzip
リポジトリー nih-at/libzip: A C library for reading, creating, and modifying zip archives.
手順 libzip/INSTALL.md at master · nih-at/libzip
依存情報 libzip/INSTALL.md at master · nih-at/libzip
依存先 (必須)
依存先 (任意)
  • テスト用: Perl
  • bzip2圧縮対応: bzip2
  • AES対応: Apple’s CommonCrypto, GnuTLS, mbed TLS, OpenSSL 1.0+, Microsoft Windows Cryptography Frameworkのどれか
依存元 PHP拡張機能
インストール手順
sh -eux <<-"EOT"
PKG=libzip VER=1.5.2 TAG=rel-$(echo $VER | sed 's/\./-/g' )
LOCAL=~/.local J=$(grep -cs '^processor' /proc/cpuinfo || echo 2)
mkdir -p "$LOCAL/src"
cd "$LOCAL/src"

if command -v git >/dev/null; then
  [ -e $PKG ] || git clone --depth 1 git://github.com/nih-at/libzip $PKG
  cd $PKG
  git fetch --depth 1 origin tag $TAG
  git checkout -f $TAG
  git clean -dfX
else
  [ -e $PKG-$VER ] || wget https://libzip.org/download/$PKG-$VER.tar.xz
  tar -xf $PKG-$VER.*
  cd $PKG-$VER
  make -kj $J distclean clean || :
fi

cmake -D CMAKE_INSTALL_PREFIX="$LOCAL/stow/$PKG-$VER" .
make -j $J
make -j $J check
make -j $J install

cd "$LOCAL/stow"
echo $PKG-[0-9]* | xargs -n 1 stow --ignore=dir -D
stow --ignore=dir $PKG-$VER
EOT
インストール例
日付 バージョン OS 依存関係
2019-04-28 1.5.2 Ubuntu 18.04 GNU Make 4.2.1, GCC 7.4.0, zlib-1.2.11, CMake 3.10.2, OpenSSL 1.1.1a

make実行時に以下のエラーが出た。

[ 41%] Building C object lib/CMakeFiles/zip.dir/zip_winzip_aes.c.o
In file included from /home/senooken/.local/src/libzip/lib/zip_crypto_gnutls.h:40:0,
                 from /home/senooken/.local/src/libzip/lib/zip_crypto.h:45,
                 from /home/senooken/.local/src/libzip/lib/zip_crypto_gnutls.c:38:
/usr/include/gnutls/crypto.h:35:10: error: unknown type name ‘gnutls_cipher_alggorithm_t’; did you mean ‘gnutls_cipher_hd_t’?
          gnutls_cipher_algorithm_t cipher,
          ^~~~~~~~~~~~~~~~~~~~~~~~~
          gnutls_cipher_hd_t

どうやら,OSにインストールされているGnuTLSをみにいって,ヘッダーファイルが存在しないため,コンパイルエラーになっているようだ。GnuTLSをインストールしてもいいのだが,今は必要ではないので,以下のようにcmake実行時に-DENABLE_GNUTLS=OFFを指定して,GnuTLSは使わないようにして,代わりにOpenSSLを使うことにして対応した。

cmake -D CMAKE_INSTALL_PREFIX="$LOCAL/stow/$PKG-$VER" -DENABLE_GNUTLS=OFF .

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です