Ubuntu日本語フォーラム
ログインしていません。
こんにちは、ubuntuを使っていますが、細かいことにはうといので教えて下さい。
現在20.04.6LTSを使っていますが、22.04.5 LTSが使えるのでdo-release-upgradeしてね、とSSHで接続するたびに言われます。
また、ubuntuの最新バージョンは24.04で、2つめのメジャーバージョンがでて時間もたっているので、
22.04にあげた後に24.04に上げた方が良いのかな?と思い始めました。
使っているパッケージは主にApache,PostgreSQL,Postfix,Dovecotぐらいです。
普段のupdateはapt update -> apt upgradeで行ってます。
もし、24.04に上げた場合はこのapt upgradeで、Apache等のパッケージのメジャーバージョンも上がってしまうのでしょうか?
もし上がるのであれば、自動的に上書きされるのでしょうか?それとも、同時に複数のバージョンが存在する状態になるのでしょうか?
逆に自動的に上がらないのであれば、OSのメジャーバージョンだけ上がって他のパッケージは旧型のままというのは、
これはやっぱりまずい気がしますが、いかがでしょうか?
試せば良いのでしょうけれど、その環境などが今はなく、ご存じの方がいらっしゃったら教えていただけないかと思い、投稿させていただきました。
ご存じの方いらっしゃったらお願いします。
オフライン
基本的にはパッケージのメジャーバージョンが上がるのはOSのアップグレードをしたときだけです。
つまり、
nove による投稿:
もし、24.04に上げた場合はこのapt upgradeで、Apache等のパッケージのメジャーバージョンも上がってしまうのでしょうか?
については、apt upgradeはOSのアップグレードをするものではありませんので、基本的には"いいえ"です。
「もし上がるのであれば、自動的に上書きされるのでしょうか?それとも、同時に複数のバージョンが存在する状態になるのでしょうか?」についても含め、https://packages.ubuntu.com/ のパッケージ情報を絡めて説明します。
同ページの「Distribution:」を「すべて」にしてpostgresqlを検索すると(https://packages.ubuntu.com/search?keyw … ection=all)、nobleとnoble-updatesを見ると「16+257build1」が「16+257build1.1」へのマイナーアップデートに留まっているのが、focal(20.04)からjammy(22.04)では「12+214ubuntu0.1」から「14+238」へ、jammyからnoble(24.04)では「14+238」から「16+257build1.1」へバージョンが上がっているのがわかると思います。つまり、このパッケージはOSのバージョンを上げると自動的にこの様なバージョンに遷移するということです。
大半のパッケージはこのようにOSのアップグレードで自動的に上がる(上書きされる)形となっています。
※ focalとfocal-updatesを例として用いなかったのは、セキュリティー更新があったためにfocalのほうもそのバージョンで置き換えられたため、現状は両者同じ12+214ubuntu0.1となってしまっているためです。つまり、初期のバージョンがいくつだったのかがわかりません。
一方、複数のバージョンが共存可能な形のパッケージもあります。
GCCなどがそうなのですが、PostgreSQLも(共存とはちょっと違ったりはしますが)実はその一つです。「 apt show postgresql 」コマンドで確認するとわかりますが、このパッケージは本体ではなく本体をインストールするための"メタパッケージ"です。「Depends:」に「postgresql-12」とありますがこれ(と更にその依存のpostgresql-client-12など)が本体であり、postgresqlパッケージをインストールすると本体であるpostgresql-12が自動的にインストールされるという仕組みです。今挙げたのはfocalの情報ですが、jammyを見ますとそちらでは「postgresql-14」に依存しています。つまり、OSのアップグレード(20.04から22.04へ)をすると自動的に「postgresql-12」とは別パッケージの「postgresql-14」がインストールされることになります。このとき古いバージョンのpostgresql-12はどうなってしまうのかですが、postgresql-12のパッケージ情報(https://packages.ubuntu.com/focal/postgresql-12)を見るとページの上のほうにあるのですがfocal*でしか提供されていないことがわかります。jammyでは提供されていませんので、このような"アップグレード先ではリポジトリーから外れているパッケージ"は、基本的にはそのまま残ります(依存関係によってはアップグレード時に削除されます)。とはいえ、パッケージが更新されなくなるわけですから使うべきものではありません。PostgreSQLの場合はシステム管理者にデータの移行をさせるために意図的に残るようにしているようです。(ちなみに、g++の本体などのようにアップグレード先のバージョンでも提供されている場合は、古いバージョンのパッケージは自動的にインストールされたものであればOSのアップグレード時に削除候補指定されたりします。リストから除外したいのであれば「 sudo apt install パッケージ名 」を実行して"手動でインストールした"ことにすれば基本的には回避可能です。が、やるならアップグレード後のほうがトラブル予防になります)
それはそれとして、OSのアップグレードではどのパッケージであっても依存関係によって削除されてしまう可能性がゼロではありません(関係無さそうなパッケージが間接的に影響することがある)ので、アップグレード時に削除されるパッケージの確認を注意深くしておくのが良いかと思います。アップグレードの最初と最後で確認できます。
それと、もしSSH越しにアップグレードを行うのであれば注意事項がないか調べておいたほうが良いかもしれません。そういう話を見かけた記憶があります。
オフライン
Templerさん、とっても詳細なご説明をいただきありがとうございました。
Ubuntuパッケージ検索の使い方から、apt showの見方まで変わりました。
OSのアップグレードも促されますが、すべての影響範囲を考慮してとなると、
新たなサーバを用意してそこに最新のOSをインストールし、データを移行した方が安全な気がします。
OS自体のセキュリティーホールが出てしまったらそれはそれで怖いですが、
1つのサーバで無理にOSのメジャーバージョンを上げる必要は無いかな?と思います。
話は変わりますが、
Templerさん、とってもお詳しいですね。
そのあたりを詳細に書いてある書物などを、もし、ご存じでしたら教えていただけないでしょうか?
今はネット上の方が情報量は多い気がしますが、首尾一貫した情報は本の方が合ってる気がしまして。
それにしてもとっても助かりました。
ありがとうございました
オフライン
経験則ですがdist-upgradeって大概失敗するので(パッケージもそうですしカーネルとかGrubとかもおかしくなることがある)安全策をとるならデータのバックアップをとって新規インストールした方が安全。(何回も躓きました)
オフライン
arrayさん、ありがとうございます。
arrayさんのお話を伺って、やっぱりOSのメジャーバージョンのアップグレードはやらないでおこうと思います。
SSHでログインしたときにいつも新しいメジャーバージョンがあるよ~と表示されるので、しなくちゃいけないのかな?と思ってましたが、
その他のパッケージとのバランスも考えると、そのOSのメジャーバージョンで付いてくる各パッケージを使った方がちゃんと動きそうだし、
数年に一度のことだからハードウェアの劣化も考慮すれば、upgradeせず、まるごと新しいサーバを用意してそちらに移行するのが良さそうです。
ありがとうございました!
オフライン
nove による投稿:
そのあたりを詳細に書いてある書物などを、もし、ご存じでしたら教えていただけないでしょうか?
今はネット上の方が情報量は多い気がしますが、首尾一貫した情報は本の方が合ってる気がしまして。
本を読んでいたのはLinuxOSを使い始めた頃だけなので、私は知りません(汗) というか、この辺りはネット上でも見たことありませんし、本ではますます無いような気はするんですが。ある…んですかね?
ちなみに、私がアップグレードに失敗(不具合)した経験は、PPAのパッケージを利用させていただいていた頃のUbuntu 10.04以前とi386なパッケージを削除し忘れた22.04から24.04へのアップグレードだけです。他は、このフォーラムに報告されたものや「このタイミングは失敗するんじゃなかろうか?」といったものを試して実証した、といったものくらいで、これも失敗とカウントするならそれなりの数はあるわけですが、しかし、失敗しても失敗で終わらせず原因と対策を調べたり、気になった仕組みを調べたりと、そういったものの積み重ねが現在の失敗のなさに繋がっているんだろうなと思っています。
オフライン