LinuxでSnapパッケージを操作する方法

公開: 2022-01-29
Ubuntu

snapを使用してLinuxソフトウェアパッケージをインストールすると、依存関係地獄や他の動作中のアプリケーションの破壊に別れを告げることができます。 Snapパッケージは元々Ubuntu用に設計されていましたが、現在ではさまざまなLinuxディストリビューションで利用できます。

スナップパッケージとは何ですか?

以前は、Linuxにアプリケーションをインストールすることは潜在的に苛立たしい経験でした。 特定のライブラリを見つけるためだけに何かをインストールするか、他の依存関係が欠落しているか、古くなっています。 次に、不足しているリソースを探してインストールしますが、置き換えたライブラリのバージョンに依存する別のアプリケーションを見つけるだけです。 1つを修正し、1つを壊して、繰り返します。

これは、apt、dnf、pacmanなどのより優れたパッケージ管理システムによって改善されました。 ただし、同じアプリケーションの異なるバージョンをインストールする必要がある場合は、依然として問題に直面します。 または、ライブラリの特定のバージョン(ただし異なるバージョン)に関連付けられているために衝突する2つのアプリケーションを使用する場合。

これらの問題に対する1つの解決策は、アプリケーションのパッキングおよびデプロイメントシステムです。 Snappyは、これらの中で最も人気のあるものの1つです。 これは、UbuntuTouchイニシアチブを思い起こさせるClickと呼ばれるパッケージ化および展開システムに基づいています。 AppImageとFlatPackは、あなたが遭遇したかもしれない他のものです。

これらのシステムは、依存関係やその他の要件とともにアプリケーションを単一の圧縮ファイルにカプセル化します。 その後、アプリケーションは一種のミニコンテナで実行されます。 サンドボックス化され、他のアプリケーションから分離されています。 アプリケーションがパッケージ化されている、または必要なライブラリやその他のリソースは、アプリケーションだけで利用できます。

広告

これらは従来の意味でインストールされないため、同じリソースの異なるバージョンを必要とする他のアプリケーションで問題が発生することはありません。 各アプリケーションは独自のサンドボックスにあるため、競合するライブラリバージョンを必要とするアプリケーションをインストールして実行することもできます。

ただし、通常の方法でインストールされていない場合、どのように処理されますか? さて、単一のパッケージファイルがダウンロードされ、解凍され、 SquashFS仮想ファイルシステムとしてマウントされます。 次に、仮想環境として表示されます。 これらはすべて舞台裏で行われます。 アプリケーションをインストールしただけで、アプリケーションにアクセスできるようになります。

もちろん、各パッケージファイルにはアプリケーションが必要とするすべてのリソースが含まれている必要があるため、パッケージファイルは大きくなる可能性があります。 また、MySQLやApacheなど、通常は1回だけインストールするリソースを複製するのも簡単です。 2つの異なるsnapアプリケーションが同じリソースを必要とする場合、それぞれが独自のコピーを持ち込みます。

ただし、これは、インストールの単純さと、リソースの競合による問題の解消とのトレードオフです。

snapdのインストール

SnappyはUbuntu16.04で導入されたため、そのバージョン以降を実行している場合は、すでに問題ありません。 私たちのマシンでは、SnappyはManjaro 18.04にインストールされていましたが、Fedora31にインストールする必要がありました。

snapは、パッケージファイルの名前であると同時に、それらを操作するために使用するコマンドでもあります。 舞台裏では、 snapdデーモンは、コンピューターにSnappyがまだインストールされていない場合にインストールする必要のあるパッケージの名前でもあります。

snapdをFedoraにインストールするには、次のコマンドを入力します。

 sudo dnf installsnapd 

広告

Manjaroにインストールする必要がある場合は、次のコマンドを使用します。

 sudo pacman -Sy snapd
 sudo systemctl enable --now snapd.socket

