📄 samba2.spec
字号:
#install mount.cifsinstall -m755 source/client/mount.cifs %{buildroot}/bin/mount.cifs%{samba_major} echo 127.0.0.1 localhost > $RPM_BUILD_ROOT/%{_sysconfdir}/%{name}/lmhosts# Link smbspool to CUPS (does not require installed CUPS) mkdir -p $RPM_BUILD_ROOT/%{_libdir}/cups/backend ln -s %{_bindir}/smbspool%{alternative_major} $RPM_BUILD_ROOT/%{_libdir}/cups/backend/smb%{alternative_major}# xinetd support mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/xinetd.d install -m644 %{SOURCE3} $RPM_BUILD_ROOT/%{_sysconfdir}/xinetd.d/swat%{samba_major}# menu supportmkdir -p $RPM_BUILD_ROOT%{_menudir}cat > $RPM_BUILD_ROOT%{_menudir}/%{name}-swat << EOF?package(%{name}-swat):\command="gnome-moz-remote http://localhost:901/" \needs="gnome" \icon="swat%{samba_major}.png" \section="Configuration/Networking" \title="Samba Configuration (SWAT)" \longtitle="The Swat Samba Administration Tool"?package(%{name}-swat):\command="sh -c '\$BROWSER http://localhost:901/'" \ needs="x11" \icon="swat%{samba_major}.png" \section="Configuration/Networking" \title="Samba Configuration (SWAT)" \longtitle="The Swat Samba Administration Tool"EOFmkdir -p $RPM_BUILD_ROOT%{_liconsdir} $RPM_BUILD_ROOT%{_iconsdir} $RPM_BUILD_ROOT%{_miconsdir}bzcat %{SOURCE4} > $RPM_BUILD_ROOT%{_liconsdir}/swat%{samba_major}.pngbzcat %{SOURCE5} > $RPM_BUILD_ROOT%{_iconsdir}/swat%{samba_major}.pngbzcat %{SOURCE6} > $RPM_BUILD_ROOT%{_miconsdir}/swat%{samba_major}.pngbzcat %{SOURCE10}> $RPM_BUILD_ROOT%{_datadir}/%{name}/scripts/print-pdfbzcat %{SOURCE11}> $RPM_BUILD_ROOT%{_datadir}/%{name}/scripts/smb-migrate# Fix configs when not building system samba:#Client binaries will have suffixes while we use alternatives, even# if we are system samba%if !%build_system || %build_alternativesfor OLD in %{buildroot}/%{_bindir}/{%{clientbin}} %{buildroot}/bin/%{client_bin} %{buildroot}/%{_libdir}/cups/backend/smbdo NEW=`echo ${OLD}%{alternative_major}` [ -e $OLD ] && mv -f $OLD $NEWdonefor OLD in %{buildroot}/%{_mandir}/man?/{%{clientbin}}* %{buildroot}/%{_mandir}/man?/%{client_bin}*do if [ -e $OLD ] then BASE=`perl -e '$_="'${OLD}'"; m,(%buildroot)(.*?)(\.[0-9]),;print "$1$2\n";'` EXT=`echo $OLD|sed -e 's,'${BASE}',,g'` NEW=`echo ${BASE}%{alternative_major}${EXT}` mv $OLD $NEW fidone %endifrm -f %{buildroot}/sbin/mount.smbfs# Link smbmount to /sbin/mount.smb and /sbin/mount.smbfs#I don't think it's possible for make to do this ...(cd $RPM_BUILD_ROOT/sbin ln -s ..%{_bindir}/smbmount%{alternative_major} mount.smb%{alternative_major} ln -s ..%{_bindir}/smbmount%{alternative_major} mount.smbfs%{alternative_major})# Server/common binaries are versioned only if not system samba:%if !%build_systemfor OLD in %{buildroot}/%{_bindir}/{%{commonbin}} %{buildroot}/%{_bindir}/{%{serverbin}} %{buildroot}/%{_sbindir}/{%{serversbin},swat}do NEW=`echo ${OLD}%{alternative_major}` mv $OLD $NEW -f ||:done# And the man pages too:for OLD in %{buildroot}/%{_mandir}/man?/{%{commonbin},%{serverbin},%{serversbin},swat,{%testbin},smb.conf,lmhosts}*do if [ -e $OLD ] then BASE=`perl -e '$_="'${OLD}'"; m,(%buildroot)(.*?)(\.[0-9]),;print "$1$2\n";'`# BASE=`perl -e '$name="'${OLD}'"; print "",($name =~ /(.*?)\.[0-9]/), "\n";'` EXT=`echo $OLD|sed -e 's,'${BASE}',,g'` NEW=`echo ${BASE}%{samba_major}${EXT}` mv $OLD $NEW fidone # Replace paths in config files and init scripts:for i in smb ;do perl -pi -e 's,/subsys/'$i',/subsys/'$i'%{samba_major},g' $RPM_BUILD_ROOT/%{_initrddir}/${i}%{samba_major}donefor i in %{_sysconfdir}/%{name}/smb.conf %{_initrddir}/smb%{samba_major} %{_sbindir}/%{name} %{_initrddir}/winbind /%{_sysconfdir}/logrotate.d/%{name} /%{_sysconfdir}/xinetd.d/swat%{samba_major} %{_initrddir}/wrepld%{samba_major}; do perl -pi -e 's,/%{pkg_name},/%{name},g; s,smbd,%{_sbindir}/smbd%{samba_major},g; s,nmbd,%{_sbindir}/nmbd%{samba_major},g; s,/usr/sbin/swat,%{_sbindir}/swat%{samba_major},g;s,wrepld,%{_sbindir}/wrepld%{samba_major},g' $RPM_BUILD_ROOT/$i;done# Fix xinetd file for swat:perl -pi -e 's,/usr/sbin,%{_sbindir},g' $RPM_BUILD_ROOT/%{_sysconfdir}/xinetd.d/swat%{samba_major}%endif#Clean up unpackaged files:for i in %{_bindir}/pam_smbpass.so %{_bindir}/smbwrapper.so;dorm -f %{buildroot}/$idone# (sb) make a smb.conf.clean we can use for the merge, since an existing# smb.conf won't get overwrittencp $RPM_BUILD_ROOT/%{_sysconfdir}/%{name}/smb.conf $RPM_BUILD_ROOT/%{_datadir}/%{name}/smb.conf.clean# (sb) leave a README.mdk.conf to explain what has been donecat << EOF > $RPM_BUILD_ROOT/%{_datadir}/%{name}/README.mdk.confIn order to facilitate upgrading an existing samba install, and mergingprevious configuration data with any new syntax used by samba3, a mergescript has attempted to combine your local configuration data with thenew conf file format. The merged data is in smb.conf, with comments like # *** merged from original smb.conf: ***near the additional entries. Any local shares should have been appended tosmb.conf. A log of what took place should be in: /var/log/samba/smb-migrate.logA clean samba3 smb.conf is in /usr/share/samba, named smb.conf.clean.Your original conf should be /etc/samba/smb.conf.tomerge.The actual merge script is /usr/share/samba/scripts/smb-migrate.Questions/issues: sbenedict@mandrakesoft.comEOF%cleanrm -rf $RPM_BUILD_ROOT%post server%_post_service smb%{samba_major}#%_post_service wrepld%{samba_major}# Add a unix group for samba machine accountsgroupadd -frg 421 machines# Migrate tdb's from /var/lock/samba (taken from official samba spec file):for i in /var/lock/samba/*.tdbdoif [ -f $i ]; then newname=`echo $i | sed -e's|var\/lock\/samba|var\/cache\/samba|'` echo "Moving $i to $newname" mv $i $newnamefidone%post common# Basic migration script for pre-2.2.1 users,# since smb config moved from /etc to %{_sysconfdir}/samba# Let's create a proper %{_sysconfdir}/samba/smbpasswd file[ -f %{_sysconfdir}/%{name}/smbpasswd ] || { echo "Creating password file for samba..." touch %{_sysconfdir}/%{name}/smbpasswd}# And this too, in case we don't have smbd to create it for us[ -f /var/cache/%{name}/unexpected.tdb ] || { touch /var/cache/%{name}/unexpected.tdb}# Let's define the proper paths for config filesperl -pi -e 's/(\/etc\/)(smb)/\1%{name}\/\2/' %{_sysconfdir}/%{name}/smb.conf# Fix the logrotate.d file from smb and nmb to smbd and nmbdif [ -f %{_sysconfdir}/logrotate.d/samba ]; then perl -pi -e 's/smb /smbd /' %{_sysconfdir}/logrotate.d/samba perl -pi -e 's/nmb /nmbd /' %{_sysconfdir}/logrotate.d/sambafi# And not loose our machine account SID[ -f %{_sysconfdir}/MACHINE.SID ] && mv -f %{_sysconfdir}/MACHINE.SID %{_sysconfdir}/%{name}/ ||:%triggerpostun common -- samba-common < 3.0.1-3mdk# (sb) merge any existing smb.conf with new syntax fileif [ $1 = 2 ]; then # (sb) save existing smb.conf for merge echo "Upgrade: copy smb.conf to smb.conf.tomerge for merging..." cp -f %{_sysconfdir}/%{name}/smb.conf %{_sysconfdir}/%{name}/smb.conf.tomerge echo "Upgrade: merging previous smb.conf..." if [ -f %{_datadir}/%{name}/smb.conf.clean ]; then cp %{_datadir}/%{name}/smb.conf.clean %{_sysconfdir}/%{name}/smb.conf cp %{_datadir}/%{name}/README.mdk.conf %{_sysconfdir}/%{name}/ %{_datadir}/%{name}/scripts/smb-migrate commit fifi%postun commonif [ -f %{_sysconfdir}/%{name}/README.mdk.conf ];then rm -f %{_sysconfdir}/%{name}/README.mdk.conf;fi%if %build_winbind%post winbindif [ $1 = 1 ]; then /sbin/chkconfig winbind on cp -af %{_sysconfdir}/nsswitch.conf %{_sysconfdir}/nsswitch.conf.rpmsave cp -af %{_sysconfdir}/nsswitch.conf %{_sysconfdir}/nsswitch.conf.rpmtemp for i in passwd group;do grep ^$i %{_sysconfdir}/nsswitch.conf |grep -v 'winbind' >/dev/null if [ $? = 0 ];then echo "Adding a winbind entry to the $i section of %{_sysconfdir}/nsswitch.conf" awk '/^'$i'/ {print $0 " winbind"};!/^'$i'/ {print}' %{_sysconfdir}/nsswitch.conf.rpmtemp >%{_sysconfdir}/nsswitch.conf; cp -af %{_sysconfdir}/nsswitch.conf %{_sysconfdir}/nsswitch.conf.rpmtemp else echo "$i entry found in %{_sysconfdir}/nsswitch.conf" fi done if [ -f %{_sysconfdir}/nsswitch.conf.rpmtemp ];then rm -f %{_sysconfdir}/nsswitch.conf.rpmtemp;fifi%preun winbindif [ $1 = 0 ]; then echo "Removing winbind entries from %{_sysconfdir}/nsswitch.conf" perl -pi -e 's/ winbind//' %{_sysconfdir}/nsswitch.conf /sbin/chkconfig winbind resetfi%endif %build_winbind%if %build_wins%post -n nss_wins%{samba_major}if [ $1 = 1 ]; then cp -af %{_sysconfdir}/nsswitch.conf %{_sysconfdir}/nsswitch.conf.rpmsave grep '^hosts' %{_sysconfdir}/nsswitch.conf |grep -v 'wins' >/dev/null if [ $? = 0 ];then echo "Adding a wins entry to the hosts section of %{_sysconfdir}/nsswitch.conf" awk '/^hosts/ {print $0 " wins"};!/^hosts/ {print}' %{_sysconfdir}/nsswitch.conf.rpmsave >%{_sysconfdir}/nsswitch.conf; else echo "wins entry found in %{_sysconfdir}/nsswitch.conf" fi# else# echo "Upgrade, leaving nsswitch.conf intact"fi%preun -n nss_wins%{samba_major}if [ $1 = 0 ]; then echo "Removing wins entry from %{_sysconfdir}/nsswitch.conf" perl -pi -e 's/ wins//' %{_sysconfdir}/nsswitch.conf#else# echo "Leaving %{_sysconfdir}/nsswitch.conf intact"fi%endif %build_wins%preun server%_preun_service smb%{samba_major}#%_preun_service wrepld%{samba_major}if [ $1 = 0 ] ; then# /sbin/chkconfig --level 35 smb reset# Let's not loose /var/cache/samba if [ -d /var/cache/%{name} ]; then mv -f /var/cache/%{name} /var/cache/%{name}.BAK fifi%post swatif [ -f /var/lock/subsys/xinetd ]; then service xinetd reload >/dev/null 2>&1 || :fi%update_menus%postun swat# Remove swat entry from xinetdif [ $1 = 0 -a -f %{_sysconfdir}/xinetd.conf ] ; thenrm -f %{_sysconfdir}/xinetd.d/swat%{samba_major} service xinetd reload &>/dev/null || :fiif [ "$1" = "0" -a -x /usr/bin/update-menus ]; then /usr/bin/update-menus || true ; fi%clean_menus%if %build_system%post -n %{libname} -p /sbin/ldconfig%postun -n %{libname} -p /sbin/ldconfig%endif%if %build_alternatives%post clientupdate-alternatives --install %{_bindir}/smbclient smbclient \%{_bindir}/smbclient%{alternative_major} 10 \$(for i in {/bin/mount.cifs,/sbin/{%{client_sbin}},%{_bindir}/{%{clientbin}}};doj=`basename $i`[ "$j" = "smbclient" ] || \echo -n " --slave ${i} ${j} ${i}%{alternative_major}";done) \--slave %{_libdir}/cups/backend/smb cups_smb %{_libdir}/cups/backend/smb%{alternative_major} || \update-alternatives --auto smbclient%preun client[ $1 = 0 ] && update-alternatives --remove smbclient %{_bindir}/smbclient%{alternative_major} ||:%endif%if %build_alternatives%triggerpostun client -- samba-client, samba2-client[ ! -e %{_bindir}/smbclient ] && update-alternatives --auto smbclient || :%endif%files server%defattr(-,root,root)%(for i in %{_sbindir}/{%{serversbin}}%{samba_major};do echo $i;done)%(for i in %{_bindir}/{%{serverbin}}%{samba_major};do echo $i;done)%attr(755,root,root) /%{_lib}/security/pam_smbpass*%dir %{_libdir}/%{name}/vfs%{_libdir}/%{name}/vfs/*.so%if %build_vscan%exclude %{_libdir}/%{name}/vfs/vscan*.so%endif%dir %{_libdir}/%{name}/pdb%attr(-,root,root) %config(noreplace) %{_sysconfdir}/%{name}/smbusers%attr(-,root,root) %config(noreplace) %{_initrddir}/smb%{samba_major}#%attr(-,root,root) %config(noreplace) %{_initrddir}/wrepld%{samba_major}%attr(-,root,root) %config(noreplace) %{_sysconfdir}/logrotate.d/%{name}%attr(-,root,root) %config(noreplace) %{_sysconfdir}/pam.d/%{name}#%attr(-,root,root) %config(noreplace) %{_sysconfdir}/%{name}/samba-slapd.include%(for i in %{_mandir}/man?/{%{serverbin},%{serversbin}}%{samba_major}\.[0-9]*;do echo $i|grep -v mkntpwd;done)%attr(775,root,adm) %dir %{_localstatedir}/%{name}/netlogon%attr(755,root,root) %dir %{_localstatedir}/%{name}/profiles%attr(755,root,root) %dir %{_localstatedir}/%{name}/printers%attr(2775,root,adm) %dir %{_localstatedir}/%{name}/printers/*%attr(1777,root,root) %dir /var/spool/%{name}%dir %{_datadir}/%{name}%dir %{_datadir}/%{name}/scripts%attr(0755,root,root) %{_datadir}/%{name}/scripts/print-pdf%attr(0750,root,adm) %{_datadir}/%{name}/scripts/smbldap*.pl%attr(0750,root,adm) %{_bindir}/smbldap*%attr(0640,root,adm) %config(noreplace) %{_sysconfdir}/%{name}/smbldap_conf.pm%attr(0644,root,root) %{_datadir}/%{name}/scripts/smbldap_tools.pm%{perl_vendorlib}/*.pm#%attr(0700,root,root) %{_datadir}/%{name}/scripts/*port_smbpasswd.pl%attr(0755,root,root) %{_datadir}/%{name}/scripts/convertSambaAccount%files doc%defattr(-,root,root)%doc README COPYING Manifest Read-Manifest-Now%doc WHATSNEW.txt Roadmap%doc README.%{name}-mandrake-rpm%doc clean-docs/samba-doc/docs%doc clean-docs/samba-doc/examples%attr(-,root,root) %{_datadir}/swat%{samba_major}/using_samba/%files swat%defattr(-,root,root)%config(noreplace) %{_sysconfdir}/xinetd.d/swat%{samba_major}#%attr(-,root,root) /sbin/*%{_sbindir}/swat%{samba_major}%{_menudir}/%{name}-swat%{_miconsdir}/*.png%{_liconsdir}/*.png%{_iconsdir}/*.png%attr(-,root,root) %{_datadir}/swat%{samba_major}/help/%attr(-,root,root) %{_datadir}/swat%{samba_major}/images/%attr(-,root,root) %{_datadir}/swat%{samba_major}/include/%lang(ja) %{_datadir}/swat%{samba_major}/lang/ja%lang(tr) %{_datadir}/swat%{samba_major}/lang/tr%{_mandir}/man8/swat*.8*%lang(de) %{_libdir}/%{name}/de.msg%lang(en) %{_libdir}/%{name}/en.msg%lang(fr) %{_libdir}/%{name}/fr.msg%lang(it) %{_libdir}/%{name}/it.msg%lang(ja) %{_libdir}/%{name}/ja.msg%lang(nl) %{_libdir}/%{name}/nl.msg%lang(pl) %{_libdir}/%{name}/pl.msg%lang(tr) %{_libdir}/%{name}/tr.msg#%doc swat/README%files client%defattr(-,root,root)%(for i in %{_bindir}/{%{clientbin}}%{alternative_major};do echo $i;done)%(for i in %{_mandir}/man?/{%{clientbin}}%{alternative_major}.?.*;do echo $i|grep -v smbprint;done)#xclude %{_mandir}/man?/smbget*%{_mandir}/man5/smbgetrc%{alternative_major}.5*%ifnarch alpha%(for i in /sbin/{%{client_sbin}}%{alternative_major};do echo $i;done)%attr(4755,root,root) /bin/mount.cifs%{alternative_major}%attr(755,root,root) %{_bindir}/smbmount%{alternative_major}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -