Re: need spec file example to replace files from various packages

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




It isn't much.

The init.d file is just:

doconfig() {
        if [ -f ${CNF_HOME}/$1.proto ]; then
          ${CNF_HOME}/config.sh ${CNF_HOME}/$1.proto > $2
        fi
}

  doconfig motd /etc/motd
  doconfig yum.conf /etc/yum.conf
  doconfig selinux-config  /etc/selinux/config

  etc.

  (and the enabling/disabling of various services).

config.sh is:

sed 's/__HOSTNAME__/h1/g'          $1      | \
sed 's/__DOMAIN__/d1/g'       | \
sed 's/__DNS_RESOLVER__/172.16.1.22/g'          | \
sed 's/__NTP_SERVER__/172.16.1.22/g'   | \
sed 's/__WAN_GATEWAY__/172.16.1.1/g'  | \
 etc.

This allows us to have a master config file so that one parameter changed in one place updates the various necessary config files (e.g., the hostname can be set in /etc/hosts and /etc/sysconfig/network, the domain in resolv.conf and /etc/sysconfig/network, etc). Likewise, the firewall script only allows access to NTP to NTP_SERVER, DNS to DNS_RESOLVER, SMTP to the MAIL_SERVER, etc (belts and suspenders is easy when it doesn't take any effort :-). The script also adds files to /etc/profile.d directly.

The specfile is just a checkout from CVS in build, copy of the files to /etc/localconfig in install, the list of files (with only config.sh being marked %config), and the list of required RPMs. The only wrinkle is including in %post a script that updates config.sh with a new config element (since config.sh won't be updated). For example,

if ! grep -q __AUTO_YUM_UPD__ config.sh; then
 cp config.sh config.sh.rpmbackup
 sed '/WAN_GATEWAY/s/\\$/\\\nsed %s\/__AUTO_YUM_UPD__\/yes\/g%        |\
           \\/' config.sh.rpmbackup | sed "s/%/'/g"  > config.sh
fi

was needed in the migration to FC6 since yum-updatesd.conf was added.

The only problem with this solution is the makefiles that we have for certain services (e.g., postfix or selinux) trigger on every update. I need to clean this up so that doconfig doesn't update the file if there wasn't a change.

Steve


On Tue, 5 Dec 2006, Craig White wrote:

If you were inclined to share, I would be inclined to look...that sounds
pretty sweet.

Craig

On Tue, 2006-12-05 at 18:11 -0500, Steve Friedman wrote:
We wrote an RPM that:

(a) Requires whatever other RPMs that we want to use (so a standard
install would work and we didn't need to spend time selecting the packages
to install and so that we could deploy a newly useful RPM quickly to all
machines)

(b) installs our config files to /etc/local-install

(c) includes an init.d script which runs at level 01 in rc2/3/4/5 to copy
the above files to their appropriate location (overwriting the RPM-owned
file) on each startup.

I couldn't think of a better way.

Steve Friedman


On Tue, 5 Dec 2006, Paul Johnson wrote:

After installing Fedora, I want to replace various configuration files
on lab computers. If I can learn how to do this in the post section of
an RPM spec file, I will be happy.  For example, I want/need to
replace things like

/etc/gdm/PreSession/Default
/etc/gdm/PostSession/Default
/etc/pam.d/system-auth
/etc/hosts.allow
/etc/hosts.deny

One brute force option is to install with rpm --replacefiles, but yum
does not like that.
So can  you point me at a spec file or two that will give example
syntax on how I can create a backup of those files and replace them
with the ones I want.

Please?







[Index of Archives]     [Current Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]     [Fedora Docs]

  Powered by Linux