如何在Debian或Ubuntu上编译virt-manager

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Debian或Ubuntu上编译virt-manager相关的知识,希望对你有一定的参考价值。

参考技术A 眼下有几种不同的方法可以管理在KVM虚拟机管理程序上运行的虚拟机。比如说,virt-manager就是一种广受欢迎的基于图形用户界面(GUI)的前端工具,可用来管理虚拟机。不过,如果你想在无外设服务器上使用KVM,那么基于GUI的解决方案并非理想方案。这时候,virsh就派得上用场。virsh是一种命令行工具,可用于管理来宾虚拟机(guest

VM)。就其底层而言,virsh依赖libvirtd服务,该服务可以控制几种不同的虚拟机管理程序,其中包括KVM、Xen、QEMU、LXC和OpenVZ。

如果你想让虚拟机的配置和管理实现自动化,virsh等命令行管理界面也大有用处。此外,virsh支持多种虚拟机管理程序,这就意味着你可以通过同一个virsh界面,管理不同的虚拟机管理程序。

我在本教程中将演示如何在Debian或Ubuntu上使用virsh,从命令行运行KVM。

第一步:证实主机支持硬件虚拟化

作为第一步,证实主机的处理器配备硬件虚拟化扩展机制(比如英特尔VT或AMD-V),KVM需要这样的机制。下面这个命令就能证实一点。

$
egrep '(vmx|svm)' --color /proc/cpuinfo flags : fpu vme de
pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts
mmx fxsr sse sse2
ss syscall nx rdtscp lm constant_tsc up arch_perfmon pebs bts nopl
xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq vmx ssse3
cx16 pcid sse4_1 sse4_2 x2apic popcnt aes xsave avx f16c rdrand
hypervisor lahf_lm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi
ept vpid fsgsbase smep

如果输出结果并不含有vmx或svm标记,这意味着主机的处理器没有支持硬件虚拟化的功能。因而,你就无法在主机上使用KVM。证实了主机处理器随带vmx或svm后,接下来继续安装KVM。

第二步:安装KVM

使用apt-get,安装KVM及相关的用户空间工具。

$ sudo apt-get install qemu-kvm libvirt-bin

下一步,将你的用户ID添加到libvirt群组,那样你就能以非root普通用户的身份,管理虚拟机了。作为上面安装KVM的一部分,必须创建libvirt群组。

$ sudo adduser [youruserID] libvirt

重新装入更新后的群组成员信息,如下所示。看到要求输入密码的提示后,输入你的登录密码。

$ exec su -l $USER

这时候,你应该能够以普通用户的身份运行virsh了。为了测试一下,不妨试一试下面这个命令,它会列出可用的虚拟机(目前没有一个虚拟机)。要是你没有遇到权限错误,这意味着到目前为止,一切正常。

$ virsh --connect qemu:///system list Id Name State

如何在Debian 9.3上编译Mono

我尝试使用命令在Debian 9.3上编译mono

apt-get install git autoconf libtool automake build-essential gettext cmake python
cd /usr/local/src
wget https://github.com/mono/mono/archive/mono-5.18.1.0.tar.gz
tar -xvf mono-5.18.1.0.tar.gz
cd mono-mono-5.18.1.0
./autogen.sh --prefix=/opt/m518
./configure --prefix=/opt/m518
make

但是会抛出奇怪的错误

...
make[3]: Entering directory '/usr/local/src/mono-mono-5.18.1.0/mono/btls'
mkdir -p build-shared
(cd build-shared && CC="gcc" CXX="g++" /usr/bin/cmake -D CMAKE_MAKE_PROGRAM=/usr/bin/make -D CMAKE_INSTALL_PREFIX:PATH=/opt/m518 -D BTLS_ROOT:PATH=/usr/local/src/mono-mono-5.18.1.0/external/boringssl -D SRC_DIR:PATH=/usr/local/src/mono-mono-5.18.1.0/mono/btls -D BTLS_CFLAGS:STRING=""  -DBTLS_ARCH="x86_64" -DBUILD_SHARED_LIBS=1 /usr/local/src/mono-mono-5.18.1.0/mono/btls)
CMake Warning at CMakeLists.txt:27 (message):
  SET ARCH: x86_64


