誤ってアプリを実行したままにして、Software Updaterで[今すぐインストール]をクリックするとどうなりますか?


22

Software Updaterがupdate-managerポップアップ表示され、たとえばFirefoxのセキュリティアップデートが表示されます。当然、「今すぐインストール」をクリックして続行します。

ただし、これを行うときにFirefoxを実行しているとどうなりますか?Firefoxは引き続き更新されますか?更新はスキップされ、次回もポップアップしますか?このアップデートにより、Firefoxは強制的に終了し、クラッシュする可能性がありますか?ソフトウェアを部分的に更新するだけで、Firefoxのインストールが中断される可能性がありますか?


10
何も起こらず、FirefoxはRamで開いています。更新を検出し、ブラウザを再起動するように指示する場合があります。しかし、より多くの洞察と参考文献を持っている人は、より良い答えを与えることができます。
pLumo

3
私はUbuntuについて具体的には知りませんが、Archでは(この場合はそれほど違いはないと思います)、実行中にfirefoxを更新すると動作するようですが、その後firefoxで最初に行うことはクラッシュします事。私は常に、あらゆる種類のものをランタイムでロードする現代のブラウザの複雑な性質に起因すると考えてきました。しかし、私にとってはFirefoxが唯一の問題です。
03分にtomsmeding

2
Firefoxは、次にタブを開いたときに停止し、再起動が必要であることを通知します。他のアプリは何か違うことをするかもしれません。
マイケルハンプトン

回答:


40

Windowsを考えている必要があります。Unixはそれを正しく行い、その後、Windowsが登場し、物事の間違った方法を開発しました。

Windowsでは、実行中のプロセスが使用中のファイルを置き換えると、そのプロセスに悪影響が及ぶ可能性があります。プロセスはそのファイル内の場所を参照し、そのファイルから誤った情報を取得しますが、通常は破滅的な結果になります。そのため、Windowsアップデートでは通常、すべてのプロセスが正しいバージョンのライブラリなどを使用していることを確認するために再起動が必要です。

Unixでは、プロセスによってファイルが開かれると、元のファイルがファイルシステムから削除されても、その同じファイルは常にプロセス使用可能になります

更新後、ファイルシステムには異なるバージョンのファイルが含まれ、更新後に開始されるすべてのプロセスはその新しいファイルを使用します。ただし、Windowsとは異なり、古いUnixプロセスはすべて、元のファイルを引き続き使用します。ファイルシステムを介してアクセスできなくなったとしても、それらのファイルはプロセスがそれらを使用している限り存続します。最終的に、ファイルを使用しているプロセスがなくなると、ファイルの古いバージョンが最終的に削除されます。

もちろん、アップデートのメリットをすぐに得たい場合は、Firefox(または他のプロセス)を再起動することを決定できます。選択はあなた次第です。


コメントは詳細なディスカッション用ではありません。この会話はチャットに移動さました
トーマスウォード

18

通常、既に開いているプログラムを更新しても問題はありません。他の回答者が説明したように、実行可能ファイルが削除されても実行中のプロセスは実行を継続できます。

ただし、Firefoxのマルチプロセスモデルにより、更新後にとにかく再起動を促すプロンプトが表示される場合があります。これは Firefoxが新しいプロセスを生成してさまざまなWebサイトを分離するためです。したがって、Firefoxを更新した後、Firefoxを再起動する前に新しいプロセスを生成する場合、新しいプロセスはFirefoxの残りのバージョンよりも新しいバージョンになります。これによりさまざまな問題が発生する可能性があるため、Firefoxは続行を許可する前に再起動を促すメッセージを表示する場合があります。

ちなみに、Chrome 何もしないで座っている「zygote」プロセスを使用することでこれ回避します。ブラウザーが新しいプロセスを生成する必要がある場合、OSにブラウザーの実行可能ファイルを再度実行するよう要求する(更新された可能性のあるバイナリを実行する)代わりに、zygoteプロセスに自分自身を複製するように要求し、コピーの1つが通常のレンダラーになりますプロセス。


1
また、Firefoxのような複雑なアプリケーションでは、遭遇したものに対処するために必要な可能性のあるものはすべて、プログラムの起動時にメモリに読み込まれません。したがって、必要に応じてロードされるコンポーネントも同様に、バージョンの不一致を引き起こす可能性があります。実行中に更新するとFirefoxがハングすることがよくあります。
fixer1234

マルチプロセスモデルを備えたブラウザーだけでなく、ライブラリがIPCに使用され、更新の前後にライブラリをロードできる状況-ブラウザーはおそらくこの最近の最もよく知られている例ですが(WindowsでのCOM相互運用性はかなり普及しているということは、より多くのプログラムが暗黙的にこのようなことを行うことができることを意味します)。また、Chromeがzygoteプロセスでこの問題を完全に回避するとは想像できません-起動時に必要な可能性のあるすべてのライブラリを実際にロードしますか?
Voo

@Vooは、「起動時にいつでも必要な可能性のあるすべてのライブラリを実際にロードしますか?」と尋ねます。この特定の例については知りませんが、一般的には必要ありません。必要なのは、可能なライブラリーが起動時に必ず開かれるようにすることです。これにより、必要なときに正しいデータが確実に読み取られるようになります。ファイル(または数十個のファイル)を開くことは、それらに含まれるすべてをロードするのに比べると、些細な費用です。
レイバターワース

@Ray楽しい事実:dlopenはファイル名のみを取り、ファイル記述子は取りません。そのため、思ったほど単純ではないかもしれません(/ procで遊ぶことはできますが、* nixesの違いは有名です)。しかし、より大きな問題は、動的ロードが最初から使用されるほとんどのユースケースを排除することです。
Voo

@Voo、申し訳ありませんが、このコメントはWindowsとdllについてではなく、Unix指向のスレッドにあると誤って考えました。
レイバターワース
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.