[CentOS-devel] Re: CentOS-4.4 yumconf

Roland Alder roli-caosity at galaxy.ch
Tue Sep 12 14:13:08 UTC 2006


Some days ago, there was the discussion about the new centos-release
package with merged in yum (and other) configuration files instead of
separate yumconf as until 4.3.

I today tried using %trigger sections in the own package. After some
testing I can say it looks good and seem to work fine (at least here).

The trigger basically just moves the repo files known to be installed by
centos-yumconf (and only those, so it has still to be adapted if CentOS
e.g. adds more .repo files) to a different filename not used by yum.

On removal of the own yumconf package, that backed up files are moved
back to it's original name.

The whole thing even seem to work over updates/removals/installs of both.

Maybe that's also useful for others having that problem, but of course
needs some adaption.

Kind regards

Roland
-------------- next part --------------
# Yum Repository File for Updating/Installing from internal Install Server
# 
# For CentOS 3.x and 4.x
#
# $Id:  $
#
# 2006-09-12, Roland Alder
#
# Import GPG key before:
# rpm --import http://SOURCEHOST/linux/centos/mirror/4/RPM-GPG-KEY-CentOS-4
#
# This file is by intention not marked as config file in RPM, as we might wan't to overwrite it

# VENDOR (CentOS) base/os
[vendor-os]
name=CentOS-$releasever - Base/OS
baseurl=http://SOURCEHOST/linux/centos/mirror/$releasever/os/$basearch/
gpgcheck=1
enabled=1

# VENDOR (CentOS) released updates 
[vendor-update]
name=CentOS-$releasever - Updates
baseurl=http://SOURCEHOST/linux/centos/mirror/$releasever/updates/$basearch/
gpgcheck=1
enabled=1

# VENDOR (CentOS) packages used/produced in the build but not released
[vendor-addons]
name=CentOS-$releasever - Addons
baseurl=http://SOURCEHOST/linux/centos/mirror/$releasever/addons/$basearch/
gpgcheck=1
enabled=0

# VENDOR (CentOS) additional packages that may be useful
[vendor-extras]
name=CentOS-$releasever - Extras
baseurl=http://SOURCEHOST/linux/centos/mirror/$releasever/extras/$basearch/
gpgcheck=1
enabled=0

# VENDOR (CentOS) additional packages that extend functionality of existing packages
[vendor-centosplus]
name=CentOS-$releasever - Plus
baseurl=http://SOURCEHOST/linux/centos/mirror/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0

# VENDOR (CentOS) contrib - packages by Centos Users
[vendor-contrib]
name=CentOS-$releasever - Contrib
baseurl=http://SOURCEHOST/linux/centos/mirror/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0

# VENDOR (CentOS) packages in testing
[vendor-testing]
name=CentOS-$releasever - Testing
baseurl=http://SOURCEHOST/linux/centos/mirror/$releasever/testing/$basearch/
gpgcheck=1
enabled=0
-------------- next part --------------
# $Id: $
#
# 2006-09-12, Roland Alder

%define sourcehost install.int.galaxy.ch
# ExclusiveOS: centos3 centos4

Summary: Package that provides yum configuration file for use with internal Install Server
Name: yumconf-int.galaxy.ch
Version: 1
Release: 2
Copyright: freeware
Group: System/Configuration
Provides: yumconf
BuildRequires: perl
BuildRoot: %{_tmppath}/%{name}-root
Conflicts: centos-yumconf
Source0: centos-galaxy-int.template
BuildArch: noarch

%description
This package provides a yum repository configuration file for use inside
my network.

Import GPG Key before using:
  rpm --import http://%{sourcehost}/linux/centos/mirror/RPM-GPG-KEY-CentOS-4

%prep
%setup -c -T
# prepare the standard yumconf for normal use
perl -pe 's/SOURCEHOST/%{sourcehost}/g;' < %SOURCE0 > yumconf-int.galaxy.ch.repo

%build

%install

rm -rf ${RPM_BUILD_ROOT}
install -d $RPM_BUILD_ROOT/etc/yum.repos.d
install -m 644 yumconf-int.galaxy.ch.repo $RPM_BUILD_ROOT/etc/yum.repos.d/

%triggerin -- centos-release
# When centos-release (or our/this package) get's installed
# Make a backup copy of the original repository file(s) and replace them with a placeholder

for repofile in /etc/yum.repos.d/CentOS-{Base,Media}.repo \
                /etc/apt/sources.list.d/centos.list \
		/etc/sysconfig/rhn/sources
do
  if [ -f "$repofile" ]; then
    # Copy the repo file to something that is not used by yum and Co.
    mv -f ${repofile} ${repofile}.%{name}-disabled || exit 1
  fi
done

%triggerun -- centos-release
# When centos-release get uninstalled (also during upgrade of it)
# Restore our backup file, but only if we've got completly removed

[ "$1" -ne 0 ] && exit 0
for repofile in /etc/yum.repos.d/CentOS-{Base,Media}.repo \
                /etc/apt/sources.list.d/centos.list \
		/etc/sysconfig/rhn/sources
do
  if [ -f "$repofile.%{name}-disabled" ]; then
    mv -f ${repofile}.%{name}-disabled ${repofile} || exit 1
  fi
done

%clean
rm -rf ${RPM_BUILD_ROOT}

%files
%defattr(-,root,root)
#%config not marked as config by intention (want to be able to replace using rpm)
/etc/yum.repos.d/yumconf-int.galaxy.ch.repo

%changelog
* Wed Sep 12 2006 Roland Alder <roli at galaxy.ch> - 1-2
- Added RPM triggers to get rid or restore repository files installed by
  centos-release released with CentOS 4.4

* Thu Apr 05 2005 Roland Alder <roli at galaxy.ch> - 1-1
- Initial "build"


More information about the CentOS-devel mailing list