メインコンテンツまでスキップ

「Linux」タグの記事が18件件あります

全てのタグを見る

Linux プロンプトを日本語化する方法

· 約1分

Linux のプロンプトを日本語化する方法を紹介します。

1. 日本語ロケールのインストール

次に、日本語のロケールが存在しない場合は、それをインストールします。以下のコマンドを実行します。

sudo apt update
sudo apt install language-pack-ja

2. ロケールの設定

日本語のロケールを設定します。以下のコマンドを実行します。

sudo update-locale LANG=ja_JP.UTF8

3. システムの再起動

最後に、システムを再起動します。これにより、新しいロケール設定が反映されます。

sudo reboot

以上で、Linux プロンプトが日本語化されます。

Ubuntu (WSL2 含む) に pyenv と Python をインストールする方法

· 約1分

依存パッケージのインストール

参考: Home · pyenv/pyenv Wiki

sudo apt update
sudo apt install build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

Pyenv のインストール

参考: pyenv/pyenv-installer: This tool is used to install pyenv and friends.

curl https://pyenv.run | bash

~/.bashrc に初期化スクリプトを書き込む

# ~/.bashrc を開く
code ~/.bashrc

以下を書き込みます。

export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

eval "$(pyenv virtualenv-init -)"

Python のインストール

インストール可能なバージョン一覧を表示

pyenv install -l

Python のインストール

Python 3.12.2 をインストールします。

pyenv install 3.12.2

Python のバージョンを指定

デフォルトのバージョンを Python 3.12.2 に設定します。

pyenv global 3.12.2

python -V # Python 3.12.2

Ubuntu (WSL2 含む) に dotnet をインストール方法

· 約1分

参考: パッケージ マネージャーを使用せずに Linux に .NET をインストールする - .NET | Microsoft Learn

インストールスクリプトのダウンロード

wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh

インストールスクリプトへ実行権限付与

chmod +x ./dotnet-install.sh

dotnet SDK をインストール

./dotnet-install.sh

最新版をインストールする場合は

./dotnet-install.sh --version latest

パスを通す

$HOME/.bashrc を開き、以下を追記

export DOTNET_ROOT=$HOME/.dotnet
export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools

rbenv (WSL2 / Ubuntu) へのインストール方法

· 約1分

依存パッケージのインストール

sudo apt update
sudo apt install autoconf patch build-essential rustc libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libgmp-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev libdb-dev uuid-dev -y

rbenv のインストール

# rbenv と ruby-build をインストール
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash

# 起動時に rbenv を読み込み
echo 'eval "$($HOME/.rbenv/bin/rbenv init - bash)"' | tee -a ~/.bashrc

参考

Ruby 3.3.0 のインストール

source ~/.bashrc # rbenv を初期化 (WSL 再ログインでも可)
rbenv install 3.3.0 # Ruby 3.3.0 のインストール
rbenv global 3.3.0 # Ruby 3.3.0 を規定に設定

参考

Ubuntu に Docker をインストールする

· 約12分

https://docs.docker.com/engine/install/ubuntu/#set-up-the-repository の日本語訳です。

:::important Docker Desktop for Linux Docker Desktop を使用すると、Linux と同様に、 Mac と Windows 上でコンテナを簡単に構築、共有、実行できます。 Docker Desktop for Linux が一般提供版となったことをお伝えできることを嬉しく思います。 詳細については、Docker Desktop for Linuxを参照してください。 :::

Ubuntu で Docker Engine を使い始めるには、 前提条件を満たしていることを確認してから、 Docker をインストールしてください。

前提条件

OS の要件

Docker Engine をインストールするには、 次のいずれかの Ubuntu バージョン (64 bit) が必要です。

  • Ubuntu Jammy 22.04 (LTS)
  • Ubuntu Impish 21.10
  • Ubuntu Focal 20.04 (LTS)
  • Ubuntu Bionic 18.04 (LTS)

Docker Engine は、x86_64 (または amd64)、armhfarm64 及び s390x アーキテクチャでサポートされています。

古いバージョンをアンインストールする

古いバージョンの Docker は docker、docker.io、docker-engine と呼ばれていました。 これらがインストールされている場合は、アンインストールします。

$ sudo apt-get remove docker docker-engine docker.io containerd runc

apt-get がこれらのパッケージのどれもインストールされていないと報告すれば問題ありません。

