他のファイルを上書きせずに "/usr"ディレクトリにファイルを抽出する方法は?

他のファイルを上書きせずに "/usr"ディレクトリにファイルを抽出する方法は?

インストールパッケージをダウンロードしてswiftホームディレクトリに抽出します。

# tar -C / -xvf swift-2.2.1-RELEASE-ubuntu14.04.tar.gz
swift-2.2.1-RELEASE-ubuntu14.04/usr/
swift-2.2.1-RELEASE-ubuntu14.04/usr/include/
swift-2.2.1-RELEASE-ubuntu14.04/usr/include/lldb/
......

最終的なswift-2.2.1-RELEASE-ubuntu14.04レイアウトは次のとおりです。

# tree -d -L 2
.
└── usr
    ├── bin
    ├── include
    ├── lib
    └── share

5 directories

/usr他のファイルを上書きせずにディレクトリに直接ファイルを抽出したいのですが、方法はありますか?

答え1

オペレーティングシステムのパッケージマネージャと統合されたベンダー提供のパッケージでない限り、この場所に解凍しないでください。に行ってください/選択するたとえば、そこから抽出し、上記のように環境変数を設定します。ダウンロードページスウィフトの場合。次のように完全抽出を実行します。/選択する、サードパーティ製アプリケーションの場合は、環境変数を変更してバージョンをすばやく切り替えることもできます。

答え2

ファイルを抽出するときにtarが抽出されたファイルがすでに存在することがわかった場合は、通常、ハードリンクまたはシンボリックリンクが混乱しないように、ファイルを抽出する前に削除してファイルを置き換えます。 (既存のファイルがシンボリックリンクの場合は追跡されずに削除されます。)ただし、ディレクトリが空でないため削除できない場合、tarは通常そのメタデータ(所有権、権限など)を上書きします。この--overwrite-dirオプションを使用すると、このデフォルトの動作が有効になります。より注意深くそのディレクトリのメタデータを保存するには、この--no-overwrite-dirオプションを使用します。

より注意深く既存のファイルが置き換えられないようにするには、この--keep-old-files (-k)オプションを使用します。これにより、tar が既存のファイルの置換または更新を拒否します。つまり、アーカイブメンバーと同じ名前のファイルは、アーカイブメンバーが抽出されるのを防ぎます。代わりにエラーを報告します。たとえば、

$ ls
blues
$ tar -x -k -f archive.tar
tar: blues: Cannot open: File exists
tar: Exiting with failure status due to previous errors

関連情報