原則、管理者権限がなければシステムにインストールすることはできません。しかし、自分が書き換え可能な所(ホームとか)にインストールすることはできます。
まず、SSH等で接続し、シェルが使えることが前提です。他に、GCC等のコンパイラがSSHでログインした状態で使用できるようになっていなければなりません。その他、makeなども必要です。
tty
1$ gcc --version
2$ make --version
3$ wget --version
4$ tar --version
5※ それぞれバージョンが表示されます。コマンドが無ければ、エラーになります。
上のコマンドを実行してバージョンが表示されるか確認してください。gccの代わりにclangでもかまいません。また、wgetの代わりにcurlも使用できます。以下は、gccとwgetでの例ですが、便宜置き換えてください。もし、コンパイラ等がない場合、同じ環境でコンパイルしたバイナリを持ってくると言う手段が必要になります。手順も複雑になり割愛しますが、それなりのLinuxの知識が無いと難しいです。
では、手順です。
tty
1$ wget https://www.openssl.org/source/openssl-1.0.2l.tar.gz
2$ tar xzf openssl-1.0.2l.tar.gz
3$ cd openssl-1.0.2l
4$ ./config shared --prefix=~/local
5$ make
6$ make test
7$ make install
8※ 出力例は割愛しています。
成功すれば、~/local
にOpenSSLがインストールされます。openssl
コマンドは~/local/bin
にインストールされますので、適当にPATHを通せば、使用できます。PATHを通さなくても、
tty
1$ LD_LIBRARY_PATH=~/local/lib ~/local/bin/openssl version
で確認できます。ライブラリとして使う場合は、インストール場所を示してコンパイルし、インストール場所を示して、ライブラリを読み込む必要があります。
サンプルとして、次のようなtest.cをコンパイルする場合です。
C
1#include <stdio.h>
2#include <openssl/crypto.h>
3
4int main(void)
5{
6 printf("SSLEAY_VERSION: %s\n", SSLeay_version(SSLEAY_VERSION));
7 return 0;
8}
tty
1$ gcc -I$HOME/local/include -c test.c -o test.o
2$ gcc -L$HOME/local/lib test.o -lcrypto -o test
3$ LD_LIBRARY_PATH=~/local/lib ./test
4SSLEAY_VERSION: OpenSSL 1.0.2l 25 May 2017
インストールしたバージョンが表示されていれば成功です。
環境変数LD_LIBRARY_PATH
を指定しない場合、システムのOpenSSLを見に行きます。常に環境変数でライブラリPATHにインストール先のライブラリを追加する必要があります。毎回環境変数を指定するのが面倒であれば、次のように-rpath
で検索パスを組み込む方法もあります。
$ gcc -L$HOME/local/lib test.o -lcrypto -Wl,-rpath,$HOME/local/lib -o test
$ ./test
SSLEAY_VERSION: OpenSSL 1.0.2l 25 May 2017
他に、-static
等で静的リンクする方法もありますが、OpenSSLのバージョンアップの度に再コンパイルが必要になりますので、お勧めできません。