イメージ、コンテナ、ボリューム、ネットワークなどの /var/lib/docker/ のコンテンツは保存されます。 既存のデータを保存する必要がなく、クリーンインストールから開始したい場合は、このページの下にある(Docker Engine のアンインストール](#)セクションを参照してください。

インストール方法

Docker Engine は、必要に応じてさまざまな方法でインストールできます。

  • インストールとアップグレードタスクを容易にするために、ほとんどのユーザは Docker のリポジトリをセットアップし、そこからインストールします。これは推奨されます。
  • 一部のユーザは DEB パッケージをダウンロードして手動でインストールし、アップグレードを完全に手動で管理します。これは、インターネットにアクセスできないエアギャップのあるシステムに Docker をインストールする場合などに便利です。
  • テストや開発環境では、自動化された便利なスクリプトを使って Docker をインストールするユーザもいます。

リポジトリを使用してインストールする

Docker Engine を新しいホストマシンに初めてインストールする前に、Docker リポジトリをセットアップする必要があります。 その後、リポジトリから Docker をインストールして更新することができます。

リポジトリを設定する

  1. apt パッケージインデックスを更新してパッケージをインストールし、apt が HTTPS 経由でリポジトリを使用できるようにします。

    $ sudo apt-get update

    $ sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
  2. Docker の公式 GPG キーを追加します。

    $ sudo mkdir -p /etc/apt/keyrings
    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  3. リポジトリを設定するには、次のコマンドを使用します。

    $ echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Docker エンジンのインストール

  1. apt パッケージインデックスを更新し、最新バージョンの Docker Engine、containerd、Docker Compose をインストールするか、次のステップに進んで特定のバージョンをインストールします。

    $ sudo apt-get update
    $ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

    :::important apt-get update の実行時に GPG エラーが発生しますか? デフォルトの umask が正しく設定されていない可能性があります。 これにより、リポジトリの公開鍵ファイルが検出されなくなります。次のコマンドを実行してリポジトリを再度更新してください。
    sudo chmod a+r /etc/apt/keyrings/docker.gpg :::

  2. Docker Engine の特定のバージョンをインストールするには、リポジトリにある利用可能なバージョンのリストから選択してインストールします。

    a. リポジトリで利用可能なバージョンをリストします。

    $ apt-cache madison docker-ce

    b. 2番目のカラムのバージョン文字列 (5:20.10.16~3-0~ubuntu-jammy など) を使用して特定のバージョンをインストールします。

    $ sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io docker-compose-plugin
  3. hello-world イメージを実行して、Docker Engine が正しくインストールされていることを確認します。

    $ sudo docker run hello-world

    このコマンドは、テスト・イメージをダウンロードし、コンテナ内で実行します。コンテナが実行されると、メッセージを出力して終了します。

Docker Engine がインストールされて実行されています。 docker グループは作成されますが、ユーザは追加されません。 Docker コマンドを実行するには sudo を使用する必要があります。 特権のないユーザが Docker コマンドを実行できるようにするには、Linux の postinstall を続行します。 その他のオプションの設定手順も実行できます。

Docker エンジンのアップグレード

Docker Engine をアップグレードするには、 まず sudo apt-get update を実行し、 インストール手順に従ってインストールする新しいバージョンを選択します。

パッケージからインストールする

Docker のリポジトリを使用して Docker Engine をインストールできない場合は、 リリース用の .debファイルをダウンロードして手動でインストールすることができる。 Docker をアップグレードするたびに、新しいファイルをダウンロードする必要がある。

  1. https://download.docker.com/linux/ubuntu/dists/ に行き Ubuntu バージョンを選択して、pool/stable/ をブラウズして amd64armhfarm64、または s390x を選択し、インストールしたい Docker Engine バージョンの .deb ファイルをダウンロードします。
  2. Docker Engine をインストールし、以下のパスを Docker パッケージをダウンロードしたパスに変更します。
    $ sudo dpkg -i /path/to/package.deb
    Docker デーモンが自動的に起動します。
  3. hello-world イメージを実行して、Docker Engine が正しくインストールされていることを確認します。
    $ sudo docker run hello-world
    このコマンドは、テスト・イメージをダウンロードし、コンテナ内で実行します。コンテナが実行されると、メッセージを出力して終了します。

Docker Engine がインストールされて実行されています。 docker グループは作成されますが、ユーザは追加されません。 sudo を使用してDockerコマンドを実行する必要があります。 特権のないユーザが Docker コマンドを実行できるようにするための Linux のインストール後の手順と、その他のオプションの設定手順に進みます。

Docker エンジンをアップグレードする

Docker Engine をアップグレードするには、新しいパッケージファイルをダウンロードし、新しいファイルを指定してインストール手順を繰り返します。

便利スクリプトを使用してインストールする

Docker は、get.docker.com で、 Docker を開発環境に迅速かつ非インタラクティブにインストールするための便利なスクリプトを提供しています。 便利なスクリプトはプロダクション環境には推奨されていませんが、 ユーザのニーズに合わせたプロビジョニングスクリプトを作成するための例として使用することができます。パッケージリポジトリを使用してインストールするためのインストール手順については、リポジトリを使用したインストール手順も参照してください。 スクリプトのソースコードはオープンソースであり、 GitHub の docker-install リポジトリにあります。

ローカルで実行する前に、インターネットからダウンロードしたスクリプトを必ず確認してください。 インストールする前に、便利スクリプトの潜在的なリスクと制限についてよく理解してください。

  • スクリプトを実行するには、root 権限または sudo 権限が必要です。
  • このスクリプトは、お使いの Linux ディストリビューションとバージョンを検出し、パッケージ管理システムを設定しようとするもので、ほとんどのインストール・パラメーターをカスタマイズすることはできません。
  • スクリプトは、確認を求めることなく依存関係と推奨事項をインストールします。ホスト・マシンの現在の構成によっては、多数のパッケージがインストールされる場合があります。
  • デフォルトでは、スクリプトは Docker、containerd、runc の最新安定リリースをインストールします。このスクリプトを使用してマシンをプロビジョニングすると、Docker の予期しないメジャーバージョンのアップグレードが発生する可能性があります。本番システムにデプロイする前に、テスト環境で (メジャー) アップグレードを必ずテストしてください。
  • スクリプトは、既存の Docker インストールをアップグレードするようには設計されていません。スクリプトを使用して既存のインストールを更新する場合、依存関係が期待されたバージョンに更新されない可能性があり、古いバージョンが使用される原因となります。

:::important ヒント: 実行前にスクリプトステップをプレビューする DRY_RUN=1 オプションを指定してスクリプトを実行すると、インストール時にスクリプトが実行するステップを確認できます。

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ DRY_RUN=1 sh ./get-docker.sh

:::

次の例では、get.docker.com からスクリプトをダウンロードして実行し、Dockerの最新の安定リリースをLinuxにインストールします。

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh

Docker がインストールされている。Docker サービスは Debian ベースのディストリビューションで自動的に起動します。 CentOS、Fedora、RHEL、SLES などの RPM ベースのディストリビューションでは、 適切な systemctl または service コマンドを使用して手動で起動する必要があります。 メッセージが示すように、root 以外のユーザはデフォルトで Docker コマンドを実行できません。

:::important 非特権ユーザとして Docker を使用するか、ルートレスモードでインストールするには? インストールスクリプトには、Docker をインストールして使用するために root 権限または sudo 権限が必要です。 root 以外のユーザに Docker へのアクセスを許可したい場合は、 Linux のインストール後の手順を参照してください。 Docker は、root 権限なしでインストールすることも、 root なしモードで実行するように設定することもできます。 Docker を root なしモードで実行する方法については、 root 以外のユーザとして Docker デーモンを実行する (root なしモード)を参照してください。 :::

プレリリースをインストールする

Docker は test.docker.com で、Docker のプレリリースを Linux にインストールするための便利なスクリプトも提供しています。 このスクリプトは get.docker.com のスクリプトと同じですが、Docker の安定版とプレリリース (ベータバージョン、リリース候補) の両方を含むパッケージリポジトリから "test" チャネルを有効にするようにパッケージマネージャを設定します。 このスクリプトを使用して、新しいリリースに早期にアクセスし、安定版としてリリースされる前にテスト環境で評価します。

"test" チャネルから Linux に最新バージョンの Docker をインストールするには、次のコマンドを実行します。

$ curl -fsSL https://test.docker.com -o test-docker.sh
$ sudo sh test-docker.sh

便利スクリプトを使用した後に Docker をアップグレードする

便利スクリプトを使用して Docker をインストールした場合は、 パッケージマネージャを直接使用して Docker をアップグレードする必要があります。 便利スクリプトを再実行するメリットはなく、 ホストマシンにすでに追加されているリポジトリを再追加しようとすると問題が発生する可能性があります。

Docker Engine をアンインストールする

  1. Docker Engine、CLI、Containerd、Docker Compose パッケージのアンインストール

    $ sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-compose-plugin
  2. ホスト上のイメージ、コンテナ、ボリュームまたはカスタマイズされた構成ファイルは、自動的には削除されません。すべてのイメージ、コンテナおよびボリュームを削除する手順は、次のとおりです。

    $ sudo rm -rf /var/lib/docker
    $ sudo rm -rf /var/lib/containerd

編集した設定ファイルは手動で削除する必要があります。

次のステップ

Ubuntu 系の Linux ディストリビューションの自作方法

· 約4分

概要

  1. iso ファイル (ディスクイメージ) を展開
  2. squashfs ファイル (/ の中、ファイルシステムイメージ) を展開
  3. (2.) で展開してものに対し、カスタマイズするためのスクリプトを適用
  4. (3.) から squashfs を作成 (mksquashfs コマンド)
  5. (4.) を (1.) に入れて、チェックサムやファイルサイズ、パッケージのリストを更新
  6. (5.) を iso ファイルを作成 (xorriso コマンドを使用)

この流れで、Ubuntu の改造ディストリビューションを作成できます。

用意するもの

  • Ubuntu のイメージ

必要なパッケージのインストール

sudo apt install cd-boot-images-amd64 xorriso

パッケージがないとかでインストールができない場合は以下を実行し再度実行してください。

echo "deb http://cz.archive.ubuntu.com/ubuntu jammy main" | sudo tee -a /etc/apt/sources.list
sudo apt update

展開とマウント

# DISK_IMAGE はディスクイメージのパスです。
DISK_IMAGE=/mnt/d/ubuntu-22.04-desktop-amd64.iso

# RELEASENOTE_URL はリリースノートの URL です。
RELEASENOTE_URL="http://"

# 作業ディレクトリーの作成
mkdir ~/my-distribution
cd ~/my-distribution

# ディスクイメージのシンボリックリンクを作成します。
ln -s $DISK_IMAGE image.iso

# ディスクイメージをマウント
# 警告が出ますが無視してください。
mkdir mnt
sudo mount -o loop image.iso mnt

# ディスクイメージのコピー
# マウントした場所は書き換えができないのでコピーします。
# ただし、ディストリビューションのファイルシステムである /casper/filesystem.squashfs は除外してコピーします。
mkdir disk
rsync -P -a --exclude=/casper/filesystem.squashfs mnt/ disk

# ファイルシステムイメージのマウント
mkdir mntfs
sudo mount -t squashfs -o loop mnt/casper/filesystem.squashfs mntfs

# ファイルシステムをコピー
# マウントした場所は書き換えできないので、コピーします。
mkdir squashfs
sudo rsync -P -a mntfs/ squashfs

# マウントは不要になったのでアンマウントします。
sudo umount mntfs
sudo umount mnt
rm -r mntfs mnt

# シンボリックリンクも不要なので削除します
rm image.iso

# リリースノートの URL を設定します。
echo $RELEASENOTE_URL | sudo tee disk/.disk/release_notes_url

# ディスク情報を設定します。
today=$(date +"%Y%m%d")
echo -n "MyDistribution 22.04 LTS \"Jammy Jellyfish\" - Release amd64 ($today)" | tee
echo -n "MyDistribution 22.04 LTS \"Jammy Jellyfish\" - Release amd64 ($today)" | sudo tee disk/.disk/info

# インストーラーの言語を日本語に設定します。
cat | sudo tee -a disk/preseed/ubuntu.seed <<EOF
d-i debian-installer/language string ja
d-i debian-installer/locale string ja_JP.UTF-8
d-i keyboard-configuration/layoutcode string jp
d-i keyboard-configuration/modelcode jp106
d-i keyboard-configuration/layout select Japanese
d-i keyboard-configuration/variant select Japanese
EOF

# grub.cfg の日本語化
splash=$(echo "splash --- debian-installer/language=ja" \
"debian-installer/locale=ja_JP.UTF-8" \
"keyboard-configuration/layoutcode?=jp" \
"keyboard-configuration/modelcode?=pc105")
sudo sed -i "s#splash ---#$splash#" disk/boot/grub/grub.cfg

カスタマイズするためのスクリプトの割り当て

# MyDistribution.sh は Ubuntu をカスタマイズするスクリプトです。
chroot squashfs /bin/bash MyDistribution.sh

ファイルシステムの作成

# パッケージ一覧を書き込み
sudo chroot squashfs/ dpkg-query -W --showformat='${binary:Package}\t${Version}\n' |\
tee disk/casper/filesystem.manifest

# ファイルシステムのサイズを書き込み
sudo du -B 1 -s squashfs/ | cut -f1 | sudo tee disk/casper/filesystem.size

# ファイルシステムのイメージ化
sudo mksquashfs squashfs/ disk/casper/filesystem.squashfs -xattrs -comp xz
sudo rm disk/casper/filesystem.squashfs.gpg

# md5sum.txt を出力
cd disk
find . -type f -not -name 'md5sum.txt' -not -path './boot/*' -not -path './EFI/*' -print0 | xargs -0 md5sum | sudo tee md5sum.txt
md5sum ./boot/memtest86+.bin | sudo tee -a md5sum.txt
md5sum ./boot/grub/*.cfg | sudo tee -a md5sum.txt
cd ..

ディスクイメージの作成

VOLUME_ID="MyDistribution"
OUTPUT_ISO="mydistribution-22.04-desktop-amd64.iso"

xorriso \
-as mkisofs \
-volid "$VOLUME_ID" \
-o "$OUTPUT_ISO" \
-J -joliet-long -l \
-b boot/grub/i386-pc/eltorito.img \
-no-emul-boot \
-boot-load-size 4 \
-boot-info-table \
--grub2-boot-info \
--grub2-mbr /usr/share/cd-boot-images-amd64/images/boot/grub/i386-pc/boot_hybrid.img \
-append_partition 2 0xef /usr/share/cd-boot-images-amd64/images/boot/grub/efi.img \
-appended_part_as_gpt \
--mbr-force-bootable \
-eltorito-alt-boot \
-e --interval:appended_partition_2:all:: \
-no-emul-boot \
-partition_offset 16 \
-r \
disk/

QEMU で起動してみる

QEMU をインストールしていない場合

sudo apt install -y qemu-system-x86

LiveCD を起動する

sudo qemu-system-x86_64 -m 4G -cdrom mydistribution-22.04-desktop-amd64.iso -boot d --enable-kvm -usb -smp 6

仮想ディスクにインストールする場合

qemu-img create -f qcow2 disk.qcow2 32G
sudo qemu-system-x86_64 -hda disk.qcow2 -m 4G -cdrom mydistribution-22.04-desktop-amd64.iso -boot d --enable-kvm -usb -smp 6

Ubuntu で gsettings を使用し Dock の設定を行う

· 約2分

スクリプトで Dock の設定したいときや、SSH で設定したいときに使う。

Dock を自動的に隠す

設定する値説明
true自動的に隠さない
false自動的に隠す

例: Dock を自動的に隠す

# 現在の設定
$ gsettings get org.gnome.shell.extensions.dash-to-dock dock-fixed
true

$ gsettings set org.gnome.shell.extensions.dash-to-dock dock-fixed false

パネルモード

Dock を画面の端まで引き伸ばして表示。

設定する値説明
true引き延ばさない
false引き延ばす

例: パネルを引き延ばさない

# 現在の設定
$ gsettings get org.gnome.shell.extensions.dash-to-dock extend-height
true

$ gsettings set org.gnome.shell.extensions.dash-to-dock extend-height false

アイコンサイズの変更

設定する値説明
数値アイコンサイズ

例: アイコンサイズを 30 に変更

# 現在の設定
$ gsettings get org.gnome.shell.extensions.dash-to-dock dash-max-icon-size
48

$ gsettings set org.gnome.shell.extensions.dash-to-dock dash-max-icon-size 30

Dock の表示位置を変更

「設定」では設定ができない 'TOP' が設定可能。上に微妙な隙間ができる。

設定する値説明
LEFT
BOTTOM
RIGHT
TOP

例: Dock の表示位置を下に設定

# 現在の設定
$ gsettings get org.gnome.shell.extensions.dash-to-dock dock-position
'LEFT'

$ gsettings set org.gnome.shell.extensions.dash-to-dock dock-position 'BOTTOM'

ゴミ箱の表示

設定する値説明
true表示
false非表示

例: ゴミ箱を非表示に設定

# 現在の設定
$ gsettings get org.gnome.shell.extensions.dash-to-dock show-trash
true

$ gsettings set org.gnome.shell.extensions.dash-to-dock show-trash false