由于RedHat系列系统默认不安装OpenVSwitch,因此需要自己安装。如果你是Centos6.7以前的版本,那么我只能说,你非常走运!!并且不用浏览本博客文章。

下面我的Linux系统环境

[root@centos6 ~]# uname -a

Linux centos6.7 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

[root@centos6 ~]#

一、 官方网站下载源码

我们第一步就是要获取源代码。通过以往的经验,我们可以从官方网站上下载我们需要的版本[下载地址]。我下载是

openvswitch-2.3.2.tar.gz

二、 rpmbulid编译

百度搜索能够搜出很多关于如何编译OVS,方法大同小异,也可阅读源码中帮助文档。 为了方便大家编译,下面是大致编译方法。

1、 准备编译环境

yum -y install gcc makePython-devel openssl-devel graphviz autoconfautomake rpm-build

redhat- rpm-config libtool

如果没有安装kernel-devel kernel-headers

[root@centos6 ~]# wgetftp://ftp.owlriver.com/pub/local/COLUG//RPM-build-tree.txt

[root@centos6 ~]# sh RPM-build-tree.txt


3、 rpm包编译

tar zxf openvswitch-2.3.2.tar.gz

cd openvswitch-2.3.2

cp ../openvswitch-2.3.2.tar.gz /root/rpmbuild/SOURCES/

cp rhel/openvswitch-kmod.files /root/rpmbuild/SOURCES/

rpmbuild -bb rhel/openvswitch.spec

rpmbuild -bb rhel/openvswitch-kmod-rhel6.spec

在编译openvswitch的时候非常顺利,但是在编译kmod驱动的时候就不那么顺利了。下面是编译错误。

