GNU/Linux >> Belajar Linux >  >> Linux

Ketidakcocokan tar Linux / OS X – tarball yang dibuat di OS X memberikan error saat untar di Linux

Saya mencari pesan kesalahan di Google dan sepertinya tar BSD vs. GNU tar masalah.

Instal GNU tar jika Anda bisa di Mac OS dan menggunakannya untuk membuat tar .


Jika Anda menggunakan Mavericks atau yang lebih baru, maka gnutar tidak lagi disertakan secara default.

Solusinya, jika Anda menggunakan homebrew, adalah menjalankan yang berikut:

brew install gnu-tar

Anda kemudian dapat menggunakan perintah gtar untuk kompatibilitas linux.

Jika Anda ingin mengganti tar dengan gtar , cukup ganti symlink

tar --version
ll `which tar`
sudo unlink `which tar`
sudo ln -s `which gtar` /usr/bin/tar
tar --version

Untuk memulihkan tar asli yang disediakan dengan Mac Os X, jalankan perintah di atas tetapi ganti which gtar dengan which bsdtar

Sumber:
https://github.com/jordansissel/fpm/issues/576


Tar GNU tidak menyukai beberapa informasi opsional yang disertakan oleh tar OSX BSD default.

Tar GNU akan membiarkan Anda menyembunyikan peringatan tersebut dengan opsi:

--warning=no-unknown-keyword

Lihat:https://www.gnu.org/software/tar/manual/html_section/tar_27.html

Perhatikan bahwa tar BSD tidak mendukung flag tersebut, jadi jika Anda perlu menjalankan kode unpacking yang sama di semua platform, Anda dapat menggunakan sesuatu seperti:

isGnuTar=$(tar --version | grep -q 'gnu')
if [ $? -eq 0 ]
then
    echo "Detected GNU tar"
    tar --warning=no-unknown-keyword -zxf my.tar.gz
else
    tar -zxf my.tar.gz
fi

Linux
  1. Manajer Paket APT di Linux Dijelaskan

  2. Linux – Kapan Saya Tidak Harus Membunuh -9 Proses?

  3. Perintah tar Linux

  1. Cara Menemukan Saat Spfile Dibuat Di Server Linux

  2. riwayat waktu aktif linux

  3. Apakah GNU/Linux menghitung proses dan utas secara bersamaan saat saya membatasi jumlahnya?

  1. Linux – Apa Cara Berbeda Untuk Mengatur Izin File Dll Di Gnu/linux?

  2. Cadangkan Seluruh Hard Disk Linux?

  3. SQL Server di Linux hang saat startup awal, tidak ada error, dan tidak ada file ErrorLog baru/yang diperbarui