CMake Error at CMakeLists.txt:48 (add_subdirectory):
  The source directory

    /usr/local/src/mono-mono-5.18.1.0/external/boringssl

  does not contain a CMakeLists.txt file.

-- Configuring incomplete, errors occurred!
See also "/usr/local/src/mono-mono-5.18.1.0/mono/btls/build-shared/CMakeFiles/CMakeOutput.log".
Makefile:607: recipe for target 'build-shared/Makefile' failed
make[3]: *** [build-shared/Makefile] Error 1

如何解决这个问题,以便单声道可以编译?

/usr/local/src/mono-mono-5.18.1.0/external/boringssl目录为空。

更新

我按照答案中的描述编译了Mono。 MVC应用程序无法启动。 Apache errorlog包含找不到string.split的错误(下面的完整错误)。如何解决这个问题,以便应用程序可以运行。

[Fri Mar 29 23:26:57.643727 2019] [mpm_event:notice] [pid 28163:tid 140067959029824] AH00489: Apache/2.4.25 (Debian) mod_mono/3.12 configured -- resuming normal operations
[Fri Mar 29 23:26:57.643846 2019] [core:notice] [pid 28163:tid 140067959029824] AH00094: Command line: '/usr/sbin/apache2'
[ERROR] FATAL UNHANDLED EXCEPTION: System.Configuration.ConfigurationErrorsException: Error Initializing the configuration system. ---> System.MissingMethodException: Method 'string.Split' not found.
  at System.Configuration.SectionGroupInfo.ReadRootData (System.Xml.XmlReader reader, System.Configuration.Configuration config, System.Boolean overrideAllowed) [0x00007] in /usr/local/src/mono/mcs/class/System.Configuration/System.Configuration/SectionGroupInfo.cs:273 
  at System.Configuration.Configuration.ReadConfigFile (System.Xml.XmlReader reader, System.String fileName) [0x000ce] in /usr/local/src/mono/mcs/class/System.Configuration/System.Configuration/Configuration.cs:572 
  at System.Configuration.Configuration.Load () [0x00043] in /usr/local/src/mono/mcs/class/System.Configuration/System.Configuration/Configuration.cs:532 
  at System.Configuration.Configuration.Init (System.Configuration.Internal.IConfigSystem system, System.String configPath, System.Configuration.Configuration parent) [0x0005d] in /usr/local/src/mono/mcs/class/System.Configuration/System.Configuration/Configuration.cs:138 
  at System.Configuration.Configuration..ctor (System.Configuration.InternalConfigurationSystem system, System.String locationSubPath) [0x00056] in /usr/local/src/mono/mcs/class/System.Configuration/System.Configuration/Configuration.cs:96 
  at System.Configuration.Configuration..ctor (System.Configuration.InternalConfigurationSystem system, System.String locationSubPath) [0x00038] in /usr/local/src/mono/mcs/class/System.Configuration/System.Configuration/Configuration.cs:91 
  at System.Configuration.InternalConfigurationFactory.Create (System.Type typeConfigHost, System.Object[] hostInitConfigurationParams) [0x0000d] in /usr/local/src/mono/mcs/class/System.Configuration/System.Configuration/InternalConfigurationFactory.cs:41 
  at System.Configuration.ConfigurationManager.OpenExeConfigurationInternal (System.Configuration.ConfigurationUserLevel userLevel, System.Reflection.Assembly calling_assembly, System.String exePath) [0x000ea] in /usr/local/src/mono/mcs/class/System.Configuration/System.Configuration/ConfigurationManager.cs:119 
  at System.Configuration.ClientConfigurationSystem.get_Configuration () [0x0000e] in /usr/local/src/mono/mcs/class/System.Configuration/System.Configuration/ClientConfigurationSystem.cs:49 
   --- End of inner exception stack trace ---
  at System.Configuration.ClientConfigurationSystem.get_Configuration () [0x0001f] in /usr/local/src/mono/mcs/class/System.Configuration/System.Configuration/ClientConfigurationSystem.cs:52 
  at System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection (System.String configKey) [0x00000] in /usr/local/src/mono/mcs/class/System.Configuration/System.Configuration/ClientConfigurationSystem.cs:61 
  at System.Configuration.ConfigurationManager.GetSection (System.String sectionName) [0x00000] in /usr/local/src/mono/mcs/class/System.Configuration/System.Configuration/ConfigurationManager.cs:159 
  at System.Configuration.ConfigurationManager.get_AppSettings () [0x00000] in /usr/local/src/mono/mcs/class/System.Configuration/System.Configuration/ConfigurationManager.cs:173 
  at Mono.WebServer.Options.Settings.Setting`1[T]..ctor (System.String name, Mono.WebServer.Options.Settings.Parser`1[T] parser, System.String description, System.String appSetting, System.String environment, System.Nullable`1[T] defaultValue, System.String prototype) [0x000c5] in /usr/local/src/xsp-4.6/src/Mono.WebServer/Options/Settings/Setting.cs:55 
  at Mono.WebServer.Options.Settings.NullableSetting`1[T]..ctor (System.String name, Mono.WebServer.Options.Settings.Parser`1[T] parser, System.String description, System.String appSetting, System.String environment, System.Nullable`1[T] defaultValue, System.String prototype) [0x00003] in /usr/local/src/xsp-4.6/src/Mono.WebServer/Options/Settings/NullableSetting.cs:33 
  at Mono.WebServer.Options.Settings.NullableUInt16Setting..ctor (System.String name, System.String description, System.String appSetting, System.String environment, System.Nullable`1[T] defaultValue, System.String prototype) [0x00000] in /usr/local/src/xsp-4.6/src/Mono.WebServer/Options/Settings/NullableUInt16Setting.cs:35 
  at Mono.WebServer.Apache.ConfigurationManager..ctor (System.String name, System.Boolean quietDefault, System.String rootDefault) [0x0009c] in /usr/local/src/xsp-4.6/src/Mono.WebServer.Apache/ConfigurationManager.cs:43 
  at Mono.WebServer.Apache.Server.RealMain (System.String[] args, System.Boolean root, Mono.WebServer.IApplicationHost ext_apphost, System.Boolean v_quiet) [0x0001a] in /usr/local/src/xsp-4.6/src/Mono.WebServer.Apache/main.cs:77 
  at (wrapper remoting-invoke-with-check) Mono.WebServer.Apache.Server:RealMain (string[],bool,Mono.WebServer.IApplicationHost,bool)
  at Mono.WebServer.Apache.Server.Main (System.String[] args) [0x00034] in /usr/local/src/xsp-4.6/src/Mono.WebServer.Apache/main.cs:58 
答案

浅克隆您需要的特定分支/标记:

git clone --recursive https://github.com/mono/mono.git --branch=mono-5.18.1.0
cd mono
make install

re:What is git tag, How to create tags & How to checkout git remote tag(s)

re:https://github.com/mono/mono/tree/mono-5.18.1.0

以上是关于如何在Debian或Ubuntu上编译virt-manager的主要内容,如果未能解决你的问题,请参考以下文章

在 Debian 9 上编译内核模块

在Debian上编译2.6.30+bfs

在 ubuntu 上编译 rpcgen 程序

如何让 Assetic 在 Windows 上的 Zend Framework 上编译 SCSS?

在ubuntu上编译chrome

怎么在ubuntu上编译android源码