satokaz / hitorigoto

独り言
2 stars 0 forks source link

Oracle Cloud Infrastructure CLIのメモ。主に Solaris 11.4 #21

Open satokaz opened 3 years ago

satokaz commented 3 years ago
Macmini6,1 23:32:41-kazus@solaris~$ oci -v
3.23.0

手元の環境で、OCI CLI を動かすためのメモ。主に Solaris 11.4

bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"

macOS

command line developer tools が必要になるので、必ずインストールしておく:

% sudo xcode-select --install

Apple M1 機 では、arm64 build できないので、arch -arch x86_64 /bin/zsh -l とかして、x86_64 でインストールを実行すること。

homebrew でも、インストール可能。x86_64 でも arm64 でもインストールできる。

Solaris 11.4 SRU 54

下記に該当しない場合は、https://github.com/satokaz/hitorigoto/issues/21#issuecomment-1436657724 でインストール可能。

過去に、mediator を変更している場合は注意。

$ sudo pkg set-mediator -I default@1.1 openssl

pkg update をしても、最後に下記のメッセージを出力して update が完了しない:

The running system has not been modified. Modifications were only made to a clone (be://rpool/11.4.54.138.1) of the running system.  This clone is mounted at /tmp/tmprnjb6nq5 should you wish to inspect it.
pkg: The following mediated link targets do not exist, please reset the links via pkg set-mediator:
  MEDIATOR                 REMOVED PATH(S)
  openssl                  usr/lib/proftpd/amd64/mod_tls-default.so

pkg set-mediator してたのが邪魔するので、これを unset-mediator しろとのこと。

Solaris 11.4 SRU 28

動かせた。

pkg set-mediator で、利用する OpenSSL を 1.1.1d に切り替えてあげれば、1.0.2 利用時の Warning とは付き合う必要がないことがわかった。

mediator を openssl 1.1.1 を利用する default@1.1 に切り替え、PKG_CONFIG_PATH 環境変数をセットしてインストールを実行:

$ sudo pkg set-mediator -I default@1.1 openssl
$ export PKG_CONFIG_PATH=/usr/lib/64/pkgconfig 
$ bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"

Solaris 11.4 の OpenSSL については、下記の記事を参照。Solaris 11.4 SRU 21 から、OpenSSL 1.1.1 が提供されるようになっていた。

Solaris 11 の IPS には、あるアプリケーションの異なる実装へのリンクのセットを提供する mediation と言う考え方を提供する。 OpenSSL は、この medation がセットされており、1.0.2/1.1.1d/fips-140 対応と 3 つの mediator を持っている。 と言うわけで、openssl の mediator を OpenSSL 1.1.1 に切り替えて build してしまえば良い。と言うのを知った。 勉強になりました。

その後、下記の環境変数をセットして oci コマンドを実行:

$ export CRYPTOGRAPHY_ALLOW_OPENSSL_102=1
$ oci -v
/export/home/kazus/lib/oracle-cli/lib/python3.7/site-packages/cryptography/hazmat/bindings/openssl/binding.py:179: CryptographyDeprecationWarning: OpenSSL version 1.0.2 is no longer supported by the OpenSSL project, please upgrade. The next version of cryptography will completely remove support for it.
  utils.CryptographyDeprecationWarning,
2.20.0

下記の CryptographyDeprecationWarning は、Solaris 11.4 で提供される OpenSSL がアップデートされるまでは消えない:

/export/home/kazus/lib/oracle-cli/lib/python3.7/site-packages/cryptography/hazmat/bindings/openssl/binding.py:179: CryptographyDeprecationWarning: OpenSSL version 1.0.2 is no longer supported by the OpenSSL project, please upgrade. The next version of cryptography will completely remove support for it. utils.CryptographyDeprecationWarning,

https://github.com/oracle/solaris-userland/tree/master/components/openssl/openssl-1.1 を見ると、SRU29 SRU 30 あたりで 1.1.1i に update されるかな?

satokaz commented 1 year ago

Solaris 11.4 SRU 51 で python 3.9 を default にする手順。 mediator は、下記 2 つがある:

$ pkg mediator -a python
MEDIATOR  VER. SRC. VERSION IMPL. SRC. IMPLEMENTATION
python    vendor    3.7     vendor     
python    system    3.9     system     
python    system    2.7     system    
# pkg set-mediator -V 3.9 python3
            Packages to change:   3
           Mediators to change:   1
       Create boot environment:  No
Create backup boot environment: Yes
PHASE                                          ITEMS
Removing old actions                             2/2
Updating modified actions                        8/8
Updating package state database                 Done 
Updating package cache                           0/0 
Updating image state                            Done 
Creating fast lookup database                working /
Creating fast lookup database                   Done 
Updating package cache                           2/2 
# pkg set-mediator -V 3.9 python
     変更するパッケージ:   7
    変更するメディエータ:   1
      ブート環境の作成: いいえ
バックアップブート環境の作成:  はい
フェーズ                                              項目
古いアクションを削除しています                                  2/2
変更されたアクションを更新しています                             10/10
パッケージ状態データベースを更新しています                             完了 
パッケージキャッシュを更新しています                               0/0 
イメージ状態を更新しています                                    完了 
スピード検索データベースを作成しています                              完了 
パッケージキャッシュを更新しています                               2/2 
satokaz commented 1 year ago

oci-cli 内部で利用している pyca/cryptography (38.0.4)の build 、35.0.0 から Rust 必須(1.48.0 以降)になっている この記事を書いた Solaris 11.4 SRU 28 の環境は、何かのタイミングで既に rustc と cargo パッケージがインストールされていたので大丈夫だった感じ

satokaz commented 1 year ago

Solaris 11.4 SRU 52 $ oci -version 3.22.0

# pkg install developer/rust/rustc
# pkg install developer/rust/cargo
satokaz commented 1 year ago

SPARC な Solaris 11.4 SRU 54 環境でも oci-cli が欲しかったので。

$ uname -a
SunOS solaris-t4-4 5.11 11.4.54.138.1 sun4v sparc sun4v non-virtualized

mediator に default@1.1 がいない。。。 とりあえず、手をつけず。

$ pkg mediator -a openssl
MEDIATOR  VER. SRC. VERSION IMPL. SRC. IMPLEMENTATION
openssl   vendor            vendor     default@1.0
openssl   vendor            vendor     default
openssl   system            system     fips-140@1.0
openssl   system            system     fips-140

rustc と cargo を追加して、

# pkg install developer/rust/rustc
# pkg install developer/rust/cargo

環境変数で OpenSSL 1.1 を見つけれるようにして、

$ export PKG_CONFIG_PATH=/usr/openssl/1.1/pkgconfig/64/:/usr/lib/64/pkgconfig
$ export CFLAGS="$(pkg-config --cflags libffi --libs libcrypto libssl)"
$ bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"

できた。

kazus@solaris-t4-4~$ oci -v
3.23.0

https://blogs.oracle.com/solaris/post/update-how-to-install-oci-cli-on-oracle-solaris-114