前言
今早发现新买的软银VPS的systemd好像是219,太老了,导致某软件的service无法启动。然后就开始折腾怎么升级这个 systemd。最后还是艰难的解决了,而且搜出来的信息很少,同时其中大部分中英文教程都没啥用。
快捷安装
根据实测,可升级到234这个版本,已经能正常运行service进程。
原理是调用 facebook 提供的一个第三方 Yum 仓库
Make sure to edit /etc/selinux/config and put SELinux to permissive before you update, otherwise your system will not boot anymore!
wget https://copr.fedorainfracloud.org/coprs/jsynacek/systemd-backports-for-centos-7/repo/epel-7/jsynacek-systemd-backports-for-centos-7-epel-7.repo -O /etc/yum.repos.d/jsynacek-systemd-centos-7.repo
然后运行yum安装
yum update systemd -y
若要卸载可以参考这篇文章 系统安装-007 CentOS7yum源添加、删除及其yum优化
注意:升级systemd后重启服务器会导致网卡设备名称发生变化,用户需要重新配置网卡信息。
升级 systemd 后,用户需要重新编译系统内核才能启用新版本的 systemd。如何升级内核不在本文中描述。
可以通过 dmesg 命令查看 systemd 的当前版本。
编译安装
参考了多篇文档,结果各种破事越来越多,尤其是mount (meson)要2.30版本,而yum安装出来的只有2.23,整半天也没升级成功,同时还需要3.7+的python环境。
systemctl --versionrpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.orgrpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpmyum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm -ywget https://www.moerats.com/usr/shell/Python3/CentOS_Python3.6.sh && sh CentOS_Python3.6.shwget https://ftp.osuosl.org/pub/blfs/conglomeration/systemd/systemd-251.tar.gztar -zxvf systemd-251.tar.gzcd systemd-251yum install gcc intltool gperf glib2-devel libcap-devel libmount-devel xz-devel gperf yum-utils -ypip3 install --upgrade pippip3 install meson ninja jinja2yum update -y./configuremakemake installsystemctl --versionnetworkctl --help
参考资料
如何在 RHEL/CentOS 7 上安裝/升級 Systemd
Python 3.6一键安装脚本 for CentOS/Debian
systemd-231-latest-in-centos-7-thx-to-facebook
系统安装-007 CentOS7yum源添加、删除及其yum优化