CentOS中编译wireshark3.0以上版本并上传至本地yum源
一、摘要
目前,wireshark的版本已更新至3.0以上,而在CentOS系统中还在使用较旧的wireshark版本。如在CentOS7的官方yum源或者阿里云源中,存放的是wireshark-1.10的rpm包,在CentOS8的官方yum源或者阿里云源中,存放的是wireshark-2.6的rpm包。这些相对老旧的wireshark版本在功能上已经落后,不能适应对抓包的新要求。作者决定在CentOS系统中编译新的wireshark源码,并制作RPM包上传至本地服务器yum源中,以方便局域网内的其他同事使用。本文主要讲述了如何在CentOS中编译wireshark3.0源码以及如何制作rpm包并上传至本地yum源。
二、说明
本文默认读者已经具备以下能力:
1、了解yum命令的基本作用和用法
2、了解cmake命令的基本作用和用法
3、了解rpmbuidl命令的基本作用和用法
4、了解createrepo命令的基本作用和用法
如果你对以上四条还不是很了解,建议先在百度上搜索其相关知识进行简单学习,否则以下内容的阅读可能会稍有困难。
三、编译wireshark源码
1、下载wireshark源码
这里介绍下载wireshark源码的两种方式:
(1)输入命令:
git clone https://code.wireshark.org/review/wireshark
这里存放的wireshark源码一定是最新版的wireshark源码,也是三点零以上版本的源码。
(2)打开网站 https://www.wireshark.org/download/src/all-versions/
这里有全部版本的wireshark源码,找到最新版的源码下载到Downloads目录中。
2、升级cmake
Wireshark要求3.5以上的cmake版本,这里需要下载cmake3。
在终端窗口执行如下命令:
yum install -y cmake3
3、搭建环境
作者是在新安装的CentOS7标准版的进行wireshark编译的,这意味着编译过程中缺少的依赖可能是最多的,总结了一下,在编译过程中我总共安装了以下这些package包。
yum install -y git
yum install -y glib2
yum install -y glib2-devel
yum install -y libgcrypt-devel
yum install -y flex
yum install -y byacc
yum install -y libpcap-devel
yum install -y system-devel
yum install -y libssh
yum install -y libssh-devel
yum install -y qt5-qtbase-devel
yum install -y qt5-qttools
yum install -y qt5-qtmultimedia
yum install -y qt5-qtmultimedia-devel
yum install -y qt5-qtsvg-devel
yum install -y python34
各位同仁可以直接执行这些命令,就可以完成wireshark编译的相关依赖。
4、编译
在wireshark源码所在的目录中创建新的目录wsbuild:
mkdir wsbuild
编译wireshark源码
cmake3 -DCMAKE_INSTALL_PREFIX=/user ../wireshark
在小节3中安装的软件版是针对的CentOS7标准版,如果你安装的是CentOS7精简版或者CentOS8版本,可能还需要安装其它的依赖软件,这里大可不必担心,可以根据编译过程中的错误提示来安装其他相关的依赖软件。
如果在编译过程中出现如下错误:
Could NOT find ***(***_EXECUTABLE)
这证明你缺少这个可执行文件,可以在yum源中查找该软件包,然后进行下载。
yum list | grep ***
yum install -y ***
而如果你在编译过程中出现如下错误:
Could NOT find ***(***_LIBARIES)
这证明你缺少这个库文件,可以在yum源中查找该文件,然后进行下载
yum list | grep ***
yum install -y ***-devel #库文件在***-devel中
这里需要注意下,你在yum源中搜索软件包名称可能会跟yum中列出的软件包名称稍有差异。比如你在编译过程中可能会出现错误
Could NOT find LEX(LEX_EXECUTABLE)
而当你在yum源中搜索LEX时
Yum list | grep LEX
会发现列出的软件包中并没有叫LEX软件包,而是一个叫FLEX软件包,这时下载FLEX就可以。即,名称不一定完全相符,下载搜索出的第一个软件包即可。然后继续执行命令:
cmake3 -DCMAKE_INSTALL_PREFIX=/user ../wireshark
当出现以下输出时证明wireshark已编译完成。
--Configuring done
--Generating done
--Build files have been written to: ***/wsbuild
此时如果你想在本机上安装这个版本的wireshark,可在该文件夹下执行
make
make install
至此wireshark3.0以上版本在CentOS系统中的编译和安装工作已经完成。
5、制作RPM包
编译完成后,在目录wsbuild/packaging/rpm/SPECS中会自动生成一个wireshark.spec文件,这个文件是生成wireshark.rpm的钥匙,有了它,RPM包的生成只是两行代码的事情。执行命令:
rpmbuild -ba wireshark.spec
此时会提示你在rpmbuild/SOURCES目录中找不到源代码文件,将源代码压缩包复制到此文件夹下。然后进入刚才的目录wsbuild/packaging/rpm/SPECS,执行命令:
rpmbuild -ba wireshark.spec
这时会经过一个长时间的编译过程,当这个过程结束时,你会发现在rpmbuild/RPMS/x86_64目录中有以下三个rpm包,这是rpm包的制作便大功告成。
说明:当我们执行rpmbuidl命令时,该命令会自动在我们账户的根目录中自动红创建出如下格式的目录:
rpmbuild
|—BUILD
|—BUILDROOT
|—RPMS
|—SOURCES
|—SPECS
|—SRPMS
6、制作本地yum源
开yum源文件存放目录:
cd /etc/yum.repo.d/
创建本地yum源文件:
vim CentOS-Local.repo
输入如下内容:
[Local]
Name=CentOS-Local
Baserul=file:///home/nova/rpmbuild/RPMS/x86_64 #此处输入你创建的rpm包所在的目录
Gpgcheck=0
Enabled=1
创建本地仓库:
createrepo /home/nova/rpmbuild/RPMS/x86_64 #此处的目录同样是你创建rpm包所在的目录
清理并更新yum源:
yum clean all
yum makecache
此时当你再次输入yum list | grep wireshark命令时,你会发现已经有wireshark3.0以上版本的rpm包了,而且是在Local仓库中
此时执行命令:
yum install -y wireshark3.0
便可以正常安装wireshark3.0版本。
四、结语
网络的基本理念是分享,写作此文回报社会。
草草成章,不当之处,望各位大神批评指正。