need spec file example to replace files from various packages
Steve Friedman
steve at adsi-m4.com
Thu Dec 7 00:30:42 UTC 2006
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?
>>>
>>>
>>
>
>
More information about the fedora-list
mailing list