Qt 如何在GUI中使用Vagrant for CentOS

Qt 如何在GUI中使用Vagrant for CentOS,qt,centos,vagrant,Qt,Centos,Vagrant,我正试图建立一个流浪者的机器与CentOS版本的图形用户界面。这是我的流浪汉档案: Vagrant.configure(2) do |config| config.vm.box = "puppetlabs/centos-7.0-64-nocm" config.vm.provider :virtualbox do |vb| vb.name = "DSW-Run-7" end config.vm.network "private_network", ip: "192.168.33.13" co

我正试图建立一个流浪者的机器与CentOS版本的图形用户界面。这是我的流浪汉档案:

Vagrant.configure(2) do |config|

config.vm.box = "puppetlabs/centos-7.0-64-nocm"
config.vm.provider :virtualbox do |vb|
  vb.name = "DSW-Run-7"
end
config.vm.network "private_network", ip: "192.168.33.13"
config.vm.synced_folder ".", "/home/vagrant/CartoDSW"
config.vm.provider "virtualbox" do |vb|
# Display the VirtualBox GUI when booting the machine
vb.gui = true
  vb.memory = "2048"
end
config.vm.provision "shell", inline: <<-SHELL
sudo yum -y install epel-release
sudo yum -y install qt5-qtbase
sudo yum -y install qt5-qtbase-devel
sudo yum -y install jbigkit.x86_64
sudo yum -y install gcc-c++
sudo yum -y install git
sudo yum groupinstall basic-desktop desktop-platform x11 fonts
  SHELL
end
Vagrant.configure(2)do | config|
config.vm.box=“puppetlabs/centos-7.0-64-nocm”
config.vm.provider:virtualbox do | vb|
vb.name=“DSW-Run-7”
结束
config.vm.network“专用_网络”,ip:“192.168.33.13”
config.vm.synced_文件夹“,”/home/vagrant/CartoDSW”
config.vm.provider“virtualbox”do | vb|
#启动计算机时显示VirtualBox GUI
vb.gui=true
vb.memory=“2048”
结束

config.vm.provision“shell”,内联:有两种可能的解决方案:

  • 第一:使用GUI并直接引导GUI
  • 第二:使用x11转发
第一个选项:在GUI模式下启动

vagrant用户在大多数情况下都没有密码(除非您另外指定并构建一个新框),因为它使用ssh密钥连接

如果你想通过GUI连接,你需要给用户一个新密码

  • 运行
    vagrant ssh
    连接到虚拟机
  • 运行
    sudo passwd
    为用户输入新密码
从那里,您将能够通过GUI登录,然后确保您有X环境开始工作,您可以安装

sudo yum install 'xorg*'
sudo yum install xterm
或者安装Gnome环境

yum -y groups install "GNOME Desktop"
确保将您的文件设置为

config.vm.provider "virtualbox" do |vb|
  vb.gui = true
end
当您运行
vagrant up

第二种选择:使用X11转发

从您试图实现的目标来看,可能有更好的方法(但我对QT还不太熟悉,无法做出真正的判断)。流浪者可以选择转发X11

config.ssh.forward\u x11
-如果
true
,则通过ssh进行x11转发 连接已启用。默认为false

您的主机上需要一个X11客户机(如果您在mac上运行,您可以下载并使用它,它可以很好地完成工作,如果您在另一个系统上运行,请检查是否有等效版本)

因此,当您在主机上安装X11客户端并打开
config.ssh.forward\u X11
时,您可以直接运行X-command,它们将在主机上转发

sudo yum install xterm
xterm & 
并且xterm窗口将出现在主机上


注意:您可能需要在VM上安装
xauth
,例如使用
sudo-apt-get-install-xauth
(Debian/Ubuntu/…)或
yum-install-xorg-x11-xauth
(CentOS,Fedora/)。

为CentOS/7解决此问题,我已安装并使用以下shell命令从Vagrant文件启动GNOME:

config.vm.provision "shell", inline: <<-SHELL
 sudo yum -y groupinstall "GNOME Desktop"
 sudo systemctl set-default graphical.target
 sudo systemctl start graphical.target
SHELL

config.vm.provision“shell”,内联:将以下内容放入您的文件中,以重置密码。适用于我通常使用的Centos 6x图像

config.vm.provision :shell, :inline => "echo \"vagrant\"|passwd --stdin vagrant"
config.vm.provision :shell, :inline => "echo \"vagrant\"|passwd --stdin root"
例如:

从以下几个方面得出结论:


对于CentOS 6,我有一个回购协议,在这里可以使用:

简而言之,使用以下代码进行安装和设置:

config.vm.provision "shell", inline: <<-SHELL
  # install GUI desktop
  sudo yum update
  sudo yum groupinstall -y "X Window System" "Desktop"
  sudo yum install -y gnome-core xfce4 xorg-x11-fonts
  sudo echo "id:5:initdefault:" > /etc/inittab
  # fix fonts problem in terminal
  # https://forums.anandtech.com/threads/fonts-screwed-up-in-centos-6-terminal.2186468/
  sudo yum -y install terminus-fonts terminus-fonts-console
  reboot # reboot to load GUI
SHELL

config.vm.provision“shell”,内联:这很好。我可以登录,然后我尝试安装为桌面,用户界面为yum-groupinstall-basic desktop-desktop-platform x11-fonts,但没有安装sudo-startx,桌面未打开。我的目标是让centos机器在QtGUI上工作并调试我的代码(可能通过GDB)。请建议我怎么做。@sasikala这是因为x-environment可能没有安装,使用
sudo-yum安装'xorg*'
安装也可能是一种更好的方法,在使用X11编辑我的答案时详细介绍forwarding@Henri登录到GUI后,我运行了4个命令sudo-yum-groupinstall“GNOME-Desktop”“图形管理工具”sudo-yum清除所有sudo-yum更新sudo-yum重新安装NetworkManager在执行这些命令后,我从终端上随意重新加载了这些命令,然后通过GUI登录到主机,当我执行sudo-startx时,centos机器将启动一个桌面。但如果我从vagrantfile运行这些命令,我会得到错误,因为找不到startx命令。我认为从流浪者文件无法安装GNOME桌面。你知道如何从Vagrantfile运行startx吗?默认情况下,它将是root用户,确保vagrant用户运行命令;我甚至不确定这是否可能。我知道的两个选择是:1。x11转发和2。通过GUIstartx登录,我可以从GUI完成。我将sudo-yum-groupinstall“GNOME-Desktop”“图形管理工具”添加到vagrant文件中,但似乎没有安装桌面,因为当我执行startx命令时,它会显示找不到该命令。我想从文件中添加GNOME桌面。