4.2 オンプレミス・データベース用のPython for Linuxの構築およびインストール
オンプレミスOracleデータベース用にPython for Linuxをインストールする手順です。
データベース・サーバーへのPythonのインストールは、Oracleユーザーが実行する必要があります(sudoやrootではなく、その他のユーザーでもない)。ただし、OML4Pyクライアントの場合、これは要件ではありません。
OML4Pyをインストールして使用するには、Python 3.12.0が必要です。
Oracle Linux 7でのPythonのビルドとインストール
次のステップでは、Oracle Linux 7でのPython 3.12.0のビルドとインストールについて説明します。
- Python 3.12には、
OpenSSL 3.0.12
が必要です。これは、Linux 7でソースからインストールする必要があります。OpenSSSL source tarballをダウンロードします。wget https://www.openssl.org/source/old/3.0/openssl-3.0.12.tar.gz
- Perlモジュール
perl-IPC-Cmd
およびperl-Digest-SHA
をインストールします(存在しない場合)。- 次のコマンドを実行して、それらのモジュールがすでにシステムにインストールされているかどうかを確認します:
これらのコマンドでrpm -qa perl-IPC-Cmd rpm -qa perl-Digest-SHA
perl-IPC-Cmd-1.02-1.el7.noarch
やperl-Digest-SHA-6.02-1.el7.x86_64
などの出力が返された場合、それは、それらのモジュールがインストールされているということです。 - 値が返されない場合、それらのモジュールはシステムに存在せず、sudoまたはrootとしてインストールする必要があります。次のコマンドを実行してそれらをインストールします:
sudo yum install perl-IPC-Cmd perl-Digest-SHA
- 次のコマンドを実行して、それらのモジュールがすでにシステムにインストールされているかどうかを確認します:
OpenSSL
アーカイブを展開します。openssl
ディレクトリ内にdist
という名前のサブディレクトリを作成します。openssl
ディレクトリに移動します。tar -xvzf openssl-3.0.12.tar.gz cd openssl-3.0.12 mkdir dist export OPENSSL_HOME=<full-path-to-openssl-3.0.12>
- 次のコマンドによってconfigureとmakeを実行します。
./Configure enable-fips --prefix=$OPENSSL_HOME/dist/openssl --openssldir=$OPENSSL_HOME/dist/ssl make clean; make make install
- OpenSSLライブラリが正常にコンパイルされているかどうかと、それらを含むopensslフォルダが作成されているかどうかを確認します。
ls dist/openssl/lib64
engines-3/ libcrypto.so libssl.a libssl.so.3 pkgconfig/ libcrypto.a libcrypto.so.3 libssl.so ossl-modules/
ls dist/ssl
certs/ ct_log_list.cnf.dist misc/ openssl.cnf.dist ct_log_list.cnf fipsmodule.cnf openssl.cnf private/
- Perlモジュール
- Python 3.12.0 source tarballをダウンロードします。
wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tgz
- 続行する前に、すでにPythonインストールがあるかどうかを確認します。
- pythonというフォルダを
$ORACLE_HOME
内で探します。 - pythonフォルダが見つからない場合は、ステップ2.2に進みます。
- フォルダが見つかった場合は、新しいインストールとの競合を避けるために、既存のフォルダの名前を変更します。たとえば、次のようになります。
mv $ORACLE_HOME/python $ORACLE_HOME/python-old
- pythonというフォルダを
- ディレクトリ
$ORACLE_HOME/python
を作成し、このディレクトリにそのtarballの内容を展開します:
Gzipped source tarballの内容は、mkdir -p $ORACLE_HOME/python tar -xvzf Python-3.12.0.tgz --strip-components=1 -C $ORACLE_HOME/python
$ORACLE_HOME/python
に直接コピーされ展開されます。 PYTHONHOME
環境変数を作成し、ディレクトリを次のように変更します:export PYTHONHOME=$ORACLE_HOME/python cd $PYTHONHOME
openssl
ライブラリをpythonフォルダにコピーします。mkdir $PYTHON_HOME/include $PYTHONHOME/ssl cp -r $OPENSSL_HOME/dist/openssl/lib64/* $PYTHONHOME/lib cp -r $OPENSSL_HOME/dist/ssl/* $PYTHONHOME/ssl cp -r $OPENSSL_HOME/include/openssl $PYTHONHOME/include
- 新しいディレクトリに移動します。
cd $ORACLE_HOME/python
- OML4Pyには、
perl-Env
、libffi-devel
、openssl
、openssl-devel
、tk-devel
、xz-devel
、zlib-devel
、bzip2-devel
、readline-devel
、libuuid-devel
およびncurses-devel
の各ライブラリが存在する必要があります。これらのパッケージをsudoまたはrootユーザーとしてインストールします:sudo yum install perl-Env libffi-devel openssl openssl-devel tk-devel xz-devel zlib-devel bzip2-devel readline-devel libuuid-devel ncurses-devel
- Pythonをコンパイルしインストールします。
./Configure --enable-shared OPT='-fwrapv -O3 -Wall' --prefix=$PYTHONHOME --with-openssl=$PYTHONHOME --with-openssl-rpath=$PYTHONHOME/lib make clean; make make altinstall
-
$PYTHONHOME/bin
ディレクトリにpython3.12実行可能ファイルへのシンボリック・リンクを作成しますln -s $PYTHONHOME/bin/python3.12 $PYTHONHOME/bin/python3
ノート:
Embedded Python Executionを使用する場合は、必ず
--enable-shared
フラグを使用してください。そうしないと、Embedded Python Execution関数を使用したときにextproc
エラーが発生します。必ず
make install
ではなくmake altinstall
を呼び出して、システムPythonの上書きを回避してください。 - Pythonライブラリを使用可能にし、パスにPython3.12 binフォルダを追加します。
export LD_LIBRARY_PATH=$PYTHONHOME/lib:$LD_LIBRARY_PATH export PATH=$PYTHONHOME/bin:$PATH
- Pythonが正しくコンパイルされたことを確認します。
python3
Python 3.12.0 (main, Apr 5 2024, 18:58:17) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44.0.3)] on linux Type "help", "copyright", "credits" or "license" for more information.
import ssl
ssl.OPENSSL_VERSION 'OpenSSL 3.0.12 24 Oct 2023'
- 続行する前に、すでにPythonインストールがあるかどうかを確認します。
Oracle Linux 8でのPythonのビルドとインストール
次のステップでは、Oracle Linux 8でのPython 3.12.0のビルドとインストールについて説明します。
- Python 3.12.0 source tarballをダウンロードします。
wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tgz
- ディレクトリ
$ORACLE_HOME/python
を作成し、このディレクトリに内容を抽出します。mkdir -p $ORACLE_HOME/python tar -xvzf Python-3.12.0.tgz --strip-components=1 -C $ORACLE_HOME/python
Gzipped source tarballの内容は、
$ORACLE_HOME/python
に直接コピーされます - 新しいディレクトリに移動します。
cd $ORACLE_HOME/python
- OML4Pyには、
perl-Env
、libffi-devel
、openssl
、openssl-devel
、tk-devel
、xz-devel
、zlib-devel
、bzip2-devel
、readline-devel
、libuuid-devel
およびncurses-devel
の各ライブラリが存在する必要があります。これらのパッケージをsudoまたはrootユーザーとしてインストールします:sudo yum install perl-Env libffi-devel openssl openssl-devel tk-devel xz-devel zlib-devel bzip2-devel readline-devel libuuid-devel ncurses-devel
- Python 3.12.0をビルドするには、次のコマンドを入力します(ここでの
PREFIX
は、Python-3.12.0をインストールしたディレクトリです)。Oracle Machine Learning for Pythonサーバーでのコマンドは次のとおりです。cd $ORACLE_HOME/python ./Configure --enable-shared --prefix=$ORACLE_HOME/python make clean; make make altinstall
ノート:
Embedded Python Executionを使用する場合は、必ず
--enable-shared
フラグを使用してください。そうしないと、Embedded Python Execution関数を使用したときにextproc
エラーが発生します。必ず
make install
ではなくmake altinstall
を呼び出して、システムPythonの上書きを回避してください。 - 環境変数
PYTHONHOME
を設定してPATH
に追加し、環境変数LD_LIBRARY_PATH
を設定します。export PYTHONHOME=$ORACLE_HOME/python export PATH=$PYTHONHOME/bin:$PATH export LD_LIBRARY_PATH=$PYTHONHOME/lib:$LD_LIBRARY_PATH
ノート:
OML4PyのためにPythonを使用するには、これらの変数を設定する必要があり、これらの変数はPATHおよびLD_LIBRARY_PATHでシステムPythonの前に指定する必要があります。 $ORACLE_HOME/python/bin
ディレクトリにシンボリック・リンクを作成してpython3.12実行可能ファイルにリンクします。これは、次のコマンドを使用して実行できます:cd $ORACLE_HOME/python/bin ln -s python3.12 python3
最新バージョンがインストールされていない場合は、パッケージのインストール中にpipから警告が返されます。pipのバージョンをアップグレードしてこのような警告を回避できます。
python3 -m pip install --upgrade pip
Oracle Linux 7およびOracle Linux 8の両方について
これで、コマンドpython3
を実行してPythonを起動できます。Pythonがインストールされているディレクトリを確認するには、sys
パッケージのsys.executable
コマンドを使用します。たとえば、次のようになります。
python3
Python 3.12.0 (default, Feb 22 2022, 15:13:36)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44.0.3)] on linux
Type "help", "copyright", "credits" or "license" for more information.
import sys
print(sys.executable)
/u01/app/oracle/product/19.3/dbhome_1/python/bin/python3
この例では、Python実行可能バイナリの絶対パスを返します。
コマンドpython3
を実行して、エラーcommand not found
が表示された場合は、python3
という実行可能ファイルが$PYTHONHOME/bin
で見つからないことを意味します。OML4Pyサーバー・インストール・コンポーネントにはシンボリック・リンクが必要です。そのため、その場合は、ステップ6の説明に従って、PREFIX/bin
ディレクトリにシンボリック・リンクを作成してpython3.12
実行可能ファイルにリンクする必要があります。
- オンプレミス・データベース用にPython for Linuxをビルドしインストールするためのコマンドの概要
オンプレミス・データベース用にPython for Linuxをビルドしインストールするために使用するコマンドを、次の例でリストします。
親トピック: オンプレミス・データベース用のOML4Pyのインストール