treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

Ubuntu16.04ではapt-getでなくaptコマンド

今日はちょっとしたUbuntuのTIPSです。
Ubuntu16.04の環境を用意した時の話をご報告します。

OS起動後のアップデート

OS起動後のアップデートでは「sudo apt-get update&upgrade」でパッケージを最新にします。
さあ終わった終わった、と思って、再度apt-getで更新確認してみると…

----------------------------------------------
sudo apt-get upgrade実行結果
----------------------------------------------
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
linux-headers-4.4.0-31 linux-headers-4.4.0-31-generic linux-image-4.4.0-31-generic linux-image-extra-4.4.0-31-generic
Use 'sudo apt autoremove' to remove them.
The following packages have been kept back:
snapd ubuntu-core-launcher
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
----------------------------------------------

おや?「The following packages were automatically installed and are no longer required:」とありますので、自動的にインストールされたパッケージによって不要になったパッケージがあるようです。
指定されたように「sudo apt autoremove」を実行してから、再度apt-getを実行してみます。

----------------------------------------------
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
snapd ubuntu-core-launcher
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
----------------------------------------------
そうすると、不要になった「linux-headers-4.4.0-31 linux-headers-4.4.0-31-generic linux-image-4.4.0-31-generic linux-image-extra-4.4.0-31-generic」は削除されたので表示されなくなりましたが、「The following packages have been kept back」自体は残っています。「snapd ubuntu-core-launcher」というパッケージが対象で、このパッケージは元に戻っていますよ、アップグレードされませんよ、ってメッセージが出ています。

はて?

apt-getよりもapt?

どうもUbuntuのバージョン16.04以降ではapt-getよりもaptコマンドによる更新が優先されるようです。
なのでapt-get dist-upgradeを実行するのと同等のコマンドapt full-upgradeを実行しなきゃいけない、ってことらしい。
あんまピンときませんが、aptitude推奨からapt-get推奨に代わったのと同様にapt-getの利用からaptの利用に推奨が代わったということと解釈しています。
(あまり詳しくは理解していないのですが…ここまで読ませといてすいません。)
apt-get dist-upgradeは元々依存関係の問題から重要じゃないパッケージは削除することがあります。同等のコマンドであるapt full-upgradeを実行すると同様のことが起こりそうです。
ただ、いきなりやってしまう前にちょっと試しておきたいのが「apt update」してから「apt upgrade」をやってみようと思いました。「apt full-upgrade」が「apt-get dist-upgrade」相当なのであれば、「apt update」が「apt-get update」で「apt upgrade」が「apt-get upgrade」ってことになります。

やってみる

早速やってみると
----------------------------------------------
$ sudo apt update
Hit:1 http://jp.archive.ubuntu.com/ubuntu xenial InRelease
Hit:2 http://jp.archive.ubuntu.com/ubuntu xenial-updates InRelease
Hit:3 http://jp.archive.ubuntu.com/ubuntu xenial-backports InRelease
Hit:4 http://security.ubuntu.com/ubuntu xenial-security InRelease
Reading package lists... Done
Building dependency tree
Reading state information... Done
2 packages can be upgraded. Run 'apt list --upgradable' to see them.
----------------------------------------------
「2 packages can be upgraded.」と最後に表示されたので、aptコマンドなら表示されている「snapd ubuntu-core-launcher」の二つがアップグレードできるように見えます。「apt list --upgradable」で見れますよ、って記載がありますね。記録忘れましたが。

続いてapt upgradeを実行してみます。
----------------------------------------------
$ sudo apt upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
snap-confine
The following packages will be upgraded:
snapd ubuntu-core-launcher
2 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 8,786 kB of archives.
After this operation, 19.3 MB of additional disk space will be used.
Do you want to continue? [Y/n]
----------------------------------------------
「snapd ubuntu-core-launcher」の二つがアップグレード対象として表示されてきました。
「次の新しいパッケージがインストールされます。」というメッセージの後にsnap-confineという表記が見て取れます。「以下のパッケージがアップグレードされます」の表記には引っ掛かっていた「snapd ubuntu-core-launcher」が表示されており、インストール&アップグレードが実行される、という状況に見えます。

早速実行してみると、無事インストール完了、OSの起動上も問題なさそうです。
念のため、「sudo apt-get upgrade」を実行しても「0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.」となることが確認できましたし、「sudo apt upgrade」を実行しても「0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.」であることが確認できました。

今後はapt-getだけじゃなくaptコマンドにも注意が必要ですね。