From dc8445e775f2abbb8bc161e0e78507d1e9112869 Mon Sep 17 00:00:00 2001 From: James Antill Date: Jan 23 2014 22:03:16 +0000 Subject: update to latest HEAD - Test for lvm binary before using. BZ 1047793. - Split cron-daily and cron-hourly into separate packages. Add cron-security. --- diff --git a/yum-HEAD.patch b/yum-HEAD.patch index 0cbbe39..24f2bb5 100644 --- a/yum-HEAD.patch +++ b/yum-HEAD.patch @@ -2743,10 +2743,10 @@ index 0000000..ad24788 + generateAll(os.getcwd(), os.getcwd()) diff --git a/docs/yum-cron.8 b/docs/yum-cron.8 new file mode 100644 -index 0000000..db50fc2 +index 0000000..7ce1aef --- /dev/null +++ b/docs/yum-cron.8 -@@ -0,0 +1,50 @@ +@@ -0,0 +1,51 @@ +.\" yum-cron - cron interface for yum +.TH "yum-cron" "8" "" "Nick Jacek" "" +.SH "NAME" @@ -2778,6 +2778,7 @@ index 0000000..db50fc2 +.nf +/etc/yum/yum-cron.conf +/etc/yum/yum-cron-hourly.conf ++/etc/yum/yum-cron-security.conf +.fi + +.PP @@ -2798,7 +2799,7 @@ index 0000000..db50fc2 + the mailing list, yum@lists.baseurl.org, or consult bugzilla. +.fi diff --git a/docs/yum.8 b/docs/yum.8 -index 1a8202a..25493ee 100644 +index 1a8202a..c9b529e 100644 --- a/docs/yum.8 +++ b/docs/yum.8 @@ -25,6 +25,8 @@ gnome\-packagekit application\&. @@ -3491,7 +3492,7 @@ index 1a8202a..25493ee 100644 .IP "\fByum list [all | glob_exp1] [glob_exp2] [\&.\&.\&.]\fP" List all available and installed packages\&. -@@ -542,6 +911,10 @@ shell\-style glob and any matches are printed\&. +@@ -542,14 +911,18 @@ shell\-style glob and any matches are printed\&. List the packages installed on the system that are not available in any yum repository listed in the config file. .IP @@ -3502,6 +3503,16 @@ index 1a8202a..25493ee 100644 .IP "\fByum list obsoletes [glob_exp1] [\&.\&.\&.]\fP" List the packages installed on the system that are obsoleted by packages in any yum repository listed in the config file. + .IP + .IP "\fByum list recent\fP" + List packages recently added into the repositories. This is often not helpful, +-but what you may really want to use is "yum list-updateinfo new" from the +-security yum plugin. ++but what you may really want to use is "yum updateinfo list new" although that ++relies on updateinfo data from the repos. + .IP + + .PP @@ -658,7 +1031,7 @@ configuration options. .I yum-complete-transaction (1) .I yumdownloader (1) @@ -4258,7 +4269,7 @@ index 0cfaa4b..0000000 - -exit 0 diff --git a/etc/Makefile b/etc/Makefile -index 29a7f95..49f1d81 100644 +index 29a7f95..7c023af 100644 --- a/etc/Makefile +++ b/etc/Makefile @@ -1,4 +1,6 @@ @@ -4276,7 +4287,7 @@ index 29a7f95..49f1d81 100644 mkdir -p $(DESTDIR)/etc/yum/protected.d mkdir -p $(DESTDIR)/etc/yum/repos.d mkdir -p $(DESTDIR)/etc/yum/vars -@@ -24,15 +27,9 @@ install: +@@ -24,15 +27,10 @@ install: mkdir -p $(DESTDIR)/etc/dbus-1/system.d/ install -m 755 yum-updatesd-dbus.conf $(DESTDIR)/etc/dbus-1/system.d/yum-updatesd.conf @@ -4297,6 +4308,7 @@ index 29a7f95..49f1d81 100644 + install -m 644 yum.bash $(DESTDIR)/$(compdir)/yum + ln -s yum $(DESTDIR)/$(compdir)/yummain.py + install -m 644 yum-cron.conf $(YUMETC) ++ install -m 644 yum-cron-security.conf $(YUMETC) + install -m 644 yum-cron-hourly.conf $(YUMETC) diff --git a/etc/yum-cron b/etc/yum-cron deleted file mode 100755 @@ -4491,12 +4503,100 @@ index 0000000..7871a46 + +# Uncomment to auto-import new gpg keys (dangerous) +# assumeyes = True +diff --git a/etc/yum-cron-security.conf b/etc/yum-cron-security.conf +new file mode 100644 +index 0000000..b0edd9d +--- /dev/null ++++ b/etc/yum-cron-security.conf +@@ -0,0 +1,82 @@ ++[commands] ++# What kind of update to use: ++# default = yum upgrade ++# security = yum --security upgrade ++# security-severity:Critical = yum --sec-severity=Critical upgrade ++# minimal = yum --bugfix upgrade-minimal ++# minimal-security = yum --security upgrade-minimal ++# minimal-security-severity:Critical = --sec-severity=Critical upgrade-minimal ++update_cmd = security ++ ++# Whether a message should emitted when updates are available. ++update_messages = yes ++ ++# Whether updates should be downloaded when they are available. Note ++# that updates_messages must also be yes for updates to be downloaded. ++download_updates = yes ++ ++# Whether updates should be applied when they are available. Note ++# that both update_messages and download_updates must also be yes for ++# the update to be applied ++apply_updates = yes ++ ++# Maximum amout of time to randomly sleep, in minutes. The program ++# will sleep for a random amount of time between 0 and random_sleep ++# minutes before running. This is useful for e.g. staggering the ++# times that multiple systems will access update servers. If ++# random_sleep is 0 or negative, the program will run immediately. ++# NOTE this runs after yum-cron-daily, if that is installed, ++# so we will have already waited for that (default 2 hours, 120 mins). ++# Also security updates should be smaller than all updates, anyway. ++random_sleep = 60 ++ ++ ++[emitters] ++# Name to use for this system in messages that are emitted. If ++# system_name is None, the hostname will be used. ++system_name = None ++ ++# How to send messages. Valid options are stdio and email. If ++# emit_via includes stdio, messages will be sent to stdout; this is useful ++# to have cron send the messages. If emit_via includes email, this ++# program will send email itself according to the configured options. ++# If emit_via is None or left blank, no messages will be sent. ++emit_via = stdio ++ ++# The width, in characters, that messages that are emitted should be ++# formatted to. ++ouput_width = 80 ++ ++ ++[email] ++# The address to send email messages from. ++email_from = root ++ ++# List of addresses to send messages to. ++email_to = root ++ ++# Name of the host to connect to to send email messages. ++email_host = localhost ++ ++ ++[groups] ++# List of groups to update ++group_list = None ++ ++# The types of group packages to install ++group_package_types = mandatory, default ++ ++[base] ++# This section overrides yum.conf ++ ++# Use this to filter Yum core messages ++# -4: critical ++# -3: critical+errors ++# -2: critical+errors+warnings (default) ++debuglevel = -2 ++ ++# skip_broken = True ++mdpolicy = group:main ++ ++# Uncomment to auto-import new gpg keys (dangerous) ++# assumeyes = True diff --git a/etc/yum-cron.conf b/etc/yum-cron.conf new file mode 100644 -index 0000000..b0f7839 +index 0000000..bd26d0c --- /dev/null +++ b/etc/yum-cron.conf -@@ -0,0 +1,80 @@ +@@ -0,0 +1,82 @@ +[commands] +# What kind of update to use: +# default = yum upgrade @@ -4523,8 +4623,10 @@ index 0000000..b0f7839 +# minutes before running. This is useful for e.g. staggering the +# times that multiple systems will access update servers. If +# random_sleep is 0 or negative, the program will run immediately. -+# 6*60 = 360 -+random_sleep = 360 ++# NOTE that we hold up all the other things in cron.daily as we wait, ++# so while waiting for 6+ hours is fine for us it might not be nice ++# for logrotate (so wait for 2 hours by default). ++random_sleep = 120 + + +[emitters] @@ -184704,10 +184806,10 @@ index ced6ba0..0b7191c return_code = self.doTransaction() diff --git a/yum-cron/Makefile b/yum-cron/Makefile new file mode 100644 -index 0000000..cd3ff5f +index 0000000..3997b4a --- /dev/null +++ b/yum-cron/Makefile -@@ -0,0 +1,24 @@ +@@ -0,0 +1,25 @@ +all: + echo "Nothing to do" + @@ -184730,6 +184832,7 @@ index 0000000..cd3ff5f +# Install as 0yum-*.cron so it runs before items like +# manpage update, mlocate, and prelink + install -D -m 755 yum-daily.cron.sh $(DESTDIR)/etc/cron.daily/0yum-daily.cron ++ install -D -m 755 yum-security.cron.sh $(DESTDIR)/etc/cron.daily/0yum-security.cron + install -D -m 755 yum-hourly.cron.sh $(DESTDIR)/etc/cron.hourly/0yum-hourly.cron + install -D -m 755 yum-cron.py $(DESTDIR)/usr/sbin/yum-cron diff --git a/yum-cron/TODO b/yum-cron/TODO @@ -185639,6 +185742,23 @@ index 0000000..f0b77a9 + +# Action! +exec /usr/sbin/yum-cron /etc/yum/yum-cron-hourly.conf +diff --git a/yum-cron/yum-security.cron.sh b/yum-cron/yum-security.cron.sh +new file mode 100644 +index 0000000..2937e20 +--- /dev/null ++++ b/yum-cron/yum-security.cron.sh +@@ -0,0 +1,11 @@ ++#!/bin/bash ++ ++# Only run if this flag is set. The flag is created by the yum-cron init ++# script when the service is started -- this allows one to use chkconfig and ++# the standard "service stop|start" commands to enable or disable yum-cron. ++if [[ ! -f /var/lock/subsys/yum-cron ]]; then ++ exit 0 ++fi ++ ++# Action! ++exec /usr/sbin/yum-cron /etc/yum/yum-cron-security.conf diff --git a/yum-updatesd.py b/yum-updatesd.py old mode 100644 new mode 100755 @@ -186200,7 +186320,7 @@ index 1ce4720..2f3f7a3 gobject.threads_init() dbus.glib.threads_init() diff --git a/yum.spec b/yum.spec -index abd203f..a3e9bcf 100644 +index abd203f..c6bc8fc 100644 --- a/yum.spec +++ b/yum.spec @@ -1,24 +1,100 @@ @@ -186364,16 +186484,19 @@ index abd203f..a3e9bcf 100644 Requires(postun): /sbin/service -@@ -68,33 +160,74 @@ Requires(postun): /sbin/service +@@ -68,20 +160,69 @@ Requires(postun): /sbin/service yum-updatesd provides a daemon which checks for available updates and can notify you when they are available via email, syslog or dbus. - %package cron - Summary: Files needed to run yum updates as a cron job +-Summary: Files needed to run yum updates as a cron job ++Summary: RPM package installer/updater/manager cron service Group: System Environment/Base -Requires: yum >= 3.0 vixie-cron crontabs yum-plugin-downloadonly findutils +Requires: yum >= 3.4.3-84 cronie crontabs findutils ++Requires: yum-cron-BE = %{version}-%{release} ++# We'd probably like a suggests for yum-cron-daily here. +%if %{yum_cron_systemd} +BuildRequires: systemd-units +Requires(post): systemd @@ -186388,13 +186511,55 @@ index abd203f..a3e9bcf 100644 +%endif %description cron - These are the files needed to run yum updates as a cron job. - Install this package if you want auto yum updates nightly via cron. - +-These are the files needed to run yum updates as a cron job. +-Install this package if you want auto yum updates nightly via cron. ++These are the files needed to run any of the yum-cron update services. ++ ++%package cron-daily ++Summary: Files needed to run yum updates as a daily cron job ++Group: System Environment/Base ++Provides: yum-cron-BE = %{version}-%{release} ++Requires: yum-cron > 3.4.3-131 ++ ++%description cron-daily ++This is the configuration file for the daily yum-cron update service, which ++lives %{_sysconfdir}/yum/yum-cron.conf. ++Install this package if you want auto yum updates nightly via cron (or something ++else, via. changing the configuration). ++By default this just downloads updates and does not apply them. ++ ++%package cron-hourly ++Summary: Files needed to run yum updates as an hourly cron job ++Group: System Environment/Base ++Provides: yum-cron-BE = %{version}-%{release} ++Requires: yum-cron > 3.4.3-131 ++ ++%description cron-hourly ++This is the configuration file for the daily yum-cron update service, which ++lives %{_sysconfdir}/yum/yum-cron-hourly.conf. ++Install this package if you want automatic yum metadata updates hourly via ++cron (or something else, via. changing the configuration). ++ ++%package cron-security ++Summary: Files needed to run security yum updates as once a day ++Group: System Environment/Base ++Provides: yum-cron-BE = %{version}-%{release} ++Requires: yum-cron > 3.4.3-131 ++ ++%description cron-security ++This is the configuration file for the security yum-cron update service, which ++lives here: %{_sysconfdir}/yum/yum-cron-security.conf ++Install this package if you want automatic yum security updates once a day ++via. cron (or something else, via. changing the configuration -- this will be ++confusing if it's not security updates anymore though). ++By default this will download and _apply_ the security updates, unlike ++yum-cron-daily which will just download all updates by default. ++This runs after yum-cron-daily, if that is installed. + + %prep %setup -q - +@@ -89,12 +230,46 @@ Install this package if you want auto yum updates nightly via cron. %build make @@ -186444,7 +186609,7 @@ index abd203f..a3e9bcf 100644 # Ghost files: mkdir -p $RPM_BUILD_ROOT/var/lib/yum/history -@@ -102,12 +235,31 @@ mkdir -p $RPM_BUILD_ROOT/var/lib/yum/plugins +@@ -102,12 +277,31 @@ mkdir -p $RPM_BUILD_ROOT/var/lib/yum/plugins mkdir -p $RPM_BUILD_ROOT/var/lib/yum/yumdb touch $RPM_BUILD_ROOT/var/lib/yum/uuid @@ -186476,7 +186641,7 @@ index abd203f..a3e9bcf 100644 %post updatesd /sbin/chkconfig --add yum-updatesd /sbin/service yum-updatesd condrestart >/dev/null 2>&1 -@@ -119,9 +271,29 @@ if [ $1 = 0 ]; then +@@ -119,9 +313,29 @@ if [ $1 = 0 ]; then /sbin/service yum-updatesd stop >/dev/null 2>&1 fi exit 0 @@ -186507,7 +186672,7 @@ index abd203f..a3e9bcf 100644 # Make sure chkconfig knows about the service /sbin/chkconfig --add yum-cron # if an upgrade: -@@ -144,8 +316,13 @@ if [ "$1" -ge "1" ]; then +@@ -144,8 +358,13 @@ if [ "$1" -ge "1" ]; then fi fi exit 0 @@ -186521,7 +186686,7 @@ index abd203f..a3e9bcf 100644 # if this will be a complete removeal of yum-cron rather than an upgrade, # remove the service from chkconfig control if [ $1 = 0 ]; then -@@ -153,33 +330,59 @@ if [ $1 = 0 ]; then +@@ -153,33 +372,59 @@ if [ $1 = 0 ]; then /sbin/service yum-cron stop 1> /dev/null 2>&1 fi exit 0 @@ -186587,7 +186752,7 @@ index abd203f..a3e9bcf 100644 %dir /var/cache/yum %dir /var/lib/yum %ghost /var/lib/yum/uuid -@@ -188,20 +391,31 @@ exit 0 +@@ -188,20 +433,46 @@ exit 0 %ghost /var/lib/yum/yumdb %{_mandir}/man*/yum.* %{_mandir}/man*/yum-shell* @@ -186616,18 +186781,30 @@ index abd203f..a3e9bcf 100644 +%else %{_sysconfdir}/rc.d/init.d/yum-cron -%config(noreplace) %{_sysconfdir}/sysconfig/yum-cron -- -- -- +%endif +%{_sbindir}/yum-cron +%{_mandir}/man*/yum-cron.* ++%files cron-daily ++%defattr(-,root,root) ++%{_sysconfdir}/cron.daily/0yum-daily.cron ++%config(noreplace) %{_sysconfdir}/yum/yum-cron.conf + ++%files cron-hourly ++%defattr(-,root,root) ++%{_sysconfdir}/cron.hourly/0yum-hourly.cron ++%config(noreplace) %{_sysconfdir}/yum/yum-cron-hourly.conf + ++%files cron-security ++%defattr(-,root,root) ++%{_sysconfdir}/cron.daily/0yum-security.cron ++%config(noreplace) %{_sysconfdir}/yum/yum-cron-security.conf + +%if %{yum_updatesd} %files updatesd %defattr(-, root, root) %config(noreplace) %{_sysconfdir}/yum/yum-updatesd.conf -@@ -210,8 +424,12 @@ exit 0 +@@ -210,8 +481,12 @@ exit 0 %{_datadir}/yum-cli/yumupd.py* %{_sbindir}/yum-updatesd %{_mandir}/man*/yum-updatesd* @@ -193967,10 +194144,10 @@ index bca9651..00c17ad 100644 else: diff --git a/yum/fssnapshots.py b/yum/fssnapshots.py new file mode 100755 -index 0000000..567cb65 +index 0000000..e912ea1 --- /dev/null +++ b/yum/fssnapshots.py -@@ -0,0 +1,344 @@ +@@ -0,0 +1,347 @@ + + +import os @@ -194028,6 +194205,9 @@ index 0000000..567cb65 + names = lvm.listVgNames() + + if not names: # Could be just broken... ++ if not os.path.exists("/sbin/lvm"): ++ return [] # Minimal install etc. ++ + p = subprocess.Popen(["/sbin/lvm", "vgs", "-o", "vg_name"], + stdout=subprocess.PIPE, stderr=subprocess.PIPE) + err = p.wait() diff --git a/yum.spec b/yum.spec index 19a75bf..a6d88f2 100644 --- a/yum.spec +++ b/yum.spec @@ -60,7 +60,7 @@ BuildRequires: bash-completion Summary: RPM package installer/updater/manager Name: yum Version: 3.4.3 -Release: 132%{?dist} +Release: 133%{?dist} License: GPLv2+ Group: System Environment/Base Source0: http://yum.baseurl.org/download/3.4/%{name}-%{version}.tar.gz @@ -171,9 +171,11 @@ yum-updatesd provides a daemon which checks for available updates and can notify you when they are available via email, syslog or dbus. %package cron -Summary: Files needed to run yum updates as a cron job +Summary: RPM package installer/updater/manager cron service Group: System Environment/Base Requires: yum >= 3.4.3-84 cronie crontabs findutils +Requires: yum-cron-BE = %{version}-%{release} +# We'd probably like a suggests for yum-cron-daily here. %if %{yum_cron_systemd} BuildRequires: systemd-units Requires(post): systemd @@ -188,8 +190,48 @@ Requires(postun): /sbin/service %endif %description cron -These are the files needed to run yum updates as a cron job. -Install this package if you want auto yum updates nightly via cron. +These are the files needed to run any of the yum-cron update services. + +%package cron-daily +Summary: Files needed to run yum updates as a daily cron job +Group: System Environment/Base +Provides: yum-cron-BE = %{version}-%{release} +Requires: yum-cron > 3.4.3-131 + +%description cron-daily +This is the configuration file for the daily yum-cron update service, which +lives %{_sysconfdir}/yum/yum-cron.conf. +Install this package if you want auto yum updates nightly via cron (or something +else, via. changing the configuration). +By default this just downloads updates and does not apply them. + +%package cron-hourly +Summary: Files needed to run yum updates as an hourly cron job +Group: System Environment/Base +Provides: yum-cron-BE = %{version}-%{release} +Requires: yum-cron > 3.4.3-131 + +%description cron-hourly +This is the configuration file for the daily yum-cron update service, which +lives %{_sysconfdir}/yum/yum-cron-hourly.conf. +Install this package if you want automatic yum metadata updates hourly via +cron (or something else, via. changing the configuration). + +%package cron-security +Summary: Files needed to run security yum updates as once a day +Group: System Environment/Base +Provides: yum-cron-BE = %{version}-%{release} +Requires: yum-cron > 3.4.3-131 + +%description cron-security +This is the configuration file for the security yum-cron update service, which +lives here: %{_sysconfdir}/yum/yum-cron-security.conf +Install this package if you want automatic yum security updates once a day +via. cron (or something else, via. changing the configuration -- this will be +confusing if it's not security updates anymore though). +By default this will download and _apply_ the security updates, unlike +yum-cron-daily which will just download all updates by default. +This runs after yum-cron-daily, if that is installed. %prep @@ -432,6 +474,21 @@ exit 0 %{_sbindir}/yum-cron %{_mandir}/man*/yum-cron.* +%files cron-daily +%defattr(-,root,root) +%{_sysconfdir}/cron.daily/0yum-daily.cron +%config(noreplace) %{_sysconfdir}/yum/yum-cron.conf + +%files cron-hourly +%defattr(-,root,root) +%{_sysconfdir}/cron.hourly/0yum-hourly.cron +%config(noreplace) %{_sysconfdir}/yum/yum-cron-hourly.conf + +%files cron-security +%defattr(-,root,root) +%{_sysconfdir}/cron.daily/0yum-security.cron +%config(noreplace) %{_sysconfdir}/yum/yum-cron-security.conf + %if %{yum_updatesd} %files updatesd %defattr(-, root, root) @@ -444,6 +501,11 @@ exit 0 %endif %changelog +* Thu Jan 23 2014 James Antill - 3.4.3-133 +- update to latest HEAD +- Test for lvm binary before using. BZ 1047793. +- Split cron-daily and cron-hourly into separate packages. Add cron-security. + * Wed Jan 22 2014 Valentina Mukhamedzhanova - 3.4.3-132 - yum-cron: EmailEmitter failure should not be fatal. BZ 1055042 - yum-cron: Add a retry loop around doLock().