【Linux】lnコマンド / update-alternativesコマンド

■ はじめに

lnコマンド / update-alternativesコマンドについてメモ。
ついでに、あいまいだった
Linux のハードリンク(hard link)と シンボリックリンク(Symbolic link)
について学んでおく。

目次

【1】lnコマンド
 1)ハードリンク (オプションなし)
 2)シンボリックリンク (-sオプション)
【2】update-alternativesコマンド
 1)オプション
 2)コマンド例
【3】unlinkコマンド
【4】Linux のリンク
 1)ハードリンク(hard link)
 2)シンボリックリンク(Symbolic link)
 補足:iノード(i Node)

【1】lnコマンド

* ファイルのリンクを作成するためのコマンド

1)ハードリンク (オプションなし)

* オプションなしで、ハードリンクを作成

構文

ln ファイル名 ハードリンク名

2)シンボリックリンク (-sオプション)

* -sオプションで、シンボリックリンクを作成

構文

ln -s ファイル名 シンボリックリンク名

コマンド例
https://dk521123.hatenablog.com/entry/2018/06/28/222959

sudo ln -s /usr/local/bin/git /usr/bin/git

補足:確認方法
https://dk521123.hatenablog.com/entry/2022/07/01/000000

$ ls -l
l rwx rwx rwx
- --- --- ---
1  2   3   4

#  1) ファイル種別(ファイル(-)/ディレクトリ(d)/シンボリックリンク(l))

【2】update-alternativesコマンド

* シンボリックリンクを管理してデフォルトのコマンドを決定する
 => 例えば、JavaやPythonのような複数バージョンを入れたい場合に使用

https://graziegrazie.hatenablog.com/entry/2015/11/14/101050

1)オプション

Options Explanations
--install シンボリックリンクの作成・登録
--config 使用するシンボリックリンクの設定(一覧から選択)
--display 現在選択されているシンボリックリンクの内容を表示

2)コマンド例

https://dk521123.hatenablog.com/entry/2024/01/13/002637

# sudo update-alternatives --install  <作成するシンボリックのパス> <グループ名> <実体へのパス> <優先度>
sudo update-alternatives --install /usr/bin/sbt sbt /usr/local/sbt/bin/sbt 100

update-alternatives --display sbt

https://dk521123.hatenablog.com/entry/2019/11/10/205535

# バージョンを切り替えるためにシンボリックリンクを設定
# sudo update-alternatives --install <作成するシンボリックのパス> <グループ名> <実体へのパス> <優先度>
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2

# sudo update-alternatives --config <グループ名>
sudo update-alternatives --config python3
2 << を選択 (python3.7)

# Pythonのバージョンを確認 (python3.7 になっているはず)
python -V

【3】unlinkコマンド

* ハードリンクを削除するコマンド

https://qiita.com/ko1nksm/items/dccd33cbdf52412568f1

【4】Linux のリンク

* 以下の2つ。
 1)ハードリンク(hard link)
 2)シンボリックリンク(Symbolic link)

イメージ

[ファイル] -> [ファイルのiノード] -> [ディスク上の実体]
 ↑      ↑
シンボリック ハードリンク
リンク
* ファイルの iノード(※)に関するリンク
 => ファイルを削除しても実体は残る
* ファイル自体のリンク
* Windows の ショートカットのようなもの
 => ファイルを削除すると実体も削除される

補足:iノード(i Node)

* ファイルの管理情報(※)が格納されている部分

* 所有者
* 更新日時
* アクセス権
など

関連記事

SBT ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2024/01/13/002637
Git ~ 初期設定 / Linux 編 ~
https://dk521123.hatenablog.com/entry/2018/06/28/222959
Linux ~ ユーザに関わるコマンド ~
https://dk521123.hatenablog.com/entry/2016/06/26/233349
Linux ~ 権限/所有 に関わるコマンド ~
https://dk521123.hatenablog.com/entry/2016/06/10/233349
Linuxパーミッション / アクセス権限 ~
https://dk521123.hatenablog.com/entry/2022/07/01/000000
Linux環境変数あれこれ ~
https://dk521123.hatenablog.com/entry/2015/07/16/103501
シェル ~ Shebang
https://dk521123.hatenablog.com/entry/2024/02/02/000000
シェル ~ あれこれ編 ~
https://dk521123.hatenablog.com/entry/2018/03/03/210642
Linuxログイン時に独自のメッセージ表示を表示するには
https://dk521123.hatenablog.com/entry/2017/06/22/214918

【AWS】CloudFormation ~ AWS CLI ~

■ はじめに

AWS CloudFormation について担当することになりそうで
後輩にGUIよりAWS CLIの方が作業しやすいですよって
教えてくれたので、メモ。感謝、、、

目次

【1】AWS CLI
 1)aws cloudformation create-stack
 2)aws cloudformation deploy
 3)aws cloudformation delete-stack
【2】サンプル
 例1:スタック作成
 例2:デプロイ
 例3:スタック削除

【1】AWS CLI

