On Tue, 2008-06-17 at 11:54 +0200, Buchan Milne wrote: > On Tuesday 17 June 2008 11:43:43 Harald Barth wrote: > > > Isn't this what the different numbered .so versions are for? > > > > No. That is used to be able to tell apart older and newer versions > > of the same library. > > Well, versions of the same library with different ABI ... a software version > change without an ABI change doesn't necessitate a new major library number > (though a new minor number could be justified for non-ABI changes in the > library). > > > Some pointer to a good article on the behaviour and design of the > > dynamic linker would be appreciated. > > > > A system without rpath means you have one of the following alternatives: > > > > * Rename all libraries so that there are no confliciting names. This > > means editing all Makefiles that use those libraries, too. > > > > * LD_LIBRARY_PATH wrapper scrips for all such programs using such > > libraries. > > > > * Only support one of the conflicting libraries. > > Or, support only one of the conflicting libraries for development at one time, > and hope that the major versions of the runtime libraries don't ever > match ... Which is, as I understand it, the approach that allows just this on debian all these years. Oddly, the rpath warnings have gone away with a later build... > > * Static linking > > Part of the problem here is that the design is for a drop-in replacement, but > the only method (rpath) viable for a drop-in replacement co-existing is not > desirable (I haven't read the Fedora policy, but IIRC there was a valid > reason for it). My current work is attached. It seemed to be enough for me to build Samba3 against it, so it probably works :-) Andrew Bartlett -- Andrew Bartlett http://samba.org/~abartlet/ Authentication Developer, Samba Team http://samba.org Samba Developer, Red Hat Inc. http://redhat.com
# Heimdal spec file heratige
#
# Andrew Bartlett <abartlet@samba.org> Red Hat Inc.
#
# Based on:
# Fedora Template spec file (at as 2008-06)
# Fedora MIT krb5.spec
# Spec by OpenSUSE build farm contributor Christof Hanke <hanke@rzg.mpg.de>
# Mandriva Heimdal spec
Name: heimdal
Version: 1.1
Release: 4ab
Summary: Heimdal implementation of Kerberos V5 system
License: BSD-like
Group: System Environment/Libraries
Source0: ftp://ftp.pdc.kth.se/pub/heimdal/src/%{name}-%{version}.tar.gz
Source1: %{name}.init
Source1: kpasswdd.init
#FIXME
#Source2: %{name}.logrotate
Source3: %{name}.sysconfig
#Source4: %{name}-krb5.conf
Source8: %{name}-kadmind.xinetd
Patch7: heimdal-1.1-fix-readline-detection.patch
Patch8: heimdal-1.1-no-editline.patch
URL: http://www.pdc.kth.se/heimdal/
Prereq: info, /sbin/install-info
BuildRequires: libX11-devel
BuildRequires: db4-devel >= 4.2.52
BuildRequires: flex
BuildRequires: bison
BuildRequires: libtool
BuildRequires: ncurses-devel >= 5.3
BuildRequires: openldap-devel >= 2.0
BuildRequires: readline-devel
BuildRequires: pam-devel
BuildRequires: e2fsprogs-devel
BuildRequires: texinfo
BuildRoot: %{_tmppath}/%{name}-%{version}
%define krb5prefix %{_prefix}/heimdal
%description
Heimdal is a free implementation of Kerberos 5. The goals are to:
- have an implementation that can be freely used by anyone
- be protocol compatible with existing implementations and, if not in
conflict, with RFC 1510 (and any future updated RFC)
- be reasonably compatible with the M.I.T Kerberos V5 API
- have support for Kerberos V5 over GSS-API (RFC1964)
- include enough backwards compatibility with Kerberos V4
- IPv6 support
%package workstation
Summary: Kerberos programs for use on workstations
Group: System Environment/Base
Requires: %{name}-libs = %{version}-%{release}
Conflicts: krb5-workstation
Conflicts: openafs
Provides: kerberos-workstation
Obsoletes: %{name}
%description workstation
This package contains Kerberos 5 programs for use on workstations.
%package server
Summary: Kerberos Server
Group: System Environment/Daemons
Requires: %{name}-libs = %{version}-%{release}
Requires: xinetd
Requires(post): chkconfig
Requires(preun):chkconfig
Conflicts: krb5-server
%description server
This package contains the master KDC.
%package libs
Summary: Heimdal shared libraries
Group: System Environment/Libraries
%description libs
This package contains shared libraries required by several of the other heimdal
packages.
%package clients
Summary: Kerberos programs for use on workstations
Group: Networking/Other
Requires: %{name}-libs = %{version}-%{release}
%description clients
Kerberos 5 Clients.
%package devel
Summary: Header files and developer documentation for heimdal
Group: Development/Libraries
Requires: %{name}-libs = %{version}-%{release}
%description devel
Contains files needed to compile and link software using the kerberos
libraries, and the documentation covering functions etc.
%prep
%setup -q
#%setup -q -a 9
%patch7 -p1 -b .readline
%patch8 -p1 -b .editline
autoreconf
%build
%configure \
--bindir=%{krb5prefix}/bin \
--sbindir=%{krb5prefix}/sbin \
--libexecdir=%{krb5prefix}/sbin \
--localstatedir=%{_var}/%{krb5prefix} \
--mandir=%{krb5prefix}/man \
--datadir=%{krb5prefix}/share \
--disable-static \
--with-readline \
--with-readline-lib=%{_libdir} \
--with-readline-include=%{_includedir}/readline \
--with-x \
--disable-otp \
--with-ipv6 \
--enable-kcm \
--without-openssl \
--with-openldap=%{_prefix}
make %{?_smp_mflags}
make -C doc html
%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT%{_localstatedir}/lib/%{name}
#install -d $RPM_BUILD_ROOT%{_sysconfdir}/%{name}
#install %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/krb5.conf
install -D -m 755 %{SOURCE1} $RPM_BUILD_ROOT%{_initrddir}/%{name}
install -D -m 755 %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/%{name}
# FIXME install %{SOURCE2} $RPM_BUILD_ROOT/etc/logrotate.d/%{name}
# FIXME install %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/%{name}
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/xinetd.d
install -m 644 %{SOURCE8} $RPM_BUILD_ROOT%{_sysconfdir}/xinetd.d/kadmind
#touch $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/krb5.keytab
touch $RPM_BUILD_ROOT%{_sysconfdir}/krb5.keytab
touch $RPM_BUILD_ROOT%{_localstatedir}/lib/%{name}/kadmind.acl
rm -f $RPM_BUILD_ROOT%{_libdir}/lib{com_err,ss}.so*
rm -f $RPM_BUILD_ROOT%{_includedir}/{glob,fnmatch,ss/ss}.h
rm -f $RPM_BUILD_ROOT%{krb5prefix}/bin/mk_cmds
rm -f $RPM_BUILD_ROOT%{krb5prefix}/bin/{ftp,login,rcp,rsh,su,telnet}
rm -f $RPM_BUILD_ROOT%{krb5prefix}/sbin/{ftpd,popper,push,rshd,telnetd}
rm -f $RPM_BUILD_ROOT%{krb5prefix}/man/man1/{ftp,login,rcp,rsh,su,telnet}.1
rm -f $RPM_BUILD_ROOT%{krb5prefix}/man/man5/{ftpusers,login.access,qop}.5
rm -f $RPM_BUILD_ROOT%{krb5prefix}/man/man8/{ftpd,popper,push,rshd,telnetd}.8
rm -rf $RPM_BUILD_ROOT%{krb5prefix}/man/cat*
rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
gzip --force --recursive $RPM_BUILD_ROOT%{krb5prefix}/man
%clean
rm -rf $RPM_BUILD_ROOT
%post server
# Install the new ones.
/sbin/chkconfig --add krb5kdc
/sbin/chkconfig --add kadmin
#TODO install iprop master and slaves
#/sbin/chkconfig --add iprop
/sbin/ldconfig
%preun server
if [ "$1" = "0" ] ; then
/sbin/chkconfig --del krb5kdc
/sbin/chkconfig --del kadmin
/sbin/chkconfig --del kprop
/sbin/service krb5kdc stop > /dev/null 2>&1 || :
# /sbin/service iprop stop > /dev/null 2>&1 || :
/sbin/service xinetd condrestart > /dev/null 2>&1 || :
fi
exit 0
%postun server
if [ "$1" -ge 1 ] ; then
/sbin/service krb5kdc condrestart > /dev/null 2>&1 || :
/sbin/service krb524 condrestart > /dev/null 2>&1 || :
# /sbin/service kprop condrestart > /dev/null 2>&1 || :
/sbin/service xinetd condrestart > /dev/null 2>&1 || :
fi
/sbin/ldconfig
exit 0
%post libs
/sbin/ldconfig
/sbin/install-info %{_infodir}/heimdal.info.gz %{_infodir}/dir
/sbin/install-info %{_infodir}/hx509.info.gz %{_infodir}/dir
exit 0
%postun libs
/sbin/ldconfig
/sbin/install-info --delete %{_infodir}/heimdal.info.gz %{_infodir}/dir
/sbin/install-info --delete %{_infodir}/hx509.info.gz %{_infodir}/dir
exit 0
%files server
%defattr(-,root,root)
%doc NEWS TODO
%{_initrddir}/%{name}
%{_sysconfdir}/sysconfig/%{name}
%config(noreplace) %{_sysconfdir}/xinetd.d/kadmind
%dir %{_localstatedir}/lib/%{name}
%config(noreplace) %{_localstatedir}/lib/%{name}/kadmind.acl
%dir %{krb5prefix}
%doc %dir %{krb5prefix}/man
%doc %dir %{krb5prefix}/man/man1
%doc %dir %{krb5prefix}/man/man8
%doc %{krb5prefix}/man/man1/kimpersonate.1*
%doc %{krb5prefix}/man/man8/iprop.8*
%doc %{krb5prefix}/man/man8/iprop-log.8*
%doc %{krb5prefix}/man/man8/kstash.8*
%doc %{krb5prefix}/man/man8/hprop.8*
%doc %{krb5prefix}/man/man8/hpropd.8*
%doc %{krb5prefix}/man/man8/kadmind.8*
%doc %{krb5prefix}/man/man8/kdc.8*
%doc %{krb5prefix}/man/man8/kxd.8*
%doc %{krb5prefix}/man/man8/kfd.8*
%doc %{krb5prefix}/man/man8/kpasswdd.8*
%doc %{krb5prefix}/man/man8/kcm.8*
%doc %{krb5prefix}/man/man8/ipropd-*.8*
%{krb5prefix}/sbin/kstash
%{krb5prefix}/sbin/hprop
%{krb5prefix}/sbin/hpropd
%{krb5prefix}/sbin/ipropd-master
%{krb5prefix}/sbin/ipropd-slave
%{krb5prefix}/sbin/kadmind
%{krb5prefix}/sbin/kdc
%{krb5prefix}/sbin/kxd
%{krb5prefix}/sbin/kfd
%{krb5prefix}/sbin/kpasswdd
%{krb5prefix}/sbin/iprop-log
%{krb5prefix}/sbin/kcm
%{krb5prefix}/sbin/kdigest
%{krb5prefix}/sbin/kimpersonate
%doc doc/*.html lib/hdb/hdb.schema
%{_libdir}/libkdc.so.*
%{_libdir}/libhdb.so.*
%{_libdir}/libkadm5srv.so.*
%files libs
%defattr(-,root,root)
#%dir %{_sysconfdir}/%{name}
#attr(400,root,root) %ghost %{_sysconfdir}/%{name}/krb5.keytab
%attr(400,root,root) %ghost %{_sysconfdir}/krb5.keytab
%{_libdir}/*.so.*
%doc %{_infodir}/*.info.gz
%doc %{krb5prefix}/man/man8/kerberos.8*
%dir %{krb5prefix}
%doc %dir %{krb5prefix}/man
%doc %dir %{krb5prefix}/man/man8
%files workstation
%defattr(-,root,root)
%{krb5prefix}/bin/afslog
%{krb5prefix}/bin/kauth
%{krb5prefix}/bin/kgetcred
%{krb5prefix}/bin/kx
%{krb5prefix}/bin/pfrom
%{krb5prefix}/bin/rxtelnet
%{krb5prefix}/bin/rxterm
%{krb5prefix}/bin/string2key
%{krb5prefix}/bin/tenletxr
%{krb5prefix}/bin/verify_krb5_conf
%{krb5prefix}/bin/xnlock
%{krb5prefix}/bin/kf
%{krb5prefix}/bin/kdestroy
%{krb5prefix}/bin/kinit
%{krb5prefix}/bin/klist
%{krb5prefix}/bin/kpasswd
%{krb5prefix}/bin/pagsh
%{krb5prefix}/bin/gss
%{krb5prefix}/bin/hxtool
%{krb5prefix}/sbin/kadmin
%{krb5prefix}/sbin/ktutil
%doc %{krb5prefix}/man/man1/afslog.1*
%doc %{krb5prefix}/man/man1/kauth.1*
%doc %{krb5prefix}/man/*1/kdestroy.1*
%doc %{krb5prefix}/man/*1/kgetcred.1*
%doc %{krb5prefix}/man/man1/kinit.1*
%doc %{krb5prefix}/man/*1/klist.1*
%doc %{krb5prefix}/man/man1/kpasswd.1*
%doc %{krb5prefix}/man/man1/pagsh.1*
%doc %{krb5prefix}/man/man1/kf.1*
%doc %{krb5prefix}/man/man1/kx.1*
%doc %{krb5prefix}/man/man1/pfrom.1*
%doc %{krb5prefix}/man/man1/rxtelnet.1*
%doc %{krb5prefix}/man/man1/rxterm.1*
%doc %{krb5prefix}/man/man1/tenletxr.1*
%doc %{krb5prefix}/man/man1/xnlock.1*
%doc %{krb5prefix}/man/man5/krb5.conf.5*
%doc %{krb5prefix}/man/man5/mech.5*
%doc %{krb5prefix}/man/man8/verify_krb5_conf.8*
%doc %{krb5prefix}/man/man8/string2key.8*
%doc %{krb5prefix}/man/man8/kadmin.8*
%doc %{krb5prefix}/man/man8/ktutil.8*
%files devel
%defattr(-,root,root)
%{krb5prefix}/bin/krb5-config
%{_includedir}/*
%{_libdir}/*.so
%{_libdir}/pkgconfig/heimdal-gssapi.pc
%dir %{krb5prefix}
%dir %{krb5prefix}/bin
%doc %dir %{krb5prefix}/man
%doc %dir %{krb5prefix}/man/man1
%doc %dir %{krb5prefix}/man/man3
%doc %{krb5prefix}/man/man1/krb5-config.1*
%doc %{krb5prefix}/man/man3/*
# default: off
# description: Heimdal Kerberos Admin Daemon
service kadmind
{
port = 749
socket_type = stream
wait = no
user = root
server = /usr/sbin/kadmind
log_on_failure += USERID
disable = yes
}
This is a digitally signed message part