ভ্যাগ্রান্টে প্রতীকী লিঙ্ক এবং সিঙ্ক হওয়া ফোল্ডার


99

আমি আমার দলে একটি সাধারণ উন্নয়নের পরিবেশ সরবরাহ করতে ভ্যাগ্র্যান্ট ব্যবহার করতে চাই। হোস্টগুলি সম্পূর্ণ আলাদা:

  • কেউ ওএস এক্স, কিছু লিনাক্স এবং কিছু উইন্ডোজ ব্যবহার করে।
  • কেউ ভিএমওয়্যার ব্যবহার করেন, কেউ ভার্চুয়ালবক্স ব্যবহার করেন।

ভিএম এর ভিতরে আমরা লিনাক্স চালাতে চাই।

এখনও পর্যন্ত, সবকিছু ঠিক আছে।

এখন আমাদের ধারণা ছিল যে প্রতিটি বিকাশকারী তাদের পছন্দের আইডিই ব্যবহার করতে সক্ষম হবেন এবং তাই আমরা একটি সিঙ্কযুক্ত ফোল্ডার চালু করেছি যা হোস্ট এবং ভিএম এর মধ্যে উত্স কোডটি ভাগ করে দেয়। এটি মূলত, পাশাপাশি কাজ করে ... প্রতীকী লিঙ্কগুলি ব্যতীত।

আমাদের উত্স কোডের অভ্যন্তরে আমাদের কয়েকটি সংকেতযুক্ত লিঙ্ক রয়েছে যা ভিএম-র ভিতরে লিনাক্সের মধ্যে কোনও সমস্যা নয়, তবে উইন্ডোজে হোস্ট হিসাবে এটি সমস্যার কারণ হয়ে দাঁড়ায়। কেবলমাত্র আমরা যা করতে পারি না তা হ'ল প্রতীকী লিঙ্কগুলি থেকে মুক্তি পাওয়া, সুতরাং এটি মোকাবেলার জন্য আমাদের আরও একটি উপায় প্রয়োজন need

এখনও অবধি, আমরা বেশ কয়েকটি বিকল্প চেষ্টা করেছি:

  • ভ্যাগ্র্যান্টের একটি ইস্যুতে একটি কার্যবিধির উল্লেখ রয়েছে , দুর্ভাগ্যক্রমে এটি কেবল ভার্চুয়ালবক্স এবং যারা ভিএমওয়্যার চালায় তাদের সহায়তা করে না। এখনও অবধি, আমরা ব্যবহৃত সরবরাহকারীর উপর নির্ভর করে ভ্যাগ্রান্টফাইলে কোড চালানোর কোনও উপায় খুঁজে পাইনি
  • স্ট্যান্ডার্ড শেয়ার্ড ফোল্ডারটি ব্যবহার করার পরিবর্তে আমরা এখন আরএসসিএনসি টাইপটি ব্যবহার করার চেষ্টা করেছি । এটি উইন্ডোতে কাজ করে তবে ওএস এক্স-এ ক্র্যাশ করে অনেকগুলি ত্রুটি আমাদের জানিয়েছে যে symlink has no referent(প্রতীকী লিঙ্কে একটি ত্রুটি)।
  • আমরা এনএফএস সম্পর্কে ভেবেছিলাম , তবে এটি কেবল তখনই কার্যকর হয় যদি আপনি উইন্ডোজটিকে হোস্ট হিসাবে ব্যবহার না করেন।
  • আমরা যদিও এসএমবি সম্পর্কে , কিন্তু এটি আবার কেবল উইন্ডোতে হোস্ট হিসাবে কাজ করে।

আমি কল্পনা করতে পারি না যে আমরা এই গ্রহের একমাত্র বা প্রথম ব্যক্তি যারা ভাগ করা ফোল্ডারের মধ্যে বহু প্ল্যাটফর্মের হোস্ট এবং প্রতীকী লিঙ্কগুলির সাথে সমস্যার সম্মুখীন হয়েছি।

