डेस्कटॉप वातावरण के साथ आभासी मशीनों को चलाने के लिए योनि का उपयोग करना


148

मेरी कंपनी का विकास वातावरण वर्चुअल मशीनों पर आधारित है, जो वर्चुअलबॉक्स पर चल रहा है। हम एक कदम और आगे बढ़ना चाहते हैं, और एक पाठ फ़ाइल में मशीन का विवरण रखने के लिए वैग्रंट की क्षमताओं का उपयोग करते हैं और फिर उस पाठ फ़ाइल के आधार पर उस मशीन को "बढ़ा" सकते हैं। कठपुतली से संयुक्त, यह हमें इस समस्या को हल करेगा कि सभी के वीएम में अलग-अलग सॉफ़्टवेयर संस्करण स्थापित हैं।

हालांकि, वैग्रंट मेजबान पर विकसित करने के लिए बहुत केंद्रित लगता है, जिससे मशीन को पृष्ठभूमि में रखा जा सकता है। हमें मशीन के भीतर अपने विकास का माहौल बनाने की आवश्यकता होगी, इसलिए हमें एक पूर्ण GUI की आवश्यकता होगी, इसलिए जब एक पूर्ण डेस्कटॉप वातावरण (XFCE, KDE ...) के साथ एक मशीन को "आवारा" टाइप करना चाहिए।

अब तक, मैं एक Xubuntu वितरण से एक "आधार" बॉक्स बनाने में कामयाब रहा। लेकिन जब मैं "योनि अप" टाइप करता हूं, हालांकि डेस्कटॉप दिखाई देता है, और मैं ठीक से लॉगिन करने में सक्षम हूं, वैग्रांट "वेटिंग टू बूट करने के लिए मशीन के संदेश में फ्रीज करता है। इसमें कुछ मिनट लग सकते हैं ..."। थोड़ी देर बाद वैग्रांट दुर्घटनाग्रस्त हो जाता है। इसलिए साझा किए गए फ़ोल्डर नहीं बनाए गए हैं, न ही पैकेज प्रावधान -puppet- निष्पादित किया गया है।

योनि का उपयोग करके पूर्ण GUI के साथ वर्चुअल मशीन कैसे बनाएं?


1
मुझे इन बक्सों का उपयोग करने में कोई समस्या नहीं है । हो सकता है कि आपके आधार बॉक्स को पैक करते समय कुछ गलत हो गया हो।
bfitzpatrick

1
भोले के नजरिए से, यदि आप मेजबान पर विकसित हो सकते हैं और वीएम पर नहीं तो आप वैगेंट वीएम पर जीयूआई कैपैबैलिटी स्थापित करने के लिए परेशान क्यों हैं? मेजबान पर विकसित क्यों नहीं?
अलेक्जेंडर मिल्स

VM पर विकास के परिणाम कम हो सकते हैं जब VM / Vagrant विनिर्देशों को विकास टीम द्वारा अपने अनुप्रयोग के लक्षित वातावरण के साथ सिंक में बनाए रखा जाता है। आपको कम रेंगने वाली निर्भरता और व्यवहार मिलेंगे जो आपके देव के लिए अद्वितीय हैं। लक्ष्य वातावरण / स्थापना में मौजूद (या समान नहीं) होने पर पर्यावरण।
जिम डेनिस

वास्तव में आपका निष्कर्ष पूरी तरह से सही नहीं है। वग्रांत बॉक्स के बाहर देव वातावरण होने के बारे में नहीं है। लिनक्स पर कई लोग एक टर्मिनल में विकसित होते हैं। और आप केवल ssh- केवल योनि बक्सों के साथ ठीक कर सकते हैं।
एरिकबवर्क 10

जवाबों:


150

