システムにインストールされているライブラリーは使用しない新しいタイプのパッケージ形式が 近年出てきました。
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/ に保存されます。
UBUNTU 20.04LTSにおいて、
sudo snap install multipass
と打ちましたら、
error: access denied (see ‘snap help login’)
と出てしまいました。
パーミッションか何かの問題でしょうか。コメントをいただければ幸いです。宜しくお願いします。
sudo のパスワード間違いか、文字の入力ミスでしょうかね〜。
追記:入力ミスは無いと思います。
sudo snap reflesh
においても、
error: cannot communicate with server: Post http://localhost/v2/snaps: dial unix /run/snapd.socket: connect: connection refused
このようなエラーが出ています。