আপনি কীভাবে এই সমস্যাটি সমাধান করতে পারেন, যাতে আমরা প্রতীকী লিঙ্কগুলি রাখতে পারি, তবে এখনও বিভিন্ন হোস্ট অপারেটিং সিস্টেম ব্যবহার করতে পারি?



@ স্টিভবেনেট, সেই সমস্যাটি (যা বর্তমান স্বীকৃত উত্তর রেফারেন্সগুলি) ভ্যাগ্র্যান্ট ১.১ এ সমাধান করা হয়েছিল, যা ওপি প্রশ্ন পোস্ট করার 15 মাস আগে প্রকাশিত হয়েছিল। এবং এটি ভার্চুয়ালবক্স সম্পর্কে যেভাবেই ফোল্ডারগুলি ভাগ করে নিচ্ছে, ফোল্ডারগুলি আরএসআইএন'ডি নয়। আমার উত্তরটি নীচে দেখুন (স্বীকৃত উত্তরটি ভুল)।
jdunk

উত্তর:


66

ভার্চুয়ালবক্স সুরক্ষার কারণে ভাগ করা ফোল্ডারগুলিতে প্রতিলিঙ্কগুলিতে অনুমতি দেয় না। সিমলিংকগুলি সক্ষম করতে নীচের লাইনটিকে ভ্যাগ্রান্টফাইলে ভিএম সরবরাহকারী কনফিগারেশন ব্লকে যুক্ত করতে হবে:

config.vm.provider "virtualbox" do |v|
    v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
end

অতিরিক্তভাবে, উইন্ডোজগুলিতে অ্যাডমিন রাইটস সহ একটি শেলতে অসম্পূর্ণভাবে চালিত হওয়া প্রয়োজন। কোন workaround প্রয়োজন।


9
আমি সন্দেহ করি যে ওপি এবং এই প্রশ্নটি দেখছেন এমন অনেকে "বিনিময়যোগ্য" এবং "সিঙ্ক হওয়া" শব্দটি ব্যবহার করছেন। ওপি'র দ্বিতীয় বুলেট পয়েন্টটি নোট করুন যা দৃ strongly়ভাবে বোঝায় যে তিনি ভাগ করে নেওয়া ফোল্ডারগুলি ব্যবহার করছেন, তবে তারা কাজ করেনি বলে একটি আর সিএনসিড ফোল্ডারে স্যুইচ করার চেষ্টা করেছিলেন। আইআইআরসি, এখানে প্রদত্ত সমাধানটি যে কোনও ক্ষেত্রেই আমার যে সমস্যাটি ছিল তা সমাধান করে।
স্টিভ বেনেট

4
@ স্টিভবেনেট, পুনরায় সম্মত: সম্ভাব্য বিভ্রান্তি। আরও সব কারণ স্পষ্ট। আপনি যান্ত্রিকের যথেষ্ট পুরানো সংস্করণটি ব্যবহার না করা না হলে এই পরামর্শটি আপনার সমস্যার সমাধান করতে পারত যখন এইরকম একটি পুরানো [দীর্ঘকালীন-সমাধানিত] সমস্যাটিকে বোঝায়। এমনকি যদি তা করেও, আইএমও ভাগ করা ডায়ারগুলির জন্য ভিবিক্সের অভ্যাসমূলক ফাইল সিস্টেমের পারফরম্যান্স (যেমন "গিট স্ট্যাটাস" কয়েক সেকেন্ড সময় নেওয়ার ক্ষেত্রে বিবেচনা করে) বিবেচনা করে খুব কমই সাহায্য করতে পারে, যদিও এটি সম্ভব আপনি খুব কম ফাইলের সাথে কেবল একটি ছোট প্রকল্প ভাগ করে নিচ্ছেন। mitchellh.com/…
jdunk

