えんでぃの技術ブログ

えんでぃの技術ブログ

ネットワークエンジニアの視点で、IT系のお役立ち情報を提供する技術ブログです。

FedoraにSlackをインストールする方法 (Snap利用)

お伝えしたいこと

Snapによって、FedoraにSlackをインストールする手順を紹介します。

FedoraでSlackをインストールする場合、現状Snapを使うのが最も無難な方法だと思います。
その理由については、#(参考) Snapを使う理由に記載しましたので、興味のある方はご確認ください。

Snapとは

SnapはLinuxにソフトウェアをインストールするパッケージの1種です。
以下の特徴を持ちます。1

Snapdのインストール

snapコマンドはsnapdデーモンと共に動作します。
Fedora上でsnapコマンドを使用するために、snapdをインストールします。

sudo dnf install snapd

snap versionsnapsnapdのバージョンが表示されれば、正しくインストールできています。

snap version
# snap    2.55.3-2.fc35
# snapd   2.55.3-2.fc35
# series  16
# fedora  35
# kernel  5.16.12-200.fc35.x86_64

インストール後、一旦ログインし直します。
再ログイン後、PATHの末尾に/var/lib/snapd/snap/binが追加されます。
これにより、Snapでインストールした実行ファイルにPATHが通るようになります。

echo $PATH
/home/stopendy/.local/bin:/home/stopendy/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/var/lib/snapd/snap/bin

なお、PATHの追加は、/etc/profile.d/snapd.shにて行われていました。

Slackのインストール

Snapでパッケージをインストールする際は、以下の流れで進めます。

  1. パッケージを探す
  2. Confinementを確認する
  3. インストールする

パッケージを探す

snap findコマンドでパッケージを部分一致検索できます。

snap find slack
# Name   Version  Publisher  Notes  Summary
# slack  4.25.1   slack✓     -      Team communication for the 21st century.
# (以下略)

Publisherslack✓と記載されている通り、チェックマークがついています。
これはパッケージメンテナがSnapの運営元によって公式であると確認済みであることを示しています (※)
(※) snap find --helpより

パッケージは、snapcraftのWEBサイト上でも検索できます。
https://snapcraft.io/slack

Confinementを確認する

オンラインリポジトリ上のSnapのConfinementを確認するには、snap info --verboseコマンドを使います。

snap info --verbose slack
#   confinement:       strict
# (一部のみ抜粋)

Confinementは、Snap上で動作するアプリケーションがシステムに対してどの程度アクセス権限を持つかを表します。
Confinementの値によってはインストール手順が若干変わってくるので、ここで確認しておく必要があります。

ConfinementはSnapパッケージがビルドされた時点で決まっています。
したがって、私達ユーザーが選ぶことはできません。

Confinementは3つの値を取りえます。
私達が使うパッケージは、通常strictかclassicのいずれかです。3, 4

  • strict
    • 最も一般的なconfinement
    • アプリケーションからシステムへのアクセスを適切に制限する
    • アクセス先によっては、ユーザー操作を求める (カメラなど)5
    • 許可されないアクセスは拒否する
  • classic
    • アプリケーションからシステムへのアクセスを無条件で許可する
    • classicのパッケージをインストールする前に#初期設定が必要
    • sudo snap install --classicでインストールする
  • devmode
    • 開発者向けのモード
    • 許可されないアクセスはログ出力するが、実際には許可される
    • アプリが必要とする権限の洗い出しに使えそう
    • sudo snap install --devmodeでインストールする

インストールする (strict confinementの場合)

以下のコマンドでSlackをインストールします。
Slackパッケージのconfinementはstrictなので、特にオプション指定は不要です。

sudo snap install slack

その他の基本コマンド

インストール済みのSnapパッケージを一覧表示します。

snap list
# Name   Version  Rev  Tracking       Publisher  Notes
# slack  4.25.1   61   latest/stable  slack✓     -
# (一部抜粋)

パッケージを更新するコマンドです。

sudo snap refresh

Snapパッケージを削除するコマンドも記載します。

デフォルトでは、snap restoreによって復元するためのデータを保管します。
この場合はsnap remove後もsnap listでパッケージが表示されます。
--purgeオプションを指定することで、復元用のデータを残さずに削除します。

# sudo snap remove --purge slack

(参考) Snapを使う理由

2022年3月1日以降、SlackはFedora公式リポジトリで配布されなくなりました。

slack.com - System requirements for using Slack

slack_system_requirements

SlackをFedora Linux上で動作させる公式の手段は主に2つです。

  1. RPMファイルを公式サイトからダウンロードしてインストールする
  2. Snap版のSlackをインストールする

1のRPMは、Slackのリポジトリ情報を含みません。
したがって、今後Slackをバージョンアップしたいときには都度RPMファイルをダウンロードしてインストールする必要が出てきます。
これではあまりに不便です。

そこで、2のSnap版が出てきます。
Snap版であればオンラインリポジトリにSlackが配布されているので、sudo snap refresh slackコマンド1つでSlackをバージョンアップできます。

Fedora上でSlackを使いたい場合には、Snapを使うのが正攻法だと思います。

管理が面倒になるので、DNF以外のパッケージマネージャーを使うことには多少なりとも抵抗を覚えるかもしれません。
しかし、FedoraからSlack公式のリポジトリを使うにはSnapしか現状なさそうなので、私は割り切りました。

(参考) classic confinementのパッケージインストール

classicの場合の手順についても触れておきます。
今回はVS Codeをモデルにします。

VS CodeFedoraリポジトリで提供されるので、わざわざSnapでインストールする必要はありません。
ここでVS Codeをインストールしているのは、あくまで例示のためです。

Confinementの確認

VS Codeのconfinementは、2022年5月現在classicです。

snap info code --verbose
# publisher: Visual Studio Code (vscode✓)
#   confinement: classic
# (一部抜粋)

初期設定

Classic confinementのパッケージをインストールするには、/snapシンボリックリンクを作成しておく必要があります。6

sudo ln -s /var/lib/snapd/snap /snap

シンボリックリンクを作成せずにインストールしようとすると、以下のようなエラーが出ます。

sudo snap install --classic code
# error: cannot install "code": classic confinement requires snaps under /snap or symlink from /snap
#        to /var/lib/snapd/snap

インストール

インストールの際は--classicオプションを付与します。

sudo snap install code --classic

--classicオプションを付与しないと、以下のエラーが出ます。

sudo snap install code
# error: This revision of snap "code" 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.

まとめ

Snapによって、FedoraにSlackを導入する手順を紹介しました。

Linux PC関連まとめ

endy-tech.hatenablog.jp