Oracle TDE暗号化ウォレットの作成と暗号化アルゴリズムの変更
目次
構成
- Single DB
- マルチテナント構成
- キーストア配置先:ファイルシステム
- キーストア:統合モード
- キーストア配置先の指定:sqlnet.ora の ENCRYPTION_WALLET_LOCATION
- 自動ログインウォレット:あり
設定確認
- PDB確認
SQL> select con_id, name from v$pdbs; CON_ID NAME ---------- -------------------- 2 PDB$SEED 3 PDB1
- 初期化パラメータ確認
SQL> set line 200 pages 100 tab off SQL> col name for a20 SQL> col value for a40 SQL> select name, value, con_id from v$system_parameter where name in ('tde_configuration','wallet_root'); NAME VALUE CON_ID -------------------- ---------------------------------------- ---------- wallet_root 0 tde_configuration 0 tde_configuration 2 tde_configuration 3
- sqlnet.ora
cat $ORACLE_HOME/network/admin/sqlnet.ora cat: /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/sqlnet.ora: No such file or directory
- wallet 状態確認(キーストア作成前)
SQL> set line 200 pages 100 tab off SQL> col wrl_parameter for a60 SQL> select * from v$encryption_wallet; WRL_TYPE WRL_PARAMETER STATUS WALLET_TYPE WALLET_OR KEYSTORE FULLY_BAC CON_ID -------------------- ------------------------------------------------------------ ------------------------------ -------------------- --------- -------- --------- ---------- FILE /u01/app/oracle/admin/cdb1/wallet NOT_AVAILABLE UNKNOWN SINGLE NONE UNDEFINED 1 FILE NOT_AVAILABLE UNKNOWN SINGLE UNITED UNDEFINED 2 FILE NOT_AVAILABLE UNKNOWN SINGLE UNITED UNDEFINED 3
キーストア作成
キーストア配置先作成
- ディレクトリ作成
$ mkdir -p /u01/app/oracle/admin/cdb1/wallet $ ls -dl /u01/app/oracle/admin/cdb1/wallet drwxr-xr-x. 2 oracle oinstall 6 Nov 7 08:45 /u01/app/oracle/admin/cdb1/wallet
- sqlnet.ora作成
cat << EOF > $ORACLE_HOME/network/admin/sqlnet.ora ENCRYPTION_WALLET_LOCATION = (SOURCE= (METHOD=FILE) (METHOD_DATA= (DIRECTORY=/u01/app/oracle/admin/cdb1/wallet))) EOF
キーストア作成
SQL> ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/u01/app/oracle/admin/cdb1/wallet' IDENTIFIED BY "Welcome1234!Welcome1234!"; keystore altered.
自動ログインウォレット作成
SQL> ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE FROM KEYSTORE '/u01/app/oracle/admin/cdb1/wallet'IDENTIFIED BY "Welcome1234!Welcome1234!"; keystore altered.
- hash確認(キーストア作成後)
$ ls -l /u01/app/oracle/admin/cdb1/wallet/* -rw-------. 1 oracle oinstall 2600 Nov 7 08:54 /u01/app/oracle/admin/cdb1/wallet/cwallet.sso -rw-------. 1 oracle oinstall 2555 Nov 7 08:52 /u01/app/oracle/admin/cdb1/wallet/ewallet.p12 $ md5sum /u01/app/oracle/admin/cdb1/wallet/* acf747b5d50a0b183f4defc5c9f7cd7c /u01/app/oracle/admin/cdb1/wallet/cwallet.sso 9ba05e5df3cbc3f058a50cdc05b79dfb /u01/app/oracle/admin/cdb1/wallet/ewallet.p12
- wallet 状態確認(キーストア作成後)
SQL> set line 200 pages 100 tab off SQL> col wrl_parameter for a60 SQL> select * from v$encryption_wallet; WRL_TYPE WRL_PARAMETER STATUS WALLET_TYPE WALLET_OR KEYSTORE FULLY_BAC CON_ID -------------------- ------------------------------------------------------------ ------------------------------ -------------------- --------- -------- --------- ---------- FILE /u01/app/oracle/admin/cdb1/wallet/ OPEN_NO_MASTER_KEY AUTOLOGIN SINGLE NONE UNDEFINED 1 FILE OPEN_NO_MASTER_KEY AUTOLOGIN SINGLE UNITED UNDEFINED 2 FILE OPEN_NO_MASTER_KEY AUTOLOGIN SINGLE UNITED UNDEFINED 3
マスター鍵作成(CDB)
SQL> select * from V$ENCRYPTION_KEYS; no rows selected SQL> ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY USING TAG 'tag0' FORCE KEYSTORE IDENTIFIED BY "Welcome1234!Welcome1234!" WITH BACKUP USING 'backup0'; keystore altered.
マスター鍵作成(PDB)
SQL> alter session set container = pdb1; SQL> show con_name CON_NAME ------------------------------ PDB1 SQL> ADMINISTER KEY MANAGEMENT SET ENCRYPTION KEY USING TAG 'tag1' FORCE KEYSTORE IDENTIFIED BY "Welcome1234!Welcome1234!" WITH BACKUP USING 'backup1';
- hash確認(マスター鍵作成後)
$ ls -l /u01/app/oracle/admin/cdb1/wallet/* -rw-------. 1 oracle oinstall 5864 Nov 7 09:14 /u01/app/oracle/admin/cdb1/wallet/cwallet.sso -rw-------. 1 oracle oinstall 2555 Nov 7 09:06 /u01/app/oracle/admin/cdb1/wallet/ewallet_2022110709060456_backup0.p12 -rw-------. 1 oracle oinstall 4171 Nov 7 09:14 /u01/app/oracle/admin/cdb1/wallet/ewallet_2022110709142272_backup1.p12 -rw-------. 1 oracle oinstall 5819 Nov 7 09:14 /u01/app/oracle/admin/cdb1/wallet/ewallet.p12 $ md5sum /u01/app/oracle/admin/cdb1/wallet/* a1840d67634bb173d30f7521081d6d42 /u01/app/oracle/admin/cdb1/wallet/cwallet.sso 9ba05e5df3cbc3f058a50cdc05b79dfb /u01/app/oracle/admin/cdb1/wallet/ewallet_2022110709060456_backup0.p12 74be09571afa669e0ba083f4b4c952a2 /u01/app/oracle/admin/cdb1/wallet/ewallet_2022110709142272_backup1.p12 2d1a2ee92aeedf74bd418791eb506d49 /u01/app/oracle/admin/cdb1/wallet/ewallet.p12
- マスター鍵確認(CDB, PDB)
SQL> col key_id for a60 SQL> col tag for a10 SQL> col CREATOR_PDBNAME for a10 SQL> select key_id, creation_time, activation_time, tag, CREATOR_PDBNAME from V$ENCRYPTION_KEYS; KEY_ID CREATION_TIME ACTIVATION_TIME TAG CREATOR_PD ------------------------------------------------------------ --------------------------------------------------------------------------- --------------------------------------------------------------------------- ---------- ---------- AU1LHvHFk0+Iv8/79pk6GdQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 07-NOV-22 09.06.04.730520 AM +00:00 07-NOV-22 09.06.04.730523 AM +00:00 tag0 CDB$ROOT AewNE+jX8U+evxCHpOnIzj8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 07-NOV-22 09.14.22.919688 AM +00:00 07-NOV-22 09.14.22.919690 AM +00:00 tag1 PDB1
暗号化表領域作成
SQL> alter session set container = pdb1; SQL> select name from v$datafile; NAME -------------------------------------------------------------------------------- /u02/oradata/CDB1/pdb1/system01.dbf /u02/oradata/CDB1/pdb1/sysaux01.dbf /u02/oradata/CDB1/pdb1/users01.dbf /u02/oradata/CDB1/pdb1/undo_fix_10m.dbf SQL> CREATE TABLESPACE ts_aes128 DATAFILE '/u02/oradata/CDB1/pdb1/ts_aes128.dbf' SIZE 10M ENCRYPTION USING 'AES128' DEFAULT STORAGE(ENCRYPT); Tablespace created. SQL> select ts#, name from v$datafile; TS# NAME ---------- ---------------------------------------- 0 /u02/oradata/CDB1/pdb1/system01.dbf 1 /u02/oradata/CDB1/pdb1/sysaux01.dbf 5 /u02/oradata/CDB1/pdb1/users01.dbf 7 /u02/oradata/CDB1/pdb1/undo_fix_10m.dbf 8 /u02/oradata/CDB1/pdb1/ts_aes128.dbf
- 暗号化アルゴリズム確認
SQL> set line 300 pages 100 tab off SQL> col name for a40 SQL> select e.ts#, d.name, e.encryptionalg, e.encryptedts, e.encryptedkey, e.masterkeyid, e.key_version, e.status, e.con_id from V$ENCRYPTED_TABLESPACES e, v$datafile d where e.ts#=d.ts# ; TS# NAME ENCRYPT ENC ENCRYPTEDKEY MASTERKEYID KEY_VERSION STATUS CON_ID ---------- ---------------------------------------- ------- --- ---------------------------------------------------------------- -------------------------------- ----------- ---------- ---------- 8 /u02/oradata/CDB1/pdb1/ts_aes128.dbf AES128 YES 6425018322B6C79A1DAA97FD459DE36500000000000000000000000000000000 EC0D13E8D7F14F9EBF1087A4E9C8CE3F 0 NORMAL 3
- データ作成
SQL> grant dba to user01 identified by "Welcome123!Welcome123!"; SQL> create table user01.t1 ( c1 number(10), c2 varchar2(100)) tablespace ts_aes128; SQL> insert into user01.t1 values (1, 'TEST'); SQL> commit;
暗号化アルゴリズム変更
SQL> alter session set container = pdb1; SQL> alter tablespace ts_aes128 encryption online using 'AES256' rekey; Tablespace altered.
- 暗号化アルゴリズム確認
SQL> set line 300 pages 100 tab off SQL> col name for a40 SQL> select e.ts#, d.name, e.encryptionalg, e.encryptedts, e.encryptedkey, e.masterkeyid, e.key_version, e.status, e.con_id from V$ENCRYPTED_TABLESPACES e, v$datafile d where e.ts#=d.ts#; TS# NAME ENCRYPT ENC ENCRYPTEDKEY MASTERKEYID KEY_VERSION STATUS CON_ID ---------- ---------------------------------------- ------- --- ---------------------------------------------------------------- -------------------------------- ----------- ---------- ---------- 8 /u02/oradata/CDB1/pdb1/ts_aes128.dbf AES256 YES 2B1E5943759E3D48A23A56A029DFE958D317BFBBB34D8FB5D7304466E5F0739E EC0D13E8D7F14F9EBF1087A4E9C8CE3F 1 NORMAL 3
- マスター鍵確認(PDB)
SQL> col key_id for a60 SQL> col tag for a10 SQL> col CREATOR_PDBNAME for a10 SQL> select key_id, creation_time, activation_time, tag, CREATOR_PDBNAME from V$ENCRYPTION_KEYS; KEY_ID CREATION_TIME ACTIVATION_TIME TAG CREATOR_PD ------------------------------------------------------------ --------------------------------------------------------------------------- --------------------------------------------------------------------------- ---------- ---------- AewNE+jX8U+evxCHpOnIzj8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 07-NOV-22 09.14.22.919688 AM +00:00 07-NOV-22 09.14.22.919690 AM +00:00 tag1 PDB1
- hash確認(暗号化アルゴリズム変更後)
[oracle@db01 ~]$ ls -l /u01/app/oracle/admin/cdb1/wallet/* -rw-------. 1 oracle oinstall 5864 Nov 7 09:14 /u01/app/oracle/admin/cdb1/wallet/cwallet.sso -rw-------. 1 oracle oinstall 2555 Nov 7 09:06 /u01/app/oracle/admin/cdb1/wallet/ewallet_2022110709060456_backup0.p12 -rw-------. 1 oracle oinstall 4171 Nov 7 09:14 /u01/app/oracle/admin/cdb1/wallet/ewallet_2022110709142272_backup1.p12 -rw-------. 1 oracle oinstall 5819 Nov 7 09:14 /u01/app/oracle/admin/cdb1/wallet/ewallet.p12 [oracle@db01 ~]$ md5sum /u01/app/oracle/admin/cdb1/wallet/* a1840d67634bb173d30f7521081d6d42 /u01/app/oracle/admin/cdb1/wallet/cwallet.sso 9ba05e5df3cbc3f058a50cdc05b79dfb /u01/app/oracle/admin/cdb1/wallet/ewallet_2022110709060456_backup0.p12 74be09571afa669e0ba083f4b4c952a2 /u01/app/oracle/admin/cdb1/wallet/ewallet_2022110709142272_backup1.p12 2d1a2ee92aeedf74bd418791eb506d49 /u01/app/oracle/admin/cdb1/wallet/ewallet.p12
→ハッシュ値が 2d1a2ee92aeedf74bd418791eb506d49 から変わらない
参考
以上
VNCでGnome Desktopを起動するメモ
目次
- 目次
- リモートサーバーの準備
- Gnomeインストール
- VNCサーバーインストール
- VNCサーバーの起動・停止
- VNCサーバー設定
- VNCサーバー起動
- ssh ポートフォワーディング設定
- ローカルでVNCクライアント起動し接続
- Gnome デスクトップの表示
- GUIアプリケーションの起動
リモートサーバーの準備
Gnomeインストール
$ sudo su - # yum group list hidden ・・・ GNOME ・・・ # yum -y groupinstall GNOME
VNCサーバーインストール
# yum -y install vnc-server
VNCサーバーの起動・停止
# exit $ whoami opc $ vncserver You will require a password to access your desktops. Password: <---- パスワードの入力 Verify: <---- パスワードの入力 Would you like to enter a view-only password (y/n)? n A view-only password is not used xauth: file /home/opc/.Xauthority does not exist New 'bast0:1 (opc)' desktop is bast0:1 Creating default startup script /home/opc/.vnc/xstartup Creating default config /home/opc/.vnc/config Starting applications specified in /home/opc/.vnc/xstartup Log file is /home/opc/.vnc/bast0:1.log $ vncserver -list TigerVNC server sessions: X DISPLAY # PROCESS ID :1 16359 $ vncserver -kill :1 Killing Xvnc process ID 16359
VNCサーバー設定
$ cp -ip .vnc/xstartup .vnc/xstartup.bk $ vi .vnc/xstartup ---- #!/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS # /etc/X11/xinit/xinitrc <---- コメントアウト exec gnome-session <---- 追記 # Assume either Gnome or KDE will be started by default when installed # We want to kill the session automatically in this case when user logs out. In case you modify # /etc/X11/xinit/Xclients or ~/.Xclients yourself to achieve a different result, then you should # be responsible to modify below code to avoid that your session will be automatically killed if [ -e /usr/bin/gnome-session -o -e /usr/bin/startkde ]; then vncserver -kill $DISPLAY fi ---- $ diff .vnc/xstartup .vnc/xstartup.bk 5,7c5 < # /etc/X11/xinit/xinitrc < exec gnome-session < --- > /etc/X11/xinit/xinitrc
VNCサーバー起動
$ vncserver New 'bast0:1 (opc)' desktop is bast0:1 Starting applications specified in /home/opc/.vnc/xstartup Log file is /home/opc/.vnc/bast0:1.log $ cat /home/opc/.vnc/bast0:1.log Xvnc TigerVNC 1.8.0 - built Nov 10 2020 08:31:57 Copyright (C) 1999-2017 TigerVNC Team and many others (see README.txt) See http://www.tigervnc.org for information on TigerVNC. Underlying X server release 12004000, The X.Org Foundation Wed Oct 26 14:16:27 2022 vncext: VNC extension running! vncext: Listening for VNC connections on all interface(s), port 5901 <---- Port番号を確認 vncext: created VNC server for screen 0 Wed Oct 26 14:16:31 2022 ComparingUpdateTracker: 0 pixels in / 0 pixels out ComparingUpdateTracker: (1:nan ratio)
ssh ポートフォワーディング設定
- ローカルの5901 Port を、リモートの5901 Port に転送する
ローカルでVNCクライアント起動し接続
- 設定したパスワードを入力
Gnome デスクトップの表示
GUIアプリケーションの起動
以上
Python からAPIで Google Calendar を操作する
目次
進め方
Python Quickstart | Google Calendar API | Google Developers に沿って行う。
手順
プロジェクトの作成
- プロジェクトのプルダウンから新規のプロジェクトを作成
- 新しいプロジェクトから、MyCalendar プロジェクトを作成
Google Calendar API の有効化
- 左のメニューから 有効なAPIとサービス を選択
- APIとサービスの有効化
- 検索バーで Google Calendar API を検索
- 検索結果から Google Calendar API をクリック
- Google Calendar API を有効化
OAuth同意
- スコープ では何も入力せず 保存して次へ
- テストユーザー 自身の Gmailアドレスを追加
- 概要 で結果を確認
認証情報の作成
- 認証情報から CREATE CREDENTIALS をクリック
- OAuthクライアントID を選択
- アプリケーションの種類に デスクトップアプリ を選択
- JSONをダウンロード
pipでライブラリをインストール
# pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
サンプルコードの配置
- Python Quickstart | Google Calendar API | Google Developers
Step 2: Configure the sample
のサンプルコードを保存 SCOPES変数
は実施したい操作により変更が必要- スコープについては Authorizing Requests to the Google Calendar API | Google Developers に記載がある
from __future__ import print_function import datetime import os.path from google.auth.transport.requests import Request from google.oauth2.credentials import Credentials from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build from googleapiclient.errors import HttpError # If modifying these scopes, delete the file token.json. SCOPES = ['https://www.googleapis.com/auth/calendar.readonly'] def main(): """Shows basic usage of the Google Calendar API. Prints the start and name of the next 10 events on the user's calendar. """ creds = None # The file token.json stores the user's access and refresh tokens, and is # created automatically when the authorization flow completes for the first # time. if os.path.exists('token.json'): creds = Credentials.from_authorized_user_file('token.json', SCOPES) # If there are no (valid) credentials available, let the user log in. if not creds or not creds.valid: if creds and creds.expired and creds.refresh_token: creds.refresh(Request()) else: flow = InstalledAppFlow.from_client_secrets_file( 'credentials.json', SCOPES) creds = flow.run_local_server(port=0) # Save the credentials for the next run with open('token.json', 'w') as token: token.write(creds.to_json()) try: service = build('calendar', 'v3', credentials=creds) # Call the Calendar API now = datetime.datetime.utcnow().isoformat() + 'Z' # 'Z' indicates UTC time print('Getting the upcoming 10 events') events_result = service.events().list(calendarId='primary', timeMin=now, maxResults=10, singleEvents=True, orderBy='startTime').execute() events = events_result.get('items', []) if not events: print('No upcoming events found.') return # Prints the start and name of the next 10 events for event in events: start = event['start'].get('dateTime', event['start'].get('date')) print(start, event['summary']) except HttpError as error: print('An error occurred: %s' % error) if __name__ == '__main__': main()
# ls -l quickstart.py credentials.json -rw-r--r-- 1 root root 406 Aug 20 05:06 credentials.json -rw-r--r-- 1 root root 2611 Aug 20 05:07 quickstart.py
サンプルコードの実行
- サンプルコードの実行
# python /mnt/quickstart.py
- 初回実行時は、ブラウザで認証画面が開く(1つ目はVSCodeから実行した場合の確認画面)
- 続行を選択
- さらに続行を選択
ブラウザに "The authentication flow has completed. You may close this window."と表示される
サンプルコードを実行したターミナルに戻ると、結果が取得されている
Getting the upcoming 10 events 2022-08-23 <予定1> 2022-08-26 <予定2> 2022-08-26 <予定3> 2022-09-17 <予定4> 2022-09-18 <予定5> 2022-10-08 <予定6> 2022-10-18 <予定7> 2022-10-22 <予定8> 2022-11-18 <予定9> 2022-12-18 <予定10>
# ls -l quickstart.py credentials.json token.json -rw-r--r-- 1 root root 406 Aug 20 05:06 credentials.json -rw-r--r-- 1 root root 2611 Aug 20 05:07 quickstart.py -rw-r--r-- 1 root root 650 Aug 21 11:24 token.json
参考
pam_fally2 でログイン失敗回数の制限
※こちらのページは断片的な情報のメモです。
※実際は、ここに記載されている設定以外も挙動に影響します。
sshからのログイン失敗回数を制限したい
設定ファイル
/etc/pam.d/sshd
pam_tally2
を使用してパスワード複数回失敗場合の動作を制御する
auth required pam_sepermit.so auth substack password-auth auth include postlogin auth [success=1 default=ignore] pam_succeed_if.so user in user1 # auth required pam_tally2.so deny=5 onerr=fail lock_time=600 serialize auth required pam_tally2.so deny=2 onerr=fail unlock_time=15 serialize
pam_tally2のパラメーター
deny=n
- Deny access if tally for this user exceeds n.
lock_time=n
- Always deny for n seconds after failed attempt.
unlock_time=n
- Allow access after n seconds after failed attempt. If this option is used the user will be locked out for the specified amount of time after he exceeded his maximum allowed attempts. Otherwise the account is locked until the lock is removed by a manual intervention of the system administrator.
auth [success=1 default=ignore] pam_succeed_if.so user in user1:user2:user3
- ログインに何度も失敗してもシステムがユーザーをロックアウトしないようにするには、/etc/pam.d/system-auth と /etc/pam.d/password-authの両方で、pam_faillock が初めて呼び出される行のすぐ上に次の行を追加します。また、user1、user2、よび user3を実際のユーザー名に置き換えてください。
失敗回数の確認・リセット
## 確認 pam_tally2 -u <user> Login Failures Latest failure From <user> 4 07/25/22 20:28:34 gateway ## リセット pam_tally2 -u <user> --reset
参考
第4章 ツールとサービスでシステムを強化する Red Hat Enterprise Linux 7 | Red Hat Customer Portal
* 4.1.2. アカウントのロック
yumリポジトリが無い環境に必要なパッケージをダウンロードして持込みたい時のメモ
目次
- 目次
- 概要
- docker image のダウンロードと、コンテナの起動
- yum リポジトリの確認
- 現在のrpm リストを取得
- yum パッケージをダウンロード
- 依存関係のチェック・インストール
- rpm リストを再度取得
- この後の作業
- 参考
概要
- yumリポジトリが無い環境に、必要なパッケージをダウンロードして持ち込もうとした場合、
依存関係のあるパッケージを調べ、それを全てダウンロードするのは結構大変 - パッケージ・バージョンまでケアしようとすると、もう少し考えることはあるが、
おおよそ楽にできる方法を思いついたのでメモ - Docker でminimal install の環境を簡単に用意することで、
yum によるパッケージダウンロード、依存関係の確認、インストールの検証が簡単にできる。
docker image のダウンロードと、コンテナの起動
- ここでは oracle linux のイメージを利用
7-slim
は最低限yum が使えるだけのパッケージが入った、ほぼ minimal install されたイメージ- docker を起動する環境の CPU アーキテクチャ は、パッケージ持ち込み先の環境に合わせる
$ docker pull oraclelinux:7-slim $ docker run -it --rm -v "$PWD:/mnt" oraclelinux:7-slim
Docker Hub
Differences between oraclelinux:7 and oraclelinux:7-slim For images that want an Oracle Linux 7 user space, Oracle recommends using oraclelinux:7-slim as the base layer as it contains just enough packages for yum to be able to install more packages. The oraclelinux:7 images is based on the package set of what would be installed on a bare-metal server when performing a minimal install of Oracle Linux.
- OSバージョンの確認
$ cat /etc/os-release
yum リポジトリの確認
# yum repoinfo Loaded plugins: ovl ol7_latest | 3.6 kB 00:00:00 (1/3): ol7_latest/aarch64/group_gz | 133 kB 00:00:00 (2/3): ol7_latest/aarch64/updateinfo | 2.2 MB 00:00:00 (3/3): ol7_latest/aarch64/primary_db | 93 MB 00:00:08 Repo-id : ol7_latest/aarch64 Repo-name : Oracle Linux 7Server Latest (aarch64) Repo-revision: 1657639913 Repo-updated : Tue Jul 12 15:31:59 2022 Repo-pkgs : 17228 Repo-size : 38 G Repo-baseurl : https://yum.oracle.com/repo/OracleLinux/OL7/latest/aarch64/ Repo-expire : 21600 second(s) (last: Wed Jul 13 14:36:20 2022) Filter : read-only:present Repo-excluded: 5290 Repo-filename: /etc/yum.repos.d/oracle-linux-ol7.repo repolist: 17228
現在のrpm リストを取得
- ファイルを取得できる様、ホストのディレクトリをマウントした
/mnt
へcd
しておく
# cd /mnt # rpm -qa | sort > rpm_list_full_before.txt # rpm -qa --queryformat "%{name}.%{arch}¥n" | sort > rpm_list_name-arch_before.txt
yum パッケージをダウンロード
- ここでは java-1.8.0-openjdk と 必要な依存パッケージをダウンロード
# yum install --downloadonly --downloaddir=./ java-1.8.0-openjdk # ls acl-2.2.51-15.el7.aarch64.rpm libXext-1.3.3-3.el7.aarch64.rpm alsa-lib-1.1.8-1.el7.aarch64.rpm libXfixes-5.0.3-1.el7.aarch64.rpm ....
依存関係のチェック・インストール
# rpm --test -ivh *.rpm Preparing... ################################# [100%] # rpm -ivh *.rpm Preparing... ################################# [100%] Updating / installing... 1:libjpeg-turbo-1.2.90-8.el7 ################################# [ 1%] 2:libpng-2:1.5.13-8.el7 ################################# [ 2%] 3:freetype-2.8-14.el7_9.1 ################################# [ 3%] .... 99:java-1.8.0-openjdk-headless-1:1.8################################# [ 99%] 100:java-1.8.0-openjdk-1:1.8.0.332.b0################################# [100%]
rpm リストを再度取得
# rpm -qa | sort > rpm_list_full_after.txt # rpm -qa --queryformat "%{name}.%{arch}¥n" | sort > rpm_list_name-arch_after.txt
- 追加されたパッケージリストを確認
# grep -x -v -f rpm_list_full_before.txt rpm_list_full_after.txt > rpm_list_add.txt
この後の作業
- この後は、ダウンロードした rpm 、rpm リストファイルを目的の環境に持ち込み
- 持ち込み先の環境で取得した、rpmリストファイルと、持ち込んだリストファイルを比較
- 必要な rpm ファイルのみをインストール
参考
yum を使用して、パッケージをインストールせずにダウンロードだけ行う - Red Hat Customer Portal
以上
OCI - Compute Instance 起動・停止スクリプトのサンプル
sample
o=${1^^} ocid="ocid1.instance.oc1.ap-tokyo-1.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" function get_status(){ s=`oci compute instance get --instance-id ${ocid}| jq -r '.data."lifecycle-state" '` echo $s } function start_instance(){ oci compute instance action --action start --instance-id ${ocid} } function stop_instance(){ oci compute instance action --action stop --instance-id ${ocid} } if [ ${o} == "STATUS" ]; then get_status elif [ ${o} == "START" ]; then start_instance elif [ ${o} == "STOP" ]; then stop_instance else echo "Usage: $0 [STATUS|START|STOP]" fi