4
vagrant upঅ্যাডমিন রাইটস সহ শেল চালানো যা প্রয়োজন তা-ই। @ জেদঙ্ক যেমন উল্লেখ করেছেন, এই কনফিগারেশন বিকল্পটি ইতিমধ্যে ভ্যাগ্রান্টে ডিফল্টরূপে সেট করা আছে, এই প্রতিশ্রুতি হিসাবে যা এই উত্তর পোস্ট হওয়ার প্রায় এক বছর আগে ঘটেছিল। এটি বলেছিল, vagrant upঅ্যাডমিন অধিকারের সাথে শেল চালানো আমার সমস্যার সমাধান করেছে।
Ajedi32

4
প্রশ্নের জবাব দেয় না। এটি সিঙ্ক হওয়া ফোল্ডারে কাজ করছে না।
ম্যানেল

এই উত্তরটি 2 টি বড় কারণে ভুল। 1. এটি VBox ভাগ করা ফোল্ডারগুলিকে বোঝায়, সংযুক্ত ডিরেক্টরিগুলি নয় - দুটি সম্পূর্ণ আলাদা জিনিস। ২. ওপেনের প্রশ্নের 15 মাস আগে প্রকাশিত ভ্যাগ্র্যান্ট 1.1 এ এই সেটিংটি ইতিমধ্যে একটি ডিফল্ট ছিল। আরও তথ্যের জন্য নীচে আমার উত্তর দেখুন।
jdunk

94

গৃহীত উত্তরটি ভাল নয়। প্রশ্নটি সিঙ্কড ফোল্ডারগুলির সাথে ভাগ করা ফোল্ডারগুলির সাথে নয় এমন একটি সমস্যা বর্ণনা করে । প্রস্তাবিত সমাধানটি আরএসসিড ( ভাগ না করা ) ফোল্ডারে কোনও প্রভাব ফেলবে না । এমনকি যদি ওপি একটি ভাগ করা ফোল্ডার ব্যবহার করে , তবে স্বীকৃত উত্তরের পরামর্শটি এমন কিছু যা ইতিমধ্যে ১.১ হিসাবে ভিজেন্টে একীভূত হয়ে গেছে, ওপি প্রশ্ন পোস্ট করার ১৫ মাস আগে প্রকাশিত হয়েছিল ( ভার্চুয়ালবক্সের ভাগ করা ফোল্ডারগুলি অত্যন্ত ধীরগতির উল্লেখ না করে )।


আমি এই একই সমস্যার মুখোমুখি হয়েছি: ওএস এক্স-এ, আমি symlink has no referentআরএসসিএন ত্রুটি পেয়েছি । আমার ব্যক্তিগতভাবে নির্দিষ্ট আরএসসিএন আরোগুলি যুক্ত করে আমি ব্যক্তিগতভাবে এটি সমাধান করতে সক্ষম হয়েছি vagrantfile:

config.vm.synced_folder ".", "/var/www", type: "rsync", rsync__args: ["--verbose", "--archive", "--delete", "-z"]

আমি এই সমস্যাটিও ভিজাগ্রনের গিথুবে খোলার সাথে সাথে তাদের ডিফল্ট মানটির সাথে ভুল বলে মনে হচ্ছে rsync__args(বিশেষত, ডিফল্ট আর্গুমেন্টগুলির মধ্যে --copy-linksএকটি, অন্যটি ভেঙে যাচ্ছে বলে মনে হচ্ছে --archive, কমপক্ষে ভাঙ্গা চিহ্নগুলি অনুলিপি করার ক্ষেত্রে )।


শুভ কল - ধন্যবাদ @ জেডঙ্ক হ্যাঁ, ভ্যাগ্র্যান্ট ডক্স অনুসারে --copy-linksবিকল্পটি ডিফল্টরূপে সেট করা আছে। এটা আমার সমস্যা ছিল। এটি (উপরে আপনার উত্তর ব্যবহার করে) সরিয়ে দিয়ে - এটি এর যত্ন নেয়।
ফিল বার্নি

