xen7.0版本atd bug导致狂打日志问题处理

2020-03-10

本博客所有文章采用的授权方式为 自由转载-非商用-非衍生-保持署名 ,转载请务必注明出处,谢谢。


背景

xen7.X版本的hypervisor环境发现daemon.log 不停的增长,都是打印如下的日志

Aug 21 04:13:57 server10 atd[10157]: File a0007501764265 is in wrong format - aborting
Aug 21 04:13:57 server10 atd[10158]: File a0007501764265 is in wrong format - aborting
Aug 21 04:13:57 server10 atd[10159]: File a0007501764265 is in wrong format - aborting
Aug 21 04:13:57 server10 atd[10160]: File a0007501764265 is in wrong format - aborting
Aug 21 04:13:57 server10 atd[10161]: File a0007501764265 is in wrong format - aborting
Aug 21 04:13:57 server10 atd[10162]: File a0007501764265 is in wrong format - aborting
Aug 21 04:13:57 server10 atd[10163]: File a0007501764265 is in wrong format - aborting

对应的at 版本
at-3.1.13-20.el7.x86_64

该xen版本是基于centos7.X,

patch 过程

rpm包的发行版,除了 发行可rpm 安装的版本,一般还会有该软件包的src 包(包括源码和相关的patch)

image-20200318144649345

获取源码

获取上图中的 Source Package,rpm -i安装后就会看到如下目录

[wsg@localhost rpmbuild]$ ll
total 4
drwxr-xr-x. 2 wsg wsg 4096 Mar 18 14:27 SOURCES
drwxr-xr-x. 2 wsg wsg   21 Mar 18 14:27 SPECS
[wsg@localhost rpmbuild]$ pwd
/home/wsg/rpmbuild
[wsg@localhost rpmbuild]$ 

其中 SOURCE目录就是源码目录,其中包括初始的源码和后续的patch

[wsg@localhost rpmbuild]$ cd SOURCES/
[wsg@localhost SOURCES]$ ll
total 220
-rw-rw-r--. 1 wsg wsg    861 Oct 30  2018 at-3.1.10-filter-environment.patch
-rw-rw-r--. 1 wsg wsg    578 Oct 30  2018 at-3.1.12-fix_no_export.patch
-rw-rw-r--. 1 wsg wsg    685 Oct 30  2018 at-3.1.12-nowrap.patch
-rw-rw-r--. 1 wsg wsg    588 Oct 30  2018 at-3.1.12-opt_V.patch
-rw-rw-r--. 1 wsg wsg   1619 Oct 30  2018 at-3.1.12-shell.patch
-rw-rw-r--. 1 wsg wsg   4082 Oct 30  2018 at-3.1.13-aborted-jobs.patch
-rw-rw-r--. 1 wsg wsg   1416 Oct 30  2018 at-3.1.13-clear-nonjobs.patch
-rw-rw-r--. 1 wsg wsg    607 Oct 30  2018 at-3.1.13-document-n.patch
-rw-rw-r--. 1 wsg wsg    665 Oct 30  2018 at-3.1.13-fclose-error.patch
-rw-rw-r--. 1 wsg wsg    668 Oct 30  2018 at-3.1.13-help.patch
-rw-rw-r--. 1 wsg wsg    535 Oct 30  2018 at-3.1.13-log-jobs.patch
-rw-rw-r--. 1 wsg wsg   1759 Oct 30  2018 at-3.1.13-mailwithhostname.patch
-rw-rw-r--. 1 wsg wsg   4081 Oct 30  2018 at-3.1.13-makefile.patch
-rw-rw-r--. 1 wsg wsg   3502 Oct 30  2018 at-3.1.13-nitpicks.patch
-rw-rw-r--. 1 wsg wsg 122544 Oct 30  2018 at_3.1.13.orig.tar.gz
-rw-rw-r--. 1 wsg wsg  12264 Oct 30  2018 at-3.1.13-pam.patch
-rw-rw-r--. 1 wsg wsg   5771 Oct 30  2018 at-3.1.13-selinux.patch
-rw-rw-r--. 1 wsg wsg   2868 Oct 30  2018 at-3.1.13-usePOSIXtimers.patch
-rw-rw-r--. 1 wsg wsg    803 Oct 30  2018 at-3.1.13-utc-dst.patch
-rwxrwxr-x. 1 wsg wsg   2122 Oct 30  2018 atd.init
-rw-rw-r--. 1 wsg wsg    403 Oct 30  2018 atd.sysconf
-rw-rw-r--. 1 wsg wsg    222 Oct 30  2018 atd.systemd
-rw-rw-r--. 1 wsg wsg    272 Oct 30  2018 pam_atd
[wsg@localhost SOURCES]$ 

SPEC目录中的配置文件,有相关的build选项,包括需要哪些patch,configure 和make相关命令




build 和make的选项

%build
# patch9 touches configure.in
autoconf
# clean old pregenerated files
rm -f lex.yy.* y.tab.*
%configure --with-atspool=%{_localstatedir}/spool/at/spool \
        --with-jobdir=%{_localstatedir}/spool/at \
        --with-daemon_username=root  \
        --with-daemon_groupname=root \
        --with-selinux \
%if %{with pam}
        --with-pam
%endif
make
%install
make install \
        DAEMON_USERNAME=`id -nu`\
        DAEMON_GROUPNAME=`id -ng` \
        DESTDIR=%{buildroot}\
        sbindir=%{buildroot}%{_prefix}/sbin\
        bindir=%{buildroot}%{_bindir}\
        prefix=%{buildroot}%{_prefix}\
        exec_prefix=%{buildroot}%{_prefix}\
        docdir=%{buildroot}/usr/doc\
        mandir=%{buildroot}%{_mandir}\
        etcdir=%{buildroot}%{_sysconfdir} \
        ATJOB_DIR=%{buildroot}%{_localstatedir}/spool/at \
        ATSPOOL_DIR=%{buildroot}%{_localstatedir}/spool/at/spool \
        INSTALL_ROOT_USER=`id -nu` \
        INSTALL_ROOT_GROUP=`id -nu`;
echo > %{buildroot}%{_sysconfdir}/at.deny

从spec的配置里,也发现了at 的git 仓库地址,好多开源的 软件包也都放在这边。

https://salsa.debian.org/debian/at/-/commits/master

patch

有时候没有现成的patch,可以 先尝试 build

rpmbuild -ba at.spec

这样就会 生成 打了所有patch之后的源码目录(位于BUILD目录)

drwxr-xr-x. 3 wsg wsg   23 Mar 17 18:12 BUILD
drwxr-xr-x. 2 wsg wsg    6 Mar 17 18:12 BUILDROOT
drwxr-xr-x. 3 wsg wsg   20 Mar 17 18:12 RPMS
drwxr-xr-x. 2 wsg wsg 4096 Mar 18 14:26 SOURCES
drwxr-xr-x. 2 wsg wsg   21 Mar 17 17:55 SPECS
drwxr-xr-x. 2 wsg wsg   38 Mar 17 18:12 SRPMS
[wsg@localhost rpmbuild_before]$ 

[wsg@localhost at-3.1.13]$ pwd
/home/wsg/rpmbuild_before/BUILD/at-3.1.13
[wsg@localhost at-3.1.13]$ 

这样可以 在上面的源码上 直接修改,修改后直接 手动 congfigure 和 make,这样就产生了 atd的可执行文件

参考

https://bugs.debian.org/cgi-bin/bugreport.cgi?att=1;bug=638256

https://bugzilla.redhat.com/show_bug.cgi?id=718422

文章评论

comments powered by Disqus


章节列表