/Linuxコマンド

パッケージ管理

パッケージ管理

apt・dpkg でソフトを入れる・消す・調べる。snap・pipx・npm での入れ方も。

aptパッケージを入れる・更新する

Ubuntu や Debian でソフト(パッケージ)を入れる・更新する・消すための基本のコマンドです。ほとんどのソフトは sudo apt install 名前 で入れられます。

書き方意味
sudo apt updateパッケージ一覧を最新にする(入れる前にまず実行)
sudo apt upgrade入っているものをすべて更新
sudo apt full-upgrade依存関係の入れ替えも含めて更新
sudo apt install <名前...>インストール
sudo apt install ./file.deb手元の .deb ファイルを入れる
sudo apt remove <名前>削除(設定ファイルは残す)
sudo apt purge <名前>設定ファイルごと削除
sudo apt autoremove使われなくなった依存パッケージを削除
apt search <単語>探す
apt show <名前>詳しい説明
apt list --installed入っているものの一覧
apt list --upgradable更新できるものの一覧
apt policy <名前>入っているバージョンと、入れられるバージョン
bash
$ sudo apt update && sudo apt upgrade -y
$ sudo apt install -y jq tree htop
$ apt search --names-only ripgrep
$ apt list --installed | grep -i python
$ apt-mark showmanual            # 自分で入れた(依存ではない)パッケージ

dpkg.deb パッケージを直接扱う

.deb ファイルを直接入れたり、入っているパッケージの中身や、あるファイルがどのパッケージのものかを調べたりします。

bash
$ dpkg -l | grep nginx            # 入っているか
$ dpkg -L ripgrep                 # そのパッケージが入れたファイルの一覧
$ dpkg -S /usr/bin/rg             # そのファイルを入れたパッケージ
$ sudo dpkg -i package.deb        # 入れる(依存関係は解決しない → apt install ./package.deb の方が楽)

snapSnap パッケージ

Canonical の Snap ストアからアプリを入れます。apt にないアプリや、新しいバージョンが欲しいときに使います。

bash
$ snap find vscode
$ sudo snap install <名前> --classic
$ snap list
$ sudo snap refresh              # 更新
$ sudo snap remove <名前>

pipxPython のコマンドを隔離して入れる

Ubuntu には最初から入っていません。 で入れられます。

Python製のコマンド(yt-dlp・httpie など)は、pip install ではなく pipx で入れると、システムのPythonを汚しません。

bash
$ pipx install yt-dlp
$ pipx list
$ pipx upgrade-all
$ pipx ensurepath                # ~/.local/bin を PATH に追加

pip / venvPython のライブラリ

Ubuntu には最初から入っていません。 で入れられます。

Ubuntu 24.04 では、システム全体への pip install は禁止されています(externally-managed-environment エラー)。プロジェクトごとに仮想環境を作って入れます。

bash
$ python3 -m venv .venv
$ source .venv/bin/activate
(.venv) $ pip install requests
(.venv) $ pip freeze > requirements.txt
(.venv) $ deactivate

npm / npxNode.js のパッケージ

Ubuntu には最初から入っていません。 で入れられます。

Node.js のパッケージを入れたり、package.json に書いたスクリプトを実行したりします。npx は入れずに1回だけ実行します。

bash
$ npm install                    # package.json の依存を入れる
$ npm install -D vite            # 開発用の依存として追加
$ npm run dev                    # package.json の scripts を実行
$ npx create-vite@latest my-app  # 入れずに1回だけ実行
$ npm ls --depth=0               # 入っているものの一覧
$ npm outdated                   # 更新できるもの

apt-cache / apt-markパッケージの情報と固定

パッケージの依存関係や入れられるバージョンを調べたり、特定のパッケージを更新しないように固定したりします。

bash
$ apt-cache depends curl          # 依存しているパッケージ
$ apt-cache rdepends libssl3      # それに依存しているパッケージ
$ apt-cache madison nodejs        # 入れられるバージョンの一覧
$ sudo apt-mark hold docker.io    # 更新しないように固定
$ sudo apt-mark unhold docker.io
$ apt-mark showhold
$ sudo apt install nodejs=18.19.1+dfsg-6ubuntu5   # バージョンを指定して入れる

add-apt-repositoryPPA やリポジトリを追加する

PPA などのリポジトリを追加して、Ubuntu 標準より新しいバージョンのソフトを入れられるようにします。

bash
$ sudo add-apt-repository ppa:git-core/ppa
$ sudo apt update && sudo apt install git
$ sudo add-apt-repository --remove ppa:git-core/ppa
$ ls /etc/apt/sources.list.d/        # 追加したリポジトリの設定

update-alternatives同じ役割のコマンドを切り替える

同じ役割のコマンドが複数入っているとき(複数の Java、エディタなど)、どれを既定にするかを切り替えます。

bash
$ sudo update-alternatives --config editor      # 既定のエディタを選ぶ
$ sudo update-alternatives --config java
$ update-alternatives --list python3

do-release-upgradeUbuntu のバージョンを上げる

Ubuntu そのものを次のバージョン(次の LTS など)に上げます。

bash
$ sudo apt update && sudo apt full-upgrade
$ sudo do-release-upgrade           # 次の LTS へ

unattended-upgradeセキュリティ更新を自動で入れる

セキュリティ更新を自動で入れるようにします。サーバーでは有効にしておくのが一般的です。

bash
$ sudo dpkg-reconfigure -plow unattended-upgrades   # 有効にする
$ sudo unattended-upgrade --dry-run -d               # 試しに動かす
$ cat /var/log/unattended-upgrades/unattended-upgrades.log

apt-fileまだ入れていないコマンドのパッケージを探す

Ubuntu には最初から入っていません。 で入れられます。

まだ入れていないコマンドやファイルが、どのパッケージに入っているかを調べます。

bash
$ sudo apt install apt-file && sudo apt-file update
$ apt-file search bin/dig          # → bind9-dnsutils

容量を空ける

bash
$ sudo apt autoremove --purge
$ sudo apt clean                   # ダウンロード済みの .deb を消す
$ sudo journalctl --vacuum-size=200M
$ docker system prune              # Docker を使っているなら
$ du -sh ~/.cache/* | sort -h | tail