LoginSignup
2
0

More than 1 year has passed since last update.

sudoなし、OpenSSLなしの環境でCMakeを入れる

Last updated at Posted at 2020-12-19

某スパコンの話です。RHELらしい。
※追加2022/3/27: CMakeにはOpenSSLなしでコンパイルするオプションがあるそうです1。つまりこの記事の内容はほとんど意味がない。まあ同じ罠を踏む人が出ないことを祈って記事は残しておきます……

CMake入ってないんだ、ふーん……

いつもの

cd $HOME/ulocal/src
git clone -b release https://github.com/kitware/cmake
cd cmake
./bootstrap --prefix=$HOME/ulocal/install/cmake

なんかエラー

(中略)
-- Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR) 
CMake Error at Utilities/cmcurl/CMakeLists.txt:505 (message):
  Could not find OpenSSL.  Install an OpenSSL development package or
  configure CMake with -DCMAKE_USE_OPENSSL=OFF to build without OpenSSL.

oh...

OpenSSLをソースビルドで入れる

sudo権限あればapt/yumで一発なんですけどね。スパコンなので。苦しい。

OpenSSLはgithubから取れるらしいのでそれを入れます。
configureのオプションはREADME読みつつ。

cd $HOME/ulocal/src
git clone -b OpenSSL_1_1_0-stable https://github.com/openssl/openssl
cd openssl
./Configure --prefix=$HOME/ulocal/install/openssl --openssldir=$HOME/ulocal/install/openssl '-Wl,-rpath,$(LIBRPATH)' linux-x86_64
make && make install

こんなもの入れたことすら明日には忘れそうなのでmodulefilesに突っ込んでおく

#%Module

set base <ホームディレクトリ>/ulocal/install/openssl

setenv OPENSSL_ROOT_DIR $base
prepend-path PATH               $base/bin
prepend-path LIBRARY_PATH       $base/lib
prepend-path LD_LIBRARY_PATH    $base/lib
prepend-path LD_RUN_PATH        $base/lib
prepend-path C_INCLUDE_PATH     $base/include
prepend-path CPLUS_INCLUDE_PATH $base/include
prepend-path MAN_PATH           $base/share/man

** 2021/4/12追記: MAN_PATH$base/share/manですね。。修正しました。

CMake的にはsetenv OPENSSL_ROOT_DIRが重要らしい。

CMake再挑戦

前項のmoduleを読んだ上で再度。

module load $HOME/
cd $HOME/ulocal/src
cd cmake
./bootstrap --prefix=$HOME/ulocal/install/cmake
make && make install

これもmoduleに入れておきましょう

#%Module
#

# dependency
module load openssl/local

# 
set base <ホームディレクトリ>/ulocal/install/cmake

setenv CMAKE_INSTALL_DIR $base
prepend-path PATH               $base/bin
prepend-path LIBRARY_PATH       $base/lib
prepend-path LD_LIBRARY_PATH    $base/lib
prepend-path LD_RUN_PATH        $base/lib
prepend-path C_INCLUDE_PATH     $base/include
prepend-path CPLUS_INCLUDE_PATH $base/include
prepend-path MAN_PATH           $base/share

最後に確認

$ module load cmake && cmake --version
cmake version 3.19.2

CMake suite maintained and supported by Kitware (kitware.com/cmake).

よかったですね。
(肝心のhorovodが入っていないので何もよくない……)

追記

spack使ったら一発でした。うーん……
(さらに追記) spack使うとログイン直後の.bash_profileが遅くなってストレスフルだったのでconfigureに戻りました。。。

  1. https://discourse.cmake.org/t/how-to-compile-dcmake-use-openssl-off/1271

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0