尝试为 XenServer 7.0 制作主机 sFlow
Trying to make Host sFlow for XenServer 7.0
我花了一整天的时间尝试从源代码制作 Host sFlow 2.0.6-1 (https://github.com/sflow/host-sflow/releases) for XenServer 7.0 using the XenServer DDK from this site: http://xenserver.org/overview-xenserver-open-source-virtualization/download.html
首先,我必须对文件 hsflowd-xen.spec 进行 2 处更改:
将第 3 行更改为:"Version: 2.0.6"(它仍然是 2.0.1)
将第 20 行更改为:“%setup -n hsflowd-2.0.6-1”(添加名称是因为默认名称错误)。
现在我的问题是我没有 xenstore.h 文件。经过长时间的搜索,我发现它在 libxen-dev(或 libxen-devel)包中,但我无法在任何地方找到它及其依赖项。
我认为最有可能的四种解决方案是:
1.(懒人)获取已经为XenServer 7.0构建的Host sFlow的iso文件(官方站点在6.5停止构建)
设置一个适当的 yum 存储库,其中将包含 libxen-dev 及其依赖项。我什至无法连接到官方 CentOS 存储库,因为 /etc/yum.repos.d/ 中的文件有一个错误的 URL。
这是/etc/centos-release的内容:"XenServer DDK release 7.0.0-125770c (xenenterprise)"
不知何故设法使用 'xenstore.a' 而不是 'xenstore.h'。我更改了 src/Linux/mod_xen.c 中的代码以包含 'xenstore.a' 而不是 'xenstore.h' 但是当我构建它时,它会使用旧代码创建一个新文件并忽略我的更改。我可能更改了错误的文件,因为整个代码有不同的副本。我什至不确定它是否有效,即使我确实设法包含 'xenstore.a'.
从源代码制作 xenstore。我没有尝试,因为我只找到了旧资源,而且我想我也会错过依赖项。
PS:我在 CentOS 和 Makefiles 方面一般都是 n00b,所以解决方案可能很明显,但我只是不知道。
终于搭建成功了。这就是我必须一步一步做的:
将 XenServer DDK 7.0.0 导入 XenCenter。
按照以下步骤扩展 xvda1:https://support.citrix.com/article/CTX125405
对 hsflowd-xen.spec 进行以下更改:
第3行:版本:2.0.6
第20行:%setup -n hsflowd-2.0.6-1
在 %description 之前添加这两行:
%定义debug_package%{nil}
%定义_unpackaged_files_terminate_build 0
更改文件 /etc/yum.repos.d/CentOS-Base
将所有出现的“$releasever”更改为“7”。
将所有出现的“$basearch”更改为 "x86_64"。
将每个存储库的 "enabled=0" 更改为 "enabled=1"。
取消注释每个存储库的 baseurl 行。
安装开发包(binpkg.iso 在 xenserver.org 下载页面上可用)并在 /etc/yum.repos.d/ 中添加一个文件
我的看起来是这样的:
[binpkg]
名称=CitrixXenServer7
启用=1
baseurl=file:///mnt/binpkg/
gpgcheck=0
使用 Yum 安装以下两个包(依赖项现在应该正确安装):
xen-libs-devel.x86_64
xen-dom0-libs-devel.x86_64
制作文件并使用本教程进行安装:https://raw.githubusercontent.com/sflow/host-sflow/v2.0.4/INSTALL.XenServer
感谢 lagange,我用 XenServer 7 版本更新了 host-sflow 项目。我还添加了一个 Docker 配方,这样您就可以用“./docker_build_on xenserver”替换所有这些步骤。请在 https://github.com/sflow/host-sflow.
上提出问题
我花了一整天的时间尝试从源代码制作 Host sFlow 2.0.6-1 (https://github.com/sflow/host-sflow/releases) for XenServer 7.0 using the XenServer DDK from this site: http://xenserver.org/overview-xenserver-open-source-virtualization/download.html
首先,我必须对文件 hsflowd-xen.spec 进行 2 处更改: 将第 3 行更改为:"Version: 2.0.6"(它仍然是 2.0.1) 将第 20 行更改为:“%setup -n hsflowd-2.0.6-1”(添加名称是因为默认名称错误)。
现在我的问题是我没有 xenstore.h 文件。经过长时间的搜索,我发现它在 libxen-dev(或 libxen-devel)包中,但我无法在任何地方找到它及其依赖项。
我认为最有可能的四种解决方案是: 1.(懒人)获取已经为XenServer 7.0构建的Host sFlow的iso文件(官方站点在6.5停止构建)
设置一个适当的 yum 存储库,其中将包含 libxen-dev 及其依赖项。我什至无法连接到官方 CentOS 存储库,因为 /etc/yum.repos.d/ 中的文件有一个错误的 URL。 这是/etc/centos-release的内容:"XenServer DDK release 7.0.0-125770c (xenenterprise)"
不知何故设法使用 'xenstore.a' 而不是 'xenstore.h'。我更改了 src/Linux/mod_xen.c 中的代码以包含 'xenstore.a' 而不是 'xenstore.h' 但是当我构建它时,它会使用旧代码创建一个新文件并忽略我的更改。我可能更改了错误的文件,因为整个代码有不同的副本。我什至不确定它是否有效,即使我确实设法包含 'xenstore.a'.
从源代码制作 xenstore。我没有尝试,因为我只找到了旧资源,而且我想我也会错过依赖项。
PS:我在 CentOS 和 Makefiles 方面一般都是 n00b,所以解决方案可能很明显,但我只是不知道。
终于搭建成功了。这就是我必须一步一步做的:
将 XenServer DDK 7.0.0 导入 XenCenter。
按照以下步骤扩展 xvda1:https://support.citrix.com/article/CTX125405
对 hsflowd-xen.spec 进行以下更改:
第3行:版本:2.0.6
第20行:%setup -n hsflowd-2.0.6-1
在 %description 之前添加这两行:
%定义debug_package%{nil}
%定义_unpackaged_files_terminate_build 0更改文件 /etc/yum.repos.d/CentOS-Base
将所有出现的“$releasever”更改为“7”。
将所有出现的“$basearch”更改为 "x86_64"。
将每个存储库的 "enabled=0" 更改为 "enabled=1"。
取消注释每个存储库的 baseurl 行。安装开发包(binpkg.iso 在 xenserver.org 下载页面上可用)并在 /etc/yum.repos.d/ 中添加一个文件
我的看起来是这样的:
[binpkg]
名称=CitrixXenServer7
启用=1
baseurl=file:///mnt/binpkg/
gpgcheck=0使用 Yum 安装以下两个包(依赖项现在应该正确安装):
xen-libs-devel.x86_64
xen-dom0-libs-devel.x86_64制作文件并使用本教程进行安装:https://raw.githubusercontent.com/sflow/host-sflow/v2.0.4/INSTALL.XenServer
感谢 lagange,我用 XenServer 7 版本更新了 host-sflow 项目。我还添加了一个 Docker 配方,这样您就可以用“./docker_build_on xenserver”替换所有这些步骤。请在 https://github.com/sflow/host-sflow.
上提出问题