/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/../linux/compat/utils.c
/usr/bin/make -C /usr/src/kernels/2.6.32-573.3.1.el6.x86_64
M=/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux modules
make[1]: Entering directory `/usr/src/kernels/2.6.32-573.3.1.el6.x86_64'
CC [M]
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux/actions.o
CC [M]
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux/datapath.o
In file included from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux/actions.c:21:
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/skbuff.h:
In function 'skb_clear_hash':
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/skbuff.h:302:
error: 'struct sk_buff' has no member named 'l4_rxhash'
In file included from include/linux/if_ether.h:136,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/if_ether.h:4,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../include/linux/if_ether.h:26,
from include/linux/netdevice.h:29,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/netdevice.h:4,
from include/linux/if_arp.h:26,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/if_arp.h:4,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux/datapath.c:23:
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/skbuff.h:
In function 'skb_clear_hash':
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/skbuff.h:302:
error: 'struct sk_buff' has no member named 'l4_rxhash'
In file included from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux/actions.c:22:
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/in.h:
At top level:
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/in.h:8:
error: redeFinition of 'proto_ports_offset'
include/linux/in.h:292: note: prevIoUs deFinition of 'proto_ports_offset'
was here
In file included from include/linux/netfilter.h:9,
from include/net/netns/x_tables.h:5,
from include/net/net_namespace.h:18,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/net/net_namespace.h:4,
from include/linux/netdevice.h:48,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux/datapath.c:23:
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/in.h:
At top level:
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/in.h:8:
error: redeFinition of 'proto_ports_offset'
include/linux/in.h:292: note: prevIoUs deFinition of 'proto_ports_offset'
was here
In file included from include/linux/if_arp.h:26,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux/datapath.c:23:
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/netdevice.h:37:
error: conflicting types for 'netdev_rx_handler_register'
include/linux/netdevice.h:2215: note: prevIoUs declaration of
'netdev_rx_handler_register' was here
In file included from include/net/sock.h:50,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/net/sock.h:4,
from include/linux/tcp.h:180,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/tcp.h:4,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux/actions.c:26:
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/netdevice.h:37:
error: conflicting types for 'netdev_rx_handler_register'
include/linux/netdevice.h:2215: note: prevIoUs declaration of
'netdev_rx_handler_register' was here
In file included from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux/actions.c:31:
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/net/ip.h:9:
error: redeFinition of 'ip_is_fragment'
include/net/ip.h:249: note: prevIoUs deFinition of 'ip_is_fragment' was here
In file included from include/net/xfrm.h:18,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/../compat.h:26,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/../datapath.h:29,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux/datapath.c:57:
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/net/ip.h:9:
error: redeFinition of 'ip_is_fragment'
include/net/ip.h:249: note: prevIoUs deFinition of 'ip_is_fragment' was here
make[2]: ***
[/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux/datapath.o]
Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: ***
[/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux/actions.o]
Error 1
make[1]: ***
[_module_/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux]
Error 2
make[1]: Leaving directory `/usr/src/kernels/2.6.32-573.3.1.el6.x86_64'
make: *** [default] Error 2
make: Leaving directory
`/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux'
error: Bad exit status from /var/tmp/rpm-tmp.bR1bj9 (%build)

大概意思,头文件冲突。这种编译错误,是非常让人头疼的。我经过百度以及谷歌后,均没有查找什么有价值的解决方

案,这个问题困扰了我多日,更换过各种版本,从1.9~2.4的发布版本,都尝试过但仍然存在问题。 曾经一度想换操作

系统,直到无意中查看官方网站中论坛-mail来往记录,才发现如下内容。

三、 解决方案

http://openvswitch.org/pipermail/discuss/2015-September/018885.html

大致意思是在官方发布的release版本在centos6.7中都存在编译不过的问题,但这些问题在github都已经更新并且修改完毕,我们可以从github中克隆代码并且进

行编译。

我去,这就是开源软件的弊端吗!!! 好吧,我只能尝试从github中获取代码并且进行编译啦。 天啊!!还真编译成功了,两个软件都编译ok,并且运行起来了。

[root@centos6 ~]# service openvswitch status
ovsdb-server is running with pid 2091
ovs-vswitchd is running with pid 2102
[root@centos6 ~]#

四、 总结

当经过百度和谷歌都没有查到相关解决方案的时候,我估计很多人都会陷入绝境,不知所错。 总结如下:

第一、 但是你要知道这样一句话: 你要相信你不是遇见这个问题的第一人。

第二、 当遇到无法解决的问题时候,请逛一逛官方论坛。


PS:如果在编译的时候,出现类似test错误,解决方案如下: 请在rpmbulid指定参数 --without check。例如:

rpmbuild -bb --without check rhel/openvswitch.spec

Centos6.7 Centos7.0 安装OpenVSwitch痛苦经历的更多相关文章

  1. ios8 – iOS 8上的ptrace

    我试图在ptrace上调用一个像thisptrace一样的函数;但是当我尝试使用#include导入它时,Xcode会给我一个错误’sys/ptrace.h’文件找不到.我错过了什么,我是否需要导入一个库,或者这在iOS上根本不可用?

  2. ios – Xcode 5持续集成CodeSign失败

    嗨,您好.我正在尝试使用xcode5和OSXServer为我的iOS应用程序配置持续集成.我将证书和p12添加到系统KeyChain,我还将配置文件复制到配置文件的服务器文件夹.集成失败,日志显示错误消息短消息:Command/usr/bin/codesignFailedwithexitcode1完整信息:CodeSign/Library/Server/Xcode/Data/BotRuns/Cac

  3. ios – Swift 2.0 – Google Analytics事件构建器错误 – NSMutableDictionary无法转换为[NSObject:AnyObject]

    完美地使用Swift1.2代码:错误:任何的想法?解决方法你错了你的事件.这是正确的方法和一种方法.将事件跟踪器初始化为NSObject在发送方法中将NSObject转换为Anyobject.

  4. macos – 运行brew命令充满了’同意Xcode / iOS许可证需要管理员权限,请通过sudo以root身份重新运行.’

    所以我跑了:如果滚动到底部,可以输入“同意”,然后就可以了.

  5. ios – 如何存档包含自定义框架的应用程序?

    我有一个我创建的xcode框架项目,我可以编译成一个myframework.framework文件.编译之后,我将这个框架拖到我应用程序的Frameworks项目文件夹中,然后利用框架中的类,将适当的import语句添加到需要它的任何类;这允许我的应用程序成功编译与在框架中定义的类的引用.要使应用程序成功部署到我的设备,我还将我的自定义框架添加到我的目标的“嵌入式二进制文件”部分.有了这一切,我可

  6. ios – 1个用于体系结构x86_64的重复符号

    我不确定我做错了什么.我将项目文件夹移动到另一个文件夹,并将备份文件夹复制到桌面.我试图打开备份项目并构建,我收到了链接器错误.所以我决定删除备份文件夹并将项目文件夹移回桌面.我不能再编译并收到以下错误.没有派生数据文件夹还是一样1.我打开了DerivedData文件夹并删除了其中的所有内容2.我删除了所有模拟器中的所有项目3.我重新启动了xCode,Clean和build还是一样将项目添加到Gi

  7. ios – 链接错误/ Build / Products / Debug-iphonesimulator文件未找到

    我有Xcode的问题,不断给我一个链接器错误,它不构建项目.以下是我得到的错误ld:filenotfound:/Users/someuser/Library/Developer/Xcode/DerivedData/MAR-akbwbarcniqxytctbebckkelkbxs/Build/Products/Debug-iphonesimulator/MAR.app/MARclang:error:

  8. 在编译时编译Xcode中的C类错误:stl vector

    我有一个C类,用gcc和可视化工作室中的寡妇在linux上编译.boid.h:并在boid.cpp中:但是,当我在Xcode中编译此代码时,我收到以下错误:有任何想法吗?我以为你可以使用C/C++代码并在Xcode中编译没有问题?.m文件被视为具有Objective-C扩展名的.c文件..mm文件被视为具有Objective-C扩展名的.cpp文件,那么它被称为Objective-C只需将.m文件重命名为.mm,右键单击或按住Ctrl键并在Xcode中的文件中选择重命名.

  9. iOS 64位兼容性

    我的构建设置如下所示:我的部署目标是iOS6.0.我只需要确认该应用程序是64位兼容的,我都是iOS新手,不久前接管了一个相当大的项目,所以我宁愿要求100%肯定.只是为了使事情变得更清楚,你如何确保iOS应用程序是64位兼容的?

  10. xcode – 苹果LLVM编译3.1错误

    只需更新Xcode到4.3,现在我无法建立我的应用程序.我收到这个错误:有人有这个问题吗?

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部