मुझे मूल रूप से तीन चरणों के साथ यह काम मिला। मेरे लिए सलाह askubuntu.comकाफी काम की नहीं थी, इसलिए इस सरलीकृत संस्करण को आज़माएँ:

  1. काम कर रहे एक बुनियादी Ubuntu छवि प्राप्त करें। आपको इसे बूट करने में सक्षम होना चाहिए औरvagrant ssh
  2. इसके बाद, वर्चुअलबॉक्स डिस्प्ले को सक्षम करें, जो डिफ़ॉल्ट रूप से बंद है। VM को रोकें और इन पंक्तियों को अनकंफर्ट करेंVagrantfile :
    config.vm.provider: virtualbox do | vb |
      vb.gui = सत्य
    समाप्त
  3. VM को बूट करें और नई डिस्प्ले विंडो देखें। अब आपको बस स्थापित करने और शुरू करने की आवश्यकता है xfce4। उपयोगvagrant ssh और:
    sudo apt-get install xfce4
    sudo startxfce4 और
    

यदि आप पहली बार इस उबंटू वातावरण को चला रहे हैं, तो आपको xfce4 को स्थापित करने से पहले निम्न कमांड को चलाना होगा:

sudo apt-get update

यही है, आपको एक xfce4सत्र में उतरा जाना चाहिए ।

अपडेट: बेहतर अनुभव के लिए, मैं इन सुधारों की सलाह देता हूं:

  1. GUI को रूट के रूप में शुरू न करें। आप वास्तव में vagrantउपयोगकर्ता बने रहना चाहते हैं । ऐसा करने के लिए आपको GUI शुरू करने के लिए किसी को भी अनुमति देने की आवश्यकता है: sudo vim /etc/X11/Xwrapper.configऔर इसे संपादित करें allowed_users=anybody
  2. अगला, GUI शुरू करने से पहले VirtualBox अतिथि उपकरण स्थापित करें । यह आपको एक स्वस्थ स्क्रीन रिज़ॉल्यूशन, एकीकृत माउस इत्यादि देगा।
    $ sudo apt-get install -y xfce4 virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11
    $ sudo VBoxClient- सभी
  3. केवल अब आपको vagrantउपयोगकर्ता के साथ GUI शुरू करना चाहिए , के साथ $ startxfce4&

अद्यतन 2: आज यह कोशिश की और VBoxClient-allस्क्रिप्ट हमेशा स्थापित नहीं है। यदि यह गायब है, तो आप समकक्ष के साथ प्रतिस्थापित कर सकते हैं:

sudo VBoxClient --clipboard
सूडो VBoxClient --draganddrop
सूडो VBoxClient --display
sudo VBoxClient - checkhostversion
सूद VBoxClient - निर्बाध

2
बस में ड्रॉप करना चाहता था और कहना चाहता था कि फेडोरा 19 आवारा बॉक्स में काम करने के लिए Xfce प्राप्त करने की कोशिश करने के लगभग 5 घंटे के बाद, समाधान वर्चुअलबॉक्स अतिथि पैकेज (yum इंस्टॉल VirtualBox-guest.x86_64) स्थापित करना था। उस पैकेज के बिना, Xorg किसी कारण से मेरे होस्ट मशीन मॉनिटर तक पहुंच नहीं पा सका। तो ... धन्यवाद आदमी!
बिलमलार्की

मुझे पता चला कि यह कोशिश करते समय कि चरण 3 कोड Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| ... doneको वैग्रांटफाइल की विधि के भीतर समाहित करने की आवश्यकता है ।
22

1
आप अपने Vagrantfile में निम्नलिखित को शामिल करके Vagrant से Xwindows इत्यादि का प्रावधान कर सकते हैं: #Provision X विंडोज, वर्चुअलबॉक्स अतिथि, कर्ल और अन्य उपयुक्त संकुल config.vm.provision: शेल, इनलाइन => sudo apt-get install -y कर्ल xfce4 virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11 "config.vm.provision: shell,: inline =>" sudo VBoxClient-all "</ code>
Farrukh Najmi

2
सिर्फ एक सिर कि उबंटू 16.04 इस तरह से गैर-रूट के रूप में XFCE को शुरू करने की अनुमति नहीं देता है: Bugs.launchpad.net/ubuntu/+source/xinit/+bug/1562219
Air

1
ऐसा लगता है कि startxfce4स्थापित होने के बाद उबंटू 16.04 (xenial) पर गैर-रूट के रूप में चलाया जा सकता हैxserver-xorg-legacy
लारेंस

