本ブログは、オラクル・クラウドの個人ブログの1つです。
初めに
インターネットにアクセスできないサーバーに OCI-CLI をインストールしたい方がいます。例えば、サービスGW のみを使用して、プライベートサブネットに存在する OCI Compute インスタンスに OCI-CLI をインストールする場合です。このような要件に対し、オフラインインストールの手順を提供します。
環境情報
項目 | バージョン |
---|---|
Windows OS | Windows Server 2019 Standard (OCI VM) |
Linux OS | Oracle Linux 8 (OCI VM) |
Python | 3.11.9 (for Windows), 3.6.8 (for Linux) |
OCI CLI | 3.44.3 |
※、CLIは、Oracle Linux 9に事前にインストールされています。
※、OSによってサポートされるPythonのバージョンが異なります。詳しくはこちらをご参照ください。
目次
Windowsサーバの場合
1. Pythonをオフラインでインストールする
OCI-CLIをインストールする前に、Pythonをインストールする必要があります。
1-1. インストーラのダウンロード
インターネットにアクセスできるクライアントからPythonのインストーラーをダウンロードします。
URL: https://www.python.org/downloads/
この例では、Windows installer (64-bit) を選択します。
インストーラー・ファイル名: python-3.11.9-amd64.exe
1-2. ファイルコピー
インストーラー・ファイルを、インストール先の Windowsサーバーにコピーします。
1-3. オフライン・インストール
インストーラーファイルを管理者として実行します。
インストールが完了したら、「Disable path length limit」をクリックします。
「Disable path length limit」の表示が消えたら、"Close"を押し画面を閉じます。
Pythonのバージョンを確認します。
C:\Users\opc>python -V
Python 3.11.9
2. OCI-CLIをオフラインでインストールする
2-1. インストーラのダウンロード
インターネットにアクセスできるクライアントからOCI-CLIのインストーラーをダウンロードします。
URL: https://github.com/oracle/oci-cli/releases
インストーラー・ファイル名: oci-cli-3.44.3-Windows-Server-2019-Offline.zip
2-2. ファイルコピー
zipファイルを、ターゲット・サーバーにコピーします。
2-3. ファイル解凍
zipファイルを解凍すると、これらのファイルを取得できます。
2-4. オフライン・インストール
PowerShell を起動し、次のコマンドを実行します。
install.ps1 -OfflineInstall
.
このテストでは、プロンプトが表示されたときにリターンキー(デフォルト)を押しました。
PS C:\Users\opc\Downloads\oci-cli-installation> .\install.ps1 -OfflineInstall
******************************************************************************
You have started the OCI CLI Installer in interactive mode. If you do not wish
to run this in interactive mode, please include the -AcceptAllDefaults option.
If you have the script locally and would like to know more about
input options for this script, then you can run:
help .\install.ps1
If you would like to know more about input options for this script, refer to:
https://github.com/oracle/oci-cli/blob/master/scripts/install/README.rst
******************************************************************************
******************************************************************************
Starting OCI CLI Offline Installation
******************************************************************************
VERBOSE: Python found in registry: HKCU:\Software\Python\PythonCore
VERBOSE: False False
VERBOSE: Using Python executable: C:\Users\opc\AppData\Local\Programs\Python\Python311\python.exe to run install
script...
VERBOSE: Arguments to python script: "C:\Users\opc\Downloads\oci-cli-installation\install.py" --offline-install
-- Verifying Python version.
-- Python version 3.11.9 okay.
===> In what directory would you like to place the install? (leave blank to use 'C:\Users\opc\lib\oracle-cli'):
-- Creating directory 'C:\Users\opc\lib\oracle-cli'.
-- We will install at 'C:\Users\opc\lib\oracle-cli'.
===> In what directory would you like to place the 'oci.exe' executable? (leave blank to use 'C:\Users\opc\bin'):
-- Creating directory 'C:\Users\opc\bin'.
-- The executable will be in 'C:\Users\opc\bin'.
===> In what directory would you like to place the OCI scripts? (leave blank to use 'C:\Users\opc\bin\oci-cli-scripts'):
-- Creating directory 'C:\Users\opc\bin\oci-cli-scripts'.
-- The scripts will be in 'C:\Users\opc\bin\oci-cli-scripts'.
-- Trying to use python3 venv.
-- Executing: ['C:\\Users\\opc\\AppData\\Local\\Programs\\Python\\Python311\\python.exe', '-m', 'venv', 'C:\\Users\\opc\\lib\\oracle-cli']
-- Executing: ['C:\\Users\\opc\\lib\\oracle-cli\\Scripts\\python.exe', '-m', 'pip', 'install', 'pip', '--upgrade', '--find-links', 'cli-deps\\python311.html', '--no-index']
Looking in links: cli-deps\python311.html
Requirement already satisfied: pip in c:\users\opc\lib\oracle-cli\lib\site-packages (24.0)
Processing c:\users\opc\downloads\oci-cli-installation\cli-deps\pip-24.1.2-py3-none-any.whl
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 24.0
Uninstalling pip-24.0:
Successfully uninstalled pip-24.0
Successfully installed pip-24.1.2
-- Executing: ['C:\\Users\\opc\\lib\\oracle-cli\\Scripts\\pip', 'install', 'oci_cli', '--find-links', 'cli-deps/python311.html', '--no-index', '--ignore-requires-python']
Looking in links: cli-deps/python311.html
Processing c:\users\opc\downloads\oci-cli-installation\cli-deps\oci_cli-3.44.3-py3-none-any.whl
Processing c:\users\opc\downloads\oci-cli-installation\cli-deps\oci-2.129.3-py3-none-any.whl (from oci_cli)
Processing c:\users\opc\downloads\oci-cli-installation\cli-deps\arrow-1.3.0-py3-none-any.whl (from oci_cli)
Processing c:\users\opc\downloads\oci-cli-installation\cli-deps\certifi-2024.7.4-py3-none-any.whl (from oci_cli)
Processing c:\users\opc\downloads\oci-cli-installation\cli-deps\click-8.0.4-py3-none-any.whl (from oci_cli)
Processing c:\users\opc\downloads\oci-cli-installation\cli-deps\cryptography-42.0.8-cp39-abi3-win_amd64.whl (from oci_cli)
Processing c:\users\opc\downloads\oci-cli-installation\cli-deps\jmespath-0.10.0-py2.py3-none-any.whl (from oci_cli)
Processing c:\users\opc\downloads\oci-cli-installation\cli-deps\python_dateutil-2.9.0.post0-py2.py3-none-any.whl (from oci_cli)
Processing c:\users\opc\downloads\oci-cli-installation\cli-deps\pytz-2024.1-py2.py3-none-any.whl (from oci_cli)
Processing c:\users\opc\downloads\oci-cli-installation\cli-deps\six-1.16.0-py2.py3-none-any.whl (from oci_cli)
Processing c:\users\opc\downloads\oci-cli-installation\cli-deps\terminaltables-3.1.10-py2.py3-none-any.whl (from oci_cli)
Processing c:\users\opc\downloads\oci-cli-installation\cli-deps\pyopenssl-24.1.0-py3-none-any.whl (from oci_cli)
Processing c:\users\opc\downloads\oci-cli-installation\cli-deps\pyyaml-6.0.1-cp311-cp311-win_amd64.whl (from oci_cli)
Processing c:\users\opc\downloads\oci-cli-installation\cli-deps\prompt_toolkit-3.0.43-py3-none-any.whl (from oci_cli)
Processing c:\users\opc\downloads\oci-cli-installation\cli-deps\colorama-0.4.6-py2.py3-none-any.whl (from click==8.0.4->
oci_cli)
Processing c:\users\opc\downloads\oci-cli-installation\cli-deps\circuitbreaker-1.4.0.tar.gz (from oci==2.129.3->oci_cli)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Processing c:\users\opc\downloads\oci-cli-installation\cli-deps\types_python_dateutil-2.9.0.20240316-py3-none-any.whl (from arrow>=1.0.0->oci_cli)
Processing c:\users\opc\downloads\oci-cli-installation\cli-deps\cffi-1.16.0-cp311-cp311-win_amd64.whl (from cryptography<43.0.0,>=3.2.1->oci_cli)
Processing c:\users\opc\downloads\oci-cli-installation\cli-deps\wcwidth-0.2.13-py2.py3-none-any.whl (from prompt-toolkit<=3.0.43,>=3.0.38->oci_cli)
Processing c:\users\opc\downloads\oci-cli-installation\cli-deps\pycparser-2.22-py3-none-any.whl (from cffi>=1.12->cryptography<43.0.0,>=3.2.1->oci_cli)
Building wheels for collected packages: circuitbreaker
Building wheel for circuitbreaker (pyproject.toml) ... done
Created wheel for circuitbreaker: filename=circuitbreaker-1.4.0-py3-none-any.whl size=7554 sha256=27b49726fbe73f0cb2a57a2916b3a921bd49758fde35594726e1221a57ab11b0
Stored in directory: c:\users\opc\appdata\local\pip\cache\wheels\5c\b4\86\6493e7ad366f02b93f598fb48149e9e40a2726fdde8f24be1b
Successfully built circuitbreaker
Installing collected packages: wcwidth, types-python-dateutil, terminaltables, six, PyYAML, pytz, pycparser, jmespath, colorama, circuitbreaker, certifi, python-dateutil, prompt-toolkit, click, cffi, cryptography, arrow, pyOpenSSL, oci, oci_cli
Successfully installed PyYAML-6.0.1 arrow-1.3.0 certifi-2024.7.4 cffi-1.16.0 circuitbreaker-1.4.0 click-8.0.4 colorama-0.4.6 cryptography-42.0.8 jmespath-0.10.0 oci-2.129.3 oci_cli-3.44.3 prompt-toolkit-3.0.43 pyOpenSSL-24.1.0 pycparser-2.22 python-dateutil-2.9.0.post0 pytz-2024.1 six-1.16.0 terminaltables-3.1.10 types-python-dateutil-2.9.0.20240316 wcwidth-0.2.13
===> Modify PATH to include the CLI and enable tab completion in PowerShell now? (Y/n): y
-- ** Close and re-open PowerShell to reload changes to your PATH **
-- In order to run the autocomplete script, you may also need to set your PowerShell execution policy to allow for running local scripts (as an Administrator run Set-ExecutionPolicy RemoteSigned in a PowerShell prompt)
-- Installation successful.
Announcement
============
1. Interactive mode now available in CLI
Have you tried the new interactive features in OCI CLI yet? You can get started by typing `oci -i`.
Learn more by watching our informative video on YouTube -> https://www.youtube.com/watch?v=lX29Xw1Te54&ab_channel=OracleLearning
Also see https://docs.oracle.com/iaas/Content/API/SDKDocs/cliusing_topic-Using_Interactive_Mode.htm
============
-- Run the CLI with C:\Users\opc\bin\oci.exe --help
VERBOSE: Successfully installed OCI CLI!
PS C:\Users\opc\Downloads\oci-cli-installation>
OCI-CLIのバージョンを確認します。
PS C:\Users\opc\Downloads\oci-cli-installation> oci -v
3.44.3
構成ファイルの設定については省略します。詳しくはドキュメントをご参考ください。
Oracle Linux 8の場合
Oracle Linux 8ではPythonが既にインストールされています。
[opc@ol8 ~]$ python -V
Python 3.6.8
インストーラのダウンロード
インターネットにアクセスできるクライアントからOCI-CLIのインストーラーをダウンロードします。
URL: https://github.com/oracle/oci-cli/releases
インストーラー・ファイル名: oci-cli-3.44.3-Oracle-Linux-8-Offline.zip
ファイルコピー
zipファイルをターゲット・サーバーにコピーします(例:scp
)。
ファイル解凍
zipファイルを解凍します。
[opc@ol8 ~]$ unzip oci-cli-3.44.3-Oracle-Linux-8-Offline.zip
オフライン・インストール
bash install.sh --offline-install
を実行します。
[opc@ol8 oci-cli-installation]$ pwd
/home/opc/oci-cli-installation
[opc@ol8 oci-cli-installation]$ ll
total 60
drwxrwxr-x. 2 opc opc 4096 Jul 18 18:09 cli-deps
-rwxrwxr-x. 1 opc opc 36648 Jul 18 18:08 install.py
-rwxr-xr-x. 1 opc opc 16926 Jul 18 18:08 install.sh
[opc@ol8 oci-cli-installation]$ bash install.sh --offline-install
******************************************************************************
You have started the OCI CLI Installer in interactive mode. If you do not wish
to run this in interactive mode, please include the --accept-all-defaults option.
If you have the script locally and would like to know more about
input options for this script, then you can run:
./install.sh -h
If you would like to know more about input options for this script, refer to:
https://github.com/oracle/oci-cli/blob/master/scripts/install/README.rst
******************************************************************************
Starting OCI CLI Offline Installation
<中略>
-- Installation successful.
<中略>
OCI-CLIのバージョンを確認します。
[opc@ol8 oci-cli-installation]$ oci -v
/home/opc/lib/oracle-cli/lib64/python3.6/site-packages/oci/_vendor/httpsig_cffi/sign.py:10: CryptographyDeprecationWarning: Python 3.6 is no longer supported by the Python core team. Therefore, support for it is deprecated in cryptography. The next release of cryptography will remove support for Python 3.6.
from cryptography.hazmat.backends import default_backend # noqa: F401
3.44.3
※、Python 3.6を使用している場合、上記の警告メッセージが表示されますが、OCI-CLIの使用には特に影響はありません。Python 3.8にアップグレードすると、警告メッセージは消えます。
[opc@ol8 ~]$ python -V
Python 3.8.17
[opc@ol8 ~]$ oci -v
3.44.3
トラブルシューティング
1. Pythonがインストールされていない
現象:install.ps1 -OfflineInstall
を実行した直後に、次のエラーが発生した。
VERBOSE: No valid Python installation found.
VERBOSE: Exiting script. Offline installation requires Python3.5+ to be installed, Please install Python manually and
re-run.
原因:pythonがインストールされていない。
対策:このステップを先行に実施してください。
2. Windowsファイル名の長さが制限を超えた
現象:install.ps1 -OfflineInstall
を実行した際に、次のエラーが発生した。
Installing collected packages: wcwidth, types-python-dateutil, terminaltables, six, PyYAML, pytz, pycparser, jmespath, colorama, circuitbreaker, certifi, python-dateutil, prompt-toolkit, click, cffi, cryptography, arrow, pyOpenSSL, oci, oci_cli
ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: 'C:\\Users\\opc\\lib\\oracle-cli\\Lib\\site-packages\\oci_cli\\help_text_producer\\data_files\\text\\cmdref\\database-management\\managed-database\\enable-external-pluggable-database-management-feature-external-pluggable-database-diagnostics-and-management-feature-details.txt'
HINT: This error might have occurred since this system does not have Windows Long Path support enabled. You can find information on how to enable this at https://pip.pypa.io/warnings/enable-long-paths
原因:次のファイル(フルパス)の長さが260文字の制限を超えてしまった。
C:\Users\opc\lib\oracle-cli\Lib\site-packages\oci_cli\help_text_producer\data_files\text\cmdref\database-management\managed-database\enable-external-pluggable-database-management-feature-external-pluggable-database-diagnostics-and-management-feature-details.txt
対策-1:Pythonをインストールした後、「Disable path length limit」をクリックする。
対策-2:Windowsサーバのレジストリを手動編集する。
PATH: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
Item: LongPathsEnabled
Value: 1
※、デフォルト値は0(無効)であり、1(有効)に変更する。
以上
関連記事
オラクル・クラウドの個人ブログ一覧
便利なOCI CLIコマンド例
OCIインスタンスの自動起動・停止
OCI-CLIについてのFAQ (よくある質問)
ドキュメント
OCI Doc
オフライン・インストール
サポートされるPythonバージョンおよびオペレーティング・システム
My Oracle Support(MOS) Doc
OCI Command Line Interface (CLI) - Installation on an Offline Windows Instance [Video] (Doc ID 2922241.1)