web-dev-qa-db-ja.com

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

Ubuntu 12.04 64ビットを実行しています。

ほとんどの場合、Sudo apt-get update && Sudo apt-get upgradeを使用して端末から更新します。

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

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

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

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

9
atenz

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

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

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

ただし、私が述べた「わずかな違い」は、Linuxのインデックステーブルが、インデックスと inodes 。 iノードには、ディスク上の物理的な場所を含む実際のファイルメタデータが含まれています。インデックス内の「ファイル名」は、単にiノードへの(ハード)リンクです。

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

15
ish