Ubuntuの使い方
【概要】本ページでは、Ubuntuの基本的な使い方について解説する。インストールと初期設定、シェル操作、環境変数の設定、データファイルの扱い、基本的なLinuxコマンド、リモート接続、Python開発環境、プログラミングツール、Java環境、システムの運用保守まで、Ubuntu上での作業に必要な基礎知識を体系的に提供する。
【目次】
- Ubuntuのインストールとセットアップ
- シェルの利用、管理者権限、基本機能
- 環境変数、パスを通す
- データファイル (CSV)
- 基本的なLinuxコマンドとリファレンス
- リモート接続とプロセス継続
- プログラミング言語Pythonとツール
- プログラミング用ツール類 (Git、CMake、GDB)
- プログラミング言語Java
- オペレーティングシステムの運用保守 (更新、パッケージ管理)
【関連する外部ページ】
Ubuntuの各種情報について
- Ubuntuの公式ページ(日本語版): https://jp.ubuntu.com/
- fosswire.comのUnix/Linuxコマンドリファレンス: https://files.fosswire.com/2007/08/fwunixref.pdf
- DistroWatchのUbuntuのページ: https://distrowatch.com/table.php?distribution=ubuntu
【サイト内の関連ページ】
- 種々のまとめページ: [人工知能、データサイエンス、データベース、3次元]、 [Windows]、 [Ubuntu]、 [Python(Google Colaboratoryを含む)]、 [C/C++言語プログラミング用語説明]、 [Rシステムの機能]、 [Octave]
Ubuntu関連
- Ubuntu 24.04 LTSのインストール: 別ページ »で説明している
- Ubuntu 24.04 LTSのインストール直後の設定: 別ページ »で説明している
- Ubuntu 24.04 開発・研究環境構築ガイド: 別ページ »で説明している
- Ubuntu、WSL2について: 別ページ »にまとめている
- WSL2のインストール、WSL2上のUbuntuのインストール: 別ページ »で説明している
- Ubuntuサーバー、リモート接続: 別ページ »にまとめている
WSL2関連
1. Ubuntuのインストールとセットアップ
Ubuntuのインストール
Ubuntuの最新LTS(長期サポート)リリースは、2024年4月にリリースされた24.04 (Noble Numbat)である。22.04 LTSも引き続きサポートされている。Ubuntu公式サイトや日本語RemixのページからISOイメージを入手し、インストーラを起動する。指示に従い、言語、キーボードレイアウト、インストールの種類(ディスク全体を使用するか、手動パーティション設定など)を選択し、タイムゾーン、ユーザー情報を設定してインストールを進める。
注意: 「ディスクを削除してUbuntuをインストール」を選択すると、ディスクの内容はすべて消去される。Windowsとのデュアルブートなど、既存のOSを残したい場合は、手動でのパーティション設定など、別の手順が必要である。
【サイト内の関連ページ】
- Ubuntu 24.04 LTSのインストール詳細: 別ページ »で説明している
【関連する外部ページ】
- Ubuntuのダウンロード公式ページ(日本版): https://jp.ubuntu.com/download
- Ubuntu Desktop日本語Remixのダウンロードページ: https://www.ubuntulinux.jp/download/ja-remix
Ubuntuのインストール直後の設定
Ubuntuインストール直後に行うことが推奨される主な設定項目を以下に示す。詳細は別ページで説明している。
- パッケージのダウンロード元(ミラーサーバー)の変更(日本のサーバーへ)
- システムの更新(最新の状態にする)(セクション10参照)
- タイムゾーンとNTP(Network Time Protocol)による時刻同期の確認
- 必要に応じてOpenSSHサーバーのインストール(リモート接続用)
- 日本語環境(入力メソッドMozcなど)の設定
- 任意で、運用保守ツール(htop等)のインストールや不要なソフトウェアの削除
【サイト内の関連ページ】
- Ubuntu初期設定ガイド: 別ページ »で説明している
Ubuntuのシステム更新について
ソフトウェアの脆弱性修正や機能改善のため、システムの更新は定期的に行うことが重要である。更新手順の詳細はセクション10を参照されたい。
Ubuntuセットアップ全般
- Ubuntu 24.04 開発・研究環境構築ガイド: 別ページ »で説明している
2. シェルの利用、管理者権限、基本機能
端末
端末(ターミナル)は、コマンドを入力してコンピューターを操作するための基本的なインターフェースである。Ubuntu Desktopでは標準で「GNOME Terminal」が利用できる。端末を開くと、シェル(通常はbash)が起動し、コマンド入力待ちの状態(プロンプト)が表示される。
bashシェル
bash (Bourne Again SHell)は、Linuxで標準的に使われているシェルである。コマンド履歴の呼び出し、Tabキーによる入力補完、リダイレクトやパイプによる入出力制御、シェルスクリプトによる定型作業の自動化など、多くの機能を提供する。
管理者権限での実行 (su、sudo)
システムの安全性を保つため、日常的な作業は一般ユーザー権限で行うことが推奨される。システム設定の変更やソフトウェアのインストールなど、管理者(root)権限が必要な操作を行うには、sudoコマンドを使用する。
-
sudoコマンド:
一般ユーザーが一時的に管理者権限でコマンドを実行するためのコマンドである。実行時にはユーザー自身のパスワードが要求される。sudoを利用すると、どのユーザーがいつ、どのコマンドを管理者権限で実行したかのログが記録されるため、セキュリティ上、この方法が推奨される。
sudo apt update sudo vi /etc/fstab sudo -i -
suコマンド:
他のユーザー(デフォルトではroot)に切り替わるためのコマンドである。切り替え先のユーザー(通常はroot)のパスワードが必要である。
su -のようにハイフンを付けて実行すると、切り替え先ユーザーの環境設定(環境変数など)を読み込んでログインシェルを起動する。su - exit su otheruser -
rootアカウントでの直接ログインについて:
システムに対する全ての権限を持つrootアカウントで直接ログインすることは、操作ミスがシステム全体に致命的な影響を与えるリスクが高いため、通常は避けるべきである。特にサーバー環境では、セキュリティ上の理由からrootによる直接ログインを無効にし、一般ユーザーでログインしてから必要に応じてsudoを使用するのが標準的な運用方法である。
管理者権限が必要な場合は、可能な限りsudoコマンドを利用することを推奨する。
シェルの基本機能 (リダイレクト、パイプ)
シェルには、コマンドの標準入力、標準出力、標準エラー出力を柔軟に制御する機能がある。
- リダイレクト: コマンドの標準出力(
>、>>)や標準入力(<)、標準エラー出力(2>)をファイルに切り替えたり、ファイルから読み込んだりする。例えば、標準出力と標準エラー出力の両方を同じファイルに保存するにはcommand > file 2>&1のように記述する。 - パイプ (
|): あるコマンドの標準出力を、次のコマンドの標準入力に直接接続する。これにより、複数のコマンドを連携させて複雑な処理を実現できる。
ls -l /usr/bin > bin_list.txt
date >> system_log.txt
sort < names.txt
grep 'ERROR' system.log | wc -l
これらの機能の詳細は、「Linux基本コマンドとその活用法 - シェルの強力な機能」セクションを参照されたい。
rootユーザー(スーパーユーザー)のパスワード設定について
Ubuntuでは、セキュリティ上の理由からデフォルトではrootアカウントは無効化されており、パスワードも設定されていない。管理者権限が必要な操作はsudoコマンドを使用することが推奨される。通常、rootアカウントのパスワードを設定する必要はない。
もし特別な理由でrootアカウントを有効化しパスワードを設定する必要が生じた場合は、sudo passwd rootコマンドを使用するが、その必要性とリスクを十分に理解した上で慎重に行う必要がある。日常的な管理作業のほとんどはsudoコマンドで実行可能であり、rootアカウントを直接利用する場面は限定的である。
ヒアドキュメント(here document)
シェルスクリプト内で、複数行にわたる文字列をコマンドの標準入力として直接埋め込むための機能である(<< 区切り文字)。設定ファイルの動的な生成や、複数行のメッセージを表示する際などに便利である。
#!/bin/bash
cat > /tmp/message.txt << END_OF_MESSAGE
これは1行目である。
これは2行目である。
特殊文字$や`もそのまま扱われる(区切り文字をクォートしない場合)。
END_OF_MESSAGE
Linuxのシェルでのリソース制限 (ulimit)
ulimitコマンドは、現在のシェルおよびそこから起動されるプロセスが使用できるシステムリソース(開けるファイル数、プロセス数、使用メモリサイズなど)の上限を確認・設定するために使用する。
ulimit -a
3. 環境変数とパスを通す
環境変数
環境変数は、OSやシェルが動作中のプロセスに提供する、設定情報や動作環境を定義する名前付きの変数である(例: HOMEはユーザーのホームディレクトリ、LANGは言語設定、PATHはコマンド検索パス)。export 変数名=値という形式で設定すると、そのシェルから起動される子プロセスにもその変数が引き継がれる。printenvコマンドで全ての環境変数を、echo $変数名で特定の環境変数の値を表示できる。
echo $HOME
export MY_SETTING="my_value"
printenv | grep MY
パスを通す
PATH環境変数は、ユーザーがコマンド名のみを入力した際に、シェルがその実行ファイルを探しに行くディレクトリのリストをコロン(:)区切りで指定する。自分でインストールしたプログラムやスクリプトを、どのディレクトリからでもコマンド名だけで実行できるようにしたい場合、そのプログラムが置かれているディレクトリをPATH環境変数に追加する。これを一般的に「パスを通す」と言う。通常、この設定はシェルの設定ファイル(bashの場合は~/.bashrcや~/.profileなど)に以下のように追記して行う。
export PATH="$HOME/myapps/bin:$PATH"
設定ファイルを変更した後は、source ~/.bashrcコマンドを実行して変更を現在のシェルに反映させるか、新しい端末を開くと設定が有効になる。
4. データファイル (CSV)
CSV (Comma Separated Values)
CSVは、データをカンマ(,)で区切って列を表し、改行で区切って行を表すテキストファイル形式である。表形式のデータを保存したり、異なるアプリケーション間でデータを交換したりする際に広く利用される。フィールド(データ項目)内にカンマ(,)や改行、ダブルクオート(")が含まれる場合は、そのフィールド全体をダブルクオート(")で囲むのが一般的である。ダブルクオート文字自体をフィールド内で表現したい場合は、ダブルクオート二つ("")に置き換える。
例:
ID,Name,"Address",PhoneNumber
1,"Yamada, Taro","Tokyo, Japan",090-1234-5678
2,"Sato, Hanako","Osaka ""Big"" City",
5. 基本的なLinuxコマンドとリファレンス
Ubuntu (Linux)の操作で日常的によく使われる基本的なコマンドを紹介する。各コマンドには多くのオプションがあり、これらを組み合わせることで様々な操作が可能である。
- ファイル・ディレクトリ操作:
ls、cd、pwd、cp、mv、rm、mkdir、rmdir、touch
- ファイル内容表示:
cat、less、head、tail
- 検索:
find、grep、which
- プロセス管理:
ps、top、htop、kill、pkill、jobs、fg、bg
- システム情報・管理:
df、du、free、uname、lsb_release、uptime、sudo、passwd、shutdown、reboot
- パッケージ管理 (apt):
apt update、apt upgrade、apt full-upgrade、apt install、apt remove、apt purge、apt search、apt show、apt autoremove、apt clean、apt autoclean
apt update: 利用可能なパッケージのリストを最新の情報に更新するapt upgrade: インストール済みのパッケージを新しいバージョンに更新する(依存関係の変更を伴うパッケージの新規インストールや削除は行わない)apt full-upgrade: インストール済みのパッケージを更新し、依存関係の解決に必要なパッケージの新規インストールや削除も行う。システム全体を最新の状態に保つために推奨されるapt install <パッケージ名>: 指定したパッケージをインストールするapt remove <パッケージ名>: 指定したパッケージを削除する(設定ファイルは残ることがある)apt purge <パッケージ名>: 指定したパッケージと、それに関連する設定ファイルも完全に削除するapt autoremove: 他のパッケージの依存関係として自動的にインストールされたものの、現在は不要になったパッケージを削除するapt search <キーワード>: パッケージ名や説明文にキーワードを含むパッケージを検索するapt show <パッケージ名>: 指定したパッケージの詳細情報(バージョン、依存関係など)を表示するapt clean: ダウンロードされたパッケージファイルのキャッシュを全て削除するapt autoclean: ダウンロードされたパッケージファイルのキャッシュのうち、古くてリポジトリに存在しないバージョンのものだけを削除する
- ネットワーク:
ip addr、ip link、ip route、ss、ping、host、dig、curl、wget、ssh、sftp、scp
- アーカイブ・圧縮:
tar、gzip、gunzip、zip、unzip
これらのコマンドの詳細な使い方やオプションについては、コマンド名の後に--helpを付けて実行するか、man <コマンド名>コマンドでマニュアル(manページ)を参照されたい。
また、より包括的なLinuxコマンドのリファレンスや活用法については、以下のページも参照されたい。
6. リモート接続とプロセス継続
SSH (Secure Shell)
SSHは、ネットワーク越しに他のコンピューターに安全にログインしたり、コマンドを実行したり、ファイルを転送したりするための暗号化された通信プロトコルである。Linux環境でのリモート操作における標準的な手段となっている。
ssh username@hostname_or_ip
ssh -i ~/.ssh/id_rsa user@host
ssh user@host 'uptime'
SSHの公開鍵認証
パスワード認証の代わりに、事前に生成・登録しておいた一対の鍵(秘密鍵と公開鍵)を用いてSSH認証を行う方法である。パスワード入力が不要になるため、スクリプトによる自動化にも適している。
- 接続元(クライアント)のマシンでssh-keygenコマンドを実行し、鍵ペア(秘密鍵
~/.ssh/id_rsaと公開鍵~/.ssh/id_rsa.pubなど)を作成する - 作成した公開鍵(
~/.ssh/id_rsa.pubファイルの中身)を、接続先(サーバー)のマシンの~/.ssh/authorized_keysファイルに追記する。この作業はssh-copy-id user@hostコマンドを使うと簡単に行える - 接続元から秘密鍵を使って接続する(
ssh user@hostやssh -i ~/.ssh/id_rsa user@hostなど)
重要: 秘密鍵ファイル(~/.ssh/id_rsaなど)は、所有者以外には読み書きできないように、パーミッションを厳格に設定する必要がある(chmod 600 ~/.ssh/id_rsa)。秘密鍵が漏洩すると、不正アクセスの原因となる。
Ubuntuでの具体的な設定手順は、別ページ »で説明している。
SFTP / SCP
SSHプロトコルを利用して、安全にファイルを転送するためのコマンドである。
- sftp: SSH接続上で動作する、対話的なファイル転送クライアントである。接続後にput(アップロード)、get(ダウンロード)、ls(リモート一覧)、cd(リモートディレクトリ移動)などのコマンドを使ってファイルを操作する
- scp: SSH接続上で動作する、非対話的なファイルコピーコマンドである。ローカルのcpコマンドと似た書式で、ローカルとリモート間、またはリモートホスト間でファイルをコピーできる
sftp user@host
scp myfile.txt user@host:/home/user/documents/
scp user@host:/var/log/syslog .
これらのコマンドの詳細は、「Linux基本コマンドとその活用法 - ネットワーク操作」セクションも参照されたい。
リモート接続が切れてもプロセスを実行し続ける (nohup、disown)
SSHでリモートサーバーに接続し、時間のかかる処理(バッチ処理や計算など)を開始した後、SSH接続を切断してもその処理を継続させたい場合がある。そのような場合に以下の方法が利用できる。
- nohup コマンド &: コマンドをバックグラウンドで実行(
&)し、さらにnohupコマンドでラップすることで、SSHセッションが切断されたときに送られるSIGHUP(ハングアップ)シグナルを無視させる。標準出力と標準エラー出力は、デフォルトではカレントディレクトリのnohup.outというファイルにリダイレクトされる - Ctrl+Z → bg → disown: 実行中のプロセスをCtrl+Zで一時停止させ、jobsコマンドでジョブ番号を確認し、
bg %ジョブ番号でバックグラウンド実行を再開させ、disown %ジョブ番号で、そのジョブをシェルの管理下から切り離す。これにより、シェルを終了してもプロセスは実行され続ける
nohup ./my_heavy_process.sh input.data > process.log 2>&1 &
指定時刻にコマンドを実行 (atコマンド)
atコマンドを使用すると、指定した時刻に一度だけコマンドやスクリプトを実行するように予約できる。使用するにはatパッケージのインストールと、atdサービスの起動が必要である。
sudo apt update && sudo apt install at
sudo systemctl enable --now atd
at now + 5 minutes
atq
atrm 3
7. プログラミング言語Pythonとツール
UbuntuはPythonを用いた開発に適した環境を提供している。
Pythonの機能や各種ライブラリに関するより詳細な情報は、別ページにまとめている。
UbuntuのシステムPython
Ubuntuには、OS自身の機能やシステムツールが利用するためにプリインストールされているPythonがある(例: Ubuntu 24.04 LTSではPython 3.12)。この「システムPython」の環境にユーザーが直接パッケージを追加したり変更したりすると、システムの動作に予期せぬ悪影響を与える可能性がある。そのため、アプリケーション開発やデータ分析などの目的でPythonを使用する場合は、仮想環境(venv)を作成し、その中で作業することを推奨する。
システムPythonの詳細は別ページ »で説明している。
Python、pip、開発環境
UbuntuでPython開発を始めるための基本的なツールである。
- Pythonインタプリタ: python3コマンドで対話的に実行したり、Pythonスクリプトファイルを実行したりする
- pip: Pythonのパッケージインストーラーである。通常、python3-pipパッケージを
sudo apt install python3-pipでインストールしてから利用する。ただし、システムPythonに対して直接pip installすることは避け、仮想環境内でpython3 -m pip install <package>のように使用するのが基本である - 基本的な開発環境: Pythonインタプリタとpipがあれば最低限の開発は可能であるが、効率的な開発のためには、仮想環境管理(venv)、バージョン管理システム(Git)、高機能なエディタやIDEを導入することが一般的である
詳細は別ページ »で説明している。
複数のPythonバージョンの管理 (pyenv)
プロジェクトによっては、システムにインストールされているPythonとは異なるバージョンを使用したい場合がある。pyenvというツールを使うと、複数のPythonバージョンを簡単にインストールし、プロジェクトごとやユーザーごとに使用するPythonバージョンを切り替えることができる。pyenvはシステムPythonには影響を与えずに独立してバージョンを管理する。
Ubuntuでpyenvを使ってPythonをインストール・管理する方法については、別ページで説明している。
venv (Python仮想環境)
venvは、Python 3.3以降に標準で組み込まれている、プロジェクトごとに独立したPython実行環境(仮想環境)を作成・管理するためのモジュールである。仮想環境を利用することで、プロジェクトごとに必要なライブラリとそのバージョンを、システムのPython環境や他のプロジェクトから完全に隔離して管理できる。これにより、ライブラリの依存関係の衝突を防ぎ、環境の再現性を高めることができる。
基本的な使い方は以下の通りである。
python3 -m venv myenv
source myenv/bin/activate
pip install requests numpy pandas
python my_script.py
deactivate
venvの詳細な使い方については、別ページ »で説明している。
pip (Pythonパッケージインストーラ)
PyPI (Python Package Index)という公的なリポジトリから、サードパーティ製のPythonライブラリやツールをインストールするための標準的なコマンドラインツールである。通常は、アクティベートされた仮想環境内で使用する。使い方については別ページ »で説明している。
pip install <package_name>
pip install -r requirements.txt
pip list
pip freeze > requirements.txt
Jupyter Notebook / JupyterLab
Webブラウザ上で、コードの記述・実行、テキストによる説明、数式、グラフや画像の表示などを組み合わせて「ノートブック」と呼ばれるドキュメントを作成・共有できる、インタラクティブな開発・分析環境である。データ分析、機械学習、教育、プロトタイピングなど、幅広い分野で利用されている。JupyterLabはJupyter Notebookの次世代インターフェースで、より多機能で柔軟なレイアウトを提供する。
pip install notebook
pip install jupyterlab
jupyter notebook
jupyter lab
詳細はJupyter Notebook / JupyterLabのページで説明している。
Python IDE (統合開発環境)
Pythonプログラミングを効率的に行うために、コードエディタ、実行・デバッグ機能、プロジェクト管理、バージョン管理システム連携など、多くの機能を統合したソフトウェアである。
- Spyder: 主に科学技術計算やデータ分析向けに設計されたIDEである。変数エクスプローラーやIPythonコンソールなどが統合されている。詳細は別ページ »
- PyCharm: JetBrains社が開発する高機能なPython IDEである。コード補完、デバッグ、テスト、リファクタリングなどの機能が強力である。詳細は別ページ
- Visual Studio Code (VS Code): Microsoftが開発する軽量ながら高機能なコードエディタである。豊富な拡張機能をインストールすることで、強力なPython開発環境を構築できる。詳細は別ページ
Anaconda Distribution
Python本体に加え、データサイエンスや機械学習でよく使われる多数のパッケージ(NumPy、Pandas、Matplotlib、Scikit-learnなど)や、独自の環境管理・パッケージ管理ツールcondaを含んだディストリビューションである。環境構築の手間を省けるメリットがあるが、システム標準のpipやvenvとは異なるcondaという仕組みでパッケージや環境を管理するため、使い方を理解し、必要に応じて使い分ける必要がある。詳細は別ページで説明している。
Google Colaboratory (Colab)
Googleが提供する、Webブラウザ上で利用できる無料のクラウドベースPython実行環境である。Jupyter Notebookと同様のインターフェースを持ち、Google Driveと連携してノートブックを保存・共有できる。GPUやTPUといったハードウェアアクセラレータも無料枠で利用できるため、特に機械学習の学習や実験に便利である。基盤OSはUbuntuであるが、提供される環境は一時的なものであり、セッションが終了するとインストールしたライブラリや作成したファイルは基本的に消去される(Google Driveに保存したものを除く)。詳細は別ページ及び「Linux基本コマンドとその活用法 - Google ColaboratoryでのLinux活用」を参照されたい。
8. プログラミング用ツール類 (Git、CMake、GDB)
バージョン管理システムGit
Gitは、ソースコードやドキュメントなどの変更履歴を記録・管理するための分散型バージョン管理システムである。ファイルの変更内容、変更日時、変更者を記録し、過去の状態に戻したり、変更点を比較したりすることが容易になる。特に複数人での共同開発においては、コードの統合や競合の解決を効率的に行うために不可欠なツールとなっている。
UbuntuでのGitのインストール
sudo apt update
sudo apt install git
基本的な使い方
既存のリポジトリ(プロジェクト)をローカルにコピー(クローン)することから始めることが多い。
git clone https://github.com/username/repository.git
cd repository
Gitの基本的なワークフローや主要なコマンドの詳細については、「Linux基本コマンドとその活用法 - バージョン管理システムGit」セクションを参照されたい。
【サイト内の関連ページ】WindowsでのGitのインストール: 別ページ »
【関連する外部ページ】Gitの公式ページ: https://git-scm.com/
ビルドツールCMake
CMakeは、C言語やC++などのコンパイルが必要なソフトウェアプロジェクトにおいて、ビルドプロセス(ソースコードから実行可能ファイルやライブラリを生成する手順)を管理・自動化するためのクロスプラットフォーム対応ツールである。CMakeLists.txtという設定ファイルに、プロジェクトの構成、依存ライブラリ、コンパイルオプションなどを記述すると、CMakeがそれを解釈し、使用している環境(Linux、Windows、macOSなど)やビルドシステム(Make、Ninja、Visual Studioなど)に応じたビルドファイルを自動生成する。
UbuntuでのCMakeのインストール
sudo apt update
sudo apt install cmake cmake-curses-gui cmake-gui
基本的な使い方
ソースコードが置かれているディレクトリとは別に、ビルド専用のディレクトリを作成して作業するのが一般的である(アウトオブソースビルド)。
cd my_project_source
mkdir build && cd build
cmake ..
make
Ninjaビルドシステム
Ninjaは、特に大規模なプロジェクトにおいて、ビルド速度を高速化することを目指して設計されたビルドシステムである。Makeよりも依存関係のチェックなどが高速であるとされている。CMakeなどのビルドジェネレータと組み合わせて使用されることが多く、CMakeで-G Ninjaオプションを指定することでNinja用のビルドファイルが生成される。
sudo apt update
sudo apt install ninja-build
デバッガgdb (GNU Debugger)
GDBは、C言語、C++、Ada、Go、Fortranなどのプログラムの実行を制御し、バグ(不具合)の原因を発見・修正する(デバッグ)ための強力なコマンドラインツールである。プログラムの特定の箇所(ブレークポイント)で実行を一時停止させたり、一行ずつ実行(ステップ実行)したり、変数の現在の値を確認したり、メモリの内容を調べたりすることができる。
gcc -g my_program.c -o my_program
gdb ./my_program
デバッグの基本操作
デバッガを用いたデバッグの基本的な流れは、まず問題が発生しそうな箇所や確認したい処理の開始点にブレークポイントを設定する。次にプログラムを実行し、ブレークポイントで停止したら、ステップ実行(nextやstep)でコードの動きを一行ずつ追いながら、printコマンドなどで変数の値が期待通りに変化しているかを確認する。これを繰り返すことで、プログラムのどこで意図しない動作が発生しているのか(バグの原因)を特定していく。
9. プログラミング言語Java
OpenJDK (Java Development Kit)のインストールとJavaプログラムの実行
Javaプログラムを開発(コンパイル)および実行するためには、JDK (Java Development Kit)が必要である。OpenJDKは、Java SE (Standard Edition)プラットフォームのオープンソース実装であり、Ubuntuではaptコマンドを使って簡単にインストールできる。
sudo apt update
sudo apt install openjdk-17-jdk
java -version
javac -version
Ubuntu 24.04 LTSでは、より新しいLTSバージョンであるOpenJDK 21(openjdk-21-jdk)も利用可能である。必要に応じてバージョンを選択されたい。
【Javaプログラムのコンパイルと実行】
例として、HelloWorld.javaという名前で以下の内容のファイルを作成したとする。
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, Ubuntu!");
}
}
このJavaプログラムをコンパイルし、実行するには、端末で以下のコマンドを入力する。
javac HelloWorld.java
java HelloWorld
OpenJDKのインストールに関する詳細は別のページ »で説明している。
10. オペレーティングシステムの運用保守 (更新、パッケージ管理)
Ubuntuのリリースバージョンとコードネームの確認
現在使用しているUbuntuのバージョン情報を確認するには、以下のコマンドを使用する。バージョン番号(例: 24.04、22.04)やコードネーム(例: noble、jammy、focal)は、ソフトウェアの互換性を確認したり、リポジトリ設定を行ったりする際に参照することがある。
lsb_release -a
lsb_release -sc
Ubuntuのシステム更新
セキュリティの脆弱性修正やソフトウェアのバグ修正、機能改善のため、インストールされているパッケージを定期的に最新の状態に保つことは重要である。システム更新は以下の手順で行うのが一般的である。
sudo apt update
sudo apt full-upgrade
sudo apt autoremove
sudo apt autoclean
sudo reboot
通常は、定期的にsudo apt updateとsudo apt full-upgradeを実行し、時々sudo apt autoremoveやsudo apt autocleanを実行してシステムをクリーンに保つのが良い。apt upgradeは既存パッケージの更新のみを行い、依存関係の変更が必要な更新(新しいパッケージのインストールや既存パッケージの削除)は保留する。一方、apt full-upgrade(またはapt dist-upgrade)は、システムの整合性を保つために必要であればパッケージのインストールや削除も伴う更新を行うため、システム全体を最新の状態に維持するにはfull-upgradeの使用が推奨される。
Ubuntuのパッケージ管理 (apt、dpkg)
Ubuntuでは、ソフトウェア(パッケージ)のインストール、更新、削除といった管理作業は、主にapt (Advanced Package Tool)というコマンドラインツールを使用して行う。dpkgは、個別の.debパッケージファイルを扱うための、より低水準なツールである。通常、ユーザーはaptコマンドを利用する。
主なaptコマンド:
sudo apt update: リポジトリから利用可能なパッケージのリストを最新の情報に更新するsudo apt upgrade: インストール済みのパッケージを新しいバージョンに更新する(依存関係の変更を伴うパッケージの新規インストールや削除は行わない)sudo apt full-upgrade: インストール済みのパッケージを更新し、依存関係の解決に必要なパッケージの新規インストールや削除も行う(推奨)sudo apt install <パッケージ名>: 指定したパッケージ(およびその依存パッケージ)をインストールするsudo apt remove <パッケージ名>: 指定したパッケージを削除する(設定ファイルは残ることがある)sudo apt purge <パッケージ名>: 指定したパッケージと、それに関連するシステム全体の設定ファイルも含めて完全に削除するsudo apt autoremove: 他のパッケージをインストールした際に依存関係で自動的にインストールされたものの、現在はどのパッケージからも必要とされなくなったパッケージを自動的に削除するapt search <キーワード>: パッケージ名や説明文に指定したキーワードを含むパッケージを検索するapt show <パッケージ名>: 指定したパッケージのバージョン、依存関係、説明などの詳細情報を表示するapt list --installed: 現在システムにインストールされている全てのパッケージの一覧を表示するsudo apt clean: パッケージのダウンロードキャッシュ(/var/cache/apt/archives/内の.debファイル)を全て削除するsudo apt autoclean: パッケージのダウンロードキャッシュのうち、古くてリポジトリから削除されたバージョンなど、不要になったものだけを削除する
パッケージ管理の詳細については、「Linux基本コマンドとその活用法 - パッケージ管理」セクションも参照されたい。
UbuntuでのNVIDIAドライバのインストール
NVIDIA製のグラフィックカード(GPU)を使用している場合、オープンソースのドライバ(Nouveau)の代わりに、NVIDIAが提供するプロプライエタリなドライバをインストールすることで、グラフィック性能が向上したり、CUDAなどのGPUコンピューティング機能が利用可能になったりすることがある。Ubuntuでは、システムが検出したハードウェアに適した推奨ドライバを簡単にインストールするためのコマンドが用意されている。
sudo ubuntu-drivers autoinstall
sudo reboot
nvidia-smi
この方法で問題が発生する場合や、特定のバージョンのドライバを手動でインストールしたい場合は、別途手順が必要になる。