Saya ingin menggunakan Gelandangan untuk menyediakan lingkungan pengembangan untuk tim saya. Tuan rumah benar-benar berbeda:
Dalam VM kita ingin menjalankan Linux.
Sejauh ini, semuanya baik-baik saja.
Sekarang kita tahu bahwa setiap pengembang akan dapat menggunakan IDE dari pilihan mereka, dan oleh karena itu kami telah memperkenalkan disinkronkan folder yang berbagi kode sumber antara host dan VM. Ini pada dasarnya bekerja dengan baik ... kecuali untuk link simbolik.
Dalam kode sumber kami, kami benar-benar memiliki beberapa link simbolik, yang tidak menjadi masalah dalam Linux di dalam VM, tapi pada Windows sebagai host ini menyebabkan masalah. Satu-satunya hal yang dapat kita tidak lakukan adalah menyingkirkan dari simbolik link, jadi kita perlu cara lain untuk menangani hal ini.
Sejauh ini, kami telah mencoba beberapa pilihan:
symlink tidak memiliki rujukan
(salah satu kesalahan per link simbolik).Saya tidak dapat membayangkan bahwa kami adalah satu-satunya atau orang-orang pertama di planet ini mengalami masalah dengan multi-platform host dan link simbolik dalam folder bersama.
Bagaimana anda bisa memecahkan masalah ini, sehingga kita dapat membuat link simbolik, tapi masih menggunakan sistem operasi host?
Jawaban yang diterima adalah tidak baik. Pertanyaan menjelaskan masalah dengan disinkronkan folder, tidak berbagi folder. Solusi yang diusulkan akan memiliki efek pada rsynced (tidak bersama) folder. Dan bahkan jika OP menggunakan berbagi folder, jawaban yang diterima's saran adalah sesuatu yang telah sudah terintegrasi menjadi gelandangan seperti 1.1, dirilis 15 bulan sebelum OP posted pertanyaan (untuk tidak menyebutkan VirtualBox's shared folder yang tak karuan lambat).
Saya mengalami masalah yang sama: pada OS X, aku punya symlink tidak memiliki rujukan
rsync kesalahan. Saya secara pribadi mampu memecahkannya dengan menambahkan khusus rsync args untuk saya vagrantfile
:
config.vm.synced_folder ".", "/var/www", type: "rsync", rsync__args: ["--verbose", "--archive", "--delete", "-z"]
Saya juga membuka masalah ini](https://github.com/mitchellh/vagrant/issues/5471) pada gelandangan's github untuk menunjukkan sesuatu yang tampaknya salah dengan mereka nilai default untuk rsync__args
(secara khusus, bahwa salah satu default args, - copy-link
, tampaknya akan melanggar lagi, --arsip
, setidaknya sejauh menyalin rusak symlink yang bersangkutan).
Virtualbox tidak memungkinkan symlink pada shared folder untuk alasan keamanan. Untuk mengaktifkan symlink baris berikut yang perlu ditambahkan ke vm penyedia config blok di Vagrantfile:
config.vm.provider "virtualbox" do |v|
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
end
Selain itu, pada windows gelandangan hingga kebutuhan akan dieksekusi di sebuah shell dengan hak admin. Tidak ada penyelesaian yang diperlukan.
Saya mencoba semua pilihan ini dalam rangka untuk mengatasi kesalahan menjalankan npm install
.
Hanya berjalan gelandangan di admin cepat dan loading vm (gelandangan reload
), diselesaikan masalah ini.
Aku kembali dan dihapus SharedFoldersEnableSymlinksCreate
konfigurasi dari Vagrantfile, dan semuanya masih baik-baik saja.
Default folder disinkronisasikan jenis adalah vboxsf
telah dikenal masalah kinerja dengan sejumlah besar file / direktori, dan tidak memiliki dukungan untuk simbolik link dan hard link (lihat tiket 818 - 7+ tahun bug). Hindari menggunakan itu.
rsync jenis disinkronkan folder dapat menjadi pilihan terbaik anda.
Anda menyebutkan bahwa pesawat itu jatuh, apa versi rsync yang anda jalankan? Cobalah untuk meng-update ke 3.1.0 melalui minuman, aku tahu OOTB salah satunya adalah terlalu lama (2.x), yang bisa menyebabkan masalah.
Setelah menyibukkan diri sekitar satu jam dan mencoba beberapa solusi yang berbeda (gelandangan-vbguest
, Marvin's menyarankan fix), aku't bisa mendapatkan symlink di shared folder untuk bekerja dengan VirtualBox 4.8.10, Gelandangan 1.5.1.
Saya menemukan bahwa sebuah solusi sederhana adalah untuk mengkonfigurasi terpisah folder bersama dan kemudian menggunakan Ruby's File.readlink
untuk membaca di mendasari path:
config.vm.synced_folder File.readlink('SYMLINK'), "/mount/path"
Tambahkan baris berikut ke Vagrantfile:
config.vm.provider "virtualbox" do |v|
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
end
Ini bekerja untuk saya HANYA setelah saya downgrade virtualbox 6.0.8 untuk 6.0.4 dan gelandangan 2.2.4 ke 2.2.1.
ketika anda membuka terminal ( saya menggunakan git bash di windows 10) dengan "Jalankan sebagai Admin".
juga mencoba git bash berubah : dalam file proyek: $ vim .git/config perubahan symlink = true
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = true
ignorecase = true
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master