74

ए के रूप में यहां एयर का शानदार जवाब है Vagrantfile

Vagrant.configure(2) do |config|
  # Ubuntu 15.10
  config.vm.box = "ubuntu/wily64"

  config.vm.provider "virtualbox" do |vb|
    # Display the VirtualBox GUI when booting the machine
    vb.gui = true
  end

  # Install xfce and virtualbox additions
  config.vm.provision "shell", inline: "sudo apt-get update"
  config.vm.provision "shell", inline: "sudo apt-get install -y xfce4 virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11"
  # Permit anyone to start the GUI
  config.vm.provision "shell", inline: "sudo sed -i 's/allowed_users=.*$/allowed_users=anybody/' /etc/X11/Xwrapper.config"
end

वीएम शुरू करने के लिए

vagrant up

उपयोगकर्ता नाम के साथ लॉगिन करें: vagrantपासवर्ड: vagrantवर्चुअलबॉक्स जीयूआई पर लॉगिन प्रॉम्प्ट के माध्यम से।

Xfce प्रारंभ करें

startx

यह मेरे लिए दो छोटे समायोजन के साथ काम करता है। पहले मुझे "ubuntu / vivid64" बॉक्स की तलाश में एक 404 मिला, इसलिए मैंने इसे "लैरीली / विविड 64" में बदल दिया, जो मुझे व्रांटलक्लाउड पर मिला। दूसरा मुझे प्रॉक्सी सेटिंग्स को प्रबंधित करने के लिए योनि-प्रोक्सीकोनफ प्लगइन स्थापित करना था।
डैनियल वॉट्रस

2
यह चिल्लाता है -> startx वर्तमान में स्थापित नहीं है ??
प्रयागपाद

1
मेरे खराब, इंटरनेट को डाउनलोड करने के लिए वर्चुअलबॉक्स में कॉन्फ़िगर नहीं किया गया था xfce4। अब यह काम करता है लेकिन क्या कोई तरीका है जिससे मैं लॉगिन को छोड़ सकता हूं और xfce4डिफ़ॉल्ट रूप से शुरू कर सकता हूं ?
प्रयागपाद

@prayagupd थोड़ा पुराना है, लेकिन क्या आप "डाउनलोड करने के लिए वर्चुअलबॉक्स में इंटरनेट कॉन्फ़िगर नहीं किया गया था" पर विस्तार से बता सकते हैं xfce4? मैं एक ही त्रुटि हो रही है जब startx के बादvagrant ssh
जोशुआ Zastrow

1
मुझे कुछ परेशानी हो रही है, जहाँ मेरा वर्चुअल बॉक्स "startx: कमांड नहीं मिला" कहता है। कोई मेरी मदद कर सकता है यह निदान?
OOProg

11

मेरे 2 सेंट

  • सुनिश्चित करें कि आप बग से बचने के लिए नवीनतम योनि (1.3.3 अब) + वर्चुअलबॉक्स (4.2.18) चला रहे हैं।

  • आप डेस्कटॉप वातावरण या हल्के वजन विंडो प्रबंधक को स्थापित करने के लिए शेल स्क्रिप्ट या इनलाइन कमांड का उपयोग कर सकते हैं

    उदाहरण के लिए, UbuntuX के शीर्ष पर LXDE स्थापित करें। vagrantbox.es से सटीक आधार बॉक्स

Vagrant.configure("2") do |config|
  # ... other configuration

  config.vm.provision "shell" do |s|
    s.inline = "apt-get install lubuntu-desktop -y"
  end
end
  • यदि आप अपने स्वयं के आवारा बेस बॉक्स बनाते हैं, तो सुनिश्चित करें कि आप बेस बॉक्स पैकेजिंग निर्देशों का पालन करें या बिल्ड को स्वचालित करने के लिए पैकर (या वेवी) जैसे उपकरणों पर विचार करें।

9

यहाँ Ubuntu 18.04 LTS / बायोनिक के लिए थोड़ा अनुकूलित Vagrantfile है - Air 's के लिए धन्यवाद और निक के जवाबों , और यह पोस्ट बता रही है कि वर्चुअलबॉक्स (डिफ़ॉल्ट = 10 जीबी) का उपयोग करते समय डिस्क का आकार कैसे बढ़ाया जाए।

