Windowsインストーラに似たUnix / Linuxのトランザクションインストールプロセスはありますか?
Makefileやパッケージマネージャ(debなど)などのインストールスクリプトは、ファイルを直接コピーして既存のファイルを上書きすることがよくあります。
答え1
Windowsインストーラツールのプロパティについてはまったくわかりませんが、一度見てください。Nix パッケージマネージャ(そしてNixOS GNU/Linux ディストリビューションその周りに構築)。以前のコンテンツをまったく上書きしないため、アトミックアップデート機能があります。
別のアプローチは、ファイルシステムスナップショットサポートを使用することです。yum
スナップショットのようにbtrfs
(返品snapper
OpenSUSEにはdpkg
事前/事後作業もある可能性があるので、この作業も可能だと思います。
編集するファイルシステムスナップショットを使用する./configure && make && make install
こともトランザクションです。
答え2
一般的なパッケージマネージャは、パッケージがインストールされていることを確認することに注意を払います。通常、古いバージョンが引き続きインストールされ、新しいファイルが解凍されますが、名前が異なる移行期間があります。移行中にシステムがクラッシュしても、ソフトウェアは動作し続ける可能性が高いです。インストールを完了するには、インストールの復元コマンドが必要です。一部の新しいファイルが所定の位置にあり、一部の古いファイルがまだ所定の場所にある期間がありますが、サイズは小さいです。
一方、インストールエラーがある場合は、エラーが発生した時点で新しいバージョンが利用できなくても、プログラムが新しいバージョンに移行した可能性があります。これはやや避けられないことです。おそらく、プログラムを起動し、既存のファイルを開いたが正しく解釈できないため、新しいバージョンが機能しないことがわかります。ほとんどのLinuxパッケージマネージャにはアップグレードを元に戻す簡単な方法はありません。通常、以前のバージョンのパッケージを手動でダウンロードして強制インストールする必要があります。
makefileまたは同等のファイルを使用してソースコードからコンパイルされたソフトウェアをインストールする場合は、ソフトウェアを独自のディレクトリにインストールする必要があります。各バージョンを独自のディレクトリにインストールし、古いバージョンを削除する前に新しいバージョンをテストします。プログラムはインストールディレクトリですぐに使用できるため、古いバージョンと新しいバージョンを切り替える必要はありません。新しいバージョンを実行するだけです。使用拾って入れるまたはXストーPATH
などで実行可能ファイルを持つことができるように、共通階層にシンボリックリンクを作成します。追跡プログラム。