🔖

Ubuntuってなに?

2024/11/24に公開

なぜこの記事を書いたのか

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バージョンについては以下に記載がある(?)
https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Readme.md

javaとの関係

ローカル環境

macでjavaを動かす分にはUbuntuは関係していない。※コンテナ化する場合を除く
(javaはクロスプラットフォームで開発できるように設計されているが、それを実現しているのがJVMである。JVMがあれば、OSがMacでも、Linuxでも動かすことができる。)

本番環境

AWSのEC2インスタンスの設定でUbuntuを選択して、javaアプリケーションをデプロイして動作させることができる。

参考

https://www.youtube.com/watch?v=YGfQ-4J-Khk
https://docs.github.com/ja/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners

Discussion