* 以下を参照

https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/index.html

補足:スタック (Stacks) とは?
https://dk521123.hatenablog.com/entry/2024/02/10/231900

より抜粋
~~~~~~~
テンプレートによって作成されたAWSリソース群の単位
~~~~~~~

1)aws cloudformation create-stack

* スタックの作成

https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/create-stack.html

コマンド例
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/using-cfn-cli-creating-stack.html

aws cloudformation create-stack \
  --stack-name myteststack \
  --template-body file:///home/testuser/mytemplate.json \
  --parameters ParameterKey=Parm1,ParameterValue=test1 ParameterKey=Parm2,ParameterValue=test2

2)aws cloudformation deploy

* CloudFormationによるデプロイ

https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/deploy/index.html

コマンド例
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/using-cfn-cli-deploy.html

aws cloudformation deploy \
  --template /path_to_template/my-template.json \
  --stack-name my-new-stack \
  --parameter-overrides Key1=Value1 Key2=Value2

2)aws cloudformation delete-stack

* スタック削除

https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/delete-stack.html

【2】サンプル

例1:スタック作成

aws cloudformation create-stack \
  --region us-west-2 \
  --stack-name demo-stack \
  --template-body file:///demo-template.yml \
  --parameters ParameterKey=Parm1,ParameterValue=test1 ParameterKey=Parm2,ParameterValue=test2

例2:デプロイ

#!/bin/bash -xe

cat <<EOF > deploy-params.txt
Env=dev
Version=1.0.0
EOF

aws cloudformation deploy \
  --region us-west-2 \
  --template demo-template.yml \
  --stack-name demo-stack \
  --parameter-overrides $(cat deploy-params.txt)

例3:スタック削除

aws cloudformation delete-stack \
  --region us-west-2 \
  --stack-name demo-stack

関連記事

CloudFormation ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2024/02/10/231900
CloudFormation ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2021/10/26/224812
CloudFormation ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2021/12/01/170326
CloudFormation ~ 開発環境 ~
https://dk521123.hatenablog.com/entry/2022/05/22/000000
CloudFormation ~ 組み込み関数 ~
https://dk521123.hatenablog.com/entry/2021/12/04/202519
CloudFormation ~ 条件分岐 ~
https://dk521123.hatenablog.com/entry/2022/07/02/214543
CloudFormation ~ 疑似パラメータ ~
https://dk521123.hatenablog.com/entry/2021/12/05/134313
CloudFormation ~ DeletionPolicy 属性 ~
https://dk521123.hatenablog.com/entry/2021/12/27/211328
CloudFormation ~ 認証情報の扱い ~
https://dk521123.hatenablog.com/entry/2021/12/28/224501
CloudFormation ~ S3 ~
https://dk521123.hatenablog.com/entry/2022/05/25/220037
CloudFormation ~ KMS ~
https://dk521123.hatenablog.com/entry/2022/05/26/112627
CloudFormation ~ IAM ~
https://dk521123.hatenablog.com/entry/2022/05/27/100820
CloudFormation ~ EC2 ~
https://dk521123.hatenablog.com/entry/2024/02/11/010935
CloudFormation で Github/CodePipeline/CodeBuild を構築する
https://dk521123.hatenablog.com/entry/2021/12/26/155956
CloudFormation でのトラブル
https://dk521123.hatenablog.com/entry/2022/05/30/191507
シェル ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2014/10/23/005406
シェル ~ Shebang
https://dk521123.hatenablog.com/entry/2024/02/02/000000

【Python】Python ~ python-dotenv ~

■ はじめに

業務で、「.env」を扱うのができてきた。
このファイルを、Pythonで扱うには、
python-dotenv ってライブラリを使うので、
.envファイル(dotenv)を含めて調べてみた

目次

【1】.envファイル(dotenv)
【2】python-dotenv の インストール
【3】サンプル
 例1:Hello World

【1】.envファイル(dotenv)

* 環境変数を保持するファイル
* ファイル名は、「.env」
* Pythonだけでなく、
 Bash(source) / PHP / Node.js などでも使われる
* Github Actions の Proxy 設定でも .env が使われる
 => 以下の関連記事を参照のこと

Github Actions ~ Self-hosted runners / あれこれ編 ~
https://dk521123.hatenablog.com/entry/2024/02/07/002736

【2】python-dotenv の インストール

pip install python-dotenv

【3】サンプル

.env

VALUE1=Hello
VALUE2=World

例1:Hello World

from dotenv import load_dotenv

load_dotenv()

val1 = os.environ.get("VALUE1")
val2 = os.getenv("VALUE2")

print(f"val1 = {val1}")
print(f"val2 = {val2}")

参考文献

https://note.com/yucco72/n/nb52bfb6d65bb

関連記事

Python ~ 基本編 / 文字列 ~
https://dk521123.hatenablog.com/entry/2019/10/12/075251
Github Actions ~ Self-hosted runners / あれこれ編 ~
https://dk521123.hatenablog.com/entry/2024/02/07/002736