Sanal makineleri masaüstü ortamında çalıştırmak için serseri kullanma


151

Şirketimin geliştirme ortamı, VirtualBox üzerinde çalışan sanal makinelere dayanıyor. Bir adım daha ileri gitmek ve Vagrant'ın yeteneklerini kullanarak makinenin açıklamasını bir metin dosyasında bulundurmak ve ardından o metin dosyasını temel alarak makineyi "yükseltebilmek" istiyoruz. Kukla ile birleştiğinde, bu bize herkesin VM'de yüklü farklı yazılım sürümlerine sahip olması sorununu çözecektir.

Bununla birlikte, Vagrant, makineyi arka planda bırakarak, ana bilgisayar üzerinde gelişmeye çok odaklanmış görünüyor. Makine içinde geliştirme ortamımıza sahip olmamız gerekecek, bu yüzden tam bir GUI'ye ihtiyacımız olacak, bu yüzden "serseri yukarı" yazarken tam bir masaüstü ortamına (XFCE, KDE ...) sahip bir makine görünmelidir.

Şimdiye kadar, bir Xubuntu dağıtımından bir "temel" kutu oluşturmayı başardım. Ancak "serseri yukarı" yazdığımda, masaüstü görünmesine ve düzgün oturum açabildiğim halde, Vagrant "Makinenin önyüklemesi bekleniyor. Bu birkaç dakika sürebilir ..." mesajında ​​donuyor. Bir süre sonra Vagrant zaman aşımına uğradı. Dolayısıyla, paylaşılan klasörler oluşturulmaz veya paket hazırlayıcı -puppet- çalıştırılmaz.

Serseri kullanarak eksiksiz bir GUI'ye sahip bir sanal makine nasıl oluşturulur?


1
Bu kutuları kullanırken hiç sorun yaşamadım . Belki temel kutunuzu paketlerken bir şeyler ters gitti.
bfitzpatrick

1
naif bir bakış açısıyla, eğer sanal makinede değil de ana bilgisayarda geliştirebiliyorsanız, neden Vagrant sanal makinesine GUI yeteneklerini kurmaya zahmet ediyorsunuz? neden ev sahibi üzerinde geliştirilmiyor?
Alexander Mills

VM üzerinde geliştirme, VM / Vagrant spesifikasyonlarının, uygulamalarının hedef ortamıyla senkronize olması için geliştirme ekibi tarafından korunduğunda daha az soruna neden olabilir. Geliştiricinize özgü daha az bağımlılık ve davranışa sahip olacaksınız. hedef ortamda / kurulumda olmadığında (veya aynı olmadığında) ortam.
Jim Dennis

Aslında sonucun tamamen doğru değil. Vagrant, geliştirme ortamının kutunun dışında olmasıyla ilgili değildir. Linux üzerindeki birçok insan bir terminalde gelişir. Ve bunu sadece ssh-serseri kutularla gayet iyi yapabilirsiniz.
erikbwork

Yanıtlar:


156

Bunu temelde üç adımda çalıştırdım. Verdiğim tavsiye askubuntu.combenim için pek işe yaramadı, bu yüzden bu basitleştirilmiş sürümü deneyin:

  1. Çalışan temel bir Ubuntu görüntüsünü edinin. Önyükleme yapabilmelisin ve vagrant ssh.
  2. Ardından, varsayılan olarak kapalı olan VirtualBox görüntüsünü etkinleştirin. Sanal makineyi durdurun ve şu satırların açıklamasını kaldırın Vagrantfile:
    config.vm.provider: virtualbox do | vb |
      vb.gui = true
    son
  3. Sanal makineyi önyükleyin ve yeni ekran penceresini izleyin. Şimdi sadece kurmanız ve başlatmanız gerekiyor xfce4. Ve kullanın vagrant ssh:
    sudo apt-get yükleme xfce4
    sudo startxfce4 &
    

Bu Ubuntu ortamını ilk kez çalıştırıyorsanız, xfce4'ü yüklemeden önce aşağıdaki komutu çalıştırmanız gerekir:

sudo apt-get güncellemesi

İşte bu, bir xfce4seansa inmeniz gerekiyor .

