将 CentOS 的 YUM 源永久替换为阿里云的 YUM 源
- 备份原有的 YUM 源
在修改之前,备份当前系统的默认 YUM 源配置文件,方便问题排查或恢复默认配置。
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
- 下载阿里云的 YUM 源配置文件
根据你的系统版本下载对应的阿里云镜像源。
CentOS 7
执行以下命令:
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
- 清理 YUM 缓存并更新
完成替换后,需要清理缓存并生成新缓存:
sudo yum clean all
sudo yum makecache
- 验证配置是否成功
执行以下命令,检查当前使用的镜像源是否已更换为阿里云:
sudo yum repolist
你应该会看到类似以下输出,显示镜像来自阿里云:
epo id repo name
base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com
extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com
updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com
5. 可选步骤:同步 EPEL 源
阿里云也提供了 EPEL 源镜像,推荐一起替换。
替换 EPEL 源
sudo curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
清理缓存并生成新缓存:
sudo yum clean all
sudo yum makecache
更新到一个更高版本的GCC
#安装CentOS Software Collections仓库
yum install centos-release-scl
#安装之后yum仓库会报错,修改/etc/yum.repos.d/CentOS-SCLo-scl.repo
# CentOS-SCLo-scl.repo
#
# Modified to use Aliyun mirrors
[centos-sclo-sclo]
name=CentOS-7 - SCLo sclo - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/7/sclo/$basearch/sclo/
# mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-sclo
gpgcheck=1
enabled=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-SIG-SCLo
[centos-sclo-sclo-testing]
name=CentOS-7 - SCLo sclo Testing - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/7/sclo/$basearch/sclo-testing/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-SIG-SCLo
[centos-sclo-sclo-source]
name=CentOS-7 - SCLo sclo Sources - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/7/sclo/Source/sclo/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-SIG-SCLo
[centos-sclo-sclo-debuginfo]
name=CentOS-7 - SCLo sclo Debuginfo - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/7/sclo/$basearch/debuginfo/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-SIG-SCLo
#修改/etc/yum.repos.d/CentOS-SCLo-scl-rh.repo
# CentOS-SCLo-scl-rh.repo
#
# Modified to use Aliyun mirrors
[centos-sclo-rh]
name=CentOS-7 - SCLo rh - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/7/sclo/$basearch/rh/
# mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-rh
gpgcheck=1
enabled=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-SIG-SCLo
[centos-sclo-rh-testing]
name=CentOS-7 - SCLo rh Testing - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/7/sclo/$basearch/rh-testing/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-SIG-SCLo
[centos-sclo-rh-source]
name=CentOS-7 - SCLo rh Sources - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/7/sclo/Source/rh/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-SIG-SCLo
[centos-sclo-rh-debuginfo]
name=CentOS-7 - SCLo rh Debuginfo - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/7/sclo/$basearch/debuginfo-rh/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-SIG-SCLo
#完成上述修改后,执行以下命令来清理YUM缓存并重新生成缓存:
yum clean all
yum makecache
# 安装所需的开发者工具集
yum install devtoolset-9
# 启用开发者工具集环境
scl enable devtoolset-9 bash
安装依赖项
sudo yum install -y gcc make automake libtool pkgconfig python3-pip numactl-devel openssl-devel popt-devel
使用meson作为构建系统,则还需要安装ninja-build工具:
pip3 install meson ninja
sudo yum install -y meson ninja-build
从官方网站下载DPDK 24.11.1 LTS版本,并将其解压缩到一个合适的位置:
wget http://fast.dpdk.org/rel/dpdk-24.11.1.tar.xz
tar xf dpdk-24.11.1.tar.xz
cd dpdk-24.11.1
编译DPDK
进入解压后的目录后,可以使用meson来生成构建文件,并通过ninja来进行编译。这里我们将创建一个名为build的子目录用于存放生成的文件:
meson setup build --prefix=/usr/local -Dexamples=all
ninja -C build
sudo ninja -C build install
升级 Python 版本
在CentOS 7上,默认的Python版本可能是较旧的版本。您可以使用以下步骤来安装更新的Python版本:
# 安装依赖包
yum install -y gcc openssl-devel bzip2-devel libffi-devel
# 下载并编译安装Python 3.9 (或者选择其他版本)
cd /usr/src
wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz
tar xzf Python-3.9.0.tgz
cd Python-3.9.0
./configure --enable-optimizations
make altinstall # 使用altinstall以避免覆盖默认的python二进制文件
创建和激活虚拟环境
创建一个基于新Python版本的虚拟环境,这样不会影响系统的默认Python版本:
/usr/local/bin/python3.9 -m venv dpdk-env
source dpdk-env/bin/activate
在激活的虚拟环境中,安装所需的Python包:
pip install meson ninja pyelftools
确保meson和ninja命令指向的是您刚刚安装的版本,尤其是在使用虚拟环境时:
which meson
which ninja
完成上述步骤后,尝试清理构建目录并重新开始构建过程:
cd /path/to/dpdk-24.11
meson setup builddir
ninja -C builddir
ninja编译报错
[2198/2824] Compiling C object drivers/libtmp_rte_crypto_openssl.a.p/crypto_openssl_rte_openssl_pmd.c.o FAILED: drivers/libtmp_rte_crypto_openssl.a.p/crypto_openssl_rte_openssl_pmd.c.o
解决方案
确认 openssl11.pc 文件位置
确保新版本的OpenSSL有对应的pkg-config文件,并且该文件位于/usr/lib64/pkgconfig/目录下。如果没有,请创建一个:
sudo tee /usr/lib64/pkgconfig/openssl11.pc <<EOF
prefix=/usr
exec_prefix=\${prefix}
libdir=\${exec_prefix}/lib64
includedir=\${prefix}/include/openssl11
Name: OpenSSL-1.1
Description: Secure Sockets Layer and cryptography libraries and tools (version 1.1)
Version: 1.1.1k
Requires:
Libs: -L\${libdir} -lssl -lcrypto
Cflags: -I\${includedir}
EOF
确保pkg-config能够找到并优先选择新的openssl11.pc文件。设置PKG_CONFIG_PATH环境变量:
export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:$PKG_CONFIG_PATH
在Meson构建时,使用pkg-config命令来获取编译和链接标志,并将其传递给Meson:
OPENSSL_CFLAGS=$(pkg-config --cflags openssl11)
OPENSSL_LDFLAGS=$(pkg-config --libs openssl11)
meson setup builddir --default-library=shared \
-Dc_args="$OPENSSL_CFLAGS" \
-Dc_link_args="$OPENSSL_LDFLAGS"
确认pkg-config返回的是OpenSSL 1.1.x版本的信息:
pkg-config --modversion openssl11
构建目录已经配置过,需要先清理或重新配置:
cd /path/to/dpdk-24.11 #dbdk目录
meson setup --reconfigure builddir
完成上述更改后,运行构建命令:
ninja -C builddir