snap versionコマンドを使用して、 snapクライアントのバージョン、 snapdデーモン、およびソフトウェアシリーズ番号を確認できます。 Linuxディストリビューションの名前とリリース、およびカーネルバージョンも表示されます。

次のように入力します。

 スナップバージョン

スナップパッケージのインストール

snapパッケージをインストールするのは非常に簡単なプロセスです。 snapを使用してsnapパッケージを探し、必要なものをインストールできます。

次のように入力して、gimpイメージエディタを探してインストールします。

 スナップ検索gimp 

snapは検索の手がかり「gimp」に一致するものを検索し、その結果を返します。 検索語に一致または言及しているものはすべて検索されます。

パッケージの1つをインストールするには、以下に示すように、[ Name列の値を使用します。

 sudo snap install gimp 

広告

ダウンロードすると、完了率が上昇し、ターミナルウィンドウの左側にプログレスバーが表示されます。 インストールが完了すると、パッケージがインストールされたことを通知するメッセージが表示されます(以下を参照)。

dfコマンドを使用して、Linuxコンピューターに構成されているさまざまなファイルシステムの容量と使用状況を確認できます。 その出力をgrepコマンドにパイプして「gimp」を検索すると、インストールしたパッケージのエントリが分離されます。

次のように入力します。

 df | grep gimp 

これは、スナップパッケージがファイルシステムであるかのようにマウントされたことを示しています。 マウントポイントは、 snapディレクトリ/snap/gimp/252にあります。 「252」は、このバージョンのgimpのリリース番号です。

関連: Linuxでgrepコマンドを使用する方法

ファイルシステムは/dev/loop18としてリストされています。 ループデバイスファイルは、通常のファイルをブロックデバイスとしてアクセスできるようにするために使用されます。 これらは通常、ファイルシステムをディスクイメージにマウントするために使用されます。 この場合、彼らはsnapパッケージ内にSquashFSファイルシステムをマウントしています。 「18」は、これがこのLinuxコンピューターで使用されている18番目の/dev/loopデバイスファイルであることを意味します。

dfコマンドを使用して、これをすばやく確認できます。 – t (type)オプションを使用して、出力をSquashFSファイルタイプのみに制限します。

次のように入力します。

 df-tスカッシュフ

マウントされたSquashFSファイルシステムが一覧表示されます。 /dev/loopデバイスファイルがそれぞれを処理し、18個あります。

広告

各ファイルシステムは、 /snapディレクトリ内のディレクトリにマウントされます。 ただし、これは、このコンピューターに18の異なるsnapパッケージがインストールされていることを意味するものではありません。 これはUbuntuディストリビューションであるため、いくつかのsnapパッケージは箱から出してすぐにインストールされ、別のパッケージをインストールしました。

さらに、 snapdをインストールすると、他のsnapパッケージのニーズを処理するためにいくつかのコアsnapパッケージがインストールされます。

以下に示すように、 snap listコマンドを使用して、インストールされているsnapパッケージを一覧表示できます。

 スナップリスト

出力が少し広かったので、リストの最後を以下に示します。

リスト全体は次のとおりです。

 名前バージョンRevTrackingパブリッシャーノート
コア16-2.43.38689安定したカノニカル*コア
core18 202001241668安定したカノニカル*ベース
gimp 2.10.18252安定したsnapcrafters-
gnome-3-26-1604 3.26.0.2019111498安定/ ...標準*-
gnome-3-28-1804 3.28.0-16-g27c9498.27c9498116安定した標準*-
gnome-calculator 3.34.1 + git1.d34dc842544安定/ ...標準*-
gnome-characters v3.32.1 + git3.b9120df399安定/ ...標準*-
gnome-logs 3.34.081安定/ ...標準*-
gnome-system-monitor 3.32.1-3-g0ea89b4922127安定/ ...標準*-
gtk-common-themes 0.1-28-g15032581440安定/ ...標準*-

ご覧のとおり、18個ではなく10個のスナップパッケージがインストールされています。ただし、これらの10個のパッケージにより、18個のSquashFSファイルシステムが作成されています。 表の列はかなり自明ですが、ここにいくつかの説明があります。

  • 名前:インストールされたsnapパッケージの名前。
  • バージョンsnapパッケージ内のソフトウェアのバージョン番号。
  • Revsnapパッケージのリビジョン番号。
  • 追跡:このsnapパッケージが更新を監視するチャネル。 四つあります:
    • 安定:デフォルトのチャネル。 その名前が示すように、このチャネルには最も安定したパッケージが含まれています。
    • 候補:このチャネルは安定性が低くなりますが、コードが完全なリリース候補レベルのソフトウェアが含まれているため、非常に近くなります。 安定したチャネルに移動する前に、最終テストを通過します。
    • ベータ版:このチャネルは開発サイクルの品質が遅いですが、安定しているとは限りません。
    • エッジ:初期のビルドテスター向け。 このチャネルは、重要な作業や実稼働コンピューターでは使用しないでください。 ここにドラゴンがいます!
  • 出版社snapパッケージをリリースした個人、会社、または組織。 確認済みの発行元である場合(およびターミナルウィンドウがUnicodeをサポートしている場合)、発行元の名前の横に緑色のチェックマークが表示されます。 チェックマークが表示されない場合は、アスタリスク( * )が表示されます。
  • :コメントや追加情報はここに表示されます。

スナップチャンネル

infoオプションを使用して、 snapパッケージの説明を取得できます。

これを行うには、次のように入力します。

 スナップ情報gtk-common-themes 

広告

パッケージが追跡しているチャネルと、4つのチャネルのそれぞれのsnapパッケージに含まれるソフトウェアのバージョンを確認できます。 ほとんどの場合、安定したチャネルにとどまる必要があります。

snapパッケージは、1日に4回チェックして、監視中または「追跡中」のチャネルから新しいバージョンのソフトウェアが利用可能かどうかを確認します。 snapパッケージが追跡するチャネルを変更する場合は、 refreshおよび--channelオプションを使用できます。

これを行うには、次のように入力します。

 sudo snap refresh gtk-common-themes --channel = beta 

新しいバージョンのソフトウェアが利用可能であれば、それがインストールされますが、ここではそうではありませんでした。 ただし、 snapパッケージは現在ベータチャネルを追跡しています。 新しいベータ版がリリースされるとすぐに、自動的にダウンロードされ、アップグレードされます。

--listオプションを使用して、コンピューターにインストールされているsnapパッケージのいずれかで更新が利用可能かどうかを確認できます。

これを行うには、次のように入力します。

 sudo snap refresh --list 

コンピューターのsnapパッケージが追跡しているチャネルのいずれかに新しいソフトウェアバージョンが含まれているかどうかが通知されます。

広告

ソフトウェアの新しいバージョンが利用可能な場合は、以下に示すように、 refreshオプションを使用して手動で更新を強制できます。

 sudo snap refreshgtk-common-themes 

スナップパッケージの削除

snapパッケージをアンインストールするには、以下に示すように、削除オプションを使用できます。

 sudo snap removegimp 

スナップチートシート

スナップパッケージの使用は非常に簡単ですが、次のようなコマンドのリストをまとめました。

  • パッケージを検索するには: snap find package_name
  • パッケージをインストールするには: sudo snap install package_name
  • インストールされているすべてのパッケージを表示するには: snap list
  • 単一のパッケージに関する情報を取得するには: snap info package_name
  • パッケージが更新のために追跡するチャネルを変更するには、次のようにしますsudo snap refresh package_name --channel=channel_name
  • インストールされているパッケージの更新の準備ができているかどうかを確認するには: sudo snap refresh --list
  • パッケージを手動で更新するには: sudo snap refresh package_name
  • パッケージをアンインストールするには: sudo snap remove package_name

関連:開発者と愛好家のための最高のLinuxラップトップ