VM में एक LightDM लॉगिन स्क्रीन शामिल है।

अपडेट: मैंने इस उदाहरण से GitHub रेपो बनाया है , और फ्रंटएंड + बैकएंड डेवलपमेंट के लिए कई सॉफ्टवेयर पैकेज जोड़े हैं।

# Optional - enlarge disk:
#vagrant plugin install vagrant-disksize
vagrant up
vagrant reload
# After reboot, the VM screen should show the LightDM login screen.
# Log in as user "vagrant", password "vagrant".
Vagrant.configure(2) do |config|
  config.vm.box = "ubuntu/bionic64"
  # Optional - enlarge disk (will also convert the format from VMDK to VDI):
  #config.disksize.size = "50GB"

  config.vm.provider "virtualbox" do |vb|
    # Display the VirtualBox GUI when booting the machine
    vb.gui = true
  end

  # /ubuntu/1067929/on-18-04-package-virtualbox-guest-utils-does-not-exist
  config.vm.provision "shell", inline: "sudo apt-add-repository multiverse && sudo apt-get update"

  # Install xfce and virtualbox additions.
  # (Not sure if these packages could be helpful as well: virtualbox-guest-utils-hwe virtualbox-guest-x11-hwe)
  config.vm.provision "shell", inline: "sudo apt-get install -y xfce4 virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11"
  # Permit anyone to start the GUI
  config.vm.provision "shell", inline: "sudo sed -i 's/allowed_users=.*$/allowed_users=anybody/' /etc/X11/Xwrapper.config"

  # Optional: Use LightDM login screen (-> not required to run "startx")
  config.vm.provision "shell", inline: "sudo apt-get install -y lightdm lightdm-gtk-greeter"
  # Optional: Install a more feature-rich applications menu
  config.vm.provision "shell", inline: "sudo apt-get install -y xfce4-whiskermenu-plugin"
end

Ubuntu 16.04 पर मुझे XWrapper.config फ़ाइल को अस्तित्व में लाने / उपयोग करने के लिए xserver-xorg-legacy स्थापित करना पड़ा।
MZB

आगे के परीक्षण से पता चलता है कि लिंक्ड गितुब रेपो में टिप्पणी के अनुसार सेड लाइन की आवश्यकता नहीं हो सकती है।
MZB

@ mh8020 जीथुब रेपो बनाने के लिए धन्यवाद। बहुत साफ और आसान पालन करने के लिए, बस मुझे क्या चाहिए। सिर्फ एक मुद्दा: मैं काम करने के लिए अतिथि उबंटू प्रणाली पर ध्वनि प्राप्त नहीं कर सकता! कोई भी विचार जो आपके वर्तमान सेटअप पर इसे सक्षम कर सकता है?
टिम्मवागनर

7

मैं ubuntu डेस्कटॉप छवि का उपयोग कर रहा हूं, यह वर्चुअल बॉक्स प्रदाता के साथ खिड़कियों पर दो मॉनिटर के साथ अच्छी तरह से काम करता है।

Vagrant.configure(2) do |config|
  config.vm.box = "box-cutter/ubuntu1404-desktop"

  config.ssh.forward_agent = true

  config.vm.network "forwarded_port", guest: 8080, host: 8080
  config.vm.network "forwarded_port", guest: 3000, host: 3000


  config.vm.synced_folder "../../git", "/home/vagrant/git"

  config.vm.provider "virtualbox" do |vb|
    vb.gui = true
    vb.customize ["modifyvm", :id, "--monitorcount", "2"]
    vb.memory = "2048"
  end
end

3
vb.customize ["modifyvm", :id, '--audio', 'dsound', '--audiocontroller', 'ac97']vm से ध्वनि प्राप्त करने के लिए (यदि आवश्यक हो)
इगनाटो

बॉक्स-कटर पूर्व निर्मित छवियों को और अधिक प्रदान नहीं करते हैं।
मारक

5

