「apt」
ちなみにaptの機能紹介は本連載でも何度か行っています。特にUbuntu 24.
お手軽にロールバックもできるようになったapt
「apt」
1997年頃に開発が始まった前身の
Ubuntu 24.
この依存解決エンジンの追加も含めて、大きな変更点をあげてみましょう。
- 新しい依存関係解決エンジン
(solver3) の採用 - 履歴の管理とロールバックに対応
- パッケージがインストールされた・
されなかった理由の表示 - カラー設定をカスタマイズ可能に
- ページャーの対応
- UIの固定化に対応
新しい依存関係解決エンジン(solver3)の採用
パッケージ管理システムの最大の目的は
あるパッケージをインストールしようとすると、別のパッケージが必要になる状況を
さらにUbuntuのあるリリースでは
パッケージ管理システムはこのような
apt
apt 3.
- これまで解決できなかった依存関係でも諦めずに別案を提示してくれる
- リリース間のアップグレード時に新規インストールとの差異が小さくなる
- autoremove時にこれまで意図せず残っていたパッケージも削除
- 依存関係解決の高速化
solver3については、APTの開発者のブログも参考になります。
履歴の管理とロールバックに対応
aptによる操作履歴をトランザクションとして、コマンドからも管理できるようになりました。これはhistory-FOO」
history-list:履歴の表示history-info:操作の詳細表示history-undo:操作を元に戻すUndo機能history-redo:操作をやり直すRedo機能history-rollback:特定の履歴へのロールバック
順番に見ていきましょう。まずhistory-listはこれまでに行ったaptの操作をすべて一覧表示できます。
$ apt history-list ID Command line Date and Time Action Changes 0 apt-get --yes -oDebug... 2026-04-23 01:16:08 Install 1310 1 apt-get --yes -oDebug... 2026-04-23 01:28:06 Purge 47 2 apt-get --quiet --ass... 2026-05-12 02:04:04 I,R 16 3 apt-get --quiet --ass... 2026-05-12 02:04:13 I,U 15 (snip) 25 install openssh-server 2026-06-13 22:19:09 Install 4 26 /usr/bin/unattended-u... 2026-06-15 06:03:37 Upgrade 1
apt-getはおおよそ手動で操作したときのログです。ただし0と1はインストール時のログである可能性が高いです。自動アップグレードは26のような
個別に詳細を確認したいならhistory-infoを実行します。
$ apt history-info 25
Transaction ID: 25
Start time: 2026-06-13 22:19:09
End time: 2026-06-13 22:19:11
Requested by: shibata (1000)
Command line: apt install openssh-server
Packages changed:
Install ncurses-term:amd64 (6.6+20251231-1, automatic)
Install openssh-server:amd64 (1:10.2p1-2ubuntu3.2)
Install openssh-sftp-server:amd64 (1:10.2p1-2ubuntu3.2, automatic)
Install ssh-import-id:amd64 (5.11-0ubuntu4, automatic)
どのタイミングで何がインストールされ、何が削除されたかがわかるようになっています。これにより
$ sudo apt history-undo 25 REMOVING: ncurses-term openssh-server openssh-sftp-server ssh-import-id Summary: Upgrading: 0, Installing: 0, Removing: 4, Not Upgrading: 0 Freed space: 7,581 kB Continue? [Y/n]
普通の削除と異なり依存関係などで同時にインストールしたパッケージも一緒にアンインストールしてくれます。逆にアンインストールの履歴にUndoすると、再インストールできます。たとえば上記のように25をUndoした処理が48として記録されていたら、48のUndoはopenssh-serverのインストールを意味するのです。
指定した履歴の処理をもう一度実施したい場合は、Redo機能を使います。
$ sudo apt history-undo 25
複数の履歴をまとめて特定の状態まで戻したい場合は、ロールバック機能を使います。たとえば次のような履歴だったとします。
46 /usr/bin/unattended-u... 2026-06-15 06:04:56 Upgrade 1 47 install hello 2026-06-15 23:40:35 Install 1 48 history-undo 47 2026-06-15 23:41:08 Remove 1 49 history-redo 47 2026-06-15 23:43:36 Install 1 50 install tio 2026-06-15 23:49:42 Install 1
この状態で履歴の46にロールバックすると、50から47までの操作を逆順に実行してくれます。つまりtioとhelloをインストールする前の状態になるのです。
$ sudo apt history-rollback 46 REMOVING: hello tio Summary: Upgrading: 0, Installing: 0, Removing: 2, Not Upgrading: 0 Freed space: 323 kB Continue? [Y/n]
ちなみにこれらの履歴管理機能は、ただの/var/」
また、history.
パッケージがインストールされた・されなかった理由の表示
依存関係解決エンジンの刷新によって、aptitudeにもあったwhy/
たとえばUbuntuなら必ずインストールされているvim-commonについて見てみましょう。
$ apt why vim-common vim-common:amd64=2:9.1.2141-1ubuntu4.3 is selected for install because: 1. ubuntu-minimal:amd64 is selected for install 2. ubuntu-minimal:amd64 依存 vim-tiny 3. vim-tiny:amd64 is available in versions 2:9.1.2141-1ubuntu4.3, 2:9.1.2141-1ubuntu4 [selected vim-tiny:amd64=2:9.1.2141-1ubuntu4.3 for install] 4. vim-tiny:amd64=2:9.1.2141-1ubuntu4.3 依存 vim-common (= 2:9.1.2141-1ubuntu4.3) For context, additional choices that could not be installed: * In vim-tiny:amd64 is available in versions 2:9.1.2141-1ubuntu4.3, 2:9.1.2141-1ubuntu4: - vim-tiny:amd64=2:9.1.2141-1ubuntu4 is not selected for install
その理由が1-4にあげられています。
- ubuntu-minimalがインストールされた
- ubuntu-minimalはvim-tinyに依存している
- vim-tinyは複数のバージョンがあり、2:9.
1.2141-1ubuntu4. 3が選択された - vim-tinyの当該バージョンはvim-commonに依存している
どういう理由でインストールされたかが詳らかになるため、
逆にwhy-notはなぜインストールできないかを説明します。たとえば第913回でも紹介したように、Ubuntu 26.
つまりcoreutils-from-uutilsがインストールされた環境では、coreutils-from-gnuパッケージをインストールできません。
$ apt why-not coreutils-from-gnu coreutils-from-gnu:amd64 is not selected for install because: 1. coreutils-from-uutils:amd64 is selected for install 2. coreutils-from-uutils:amd64 is available in version 0.0.0~ubuntu25 3. coreutils-from-gnu:amd64 競合 coreutils-from [selected coreutils-from-uutils:amd64=0.0.0~ubuntu25]
why-notはパッケージの依存関係の結果としてうまくインストールできない場合の調査に使えます。
カラー設定をカスタマイズ可能に
aptコマンドの結果が、よりカラフルになりました。たとえばパッケージのインストール時や更新時は次のような色になります。
- パッケージのアップグレードやインストールは緑色
- パッケージのダウングレードは黄色
- パッケージの削除は赤色
同様にパッケージ操作時の表示される項目がもう少し構造化され、読みやすくなりました。
表示色はapt.man apt.」APT_や、--no-colorオプションを付けると一時的にカラー表示を無効化できます。
ちなみに
「最初から」apt -o APT::Moo::Color=1 moo moo」
ページャーの対応
aptコマンド実行時に、自動的にページャーを使うようになりました。これは
ただしページャーのオプションがless -FRSXMK」-S」
一時的に無効化したいなら、ページャーで-S」
$ export APT_PAGER="less -+S"
もしくはapt.Version::3.」
UIの固定化に対応
aptコマンドの実行結果をパイプに渡そうとすると、これまで次のような警告が標準エラー出力に表示されていました。
$ apt search neovim > /dev/null WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
これはaptコマンドのUIを頻繁に変える可能性があったことによる警告です。たとえばaptをパイプに渡して、その内容から別の処理をするようなスクリプトを作ってしまうと、次のバージョンでスクリプトが動かなくなる可能性もあります。そこでインターフェースが安定していないことを明示するために警告を出していました。基本的にはパイプするケースなら、apt-getやapt-cacheを使っていたはずです。
新しいaptでは--cli-version」
$ apt search --cli-version 3.2 neovim > /dev/null (標準エラー出力には何も出ない)
たとえば1.
$ apt search --cli-version 1.0 neovim | head dh-vim-addon - debhelper addon to help package Vim/Neovim addons hx - modal CLI text editor Helix interception-caps2esc - interception plugin for dual function Esc/Ctrl key at CapsLock neovim - heavily refactored vim fork neovim-alpha - Customizable startup screen plugin for Neovim neovim-autopairs - Autopair plugin for Neovim neovim-gitsigns - Git integration for buffers in Neovim neovim-gruvbox - Gruvbox Colorscheme for neovim neovim-indent-blankline - Indentation guides for Neovim neovim-lualine - fast and light statusbar for neovim
apt固有の便利なサブコマンドが増えたこともあって、今後はaptコマンドをスクリプトで活用したいケースも増えてくることでしょう。ちなみにより新しいaptでは、--cli-versionを使えるようになったため、警告そのものが削除されたようです。
一部の人には気になる機能
他にも便利な機能の追加や挙動の変更が行われています。
- 古いsources.
listを、deb822形式に変換する 「 modernize-sources」サブコマンド - GnuTLSではなくOpenSSLを利用するように変更
- GnuPGではなくSequoia-PGPを利用するように変更
- FTP/
RSH/ SSHメソッド対応の削除 - Include/
Excludeオプションで特定のリポジトリからインストールできるパッケージをコントロールできるように
新しい依存関係解決エンジンの導入とともに、最近のaptはいつも以上に活発な開発と機能追加が続いています。次のリリースでも、より便利になっていることでしょう。