つれづれ電脳記(日くらしPCに向かひて)

つれづれなるままに、日くらしPCに向かひて、その悪戦苦闘ぶりをそこはかとなく書き付くるおじさん。たまに雑談[管理人:goosyun]

つれづれなるままに、日くらしPCに向かひて、デジタル関係の悪戦苦闘ぶりをそこはかとなく書き付くるおじさんです。
たまに雑談してます。連絡・問い合わせフォームは、ページ最下部に置いています。[著者(運営人):goosyun]

(当ブログには本文中に広告リンクが含まれています。)

GIMP旧バージョンがUbuntuにインストールされるのはなぜ?

Ubuntuにインストールされるアプリのバージョン

 我が家に数台あるノートPCの内、1台のOSは、LinuxUbuntu(ウブントゥ)です。Ubuntuのバージョンは24.04LTSです。
 そのPCに、先月(2025年6月)、画像編集ソフトGIMP(ギンプ)をインストールしました。
 GIMPは、今年(2025年)3月、新バージョン3.0がリリースされています。だから、GIMPをインストールしたら、最新バージョン3.0がインストールされるだろうと期待していました。
 ところが、sudo apt install gimp を実行した結果、インストールされたのはGIMP2.10でした。
 
 なぜ、旧バージョンがインストールされるのだろうか。なぜ、新バージョンがインストールされないのだろうか。最初のうちは、疑問でした。新バージョンのリリースからすでに数か月も経過しているけれども、まだ、Ubuntu側でのパッケージ化作業が間に合っていないのだろうか、などと思っていました。
 その関係のことを調べていたら、その答えが見つかりました。実は、私はUbuntuのことが全く分かっていなかったのです。恥ずかしながら、基本からして理解していませんでした。

 上記の「なぜGIMPの旧バージョンがインストールされるのか?」に対する、その答えは、
   秀和システム
   「Linuxをマスターしたい人のための実践Ubuntu(第2版)」
    水野 源  著
に、丁寧な解説がされていました。

 「実践Ubuntu第2版」の323ページ中の該当部分を、ここに引用します。

《実践Ubuntu第2版からの引用》
 (Ubuntuの)パッケージは一旦リリースされると、一部の例外はあるものの、バージョンアップは原則として行われません。たとえば、Aというアプリケーションのバージョン1.0が、24.04LTSでパッケージが提供されたとしましょう。開発元では、開発が進むごとにバージョン1.1、1.2、1,3……と新しいバージョンをリリースします。しかし、24.04LTSのパッケージは、1.0のまま更新されません。セキュリティ修正などが発生した場合は、1.0をベースに修正パッチのみを適用していきます。

《引用終わり》

と、記載されています。

 Ubuntuリリース時にパッケージとして提供されたアプリケーションは、原則バージョンアップはない、このようにはっきりと書かれています。このことから、たとえアプリ開発元でバージョンアップをしていても、インストールされるアプリは、Ubuntuリリース時の旧バージョンのものとなります。

 では、それはいったいなぜでしょうか。
 その理由を理解するには、Ubuntuにおけるパッケージ管理システムの仕組みを知る必要があります(パッケージ管理は、Ubuntu以外の他のディストリビューションでも必要とされます。)。

 

