Ubuntuは、Windowsが実行できない間、実行中のアプリケーションを閉じることなく更新することができますか?


11

Ubuntu 12.04 64ビットの実行。

私は主にターミナルを介して更新しsudo apt-get update && sudo apt-get upgradeます。

私はこれを理解していません:ターミナルで同時に実行されている更新プロセスと共にFirefoxまたは他のそのような統合アプリケーションをアクティブに実行すると、Firefoxが新しいバージョンに更新されます。Firefoxを再起動すると、Firefoxが新しいバージョンとして開かれることを認識しています。

たとえば、MS Windows 7で更新する場合、更新する前に同じアプリケーションのアクティブなインスタンス(アクティブな場合)を閉じるように求められます。

Ubuntuは、アクティブなインスタンスに干渉することなく、アクティブなアプリケーションを新しいバージョンにどのように置き換えますか?

この場合、更新プロセスのバックエンドで正確に何が起こりますか?

回答:


19

MS Windows 7のExample-Updatingの場合、同じアプリケーション(アクティブな場合)のアクティブなインスタンスを更新のために閉じるように要求します。

Ubuntuは、アクティブなインスタンスに干渉することなく、アクティブな作業中のアプリケーションを新しいバージョンにどのように置き換えますか?[多くのパッケージに注目]

これをできるだけ簡単に説明しようと思います。ほとんどのLinuxファイルシステムは、Windowsのファイルシステム(NTFS)とは少し異なります。基本的に、どちらにも基本的に、ディスクに保存されている実際のデータを指すファイル名(エントリ)のインデックステーブルが含まれています。NTFSでは、これはMFT(マスターファイルテーブル)と呼ばれますchkdsk

ただし、私が述べた「わずかな違い」は、Linuxのインデックステーブルは、もしそうであれば、インデックスとiノードの 2つのレベルで構成されていることです。iノードには、ディスク上の物理的な場所など、実際のファイルメタデータが含まれています。インデックス内の「ファイル名」は、単にiノードへの(ハード)リンクです。

実行中のアプリケーションを更新/アップグレードすると、更新されたファイルがディスクに書き込まれ、iノードが作成/更新された新しいデータを指し、ファイル名もこれらの新しいiノードにリンクするように更新されます。ただし、実行中のアプリケーションですでに使用されているファイル(ファイルハンドルが存在するなど)の場合、ファイルハンドルが閉じるまで、ファイル名は引き続き古いiノード(古いデータを含む)を指します。これは通常、アプリケーションを終了したとき、またはシステムファイルによっては、再起動したときに発生します。この時点で、古いデータは実際にはディスクから削除されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.