Snap(Snappy) コマンドの使い方

LINEで送る
Pocket

システムにインストールされているライブラリーは使用しない新しいタイプのパッケージ形式が 近年出てきました。
Snappy もそのタイプのパッケージ管理システムの1つで、カノニカルが Ubuntu 向けに開発していますが、 他のディストリビューションにも移植されて利用されています。
snap パッケージをインストールするためには、snap パッケージを管理するデーモン、 snapd パッケージをインストールする必要があります。
Ubutnu では、16.04 よりデフォルトで snapd がインストールされていますが、 CentOS、Fedora でもsnapdをインストールすれば、snap パッケージをインストールする事ができます。

Debian / Ubuntu ベースのディストリビューションの場合
$ sudo apt -y install snapd

Fedora の場合
$ sudo dnf -y install snapd

CentOS 7 の場合
$ sudo yum -y install epel-release
$ sudo yum -y install yum-plugin-copr
$ sudo yum -y copr enable ngompa/snapcore-el7
$ sudo yum -y install snapd
$ sudo systemctl enable snapd.service
$ sudo systemctl start snapd.service
$ sudo ln -s /var/lib/snapd/snap /snap
インストール済み Snap パッケージ一覧を表示する。
$ snap list
Name                  Version                     Rev   Tracking  Publisher   Notes
core                  16-2.38                     6673  stable    canonical✓  core
core18                20190409                    941   stable/…  canonical✓  base
gnome-3-28-1804       3.28.0-10-gaa70833.aa70833  36    stable/…  canonical✓  -
gnome-calculator      3.32.1                      406   stable/…  canonical✓  -
gnome-characters      v3.32.1+git1.2050bba        254   stable/…  canonical✓  -
gnome-logs            3.32.0-4-ge8f3f37ca8        61    stable/…  canonical✓  -
gnome-system-monitor  3.32.1                      77    stable/…  canonical✓  -
gtk-common-themes     0.1-16-g2287c87             1198  stable/…  canonical✓  -

Ubuntu 19.04 では、gnome や gtk のテーマがデフォルトでインストールされています。

Snap パッケージの検索
$ snap find 検索文字
もしくは、
$ snap search 検索文字

Snap パッケージのインストール
$ sudo snap install パッケージ名

$ sudo snap install パッケージ名 --classic

Snapには、ソフトウェアを隔離してセキュリティを高めるサンドボックス機能があります。 しかしこの制限をかけると使い勝手が悪くなるパッケージがあるので、 そのリスクを承知してインストールをするために –classic オプションを追加します。 インストール時に、classic オプションが必要なパッケージの Notes には、classic と表示されます。

パッケージの検索
$ snap search skype
Name              Version                 Publisher   Notes    Summary
skype             8.34.0.78               skype✓      classic  One Skype for all your devices. New features. New look. All Skype.

Snap パッケージのアンインストール
$ sudo snap remove パッケージ名

英語ですが、インストール出来るパッケージの概要、スクリーンショットを以下のURLから確認することもできます。
https://snapcraft.io/store

開発、ソーシャル、映像ツールなど GUI アプリが中心ですが、サーバなどのアプリも用意されています。 aptのレポジトリに存在しないパッケージは、対象パッケージのリポジトリを探して、リポジトリを手動で追加しなければ いけませんが、snap であれば対象パッケージを簡単に探せ、インストールできます。

Snap パッケージをアップデートする。

アップデート可能なパッケージ一覧
$ sudo snap refresh --list

全てのパッケージをアップデート
$ sudo snap refresh

指定したパッケージのみアップデートする
$ sudo snap refresh パッケージ名

自動アップデートする時間を表示する。
(デフォルトでは4時間間隔になっています。)
$ snap refresh --time
timer: 00:00~24:00/4
last: today at 11:00 JST
next: today at 12:43 JST

毎日 18 時にアップデートする
$ sudo snap set system refresh.timer=18:00

3時間間隔でアップデートする
$ sudo snap set system refresh.timer=00:00~24:00/3