4
অনেক দরকারী, ধন্যবাদ। যদিও আমি উইন্ডোজ বিকল্পের জন্য চাই।
আলেকসান্দ্র মাকভ

4
নোট করুন যে ভ্যাগ্র্যান্ট ডক্স অনুসারে, ভাগ করা ফোল্ডারগুলি ভার্চুয়ালবক্স ব্যবহারকারীদের জন্য সিঙ্কড ফোল্ডারগুলির ডিফল্ট ধরণ: "যদি আপনি ভার্চুয়ালবক্স সরবরাহকারী ব্যবহার করেন তবে ভার্চুয়ালবক্স ভাগ করা ফোল্ডারগুলি ডিফল্ট সিঙ্ক হওয়া ফোল্ডার প্রকার।" ( ডকস.ভ্যাগান্টআপ.com / v2 / synced-folders / virtualbox.html ) ওপির প্রশ্নটি থেকে বোঝা যাচ্ছে যে ভার্চুয়ালবক্স ভাগ করা ফোল্ডারগুলি একটি উদ্বেগ, তাই স্বীকৃত উত্তরটি সমস্যার অন্তত অংশটি সমাধান করার চেষ্টা করে (এবং সত্যই তা করেছিল আমার জন্য সমস্যা সমাধান করুন)।
Ajedi32

আমার পাছা বাঁচানোর জন্য আপনাকে অনেক ধন্যবাদ, আমি ইন্টারনেটে সর্বত্র এবং শেষ পর্যন্ত এমন কেউ যারা এই সমস্যাটি বোঝে তা দেখেছি!
ডোভিজু

4
ধন্যবাদ. এটিই আমার সমস্যাটি সমাধান করেছে (শিরোনামের একটি, এবং যে আমি এখানে এসেছি তার সমাধানের সন্ধান করতে এবং কোনটি বিভ্রান্তিমূলকভাবে জিজ্ঞাসা করা হচ্ছে তা নয়)।
জনসিপ

7

একটি ত্রুটি চলমান সমাধানের জন্য আমি এই সমস্ত অপশন চেষ্টা করেছিলাম npm install

অ্যাডমিন প্রম্পটে কেবল দ্বিধাহীনভাবে চালানো এবং ভিএম ( vagrant reload) লোড করে সমস্যাটি সমাধান করা হয়েছে।

আমি ফিরে গিয়ে SharedFoldersEnableSymlinksCreateভ্যাগ্রান্টফাইল থেকে কনফিগারেশনটি সরিয়ে দিয়েছি এবং সবকিছু ঠিক আছে।


npm updateআমার অসম্পূর্ণ ভাগ করা ফোল্ডারে কাজ করছিল না। এই সমাধানটি কোনও কারণে এটি সংশোধন করেছে।
এমরে

4
আরও গবেষণার পরে, এটি প্রতীকী লিঙ্ক তৈরির জন্য উইন্ডোতে ডিফল্টরূপে প্রশাসকের অনুমতি প্রয়োজন। অনুমতিগুলি সংশোধন করতে, এখানে উত্তর দেখুন: superuser.com/a/125981
গেমওয়েল

উইন্ডো 10 মেশিনে প্রশাসক হিসাবে ভ্যাগ্রান্ট এবং কমান্ড প্রম্পট চালানো আমার জন্য এনপিএক্স তৈরি-প্রতিক্রিয়া-অ্যাপ 'প্রজেক্ট_নাম' এ কাজ করেছে।
সাইবোজ

2