डेवलपर्स के उपयोग के लिए VirtualBox चित्र बनाने के लिए आप पैकर का उपयोग करने पर भी विचार कर सकते हैं।

Vagrantfile को साझा करने के बजाय, जो प्रत्येक डेवलपर अपने VM को बनाने और चलाने के लिए उपयोग करता है, आपके पास एक पैम्पर टेम्पलेट (json) होगा जिसका उपयोग VM छवि बनाने के लिए किया जाता है। डेवलपर्स छवि को डाउनलोड या कॉपी करते हैं और इसे स्थानीय रूप से, सीधे वीबी में चलाते हैं, बिना स्वयं इसे बनाने के लिए।

पैकर के साथ सार्वजनिक रूप से साझा किए गए कई वैग्रेंट बेस बॉक्स बनाए गए हैं।


2

/ubuntu/300799/does-ubuntu-12-04-lts-32-bit-have-graphic-user-interface/300805#300805

डेस्कटॉप को स्थापित करने के बाद, आप जीडीएम को भी इंस्टॉल करना चाहेंगे जो आपको सीधे ग्राफिकल वातावरण में बूट करने देगा। आप इसे कॉन्फ़िगर भी करना चाहेंगे।

तो शायद इसे जोड़ दें?

Vagrant::Config.run do |config|
    config.vm.provision :shell, :inline => "sudo apt-get install gdm"
    config.vm.provision :shell, :inline => "sudo dpkg-reconfigure gdm"
end

1
... या अधिक हल्के
xdm

1

मैंने HTTP 404 से बचने के लिए निक के उत्तर को थोड़ा थपथपाया है:

Vagrant.configure(2) do |config|
  # Ubuntu 15.10
  config.vm.box = "bento/ubuntu-18.04"

  config.vm.provider "virtualbox" do |vb|
    # Display the VirtualBox GUI when booting the machine
    vb.gui = true
  end

  # Install xfce and virtualbox additions
  config.vm.provision "shell", inline: "sudo apt-get update"
  config.vm.provision "shell", inline: "sudo apt-get install -y xfce4 virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11"
  # Permit anyone to start the GUI
  config.vm.provision "shell", inline: "sudo sed -i 's/allowed_users=.*$/allowed_users=anybody/' /etc/X11/Xwrapper.config"
end

0

फेडोरा 20 के ऊपर, बिलमरकी की टिप्पणी को जोड़ने से पहले, xfce शुरू करने से पहले निम्नलिखित आवश्यक थे:

  • VirtualBox-guest.rpm स्थापित करें (rpmfusion repos से उपलब्ध)
  • yum समूहों को 'graphical_environment' स्थापित करें
  • yum groupinstall "Xfce"
  • yum xorg-x11- ड्राइवरों को स्थापित करें

यहाँ कोड है:

config.vm.provision "shell", inline: <<-SHELL        
    #Install Virtual Box guest additions from rpmfusion repos
    cd /vagrant
    yum install -y rpmfusion-free-release-20.noarch.rpm 
    yum install -y rpmfusion-nonfree-release-20.noarch.rpm
    yum update -y
    yum install -y VirtualBox-guest

    #Add XFCE desktop to fedora server
    yum groups mark install 'graphical_environment'
    yum groupinstall -y "Xfce"
    yum install -y xorg-x11-drivers   
SHELL

0

xfce4@Air द्वारा समाधान की तरह । एक बार मुझे सफलता मिली, लेकिन आज मैं ubuntu16.04 से असफल रहा। मुझे यह त्रुटि मिली:

xrdb can't open display 1

लेकिन सौभाग्य से, मुझे यह काम मिला:

startx

0

मुझे लगता है कि कुछ लोगों को "startx: कमांड नहीं मिला" के साथ समस्या हो रही है। मेरे पास यह भी था और यह इसलिए था क्योंकि मैं पहली बार प्रावधान पूरा करने से पहले लॉगिन और स्टार्टएक्स की कोशिश कर रहा था। धीरज रखो, कॉफी पकड़ो। मूल कंसोल विंडो देखें कि क्या हो रहा है विशेष रूप से जब प्रावधान समाप्त हो गया है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.