apt-getコマンドとapt-cacheコマンドを一つにまとめたaptコマンドの使い方について記載します。
Table of Contents
1 aptコマンド
apt-get/apt-cacheの統合を目指したコマンドです。従来、apt-get / apt-cacheでいちいち切り替えるのが面倒でした。aptコマンドを使えば、installやsearchをaptコマンドのまま使うことができます。
apt install <pkgname> | インストール |
apt remove <pkgname> | アンインストール |
apt autoremove | 依存で必要だったが現在は不要なパッケージの削除 |
apt search <pkgname> | 検索 |
apt show <pkgname> | 情報表示 |
apt update | アップデート |
apt upgrade | アップグレード |
apt dist-upgrade (full-upgrade) | パッケージ削除がありうるアップグレード |
apt-getとの違いで画面下部にプログレスバーが表示されるようになります。
2 apt upgradeとapt-get upgradeの違い
apt upgradeは新規パッケージをインストールする場合があります。apt-get upgradeは新規パッケージをインストールしません。
apt dist-upgrade/apt dist-upgradeは新規パッケージを追加するだけでなく既存パッケージを削除する場合があります。これはapt upgrade/apt-get upgradeとは異なります。
基本的にはapt upgradeを使う方が良いです。
2.1 apt-get upgradeでカーネルがアップグレードされない
SSHでログインするとセキュリティアップデートがあると表示されます。
Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.4.0-21-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage 7 packages can be updated. 7 updates are security updates. Last login: Sat Jul 9 21:56:03 2016 from 192.168.11.4
セキュリティアップデートの対象はlinux-genericパッケージ等です。
$ apt list --upgradable Listing... Done linux-generic/xenial-updates,xenial-security 4.4.0.28.30 amd64 [upgradable from: 4.4.0.21.22] linux-headers-generic/xenial-updates,xenial-security 4.4.0.28.30 amd64 [upgradable from: 4.4.0.21.22] linux-image-generic/xenial-updates,xenial-security 4.4.0.28.30 amd64 [upgradable from: 4.4.0.21.22]
apt-get upgradeを実行すると新規パッケージのインストールがあると判定されてパッケージのアップグレードは保留されます。
$ sudo apt-get upgrade -y Reading package lists... Done Building dependency tree Reading state information... Done Calculating upgrade... Done The following packages have been kept back: linux-generic linux-headers-generic linux-image-generic 0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
apt upgradeを実行するとパッケージがアップグレードされます。
$ sudo apt upgrade -y Reading package lists... Done Building dependency tree Reading state information... Done Calculating upgrade... Done The following NEW packages will be installed: linux-headers-4.4.0-28 linux-headers-4.4.0-28-generic linux-image-4.4.0-28-generic linux-image-extra-4.4.0-28-generic The following packages will be upgraded: linux-generic linux-headers-generic linux-image-generic 3 upgraded, 4 newly installed, 0 to remove and 0 not upgraded. Need to get 68.3 MB of archives. After this operation, 295 MB of additional disk space will be used. Get:1 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 linux-image-4.4.0-28-generic amd64 4.4.0-28.47 [18.7 MB]
apt-get upgradeで同じことをやろうとすると以下のように–with-new-pkgsオプションを付与する必要があります。
$ sudo apt-get upgrade --with-new-pkgs # equal with sudo apt upgrade.
3 パッケージの依存関係が解決できない
アップデートされなくなった非公式リポジトリを利用している場合に起こりがちです。以下のコマンドで強制的に解消します。
$ apt -f install
4 aptを試すだけで実行しない
aptの–just-printオプションを使います。
$ apt install --just-print apache2 注意: これはシミュレーションにすぎません! apt-get は実際の実行に root 権限を必要とします。 ロックが非アクティブであることから、今この時点の状態に妥当性が あるとは言い切れないことに注意してください! パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下のパッケージが自動でインストールされましたが、もう必要とされていません: emacs24 emacs24-bin-common emacs24-common emacs24-common-non-dfsg emacs24-el libgif7 liblockfile-bin liblockfile1 libm17n-0 libotf0 m17n-db これを削除するには 'apt autoremove' を利用してください。 以下の追加パッケージがインストールされます: apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0 提案パッケージ: apache2-doc apache2-suexec-pristine | apache2-suexec-custom 以下のパッケージが新たにインストールされます: apache2 apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0 アップグレード: 0 個、新規インストール: 9 個、削除: 0 個、保留: 15 個。 Inst libapr1 (1.5.2-3 Ubuntu:16.04/xenial [amd64]) Inst libaprutil1 (1.5.4-1build1 Ubuntu:16.04/xenial [amd64]) Inst libaprutil1-dbd-sqlite3 (1.5.4-1build1 Ubuntu:16.04/xenial [amd64]) Inst libaprutil1-ldap (1.5.4-1build1 Ubuntu:16.04/xenial [amd64]) Inst liblua5.1-0 (5.1.5-8ubuntu1 Ubuntu:16.04/xenial [amd64]) Inst apache2-bin (2.4.18-2ubuntu3 Ubuntu:16.04/xenial [amd64]) Inst apache2-utils (2.4.18-2ubuntu3 Ubuntu:16.04/xenial [amd64]) Inst apache2-data (2.4.18-2ubuntu3 Ubuntu:16.04/xenial [all]) Inst apache2 (2.4.18-2ubuntu3 Ubuntu:16.04/xenial [amd64]) Conf libapr1 (1.5.2-3 Ubuntu:16.04/xenial [amd64]) Conf libaprutil1 (1.5.4-1build1 Ubuntu:16.04/xenial [amd64]) Conf libaprutil1-dbd-sqlite3 (1.5.4-1build1 Ubuntu:16.04/xenial [amd64]) Conf libaprutil1-ldap (1.5.4-1build1 Ubuntu:16.04/xenial [amd64]) Conf liblua5.1-0 (5.1.5-8ubuntu1 Ubuntu:16.04/xenial [amd64]) Conf apache2-bin (2.4.18-2ubuntu3 Ubuntu:16.04/xenial [amd64]) Conf apache2-utils (2.4.18-2ubuntu3 Ubuntu:16.04/xenial [amd64]) Conf apache2-data (2.4.18-2ubuntu3 Ubuntu:16.04/xenial [all]) Conf apache2 (2.4.18-2ubuntu3 Ubuntu:16.04/xenial [amd64])
5 upgradeされるパッケージ一蘭を表示する
apt list –upgradeableでアップグレードパッケージが表示されます。<package>/<osname>-securityと表示されるものがセキュリティアップデートです。
$ apt list --upgradeable 一覧表示... 完了 brltty/xenial-updates 5.3.1-2ubuntu2.1 amd64 [5.3.1-2ubuntu2 からアップグレード可] libbrlapi0.6/xenial-updates 5.3.1-2ubuntu2.1 amd64 [5.3.1-2ubuntu2 からアップグレード可] libmetacity-private3a/xenial-updates 1:3.18.4-0ubuntu0.1 amd64 [1:3.18.3-1ubuntu3 からアップグレード可] linux-headers-4.4.0-22/xenial-updates,xenial-updates,xenial-security,xenial-security 4.4.0-22.39 all [4.4.0-22.39 からアップグレード可] linux-headers-generic/xenial-updates,xenial-security 4.4.0.22.23 amd64 [4.4.0.21.22 からアップグレード可] linux-libc-dev/xenial-updates,xenial-security 4.4.0-22.39 amd64 [4.4.0-21.37 からアップグ レード可] metacity-common/xenial-updates,xenial-updates 1:3.18.4-0ubuntu0.1 all [1:3.18.3-1ubuntu3 からアップグレード可] openssh-client/xenial-updates 1:7.2p2-4ubuntu1 amd64 [1:7.2p2-4 からアップグレード可] openssh-server/xenial-updates 1:7.2p2-4ubuntu1 amd64 [1:7.2p2-4 からアップグレード可] openssh-sftp-server/xenial-updates 1:7.2p2-4ubuntu1 amd64 [1:7.2p2-4 からアップグレード可] python3-brlapi/xenial-updates 5.3.1-2ubuntu2.1 amd64 [5.3.1-2ubuntu2 からアップグレード可] thermald/xenial-updates 1.5-2ubuntu1 amd64 [1.5-2 からアップグレード可] xbrlapi/xenial-updates 5.3.1-2ubuntu2.1 amd64 [5.3.1-2ubuntu2 からアップグレード可]
apt-get upgrade –just-printでもアップグレードパッケージが表示されますが、どれがセキュリティアップデートかまではわかりません。
6 インストール済みのパッケージ一蘭を表示する
dpkg -lと同様ですが、こちらはxenial、xenial-update、xenial-security等のリポジトリまで表示されます。
$ apt list --installed WARNING: apt does not have a stable CLI interface. Use with caution in scripts. 一覧表示... a11y-profile-manager-indicator/xenial,now 0.1.10-0ubuntu3 amd64 [インストール済み、自動] account-plugin-facebook/xenial,xenial,now 0.12+16.04.20160126-0ubuntu1 all [インストール 済み、自動] account-plugin-flickr/xenial,xenial,now 0.12+16.04.20160126-0ubuntu1 all [インストール済 み、自動]
7 autoremoveされるパッケージの一覧を表示する
autoremoveを–just-printで実行してRemvと表示されるパッケージを見つけます。
$ apt autoremove --just-print | grep "^Remv " | cut -d' ' -f 2 WARNING: apt does not have a stable CLI interface. Use with caution in scripts. emacs24 emacs24-bin-common emacs24-el emacs24-common emacs24-common-non-dfsg libgif7 liblockfile1 liblockfile-bin libm17n-0 libotf0 m17n-db