ডিফল্ট সিঙ্ক হওয়া ফোল্ডার টাইপটি vboxsfপ্রচুর পরিমাণে ফাইল / ডিরেক্টরি সহ পারফরম্যান্স ইস্যু হিসাবে পরিচিত এবং প্রতীকী লিঙ্ক এবং হার্ড লিঙ্কগুলির সমর্থন নেই (টিকিট দেখুন 818 - একটি 7+ বছরের পুরানো বাগ)। এটি ব্যবহার এড়িয়ে চলুন।

rsync প্রকারের সিঙ্কযুক্ত ফোল্ডারটি আপনার সেরা পছন্দ হতে পারে।

আপনি উল্লেখ করেছেন যে এটি ক্র্যাশ হয়েছে, আপনি আরএসএনসি-র কোন সংস্করণটি চালাচ্ছেন? ব্রিউয়ের মাধ্যমে এটি ৩.১.০-এ আপডেট করার চেষ্টা করুন, আমি জানি ওটিবি একটি খুব পুরানো (২.x), যা সমস্যার কারণ হতে পারে।


[wdd@localhost ~]$ sudo mount -t rsync node share mount: unknown filesystem type 'rsync'
মুসা হায়দারি

4
আমি এই উত্তরটি পড়তে পেরে খুশি হয়েছিলাম, ভেবেছিলাম এটি আমার সমস্যার সমাধান করবে তবে আমি যখন sudo mount -t rsync shared /var/wwwত্রুটিটি করছি তখন উপরের mount: unknown filesystem type 'rsync'
মতোটি পেয়েছি

rsyncকোনও ফাইল সিস্টেম টাইপ হয় না তাই আপনি এটি মাউন্ট করতে সক্ষম হবেন না।
টেরি ওয়াং

@samyo পড়ুন vagrantup.com/docs/synced-folders/rsync.html আপনি কনফিগার করতে Vagrantfileএবং ম্যানুয়ালি চালানো vagrant rsyncবা vagrant rsync-auto। অন্যথায় এটি কেবলমাত্র পুনরায় আপ এবং পুনরায় লোড এ সিঙ্ক হবে।
টেরি ওয়াং

1

ঘন্টাখানেক ঘোরাফেরা করার পরে এবং কয়েকটি আলাদা সমাধানের চেষ্টা করার পরে ( vagrant-vbguestমারভিনের প্রস্তাবিত সমাধান), ভার্চুয়ালবক্স ৪.৮.১০, ভ্যাগ্রান্ট ১.২.১ এর সাথে কাজ করার জন্য আমি ভাগ করা ফোল্ডারে সিমলিংক পেতে সক্ষম হইনি।

আমি দেখতে পেয়েছি যে একটি সহজ সমাধান হ'ল আলাদা ভাগ করা ফোল্ডারটি কনফিগার করা এবং তারপরে File.readlinkঅন্তর্নিহিত পথে পড়ার জন্য রুবি ব্যবহার করুন :

config.vm.synced_folder File.readlink('SYMLINK'), "/mount/path"

4
আমি পাই না। আপনি একটি উদাহরণ দিয়ে ব্যাখ্যা করতে পারেন? ধন্যবাদ
ক্যাসিয়ানো

0

Vagrantfile নিম্নলিখিত লাইন যুক্ত করুন:

config.vm.provider "virtualbox" do |v|
    v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
end

এটি কেবল আমার জন্য কাজ করেছিল ভার্চুয়ালবক্স 6.০.৮ থেকে .0.০.৪ এবং ভিজাগ্রেন্ট ২.২.৪ থেকে ২.২.১ এ ডাউনগ্রেড করার পরে ।

আপনি যখন টার্মিনালটি খুলেন (আমি উইন্ডোজ 10 এ গিট ব্যাশ ব্যবহার করি) "অ্যাডমিন হিসাবে চালান" দিয়ে।

গিট ব্যাশ পরিবর্তন করার চেষ্টা করুন: প্রকল্প ফাইলটিতে: im vim .git / কনফিগারেশন পরিবর্তনকে syllinks = সত্য

[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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.