Güncelleme: Daha iyi bir deneyim için şu iyileştirmeleri tavsiye ederim:

  1. GUI'yi kök olarak başlatmayın. Gerçekten vagrantkullanıcı olarak kalmak istiyorsun . Bunu yapmak için, herhangi birinin GUI'yi başlatmasına sudo vim /etc/X11/Xwrapper.configve düzenlemesine izin vermeniz gerekir allowed_users=anybody.
  2. Ardından, GUI'yi başlatmadan önce VirtualBox konuk araçlarını kurun . Bu size sağlıklı bir ekran çözünürlüğü, entegre fare vb. Sağlayacaktır.
    $ sudo apt-get install -y xfce4 virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11
    $ sudo VBoxClient-all
  3. Sadece şimdi GUI'yi vagrantkullanıcı olarak başlatmalısınız $ startxfce4&.

Güncelleme 2: Bunu bugün denedim ve VBoxClient-allkomut dosyası her zaman yüklenmiyor. Eksikse, eşdeğeriyle değiştirebilirsiniz:

sudo VBoxClient - pano
sudo VBoxClient --draganddrop
sudo VBoxClient - göster
sudo VBoxClient --checkhostversion
sudo VBoxClient - kesintisiz

2
Xfce'yi fedora 19 vagrant kutusunda çalıştırmaya çalıştıktan yaklaşık 5 saat sonra, çözümün sanal kutu konuk paketini kurmak olduğunu söylemek istedim (yum, VirtualBox-guest.x86_64 yükleyin). Bu paket olmadan, xorg herhangi bir nedenle ana makine monitörüme erişemedi. Yani ... Teşekkürler adamım!
billmalarky

Bunu denerken, 3. adım kodunun Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| ... doneVagrantfile yöntemi içinde yer alması gerektiğini keşfettim.
neontapir

1
Aşağıdakileri Vagrantfile dosyanıza ekleyerek Vagrant'tan Xwindows vb. Tedarik edebilirsiniz: #Provision X Windows, VirtualBox Guest, curl ve diğer apt paketleri config.vm.provision: shell,: inline => "sudo apt-get install -y curl xfce4 virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11 "config.vm.provision: shell,: inline =>" sudo VBoxClient-all "</code>
Farrukh Najmi


1
Gibi görünüyor startxfce4yükledikten sonra Ubuntu 16.04 (Xenial) olmayan root olarak çalıştırılabilirxserver-xorg-legacy
Laurence Billingham

75

İşte Air'in mükemmel yanıtı 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

VM'yi başlatmak için

vagrant up

Kullanıcı adı ile oturum açın:, vagrantşifre: vagrantsanal kutu GUI'sindeki oturum açma istemi aracılığıyla.

Xfce'yi başlatın

startx

Bu benim için iki küçük ayarlamayla çalıştı. Önce "ubuntu / vivid64" kutusunu ararken 404 aldım, bu yüzden vagrantcloud'da bulduğum "larryli / vivid64" olarak değiştirdim. İkinci olarak, proxy ayarlarını yönetmek için vagrant-proxyconf eklentisini yüklemem gerekiyordu.
Daniel Watrous

2
Çığlık atıyor -> startx şu anda kurulu değil mi?
2016

1
Benim hatam, İnternet sanal kutuda xfce4. Şimdi çalışıyor, ancak girişi atlayıp xfce4varsayılan olarak başlatmamın bir yolu var mı?
2016

@prayagupd biraz eski, ancak "İnternet sanal kutuda indirilecek şekilde yapılandırılmadı" konusunda ayrıntı verebilir misiniz xfce4? vagrant ssh
Startx'i

1
Sanal kutumda "startx: command not found" yazan bazı sorunlar yaşıyorum. Birisi bunu teşhis etmeme yardım edebilir mi?
OOProg

11

2 sentim

  • Hataları önlemek için en son serseri (şimdi 1.3.3) + VirtualBox (4.2.18) çalıştırdığınızdan emin olun.

  • Bir masaüstü ortamı veya hafif bir pencere yöneticisi kurmak için kabuk komut dosyasını veya satır içi komutu kullanabilirsiniz.

    Örneğin, LXDE'yi Ubuntu 12.04 Vagrantbox.es'ten hassas temel kutu üzerine yükleyin.

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

  config.vm.provision "shell" do |s|
    s.inline = "apt-get install lubuntu-desktop -y"
  end