パッケージ管理システム

 アプリケーションの開発においては、度々必要とされる、同じような処理というものが出てきます。そうした定番処理は、その都度、一からコードを書いて、毎回作成するなんてのは効率的ではありません。そこで、繰り返し必要とされる共通の処理は、開発者自身がコードを書かなくても、プログラム用の部品として別に提供されています。その汎用部品の集まりがライブラリです。アプリ開発者は、ライブラリの機能を呼び出して利用します。そして、さまざまなアプリから利用されるライブラリが、共有ライブラリです。ライブラリも独立のパッケージです。
 そうすると、パッケージの多くは、先にインストールしておかねばならない別のパッケージを持つことになります。これが、かの有名な「パッケージの依存関係」です。アプリによっては、別パッケージに依存し、そのパッケージはまた別パッケージを要求し、さらにそのパッケージはまた別の・・・と、芋づる式に複雑な依存関係を持つものもあります。
 こうした依存関係を自力で解明して把握し、必要なパッケージをすべて手動で取り揃えことは難儀なことです。それに対処してくれるシステムが、「パッケージ管理システム」です。パッケージ管理システムは、アプリのインストール等に当たって、自動で依存性の解決を行い、必要なパッケージも合わせてインストールしてくれます。
 パッケージ管理システムはいくつかの種類があり、ディストリビューションによって異なります。Ubuntuでは、APTというシステムが採用されています。APTのフロントエンドがaptコマンドです。

 以上のことを前提に、画像編集アプリGIMPのインストールについて見ていきます。
 Ubuntu24.04LTSがリリースされた当時の、GIMPのバージョンは、2.10でした。つまり、GIMP2.10を前提にして依存性解決がなされています。
 仮に、GIMPのバージョンを3.0に上げるとなると、依存している共有ライブラリのバージョンも上げる必要が出てきます。しかし、うかつに共有ライブラリのバージョンを上げると、それに依存している他のアプリケーションに影響します。共有ライブラリをいじくると、最悪、それに依存している他のアプリに不具合が出ます。そうなったら、大混乱です。GIMPのような大型GUIアプリとなると、複雑で大規模な依存関係を持っているかもしれず、そうなると、なおさらです。
 そのために、Ubuntuリリース時に提供されたアプリは、その時点でのバージョンに固定されるというわけです。たとえ開発元でバージョンアップされたとしても、いったんリリースされたUbuntuの構成員となったアプリは、自分一人だけ抜けがけしてバージョンアップすることは禁止されます。
 このような仕組みによって、Ubuntu24.04LTS環境にGIMPをインストールするとなると、バージョンは2.10となるわけです。そうです、現段階ではGIMP3.0がリリースされていても、です。
 ちなみに、Ubuntu25.04に対しては、GIMP3.0が公式リポジトリに提供されています(・・・のようです。)。というのは、Ubuntu25.04リリース時には、GIMP3.0がすでに出ていたからです。ですから、aptコマンドを使ってGIMPをインストールすると、Ubuntu25.04の場合には、GIMP3.0が入ることになります。

GIMP V4.0は将来のリリースを仮定してのことです。

ユニバーサルパッケージ

 Ubuntuリリース後には、アプリの新バージョン投入はないということは、LTSの場合、長期間(原則5年間)の安定運用が保障されることを意味し、その面では好都合です。けれども、アプリのバージョンがOSのライフサイクルに縛られるということは、それは同時にデメリットでもあります。アプリの新バージョンで提供される魅力的な新機能を目の前に見せつけられながら、手を出せないもどかしい状況を強いられます。
 また、各ディストリビューション採用のパッケージ管理システムがばらばらで異なり、パッケージフォーマットもばらばらです。アプリも開発者も利用者も、不便を強いられることになります。
 実践Ubuntuの著者水野源氏は、これらのことを「混ぜるな危険」と書いています。
 そこで、Linuxカーネルが動いていれば、ディストリビューションやリリースに関係なく動く統一的なパッケージを作る試みが始まりました。これが「ユニバーサルパッケージ」です。
 ユニバーサルパッケージは、アプリが動作するために必要なもの、必要な環境一式が単一のパッケージに取り込まれ、自己完結型のパッケージとなっています。これによって、依存関係の束縛から解放するわけです。ディストリビューションが異なっても、また同一ディストリビューションのリリースが異なっても、その影響を受けることなく動作します。

 ただし、ユニバーサルパッケージも、フォーマットが統一されているわけではなく、いくつかの種類が存在します。
 主なものとして、1.AppImage、2.Flatpak、3.Snap があります。Flatpakは、FedoraおよびRHELが推進しているフォーマットです。Snapは、Ubuntuというか、Canonicalが推進しているフォーマットです。
 Ubuntuには、Snapが標準でインストールされています。例えば、Ubuntu 24.04 LTS上のFirefoxThunderbirdは、Snapでインストールされています。

 最初に書いたように、我が家のUbuntu PCにGIMPをインストールしたら、最新版でない、GIMP2.10が入ってしまいました。このバージョンでも動くので、支障はなかったのですが、やはりGIMP3.0の新機能が魅力的に感じられます。
 とうとう我慢できなくなり、先日、deb版GIMP2.10をアンインストールして、改めてSnap版のGIMP3.0をインストールし直しました。GIMP3.0はいくつかのバグが確認されていますが、現在、我がUbuntu PC上で、元気にご活躍でございます。ユーザーであるgoosyunは操作に未熟なために、ほんのごく一部の使い方しかできていませんが。

 

 それではまた次の記事で。
  goosyun