Ubuntuってなに?
なぜこの記事を書いたのか
github workflowの編集をしていて、ファイルに ubuntu-latest
という記述があった。
Ubuntuのワードは知っているが内容について何も知らなかったので、調べた内容をまとめる
誤った内容を含む可能性があるので、お気づきの方はコメントをいただけると幸いです。
結論
Ubuntuは「Linuxディストリビューション」の一つ。以下を含む(一部省略)
- Linuxカーネル
- GNU系のユーティリティやライブラリ
- パッケージ管理システム(apt)
つまり、UbuntuはLinuxカーネルを土台として、その上に様々なソフトウェアを組み合わせて作られた完全なオペレーティングシステム。
一緒に理解すべき概念
- Linuxカーネル
オペレーティングシステムの中核(コア)部分で、以下の基本的な機能を担っている。
- ハードウェアの制御
- システムコールの提供
Ubuntuは「Linuxディストリビューション」の一つ。
※ MacbookではLinuxカーネルは動いていない。Darwinカーネルを使用している。両者にはUNIXライクなシステムであるという共通点がある
- Shell
ターミナルの中で、実際にコマンドを解釈して動かしている部分。
ls、cdはShellが提供しているコマンド。
じゃあShellが提供していない、自分がかいたスクリプトを実行するにはどうする?
方法1 python sample.py
方法2 シバンを記載する。 ./sample.py
だけでOK
#!/usr/bin/env python3
print("test")
- Shebang
スクリプトファイルの先頭に記述する。インタープリタ(bash、zshなど)を指定して移植性を高める。
種類はこんな感じ
#!/bin/bash # bashスクリプトの場合
#!/usr/bin/env python3 # Python3スクリプトの場合
#!/usr/bin/env ruby # Rubyスクリプトの場合
#!/usr/bin/env node # Node.jsスクリプトの場合
- apt
パッケージ管理ソフト
Macで言うと?
Linux環境:
Linuxカーネル ⇔ Ubuntu ⇔ apt
(カーネル) (OS) (パッケージ管理システム)
macOS環境:
Darwinカーネル ⇔ macOS ⇔ Homebrew
(カーネル) (OS) (パッケージ管理システム)
macOSの非公式だが事実上の標準パッケージマネージャー
github ワークフローとの関係
ジョブを実行するランナーとして、Ubuntu Linuxを選択することができる。(ubuntu-latest、windows-latest、または macos-latestを選ぶのが一般的)
利用できるnodeやjavaバージョンについては以下に記載がある(?)
javaとの関係
ローカル環境
macでjavaを動かす分にはUbuntuは関係していない。※コンテナ化する場合を除く
(javaはクロスプラットフォームで開発できるように設計されているが、それを実現しているのがJVMである。JVMがあれば、OSがMacでも、Linuxでも動かすことができる。)
本番環境
AWSのEC2インスタンスの設定でUbuntuを選択して、javaアプリケーションをデプロイして動作させることができる。
参考
Discussion