snapdとは?CentOS 7にインストールする方法

CentOS

CentOS向けソフトウェアのパッケージをインストールする方法として、最近はsnapdをよく目にするようになりました。

snapdとは何なのか、yumとの違いについて解説します。

snapdとは?

snapdは、クロスプラットフォームなパッケージ管理ツールです。

パッケージ管理ツールといえば、CentOSならyum、Ubuntuならapt、というようにOSプラットフォームごとに存在している感じでした。

snapdは、2021年時点では21種類と、様々なLinuxプラットフォームで使えるのが特長です。

SnapやSnapCraftとの違いは?

snapdとよく似た言葉に、SnapやSnapCraftがあります。

簡単にまとめると次のようになります。

名前説明
Snapクロスプラットフォームなアプリケーション配布パッケージのこと。
SnapdSnapを管理するためのデーモン。ほとんどの人はこれを使う。
Snap StoreSnapを配布しているWebサイト。
SnapCraftSnapを作成するためのツール。

要するに、ソフトウェアをインストールする用途ならSnapdだけ覚えておけばよいです。

snapd経由でインストールできるアプリ

利用頻度が高さそうなアプリを列挙してみました。

  • certbot
  • mysql
  • postgresql
  • aws-cli
  • Google Cloud SDK
  • heroku
  • VSCode

まだ数は多くはないので、これからといったところでしょう。

CentOS 7にsnapdをインストールする手順

それではsnapdをインストールして使ってみましょう。

CentOS 7.6以降にアップグレードする

snapdは、CentOS 8もしくはCentOS 7.6以降の対応です。

CentOS 7.0~7.5を使っているときは、CentOS 7.6以降にアップグレードしてください。

epelレポジトリをインストールする

snapdはepelレポジトリからインストールするので、epelを追加しておきます。

# yum install epel-release

yumでsnapdをインストールする

yumコマンドでsnapdをインストールします。

# yum install snapd
(中略)
Installed:
  snapd.x86_64 0:2.49-2.el7
(中略)
Complete!

snapdを起動する

systemctlでsnapdデーモンを有効化します。

# systemctl enable --now snapd.socket
Created symlink from /etc/systemd/system/sockets.target.wants/snapd.socket to /usr/lib/systemd/system/snapd.socket.

シンボリックリンクを作成する

最後に、classic snapサポートを有効化するときは、シンボリックリンクを作成します。

# ln -s /var/lib/snapd/snap /snap
# ll /snap
lrwxrwxrwx. 1 root root 19 Mar  8 00:38 /snap -> /var/lib/snapd/snap

classic snapサポートは、システムレベルで動作するソフトウェアをインストールするときに必要になります。

snapコマンドでパッケージをインストールする

早速、snapでパッケージをインストールしてみます。

snapで新規ソフトウェアをインストールするには、snap installコマンドを使います。

snap install [パッケージ名]

例えば、aws-cliをインストールするときは、snap install aws-cliを実行します。

ただ、aws-cliはclassic snapサポートが必要なアプリなので、次のようなエラーになります。

# snap install aws-cli
error: This revision of snap "aws-cli" was published using classic confinement and thus may perform
       arbitrary system changes outside of the security sandbox that snaps are usually confined to,
       which may put your system at risk.

       If you understand and want to proceed repeat the command including --classic.

classic snapサポートを有効化してインストールするときは、--classicオプションを付けます。

# snap install --classic aws-cli
aws-cli 1.15.58 from Amazon Web Services (aws✓) installed

/snapディレクトリにaws-cliディレクトリが作成されました。

# ll /snap/
total 4
drwxr-xr-x. 3 root root  30 Mar 10 02:20 aws-cli
drwxr-xr-x. 2 root root  48 Mar 10 02:20 bin
-r--r--r--. 1 root root 590 Mar  7 23:44 README

まとめ

certbotのインストール手順は、既にsnapを使う手順に変更されています。

Snapはクロスプラットフォームなので、今後はアプリが急激に増えるかもしれませんね。