システムにインストールされているdebパッケージと違うバージョンの同じパッケージをsnap で インストールすることも出来ます。しかしその場合、コマンド名がバッティングしてしまいます。 例えば、deb パッケージでインストールした vlc 3.0 と snap でインストール vlc 4.0 を住み分けたい時、 vlc コマンドは、deb は、/usr/bin/vlc snap は、/snap/bin/vlc にインストールされています。
コマンドを使い分けるために、snap alias コマンドを使用します。

デフォルトでは、システムの deb パッケージが実行されます。
$ which vlc
/usr/bin/vlc

snap の vlc コマンドは、vlc-4.0 に変更します。
$ sudo snap alias vlc vlc-4.0

設定されているエイリアス一覧を表示します。
$ snap aliases
Command  Alias    Notes
vlc      vlc-4.0  manual

エイリアスを削除します。
$ sudo snap unalias vlc-4.0

snap は、アップデートしたパッケージのリビジョンを保存しています。 list –all でインストールされている使用可能なすべてのリビジョン一覧表示がされるので、 リビジョンを指定して戻すことができます。

$ snap list --all
Name                  Version                     Rev    Tracking  Publisher   Notes
core                  16-2.37.4                   6531   stable    canonical✓  core,disabled
core                  16-2.38                     6673   stable    canonical✓  core
                      :
一つ前のリビジョンに戻す。
$ sudo snap revert パッケージ名

リビジョン指定で戻す。
$ sudo snap revert パッケージ名 --revision=[Rev番号]
パッケージの有効、無効化が行なえます。systemctl の disable/enable と違いパッケージ自体が利用できなくなります。

$ sudo snap disable パッケージ名
$ sudo snap enable パッケージ名

snap パッケージは、特定のバージョンを選択してインストールする事も可能です。 以下は、nextcloud を例にしたインストール方法です。 「snap info パッケージ名」と実行するとインストール可能なパッケージのバージョン一覧が表示されます。 –channel= オプションでインストールするチャンネルを選択します。

$ snap info nextcloud
               :
channels:
  stable:       15.0.7snap1               2019-04-10 (12753) 204MB -
  candidate:    ↑
  beta:         15.0.7snap1+git6.630033d  2019-04-17 (12885) 205MB -
  edge:         master-2019-04-18         2019-04-18 (12900) 210MB -
  16/stable:    –
  16/candidate: 16.0.0rc2snap1            2019-04-18 (12892) 210MB -
  16/beta:      ↑
  16/edge:      ↑
  15/stable:    15.0.7snap1               2019-04-10 (12753) 204MB -
  15/candidate: ↑
  15/beta:      ↑
  15/edge:      15-2019-04-18             2019-04-18 (12905) 205MB -
            :

Stable版のチャンネルをインストールする場合
$ sudo snap install nextcloud

Beta版のチャンネルをインストールする場合
$ sudo snap install nextcloud --beta
または、
$ sudo snap install nextcloud --channel=beta

最新の nextcloud 16.0.0rc2snap1 をインストールする場合
$ sudo snap install nextcloud --channel=16/candidate

パッケージの設定の変更は、snap コマンドを使って変更します。 snap get で nextcloud の変更可能な設定値を参照し、 snap set で設定値を変更します。

$ sudo snap get -d nextcloud
{
	"mode": "production",
	"nextcloud": {
		"cron-interval": "15m"
	},
	"php": {
		"memory-limit": "512M"
	},
	"ports": {
		"http": 80,
		"https": 443
	},
	"private": {
		"mode": "production",
		"nextcloud": {
			"cron-interval": "15m"
		},
		"php": {
			"memory-limit": "512M"
		},
		"ports": {
			"http": 80,
			"https": 443
		}
	}
}

ポート番号の設定を http : 80 -> 8080 へ変更したい場合
               [パッケージ名] [設定値]
$ sudo snap set nextcloud ports.http=8080

GUI アプリと違い、nextcloud のプロセスはデーモンサービスとして動いています。 snap services で現在起動中のサービス一覧を確認します。

