質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Q&A

解決済

2回答

15345閲覧

snapとaptの違い

naonao11

総合スコア97

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

4グッド

2クリップ

投稿2018/11/18 04:04

今回ubuntu18.04にGoとnode.js、dockerを入れようと思ったのですが
snapで入れる、aptで入れるといったことが書いており何が違うのかについても調べてもよくわかりません。。。

質問として2つありまして
・snapとaptの違いについて
・Go、node、docker(dockerについてはUbuntuソフトウェアからなのか)を入れるのはどちらに入れるのが正しいのか

ご教授いただけたらと思います・・・

digitalhimiko, urbainleverrier, eien_beginner, Sateba👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

自分も気になっていたのでちょっと調べてみました。

上の2つのリンクを読んだだけですが、大体以下のような理解でよいのではないかと思います。

  • snapはパッケージ形式のこと(コマンド名もsnapだが)
    ⇒aptコマンドはdebパッケージを管理するコマンドの一つ(dpkg、apt-get、aptitudeとかいろいろある)
  • 古い環境に新バージョンのソフトウェアを提供したいが、debパッケージでは依存関係が解決できない。解決手段として、必要なものを丸ごとパッケージして、他のパッケージとの依存関係を気にせずに済むようにしたもの。
  • snapパッケージはdebパッケージと共存可能で、あるアプリケーションをインストールするのにsnapパッケージとdebパッケージの両方をインストールしても問題ない。

使い分けについて、自分の場合は以下のように考えています。

  • snapパッケージがあればsnapパッケージをインストール
  • snapパッケージがなければdebパッケージをインストール(aptコマンド使用)

【補足】

snapでインストールしたパッケージのコマンドの格納場所をwhichで調べてみたら、/snap以下に格納されていました。

sh

1$ snap list 2Name Version Rev Tracking Publisher Notes 3core 16-2.35.5 5742 stable canonical? core 4docker 18.06.1-ce 321 stable docker-inc - 5powershell 6.1.1 14 stable microsoft-powershell? classic 6 7$ which docker 8/snap/bin/docker 9 10$ ls /snap 11README bin/ core/ docker/ powershell/

パッケージごとのディレクトリを見ると、バージョンごとのファイル一式を丸ごと格納してシンボリックリンクで切り替えているようです。

sh

1$ ll /snap/core 2合計 8 3drwxr-xr-x 5 root root 4096 10月 31 22:06 ./ 4drwxr-xr-x 6 root root 4096 9月 17 08:13 ../ 5drwxr-xr-x 24 root root 333 9月 21 18:32 5548/ 6drwxr-xr-x 24 root root 333 10月 5 22:40 5662/ 7drwxr-xr-x 24 root root 333 10月 16 16:36 5742/ 8lrwxrwxrwx 1 root root 4 10月 31 22:05 current -> 5742/ 9 10$ sudo du -sh /snap/core/* 11272M /snap/core/5548 12272M /snap/core/5662 13272M /snap/core/5742 140 /snap/core/current 15 16$ ll /snap/docker/ 17合計 8 18drwxr-xr-x 4 root root 4096 10月 10 08:00 ./ 19drwxr-xr-x 6 root root 4096 9月 17 08:13 ../ 20drwxr-xr-x 9 root root 282 9月 22 2017 179/ 21drwxr-xr-x 13 root root 335 10月 1 23:43 321/ 22lrwxrwxrwx 1 root root 3 10月 10 08:00 current -> 321/ 23 24$ sudo du -sh /snap/docker/* 25171M /snap/docker/179 26379M /snap/docker/321 270 /snap/docker/current 28 29$ ll /snap/powershell/ 30合計 8 31drwxr-xr-x 4 root root 4096 11月 14 10:27 ./ 32drwxr-xr-x 6 root root 4096 9月 17 08:13 ../ 33drwxr-xr-x 8 root root 170 9月 14 07:16 11/ 34drwxr-xr-x 8 root root 170 11月 14 08:38 14/ 35lrwxrwxrwx 1 root root 2 11月 14 10:27 current -> 14/ 36 37$ sudo du -sh /snap/powershell/* 38186M /snap/powershell/11 39186M /snap/powershell/14 400 /snap/powershell/current

投稿2018/11/18 10:18

tkmtmkt

総合スコア1800

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t98907

2021/03/19 09:28

snapはまだ過渡期なのでaptがあるならaptを使った方がいいと思います。
guest

0

snapはディストリ依存をなくしてアプリをインストールできるパッケージの仕組みです。似たようなものにflatpakなどがあります。

従来のapt/debでインストールされるものとの最大の違いは実行環境です。
コンテナ技術でホストマシンのファイルシステムとは隔離された環境下で動作します。ほとんどの場合、ホスト環境のネットワークやホームパス配下をそのまま継承して動作するので違和感なく使えるようになっています。

ホストマシンのシステム領域のファイルをいじらないのでインストールやアンインストールがクリーンに行われるというメリットがありますが、依存ライブラリをアプリごとにインストールする場合があり、ディスク容量をより消費する傾向があるようです。

また、ホストのシステム領域に入れないと利用できないパッケージはsnapにはありません。aptで探して入れることになります。(例:supervisorなど)

snap/flatpakはクロスディストリを目指してはいますが実際に他のディストリで使おうとすると細かいトラブルはあると思います。セキュリティ周りやIME連携部分など。そういったトラブルに対応した調整はまだまだエンドユーザーがやることになってしまうでしょう。

個人的にはaptで見つかるものはaptで入れておくほうがトラブルは少ないと思います。snapにしかないアプリをインストールできるのがsnapの利点かなぁと。

投稿2018/11/21 01:37

nobonobo

総合スコア3367

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wwbQzhMkhhgEmhU

2019/02/03 03:57

私はこちらの意見に賛成なのですが、気になっている部分があって今更ですが少し質問させてください。 「コンテナ技術でホストマシンのファイルシステムとは隔離された環境下で動作します。」 とは、どういう意味でしょうか?chrootとかdockerコンテナみたいなものを指しているわけではないのですよね? 少しだけご説明お願いできませんか?
nobonobo

2019/02/04 23:48

snapのアプリケーションはlinuxのユーザーnamespacesという手法でホストの環境とはネットやファイルシステムを隔離したサンドボックス環境で動作します。この手法は昨今流行りのコンテナ技術も同様の手法の延長です。なので例えばホストで依存解決したライブラリをsnapアプリ側から利用することは(特別に参照可能にしない限り)できません。snap側で必要なライブラリはsnap経由でホストとは違う領域にインストールされます。
wwbQzhMkhhgEmhU

2019/02/05 00:56

そういう意味だったんですね。ありがとうございます。 丁度vscodeを実行しようとして入っていなくて、そういうサジェスチョンをbashから受けたので、調べてたらココが見つかり、気になって聞いてみたのでした。 それにしてもcanonicalそんな大掛かりなものをアプリごとに用意してるとは。。。 そういうのが嬉しいパッケージもありますが、全部そうなるとやや違和感ありますね。 時間のあるときに調べてみます。情報ありがとうございました。
nobonobo

2019/02/05 01:02

snapのサンドボックスはdockerをもっとシンプル(chrootのユーザー権限版)にしたものと考えていいと思います。
wwbQzhMkhhgEmhU

2019/02/05 01:11

なるほど、ありがとうございます。UserModeLinuxとかああいう技術に近いのですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問