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