$ sudo snap services
Service                    Startup  Current  Notes
nextcloud.apache           enabled  active   -
nextcloud.mdns-publisher   enabled  active   -
nextcloud.mysql            enabled  active   -
nextcloud.nextcloud-cron   enabled  active   -
nextcloud.nextcloud-fixer  enabled  active   -
nextcloud.php-fpm          enabled  active   -
nextcloud.redis-server     enabled  active   -
nextcloud.renew-certs      enabled  active   -

サービスの停止と開始
                 [サービス名]
$ sudo snap stop nextcloud.apache
$ sudo snap start nextcloud.apache

システム起動時にサービスを停止と開始
$ sudo snap stop --disable nextcloud.apache
$ sudo snap start --enable nextcloud.apache

デーモンのログを表示
$ sudo snap logs nextcloud

ログ出力をオープンにしたまま表示
$ sudo snap logs nextcloud -f

Snap がOpenGLアクセラレーション、サウンドの再生や録音、ネットワーク、
そしてHOMEディレクトリなど、外部のリソースにアクセスする為の定義を表示します。 手動で変更も可能ですが、変更の必要は通常無いので 一般ユーザはどのような設定になっているのか参照する程度でよいと思います。 実行結果の例は vlc パッケージのインターフェイスがどのようになっているのが表示されています。

$ snap connections vlc
Interface               Plug                        Slot                     Notes
camera                  vlc:camera                  -                        -
desktop                 vlc:desktop                 :desktop                 -
desktop-legacy          vlc:desktop-legacy          :desktop-legacy          -
dvb                     vlc:dvb                     -                        -
home                    vlc:home                    :home                    -
mount-observe           vlc:mount-observe           -                        -
mpris                   -                           vlc:mpris                -
network                 vlc:network                 :network                 -
network-bind            vlc:network-bind            :network-bind            -
opengl                  vlc:opengl                  :opengl                  -
optical-drive           vlc:optical-drive           :optical-drive           -
pulseaudio              vlc:pulseaudio              :pulseaudio              -
removable-media         vlc:removable-media         :removable-media         -
screen-inhibit-control  vlc:screen-inhibit-control  :screen-inhibit-control  -
unity7                  vlc:unity7                  :unity7                  -
x11                     vlc:x11                     :x11                     -

snap は、現在動作しているパッケージのスナップショットを取ることもできます。

システム全体のスナップショットを作成する。
$ sudo snap save

パッケージのスナップショットを作成する。
$ sudo snap save パッケージ名

保存されているスナップショット一覧を表示する。
$ sudo snap saved
$ sudo snap saved パッケージ名
Set  Snap                  Age    Version                     Rev    Size    Notes
3    core                  7m29s  16-2.38                     6673     126B  -
3    core18                7m29s  20190409                    941      125B  -
3    gnome-3-28-1804       7m29s  3.28.0-10-gaa70833.aa70833  36       123B  -
           :
スナップショットのリストアをする。
              [Set されたID]
$ sudo snap restore 3

スナップショットを削除する
$ sudo snap forget 3

保存したスナップショットは、zip 形式で /var/lib/snapd/snapshots/ に保存されます。

LINEで送る
Pocket

  • このエントリーをはてなブックマークに追加

コメント

  1. jazzwalker より:

    UBUNTU 20.04LTSにおいて、
    sudo snap install multipass
    と打ちましたら、
    error: access denied (see ‘snap help login’)
    と出てしまいました。

    パーミッションか何かの問題でしょうか。コメントをいただければ幸いです。宜しくお願いします。

  2. tsuyoshi より:

    sudo のパスワード間違いか、文字の入力ミスでしょうかね〜。

  3. jazzwalker より:

    追記:入力ミスは無いと思います。

    sudo snap reflesh

    においても、
    error: cannot communicate with server: Post http://localhost/v2/snaps: dial unix /run/snapd.socket: connect: connection refused
    このようなエラーが出ています。

コメントを残す

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください