Ubuntuのパッケージマネージャー関係を少しでも整理したい

パッケージというのはこの世界にあふれている。それを整理するものこそがパッケージマネージャーだが問題としてパッケージマネージャーまでこの世界に溢れかけている。これはよくない、ということでパッケージマネージャーがあふれないようにしようという試み。なおパッケージについての話題なので厳密にはパッケージマネージャーではないものも含めます。

参考サイト 2024/0419参照

【第4回】これで脱・初心者。Ubuntuのパッケージ管理入門

[重要なのに忘れがちなapt関係のコマンドのメモ](https://qiita.com/karaage0703/items/ f01db1cf49b151022b7c)

apt vs apt-get コマンドの違いと、公式が”本当に”推奨している使い方とは

aptとapt-getの違いとは?どっちを使うべき?

Ubuntuのaptを調べたのでまとめておく

Snapパッケージとは

apt

Advanved PackagingTool の省略(Advanced Package Toolとも)。意外とapt は使っていてもフルで聞いたことはなかった人も多いのでは。

Ubuntuを含めたDebian系のパッケージ管理ツール。

特に問題がないならこれを使っていけばubuntuの公式リポジトリから更新してくれて依存関係などで必要なパッケージなども探してきてくれる。Ubuntu公式リポジトリ以外にもサードパーティのリポジトリもあって例えばvivaldiとかはvivaldiのリポジトリがあってインストールのときにそのリポジトリも加えることでapt updateやupgradeで更新が可能になる。

インストールしたいパッケージの公式が特に特別なアナウンスをしておらずaptでインストール可能ならこれで大抵の場合、問題ない。

ubuntuの場合debファイルをダウンロードしてそれをもとにインストールすることも多いですがこれも裏でaptが動いてくれていることが多いです。そのため多くの場合aptを使うことになります。

よくある疑問のaptとapt-getって何が違うの問題ですが基本的にはaptはapt-getの上位互換的な存在。

apt-getが昔から使われていたんだけど2014年からaptも使われるようになった。 apt-cacheというapt-getの兄弟みたいなコマンドもありこちらはパッケージのインストールなどは行わないが内部の情報からパッケージを検索したり依存関係の整理をしたりする。apt-cacheとapt-getを統合する形でaptがつくられたみたい。いちいち分けるのはだるいってなったんでしょうか。

公式的にはapt推奨で基本的に依存関係などの機能もaptのほうがいいのでaptを使う方針でいいと思います。 aptになってからすでに10年たっているのでapt-getがサポートされなくなっていく流れではあるでしょうし。それにaptのほうが見ていて楽しいです。

ただしシェルスクリプトなどの場合にはaptがオプションなどを内包していることからapt-getやapt-cacheを使ったほうがいいとされています。

apt の よりグラフィカルな感じのコマンドとしてaptitudeもありますがあんまり使わない。

snap

Ubutnuを使っているとaptについでこちらもよく聞くのではないでしょうか。snap storeという形で聞いたこともあるかと。

snapとaptの大きな違いはsnapは依存関係を考えなくていいところです。 パッケージの依存するものも含めてまるごとひとつにしているのでそんな問題が起こらないのです。ただしこれには無駄にディスクを食うようになってしまう、重いというデメリットもあります。ただ最近はもうディスク容量が指数関数的に増加しているのであまり意識しなくていいかなと。(Apexが50GB以上ある時代です。)

snapstoreというわかりやすいGUIもあるのでよく使われています。aptとは独立して存在しているのでやろうと思えばapt版とsnap版を共存できるソフトもあります。ただしこんなことやっているとわけわからなくなるのでやめましょう。

alt text

↑snapストアのkde版だと思ってましたがソースのところでdebの方も選べるんですね。どっちを選ぶかは好みとソフトウェアの対応具合によるので難しいところです。

snapのちょっと気になるところとして勝手にアップデートしてしまう点があります。apt updateのようにしなくとも気づいたら更新されています。Arch的なローリングリリースの概念が好きな人はいいですが勝手にアップデートして勝手に使い勝手悪くなったり動かなくなることもあるので考えものではあります。実際、最近bitwardenというパスワードマネージャーが使えなくて困っています。

ここからマイナー?

Appimage

linuxでソフトをインストールするとオプションで使われていたりすることが多い方式。snapと同様、一つに依存パッケージなどもすべてまとめている。こちらは一つのファイルで完結しているのでsnapよりもまとまっている感がある。software.appimageみたいなファイルになっておりこれを実行するだけでソフトが使えるという手軽さが売り。代償としてデータ量は大きくなりがち。一つのファイルにすべてがまとまる関係上、複数バージョンを簡単に共存させ使い分けることが可能なのも嬉しいポイント。(そんな必要あるかは知らんけど) ファイル一つなのでとにかく扱いは楽。usbに入れて新しいパソコンに入れても使えるし。 ただ少し工夫しないとタスクバーやスタートメニューに表示させられないのがかなしい。後、ファイルをどこにおいたか見失いがち。とはいえ結構便利で個人的には最高の方法とは思わないが使っていてストレスは感じにくい方法。 ソフトウェアの提供元の視点でいうとリポジトリのアップデートだったりをせずにバージョン変えたら新しいファイルを提供するだけで済むのも利点なのかも。windowsで開発していて一応linuxでも使えるようにしたいみたいなソフトでよく見る印象がある。ubuntuだけでなくLinuxであれば大抵の場合動くのもいいポイント。 クロスプラットフォーム万歳\(^o^)/

Flatpak

snap等と同じくユニバーサルパッケージシステムの一つ。ただubuntuだとsnapがメインなのであまり使われないかも。自分も使ったことがほとんど無いのでよくわからない。そのうち追記したい。

まとめ

ということで簡単にまとめてみましたがまだまだ足りません。少しずつ書き足せていけたらという感じ。

今の所、私のパッケージの選び方は

1:公式推奨方法:ただし公式がlinuxをおまけ程度にやっているとバージョンが古かったりすることも。

2:apt,snapのどっちか。より更新がちゃんとされていそうな方。同じくらいならapt

3:Appimage

4:tarballを解凍してつかう

5:ソースファイルからビルド

多くの場合には1-3まででどうにかなる。4,5の方法はそれを管理するのが自分だけになりメモしていないとわけわからなくなること、そしてパッケージの依存関係などを考える必要があるかもしれないのでなるべく避けたい。