end
  • Kendi serseri taban kutularınızı oluşturuyorsanız, temel kutu paketleme talimatlarını takip ettiğinizden emin olun veya yapıyı otomatikleştirmek için paketleyici (veya veewee) gibi araçları düşünün.

10

İşte biraz Ubuntu 18.04 için Vagrantfile uyarlanmış olan LTS / biyonik - sayesinde Hava 'ın ve Nik ' ın cevapları ve bu yazı VirtualBox (varsayılan = 10 GB) kullanırken, disk boyutunu artırmak için nasıl açıklayan.

VM, bir LightDM oturum açma ekranı içerir.

Güncelleme: Bu örnekten bir GitHub deposu oluşturdum ve ön uç + arka uç geliştirme için birçok yazılım paketi ekledim.

# 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'te, XWrapper.config dosyasının var olması / kullanılması için xserver-xorg-legacy'yi kurmam gerekiyordu.
MZB

Daha ileri testler, bağlantılı github deposundaki yoruma göre sed hattına ihtiyaç duyulmayabileceğini göstermektedir.
MZB

@ mh8020 Github deposunu oluşturduğunuz için teşekkürler. Çok temiz ve takip etmesi kolay, tam da ihtiyacım olan şey. Tek bir sorun: Konuk Ubuntu sisteminde çalışmak için ses alamıyorum! Mevcut kurulumunuzda bunu neyin etkinleştirebileceği hakkında bir fikriniz var mı?
timmwagener

Teşekkürler, kullanıcı adı ve parolayı başka hiçbir yerde alamadım
EHM

7

Ubuntu masaüstü görüntüsünü kullanıyorum, sanal kutu sağlayıcısına sahip pencerelerde iki monitörle güzel çalışıyor.

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']sesi
vm'den

kutu kesici artık önceden oluşturulmuş görüntüleri sağlamıyor.
krock

5

Ayrıca , geliştiricilerin kullanması için VirtualBox görüntüleri oluşturmak için Packer'ı kullanmayı da düşünebilirsiniz .

Geliştiricilerin her birinin sanal makinelerini oluşturmak ve çalıştırmak için kullandığı Vagrantfile dosyasını paylaşmak yerine, bir VM görüntüsü oluşturmak için kullanılan bir paketleyici şablonuna (json) sahip olursunuz. Geliştiriciler görüntüyü indirir veya kopyalar ve kendileri oluşturmak zorunda kalmadan yerel olarak doğrudan VB'de çalıştırırlar.

Genel olarak paylaşılan Vagrant temel kutularının çoğu Packer ile oluşturulur.


2

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

Masaüstünü kurduktan sonra, doğrudan bir grafik ortama önyükleme yapmanıza izin verecek GDM'yi de kurmak isteyeceksiniz. Ayrıca yapılandırmak isteyeceksiniz.

Yani belki bunu ekler misin?

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
... veya daha hafif xdm
geekQ

1

HTTP 404'ten kaçınmak için Nik'in yanıtını biraz yamaladım:

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

Yukarıdaki billmalarky yorumuna ek olarak, fedora 20'de xfce'ye başlamadan önce aşağıdakiler gerekliydi:

  • VirtualBox-guest.rpm'yi yükleyin (rpmfusion depolarında bulunur)
  • yum grupları "graphical_environment" yüklemesini işaretler
  • yum groupinstall "Xfce"
  • yum xorg-x11-sürücülerini kurun

İşte kod:

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'in çözümü gibi . Bir zamanlar başarılı oldum, ama bugün ubuntu16.04 ile başarısız oldum. Bu hatayı aldım:

xrdb can't open display 1

Ama neyse ki, bunun işe yaradığını buldum:

startx

0

Birkaç kişinin "startx: command not found" ile sorun yaşadığını görüyorum. Bende de vardı ve bunun nedeni, ilk sağlama tamamlanmadan önce oturum açma ve startx'i deniyor olmamdı. Sabırlı olun, bir kahve alın. Özellikle sağlama tamamlandığında neler olduğunu görmek için orijinal konsol penceresini kontrol edin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.