Pre-requisites ============== I recommend using QEMU or a Development box (if you are lucky enough to have one / work in a company). You will need to run the following to be run: apt-get update apt-get install libc6-dev apt-get install gcc apt-get install make apt-get install autoconf apt-get install autoconf-archive apt-get install autobook apt-get install automake apt-get install libtool apt-get install flex apt-get install bison apt-get install gdb apt-get install libtag1-dev apt-get install uuid-dev apt-get install libpam-modules apt-get install libpam-smbpass apt-get install libpam0g apt-get install libpam0g-dev apt-get install libpam-modules apt-get install libpam-runtime apt-get install libssl0.9.8 apt-get install zlibc apt-get install zlib1g apt-get install zlib1g-dev Compiling and installing Samba 3.3.7 ==================================== ./configure --prefix=/opt/samba-3.3.7 --exec-prefix=/opt/samba-3.3.7 --sysconfdir=/opt/samba-3.3.7/etc --with-configdir=/opt/samba-3.3.7/etc --with-quotas --with-pam --with-pam_smbpass --build=sparc-linux --with-logfilebase=/opt/samba-3.3.7/var/log --with-piddir=/opt/samba-3.3.7/var/run --with-lockdir=/opt/samba-3.3.7/var/lock make make install tar cvpPzf /tmp/samba-3.3.7-readynas_sparc.tar.gz /opt/samba-3.3.7 Create a new addon using the addon-sdk instructions at http://www.readynas.com/?p=346. Make sure you state in the description that the CIFS service must be enabled first (you can use HTML in the description). Place the above tarball in the files directory for the new addon. If you are using these steps to re-create an addon for another ReadyNAS platform, make sure you review the installed files in the samba package (dpkg -L ) - note, not all files listed in the package may be installed - review them!. Now edit the install and uninstall steps below based upon whether additional samba files are present within the default install so the correct ones are backed up / restored by the scripts. Edit the install.sh script for the addon: * include the installation script from below (except for the #!/bin/bash and self clean up of the install script at the end) within the addon specific actions. * change the tar at the beginning to remove /tmp/ so it untars from the root directory. * change the rm at the end to remove /tmp/ so it removes the tarball from the root directory. * remove the 'set run time' pieces from the addon specific code. Edit the remove.sh script for the addon: * include the uninstallation script from below (except for the #!/bin/bash and self clean up of the uninstall script at the end). Edit running.sh script for the addon: * Copy the ps -ef IF statement and hash out one of them. * Replace the grep in the ps -ef with just "smbd" (quotes included). Wrap this inside another IF block to check if Samba should be running from /etc/default/services (SAMBA=1). * Add another IF block to check for "nmbd" running, but within the IF blcok created above to check if samba should be running. * Add another IF block to check for "winbindd" running, but create another if block to verify it should be running by checking /etc/default/services for WINBIND=1. Edit start.sh script for the addon: * Hash out the start-stop-daemon line * Add "/etc/init.d/ssh start" (without the quotes) to this file. Edit stop.sh script for the addon: * Hash out the start-stop-daemon line * Add "/etc/init.d/ssh stop" (without the quotes) to this file. Edit _HANDLER.pl for the addon: * Remove the run time pieces of code from sub Show__SPARC_xml and sub Modify__SPARC_xml * The $SPOOL variable in sub Modify__SPARC_xml should now be: $SPOOL .= " "; Edit .html for the addon: * Remove the HTML for the INPUT field and INPUT text box for the run time. * Replace it with release date information if you like. Edit the languages files to remove the run time prompt information. These are in /language/ Build the addon. Stuff to go in the Addon (Install) ================================== #!/bin/bash echo "Unpacking Samba 3.3.7..." cd / tar xvzf /tmp/samba-3.3.7-readynas_sparc.tar.gz echo "Adding /usr/local/lib to ld.so.conf..." if ! grep -q "/usr/local/lib" /etc/ld.so.conf then echo "/usr/local/lib" >> /etc/ld.so.conf fi echo "Softlinking /opt/samba to /opt/samba-3.3.7..." if [ -d "/opt/samba" ] then rm -rf /opt/samba fi if [ -h "/opt/samba" ] then rm -f /opt/samba fi ln -s /opt/samba-3.3.7 /opt/samba echo "Creating directories under /usr/local if not present..." if [ ! -d "/usr/local" ] then mkdir /usr/local fi if [ ! -d "/usr/local/lib" ] then mkdir /usr/local/lib fi if [ ! -d "/usr/local/lib/security" ] then mkdir /usr/local/lib/security fi if [ ! -d "/usr/local/sbin" ] then mkdir /usr/local/sbin fi if [ ! -d "/usr/local/bin" ] then mkdir /usr/local/bin fi if [ ! -d "/usr/local/include" ] then mkdir /usr/local/include fi if [ ! -d "/usr/local/share" ] then mkdir /usr/local/share fi if [ ! -d "/usr/local/share/locale" ] then mkdir /usr/local/share/locale fi if [ ! -d "/usr/local/share/locale/de" ] then mkdir /usr/local/share/locale/de fi if [ ! -d "/usr/local/share/locale/de/LC_MESSAGES" ] then mkdir /usr/local/share/locale/de/LC_MESSAGES fi if [ ! -d "/usr/local/share/man" ] then mkdir /usr/local/share/man fi if [ ! -d "/usr/local/share/man/man1" ] then mkdir /usr/local/share/man/man1 fi if [ ! -d "/usr/local/share/man/man5" ] then mkdir /usr/local/share/man/man5 fi if [ ! -d "/usr/local/share/man/man7" ] then mkdir /usr/local/share/man/man7 fi if [ ! -d "/usr/local/share/man/man8" ] then mkdir /usr/local/share/man/man8 fi echo "Softlinking /usr/local to /opt/samba directories..." ln -s /opt/samba/lib/* /usr/local/lib ln -s /opt/samba/lib/security/* /usr/local/lib/security ln -s /opt/samba/sbin/* /usr/local/sbin ln -s /opt/samba/bin/* /usr/local/bin ln -s /opt/samba/include/* /usr/local/include ln -s /opt/samba/share/locale/de/LC_MESSAGES/* /usr/local/share/locale/de/LC_MESSAGES ln -s /opt/samba/share/man/man1/* /usr/local/share/man/man1 ln -s /opt/samba/share/man/man5/* /usr/local/share/man/man5 ln -s /opt/samba/share/man/man7/* /usr/local/share/man/man7 ln -s /opt/samba/share/man/man8/* /usr/local/share/man/man8 echo "Stopping currently running Samba..." /etc/init.d/samba stop /etc/init.d/winbind stop echo "Updating ld.so cache..." ldconfig echo "Backing up /var/log/samba to /var/log/samba.default..." if [ -d "/var/log/samba" ] then if [ -d "/var/log/samba.default" ] then mv /var/log/samba.default /var/log/samba.default.`date +%Y%m%d%H%M%S` fi mv /var/log/samba /var/log/samba.default fi echo "Create /var/log/samba directories..." if [ ! -d "/var/log/samba" ] then mkdir /var/log/samba fi if [ ! -d "/var/log/samba/cores" ] then mkdir /var/log/samba/cores fi chown root.admin /var/log/samba chmod 775 /var/log/samba echo "Softlinking /opt/samba/var/log to /var/log/samba..." if [ -d "/opt/samba/var/log" ] then rm -rf /opt/samba/var/log fi if [ -h "/opt/samba/var/log" ] then rm -f /opt/samba/var/log fi ln -s /var/log/samba /opt/samba/var/log echo "Backing up /var/run/samba to /var/run/samba.default..." if [ -d "/var/run/samba" ] then if [ -d "/var/run/samba.default" ] then mv /var/run/samba.default /var/run/samba.default.`date +%Y%m%d%H%M%S` fi mv /var/run/samba /var/run/samba.default fi echo "Create /var/run/samba directory..." if [ ! -d "/var/run/samba" ] then mkdir /var/run/samba fi echo "Softlinking /opt/samba/var/run to /var/run/samba..." if [ -d "/opt/samba/var/run" ] then rm -rf /opt/samba/var/run fi if [ -h "/opt/samba/var/run" ] then rm -f /opt/samba/var/run fi ln -s /var/run/samba /opt/samba/var/run echo "Backing up /var/lock/samba to /var/lock/samba.default..." if [ -d "/var/lock/samba" ] then if [ -d "/var/lock/samba.default" ] then mv /var/lock/samba.default /var/lock/samba.default.`date +%Y%m%d%H%M%S` fi mv /var/lock/samba /var/lock/samba.default fi echo "Create /var/lock/samba directory..." if [ ! -d "/var/lock/samba" ] then mkdir /var/lock/samba fi echo "Softlinking /opt/samba/var/lock to /var/lock/samba..." if [ -d "/opt/samba/var/lock" ] then rm -rf /opt/samba/var/lock fi if [ -h "/opt/samba/var/lock" ] then rm -f /opt/samba/var/lock fi ln -s /var/lock/samba /opt/samba/var/lock echo "Backing up /var/lib/samba to /var/lib/samba.default..." if [ -d "/var/lib/samba" ] then if [ -d "/var/lib/samba.default" ] then mv /var/lib/samba.default /var/lib/samba.default.`date +%Y%m%d%H%M%S` fi mv /var/lib/samba /var/lib/samba.default fi echo "Softlinking /var/lib/samba to /var/lock/samba..." if [ -h "/var/lib/samba" ] then rm -f /var/lib/samba fi ln -s /var/lock/samba /var/lib/samba echo "Backing up /etc/samba to /etc/samba.default..." if [ -d "/etc/samba.default" ] then mv /etc/samba.default /etc/samba.default.`date +%Y%m%d%H%M%S` fi cp -pR /etc/samba /etc/samba.default echo "Softlinking /opt/samba/etc to /etc/samba..." if [ -d "/opt/samba/etc" ] then rm -rf /opt/samba/etc fi if [ -h "/opt/samba/etc" ] then rm -f /opt/samba/etc fi ln -s /etc/samba /opt/samba/etc echo "Softlinking /opt/samba/private to /etc/samba..." if [ -d "/opt/samba/private" ] then rm -rf /opt/samba/private fi if [ -h "/opt/samba/private" ] then rm -f /opt/samba/private fi ln -s /etc/samba /opt/samba/private if [ -d "/usr/share/locale/de/LC_MESSAGES" ] then echo "Backing up locale files..." if [ -d "/usr/share/locale/de/LC_MESSAGES.default" ] then mv /usr/share/locale/de/LC_MESSAGES.default /usr/share/locale/de/LC_MESSAGES.default.`date +%Y%m%d%H%M%S` fi cp -pR /usr/share/locale/de/LC_MESSAGES /usr/share/locale/de/LC_MESSAGES.default fi echo "Backing up TDB and smbpasswd files..." tdbbackup -s.pre_3_3_7-upgrade /etc/samba/*.tdb tdbbackup -s.pre_3_3_7-upgrade /var/lib/samba.default/*.tdb tdbbackup -s.pre_3_3_7-upgrade /var/lib/samba.default/printing/*.tdb cp /etc/samba/smbpasswd /etc/samba/smbpasswd.pre_3_3_7-upgrade echo "Copying TDB files to /var/lock/samba..." cp -pR /var/lib/samba.default/* /var/lock/samba echo "Backing up INIT scripts to /etc/init.d/samba.default and /etc/init.d/winbind.default" echo "and changing existing ones to start from /usr/local..." cp /etc/init.d/samba /tmp/samba.init if [ -f "/etc/init.d/samba.default" ] then mv /etc/init.d/samba.default /etc/init.d/samba.default.`date +%Y%m%d%H%M%S` fi cp /etc/init.d/samba /etc/init.d/samba.default cat /tmp/samba.init | sed -e 's/\/usr\/sbin\/smbd/\/usr\/local\/sbin\/smbd/g' > /tmp/samba.init2 cat /tmp/samba.init2 | sed -e 's/\/usr\/sbin\/nmbd/\/usr\/local\/sbin\/nmbd/g' > /tmp/samba.init mv /tmp/samba.init /etc/init.d/samba rm /tmp/samba.init2 chmod 755 /etc/init.d/samba cp /etc/init.d/samba /etc/init.d/samba.3_3_7install cp /etc/init.d/winbind /tmp/winbind.init if [ -f "/etc/init.d/winbind.default" ] then mv /etc/init.d/winbind.default /etc/init.d/winbind.default.`date +%Y%m%d%H%M%S` fi cp /etc/init.d/winbind /etc/init.d/winbind.default cat /tmp/winbind.init | sed -e 's/\/usr\/sbin\/winbind/\/usr\/local\/sbin\/winbind/g' > /tmp/winbind.init2 mv /tmp/winbind.init2 /etc/init.d/winbind rm /tmp/winbind.init chmod 755 /etc/init.d/winbind cp /etc/init.d/winbind /etc/init.d/winbind.3_3_7install echo "Backing up Netgear's default Samba files..." if [ -f "/opt/samba-readynas_default.tar.gz" ] then mv /opt/samba-readynas_default.tar.gz /opt/samba-readynas_default.tar.gz.bak.`date +%Y%m%d%H%M%S` fi tar cvpPzf /opt/samba-readynas_default.tar.gz /usr/share/samba /usr/sbin/smbd /usr/sbin/mksmbpasswd /usr/sbin/nmbd /usr/sbin/winbindd /usr/lib/samba /usr/bin/tdbbackup /usr/bin/smbclient /usr/bin/smbcontrol /usr/bin/smbstatus /usr/bin/net /usr/bin/smbpasswd /usr/bin/smbtree /usr/bin/wbinfo echo "Removing Netgear's default Samba files to avoid any conflicts..." rm /usr/sbin/smbd /usr/sbin/mksmbpasswd /usr/sbin/nmbd /usr/bin/tdbbackup /usr/bin/smbcontrol /usr/bin/smbstatus /usr/bin/net /usr/bin/smbpasswd /usr/bin/smbclient /usr/bin/smbtree /usr/bin/wbinfo /usr/sbin/winbindd rm -rf /usr/lib/samba /usr/share/samba echo "Creating symlinks from /usr/local into /usr because the startup process doesn't use INIT scripts :(..." ln -s /usr/local/bin/eventlogadm /usr/bin ln -s /usr/local/bin/findsmb /usr/bin ln -s /usr/local/bin/ldbadd /usr/bin ln -s /usr/local/bin/ldbdel /usr/bin ln -s /usr/local/bin/ldbedit /usr/bin ln -s /usr/local/bin/ldbmodify /usr/bin ln -s /usr/local/bin/ldbrename /usr/bin ln -s /usr/local/bin/ldbsearch /usr/bin ln -s /usr/local/bin/net /usr/bin ln -s /usr/local/bin/nmblookup /usr/bin ln -s /usr/local/bin/ntlm_auth /usr/bin ln -s /usr/local/bin/pdbedit /usr/bin ln -s /usr/local/bin/profiles /usr/bin ln -s /usr/local/bin/rpcclient /usr/bin ln -s /usr/local/bin/sharesec /usr/bin ln -s /usr/local/bin/smbcacls /usr/bin ln -s /usr/local/bin/smbclient /usr/bin ln -s /usr/local/bin/smbcontrol /usr/bin ln -s /usr/local/bin/smbcquotas /usr/bin ln -s /usr/local/bin/smbget /usr/bin ln -s /usr/local/bin/smbpasswd /usr/bin ln -s /usr/local/bin/smbspool /usr/bin ln -s /usr/local/bin/smbstatus /usr/bin ln -s /usr/local/bin/smbtar /usr/bin ln -s /usr/local/bin/smbtree /usr/bin ln -s /usr/local/bin/tdbbackup /usr/bin ln -s /usr/local/bin/tdbdump /usr/bin ln -s /usr/local/bin/tdbtool /usr/bin ln -s /usr/local/bin/testparm /usr/bin ln -s /usr/local/bin/wbinfo /usr/bin ln -s /usr/local/sbin/mount.cifs /usr/sbin ln -s /usr/local/sbin/nmbd /usr/sbin ln -s /usr/local/sbin/smbd /usr/sbin ln -s /usr/local/sbin/swat /usr/sbin ln -s /usr/local/sbin/umount.cifs /usr/sbin ln -s /usr/local/sbin/winbindd /usr/sbin ln -s /usr/local/lib/auth /usr/lib ln -s /usr/local/lib/charset /usr/lib ln -s /usr/local/lib/de.msg /usr/lib ln -s /usr/local/lib/en.msg /usr/lib ln -s /usr/local/lib/fi.msg /usr/lib ln -s /usr/local/lib/fr.msg /usr/lib ln -s /usr/local/lib/gpext /usr/lib ln -s /usr/local/lib/idmap /usr/lib ln -s /usr/local/lib/it.msg /usr/lib ln -s /usr/local/lib/ja.msg /usr/lib ln -s /usr/local/lib/libnetapi.so /usr/lib ln -s /usr/local/lib/libnetapi.so.0 /usr/lib ln -s /usr/local/lib/libsmbclient.so /usr/lib ln -s /usr/local/lib/libsmbclient.so.0 /usr/lib ln -s /usr/local/lib/libsmbsharemodes.so /usr/lib ln -s /usr/local/lib/libsmbsharemodes.so.0 /usr/lib ln -s /usr/local/lib/libtalloc.so /usr/lib ln -s /usr/local/lib/libtalloc.so.1 /usr/lib ln -s /usr/local/lib/libtdb.so /usr/lib ln -s /usr/local/lib/libtdb.so.1 /usr/lib ln -s /usr/local/lib/libwbclient.so /usr/lib ln -s /usr/local/lib/libwbclient.so.0 /usr/lib ln -s /usr/local/lib/lowcase.dat /usr/lib ln -s /usr/local/lib/nl.msg /usr/lib ln -s /usr/local/lib/nss_info /usr/lib ln -s /usr/local/lib/pdb /usr/lib ln -s /usr/local/lib/pl.msg /usr/lib ln -s /usr/local/lib/rpc /usr/lib ln -s /usr/local/lib/security/* /usr/lib/security ln -s /usr/local/lib/tr.msg /usr/lib ln -s /usr/local/lib/upcase.dat /usr/lib ln -s /usr/local/lib/valid.dat /usr/lib ln -s /usr/local/lib/vfs /usr/lib ln -s /usr/local/include/libsmbclient.h /usr/include ln -s /usr/local/include/netapi.h /usr/include ln -s /usr/local/include/smb_share_modes.h /usr/include ln -s /usr/local/include/talloc.h /usr/include ln -s /usr/local/include/tdb.h /usr/include ln -s /usr/local/include/wbclient.h /usr/include ln -s /usr/local/share/locale/de/LC_MESSAGES/* /usr/share/locale/de/LC_MESSAGES ln -s /usr/local/share/man/man1/findsmb.1 /usr/share/man/man1 ln -s /usr/local/share/man/man1/ldbadd.1 /usr/share/man/man1 ln -s /usr/local/share/man/man1/ldbdel.1 /usr/share/man/man1 ln -s /usr/local/share/man/man1/ldbedit.1 /usr/share/man/man1 ln -s /usr/local/share/man/man1/ldbmodify.1 /usr/share/man/man1 ln -s /usr/local/share/man/man1/ldbrename.1 /usr/share/man/man1 ln -s /usr/local/share/man/man1/ldbsearch.1 /usr/share/man/man1 ln -s /usr/local/share/man/man1/log2pcap.1 /usr/share/man/man1 ln -s /usr/local/share/man/man1/nmblookup.1 /usr/share/man/man1 ln -s /usr/local/share/man/man1/ntlm_auth.1 /usr/share/man/man1 ln -s /usr/local/share/man/man1/profiles.1 /usr/share/man/man1 ln -s /usr/local/share/man/man1/rpcclient.1 /usr/share/man/man1 ln -s /usr/local/share/man/man1/sharesec.1 /usr/share/man/man1 ln -s /usr/local/share/man/man1/smbcacls.1 /usr/share/man/man1 ln -s /usr/local/share/man/man1/smbclient.1 /usr/share/man/man1 ln -s /usr/local/share/man/man1/smbcontrol.1 /usr/share/man/man1 ln -s /usr/local/share/man/man1/smbcquotas.1 /usr/share/man/man1 ln -s /usr/local/share/man/man1/smbget.1 /usr/share/man/man1 ln -s /usr/local/share/man/man1/smbstatus.1 /usr/share/man/man1 ln -s /usr/local/share/man/man1/smbtar.1 /usr/share/man/man1 ln -s /usr/local/share/man/man1/smbtree.1 /usr/share/man/man1 ln -s /usr/local/share/man/man1/testparm.1 /usr/share/man/man1 ln -s /usr/local/share/man/man1/vfstest.1 /usr/share/man/man1 ln -s /usr/local/share/man/man1/wbinfo.1 /usr/share/man/man1 ln -s /usr/local/share/man/man5/lmhosts.5 /usr/share/man/man5 ln -s /usr/local/share/man/man5/moduli.5 /usr/share/man/man5 ln -s /usr/local/share/man/man5/smb.conf.5 /usr/share/man/man5 ln -s /usr/local/share/man/man5/smbgetrc.5 /usr/share/man/man5 ln -s /usr/local/share/man/man5/smbpasswd.5 /usr/share/man/man5 ln -s /usr/local/share/man/man7/libsmbclient.7 /usr/share/man/man7 ln -s /usr/local/share/man/man7/samba.7 /usr/share/man/man7 ln -s /usr/local/share/man/man7/winbind_krb5_locator.7 /usr/share/man/man7 ln -s /usr/local/share/man/man8/eventlogadm.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/idmap_ad.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/idmap_adex.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/idmap_hash.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/idmap_ldap.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/idmap_nss.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/idmap_rid.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/idmap_tdb2.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/idmap_tdb.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/mount.cifs.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/net.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/nmbd.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/pam_winbind.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/pdbedit.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/smbd.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/smbpasswd.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/smbspool.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/swat.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/tdbbackup.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/tdbdump.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/tdbtool.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/umount.cifs.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/vfs_acl_tdb.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/vfs_acl_xattr.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/vfs_audit.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/vfs_cacheprime.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/vfs_cap.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/vfs_catia.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/vfs_commit.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/vfs_default_quota.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/vfs_dirsort.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/vfs_extd_audit.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/vfs_fake_perms.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/vfs_fileid.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/vfs_full_audit.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/vfs_gpfs.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/vfs_netatalk.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/vfs_notify_fam.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/vfs_prealloc.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/vfs_preopen.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/vfs_readahead.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/vfs_readonly.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/vfs_recycle.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/vfs_shadow_copy2.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/vfs_shadow_copy.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/vfs_smb_traffic_analyzer.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/vfs_streams_depot.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/vfs_streams_xattr.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/vfs_xattr_tdb.8 /usr/share/man/man8 ln -s /usr/local/share/man/man8/winbindd.8 /usr/share/man/man8 if grep -q "^SAMBA=1" /etc/default/services then echo "Starting new Samba daemon..." /etc/init.d/samba start fi if grep -q "^WINBIND=1" /etc/default/services then echo "Starting new Winbind daemon..." /etc/init.d/winbind start fi echo "Cleaning up install files..." rm /tmp/samba-3.3.7-readynas_sparc.tar.gz rm /tmp/install-samba.sh Stuff to go in the Addon (Uninstall) ==================================== #!/bin/bash echo "Checking for backup files to restore..." if [ ! -f "/opt/samba-readynas_default.tar.gz" ] then echo "ERROR! Backup of default Samba files is not present. Exiting..." exit 1 fi if [ ! -f "/etc/init.d/samba.default" ] then echo "ERROR! Backup of INIT script is not present. Exiting..." exit 1 fi if [ ! -d "/var/lib/samba.default" ] then echo "ERROR! Backup of /var/lib/samba not present. Exiting..." exit 1 fi if [ ! -d "/var/log/samba.default" ] then echo "ERROR! Backup of /var/log/samba not present. Exiting..." exit 1 fi if [ ! -d "/var/run/samba.default" ] then echo "ERROR! Backup of /var/run/samba not present. Exiting..." exit 1 fi if [ ! -d "/etc/samba.default" ] then echo "ERROR! Backup of /etc/samba not present. Exiting..." exit 1 fi if [ ! -f "/etc/samba.default/smb.conf" ] then echo "ERROR! Backup of /etc/samba/smb.conf not present. Exiting..." exit 1 fi if [ ! -f "/etc/samba.default/smbpasswd" ] then echo "ERROR! Backup of /etc/samba/smbpasswd not present. Exiting..." exit 1 fi echo "Uninstalling Samba 3.3.7..." cd / echo "Stopping new Samba and Winbind daemons..." /etc/init.d/samba stop /etc/init.d/winbind stop echo "Removing new Samba install..." rm -rf /opt/samba-3.3.7 if [ -f "/var/run/samba/smbd.pid" ] then rm -f /var/run/samba/smbd.pid fi if [ -f "/var/run/samba/nmbd.pid" ] then rm -f /var/run/samba/nmbd.pid fi if [ -f "/var/run/samba/winbindd.pid" ] then rm -f /var/run/samba/winbindd.pid fi rm -f /etc/init.d/samba.3_3_7install echo "Backing up config, log and state directories..." if [ -d "/etc/samba" ] then cp -pR /etc/samba /etc/samba.3_3_7uninstall rm -rf /etc/samba fi if [ -d "/var/log/samba" ] then if [ -d "/var/log/samba.3_3_7uninstall" ] then mv /var/log/samba.3_3_7uninstall /var/log/samba.3_3_7uninstall.`date +%Y%m%d%H%M%S` fi mv /var/log/samba /var/log/samba.3_3_7uninstall mkdir /var/log/samba chown root.admin /var/log/samba chmod 775 /var/log/samba fi if [ -d "/var/run/samba" ] then if [ -d "/var/run/samba.3_3_7uninstall" ] then mv /var/run/samba.3_3_7uninstall /var/run/samba.3_3_7uninstall.`date +%Y%m%d%H%M%S` fi mv /var/run/samba /var/run/samba.3_3_7uninstall mkdir /var/run/samba fi if [ -d "/var/lock/samba" ] then if [ -d "/var/lock/samba.3_3_7uninstall" ] then mv /var/lock/samba.3_3_7uninstall /var/lock/samba.3_3_7uninstall.`date +%Y%m%d%H%M%S` fi mv /var/lock/samba /var/lock/samba.3_3_7uninstall fi if [ -d "/var/lock/samba.default" ] then echo "Restoring /var/lock/samba directory..." mv /var/lock/samba.default /var/lock/samba fi echo "Backing up database directories and restoring from pre-upgrade..." echo "WARNING! any changes made to accounts / permissions within Samba since" echo "WARNING! the upgrade, will be lost. Please see /var/lib/samba.3_3_7uninstall" echo "WARNING! for the backup files from v3.3.7..." if [ -h "/var/lib/samba" ] then rm -f /var/lib/samba fi if [ -d "/var/lib/samba" ] then rm -rf /var/lib/samba fi cp -pR /var/lib/samba.default /var/lib/samba ln -s /var/lock/samba.3_3_7uninstall /var/lib/samba.3_3_7uninstall echo "Removing created softlinks..." rm -f /opt/samba rm -f /usr/local/bin/eventlogadm /usr/bin/eventlogadm rm -f /usr/local/bin/findsmb /usr/bin/findsmb rm -f /usr/local/bin/ldbadd /usr/bin/ldbadd rm -f /usr/local/bin/ldbdel /usr/bin/ldbdel rm -f /usr/local/bin/ldbedit /usr/bin/ldbedit rm -f /usr/local/bin/ldbmodify /usr/bin/ldbmodify rm -f /usr/local/bin/ldbrename /usr/bin/ldbrename rm -f /usr/local/bin/ldbsearch /usr/bin/ldbsearch rm -f /usr/local/bin/net /usr/bin/net rm -f /usr/local/bin/nmblookup /usr/bin/nmblookup rm -f /usr/local/bin/ntlm_auth /usr/bin/ntlm_auth rm -f /usr/local/bin/pdbedit /usr/bin/pdbedit rm -f /usr/local/bin/profiles /usr/bin/profiles rm -f /usr/local/bin/rpcclient /usr/bin/rpcclient rm -f /usr/local/bin/sharesec /usr/bin/sharesec rm -f /usr/local/bin/smbcacls /usr/bin/smbcacls rm -f /usr/local/bin/smbclient /usr/bin/smbclient rm -f /usr/local/bin/smbcontrol /usr/bin/smbcontrol rm -f /usr/local/bin/smbcquotas /usr/bin/smbcquotas rm -f /usr/local/bin/smbget /usr/bin/smbget rm -f /usr/local/bin/smbpasswd /usr/bin/smbpasswd rm -f /usr/local/bin/smbspool /usr/bin/smbspool rm -f /usr/local/bin/smbstatus /usr/bin/smbstatus rm -f /usr/local/bin/smbtar /usr/bin/smbtar rm -f /usr/local/bin/smbtree /usr/bin/smbtree rm -f /usr/local/bin/tdbbackup /usr/bin/tdbbackup rm -f /usr/local/bin/tdbdump /usr/bin/tdbdump rm -f /usr/local/bin/tdbtool /usr/bin/tdbtool rm -f /usr/local/bin/testparm /usr/bin/testparm rm -f /usr/local/bin/wbinfo /usr/bin/wbinfo rm -f /usr/local/sbin/mount.cifs /usr/sbin/mount.cifs rm -f /usr/local/sbin/nmbd /usr/sbin/nmbd rm -f /usr/local/sbin/smbd /usr/sbin/smbd rm -f /usr/local/sbin/swat /usr/sbin/swat rm -f /usr/local/sbin/umount.cifs /usr/sbin/umount.cifs rm -f /usr/local/sbin/winbindd /usr/sbin/winbindd rm -f /usr/local/lib/auth /usr/lib/auth rm -f /usr/local/lib/charset /usr/lib/charset rm -f /usr/local/lib/de.msg /usr/lib/de.msg rm -f /usr/local/lib/en.msg /usr/lib/en.msg rm -f /usr/local/lib/fi.msg /usr/lib/fi.msg rm -f /usr/local/lib/fr.msg /usr/lib/fr.msg rm -f /usr/local/lib/gpext /usr/lib/gpext rm -f /usr/local/lib/idmap /usr/lib/idmap rm -f /usr/local/lib/it.msg /usr/lib/it.msg rm -f /usr/local/lib/ja.msg /usr/lib/ja.msg rm -f /usr/local/lib/libnetapi.so /usr/lib/libnetapi.so rm -f /usr/local/lib/libnetapi.so.0 /usr/lib/libnetapi.so.0 rm -f /usr/local/lib/libsmbclient.so /usr/lib/libsmbclient.so rm -f /usr/local/lib/libsmbclient.so.0 /usr/lib/libsmbclient.so.0 rm -f /usr/local/lib/libsmbsharemodes.so /usr/lib/libsmbsharemodes.so rm -f /usr/local/lib/libsmbsharemodes.so.0 /usr/lib/libsmbsharemodes.so.0 rm -f /usr/local/lib/libtalloc.so /usr/lib/libtalloc.so rm -f /usr/local/lib/libtalloc.so.1 /usr/lib/libtalloc.so.1 rm -f /usr/local/lib/libtdb.so /usr/lib/libtdb.so rm -f /usr/local/lib/libtdb.so.1 /usr/lib/libtdb.so.1 rm -f /usr/local/lib/libwbclient.so /usr/lib/libwbclient.so rm -f /usr/local/lib/libwbclient.so.0 /usr/lib/libwbclient.so.0 rm -f /usr/local/lib/lowcase.dat /usr/lib/lowcase.dat rm -f /usr/local/lib/nl.msg /usr/lib/nl.msg rm -f /usr/local/lib/nss_info /usr/lib/nss_info rm -f /usr/local/lib/pdb /usr/lib/pdb rm -f /usr/local/lib/pl.msg /usr/lib/pl.msg rm -f /usr/local/lib/rpc /usr/lib/rpc rm -f /usr/local/lib/security/pam_smbpass.so /usr/local/lib/security/pam_winbind.so /usr/lib/security/pam_smbpass.so /usr/lib/security/pam_winbind.so rm -f /usr/local/lib/tr.msg /usr/lib/tr.msg rm -f /usr/local/lib/upcase.dat /usr/lib/upcase.dat rm -f /usr/local/lib/valid.dat /usr/lib/valid.dat rm -f /usr/local/lib/vfs /usr/lib/vfs rm -f /usr/local/include/libsmbclient.h /usr/include/libsmbclient.h rm -f /usr/local/include/netapi.h /usr/include/netapi.h rm -f /usr/local/include/smb_share_modes.h /usr/include/smb_share_modes.h rm -f /usr/local/include/talloc.h /usr/include/talloc.h rm -f /usr/local/include/tdb.h /usr/include/tdb.h rm -f /usr/local/include/wbclient.h /usr/include/wbclient.h rm -f /usr/local/share/locale/de/LC_MESSAGES/pam_winbind.mo /usr/share/locale/de/LC_MESSAGES/pam_winbind.mo rm -f /usr/local/share/man/man1/findsmb.1 /usr/share/man/man1/findsmb.1 rm -f /usr/local/share/man/man1/ldbadd.1 /usr/share/man/man1/ldbadd.1 rm -f /usr/local/share/man/man1/ldbdel.1 /usr/share/man/man1/ldbdel.1 rm -f /usr/local/share/man/man1/ldbedit.1 /usr/share/man/man1/ldbedit.1 rm -f /usr/local/share/man/man1/ldbmodify.1 /usr/share/man/man1/ldbmodify.1 rm -f /usr/local/share/man/man1/ldbrename.1 /usr/share/man/man1/ldbrename.1 rm -f /usr/local/share/man/man1/ldbsearch.1 /usr/share/man/man1/ldbsearch.1 rm -f /usr/local/share/man/man1/log2pcap.1 /usr/share/man/man1/log2pcap.1 rm -f /usr/local/share/man/man1/nmblookup.1 /usr/share/man/man1/nmblookup.1 rm -f /usr/local/share/man/man1/ntlm_auth.1 /usr/share/man/man1/ntlm_auth.1 rm -f /usr/local/share/man/man1/profiles.1 /usr/share/man/man1/profiles.1 rm -f /usr/local/share/man/man1/rpcclient.1 /usr/share/man/man1/rpcclient.1 rm -f /usr/local/share/man/man1/sharesec.1 /usr/share/man/man1/sharesec.1 rm -f /usr/local/share/man/man1/smbcacls.1 /usr/share/man/man1/smbcacls.1 rm -f /usr/local/share/man/man1/smbclient.1 /usr/share/man/man1/smbclient.1 rm -f /usr/local/share/man/man1/smbcontrol.1 /usr/share/man/man1/smbcontrol.1 rm -f /usr/local/share/man/man1/smbcquotas.1 /usr/share/man/man1/smbcquotas.1 rm -f /usr/local/share/man/man1/smbget.1 /usr/share/man/man1/smbget.1 rm -f /usr/local/share/man/man1/smbstatus.1 /usr/share/man/man1/smbstatus.1 rm -f /usr/local/share/man/man1/smbtar.1 /usr/share/man/man1/smbtar.1 rm -f /usr/local/share/man/man1/smbtree.1 /usr/share/man/man1/smbtree.1 rm -f /usr/local/share/man/man1/testparm.1 /usr/share/man/man1/testparm.1 rm -f /usr/local/share/man/man1/vfstest.1 /usr/share/man/man1/vfstest.1 rm -f /usr/local/share/man/man1/wbinfo.1 /usr/share/man/man1/wbinfo.1 rm -f /usr/local/share/man/man5/lmhosts.5 /usr/share/man/man5/lmhosts.5 rm -f /usr/local/share/man/man5/moduli.5 /usr/share/man/man5/moduli.5 rm -f /usr/local/share/man/man5/smb.conf.5 /usr/share/man/man5/smb.conf.5 rm -f /usr/local/share/man/man5/smbgetrc.5 /usr/share/man/man5/smbgetrc.5 rm -f /usr/local/share/man/man5/smbpasswd.5 /usr/share/man/man5/smbpasswd.5 rm -f /usr/local/share/man/man7/libsmbclient.7 /usr/share/man/man7/libsmbclient.7 rm -f /usr/local/share/man/man7/samba.7 /usr/share/man/man7/samba.7 rm -f /usr/local/share/man/man7/winbind_krb5_locator.7 /usr/share/man/man7/winbind_krb5_locator.7 rm -f /usr/local/share/man/man8/eventlogadm.8 /usr/share/man/man8/eventlogadm.8 rm -f /usr/local/share/man/man8/idmap_ad.8 /usr/share/man/man8/idmap_ad.8 rm -f /usr/local/share/man/man8/idmap_adex.8 /usr/share/man/man8/idmap_adex.8 rm -f /usr/local/share/man/man8/idmap_hash.8 /usr/share/man/man8/idmap_hash.8 rm -f /usr/local/share/man/man8/idmap_ldap.8 /usr/share/man/man8/idmap_ldap.8 rm -f /usr/local/share/man/man8/idmap_nss.8 /usr/share/man/man8/idmap_nss.8 rm -f /usr/local/share/man/man8/idmap_rid.8 /usr/share/man/man8/idmap_rid.8 rm -f /usr/local/share/man/man8/idmap_tdb2.8 /usr/share/man/man8/idmap_tdb2.8 rm -f /usr/local/share/man/man8/idmap_tdb.8 /usr/share/man/man8/idmap_tdb.8 rm -f /usr/local/share/man/man8/mount.cifs.8 /usr/share/man/man8/mount.cifs.8 rm -f /usr/local/share/man/man8/net.8 /usr/share/man/man8/net.8 rm -f /usr/local/share/man/man8/nmbd.8 /usr/share/man/man8/nmbd.8 rm -f /usr/local/share/man/man8/pam_winbind.8 /usr/share/man/man8/pam_winbind.8 rm -f /usr/local/share/man/man8/pdbedit.8 /usr/share/man/man8/pdbedit.8 rm -f /usr/local/share/man/man8/smbd.8 /usr/share/man/man8/smbd.8 rm -f /usr/local/share/man/man8/smbpasswd.8 /usr/share/man/man8/smbpasswd.8 rm -f /usr/local/share/man/man8/smbspool.8 /usr/share/man/man8/smbspool.8 rm -f /usr/local/share/man/man8/swat.8 /usr/share/man/man8/swat.8 rm -f /usr/local/share/man/man8/tdbbackup.8 /usr/share/man/man8/tdbbackup.8 rm -f /usr/local/share/man/man8/tdbdump.8 /usr/share/man/man8/tdbdump.8 rm -f /usr/local/share/man/man8/tdbtool.8 /usr/share/man/man8/tdbtool.8 rm -f /usr/local/share/man/man8/umount.cifs.8 /usr/share/man/man8/umount.cifs.8 rm -f /usr/local/share/man/man8/vfs_acl_tdb.8 /usr/share/man/man8/vfs_acl_tdb.8 rm -f /usr/local/share/man/man8/vfs_acl_xattr.8 /usr/share/man/man8/vfs_acl_xattr.8 rm -f /usr/local/share/man/man8/vfs_audit.8 /usr/share/man/man8/vfs_audit.8 rm -f /usr/local/share/man/man8/vfs_cacheprime.8 /usr/share/man/man8/vfs_cacheprime.8 rm -f /usr/local/share/man/man8/vfs_cap.8 /usr/share/man/man8/vfs_cap.8 rm -f /usr/local/share/man/man8/vfs_catia.8 /usr/share/man/man8/vfs_catia.8 rm -f /usr/local/share/man/man8/vfs_commit.8 /usr/share/man/man8/vfs_commit.8 rm -f /usr/local/share/man/man8/vfs_default_quota.8 /usr/share/man/man8/vfs_default_quota.8 rm -f /usr/local/share/man/man8/vfs_dirsort.8 /usr/share/man/man8/vfs_dirsort.8 rm -f /usr/local/share/man/man8/vfs_extd_audit.8 /usr/share/man/man8/vfs_extd_audit.8 rm -f /usr/local/share/man/man8/vfs_fake_perms.8 /usr/share/man/man8/vfs_fake_perms.8 rm -f /usr/local/share/man/man8/vfs_fileid.8 /usr/share/man/man8/vfs_fileid.8 rm -f /usr/local/share/man/man8/vfs_full_audit.8 /usr/share/man/man8/vfs_full_audit.8 rm -f /usr/local/share/man/man8/vfs_gpfs.8 /usr/share/man/man8/vfs_gpfs.8 rm -f /usr/local/share/man/man8/vfs_netatalk.8 /usr/share/man/man8/vfs_netatalk.8 rm -f /usr/local/share/man/man8/vfs_notify_fam.8 /usr/share/man/man8/vfs_notify_fam.8 rm -f /usr/local/share/man/man8/vfs_prealloc.8 /usr/share/man/man8/vfs_prealloc.8 rm -f /usr/local/share/man/man8/vfs_preopen.8 /usr/share/man/man8/vfs_preopen.8 rm -f /usr/local/share/man/man8/vfs_readahead.8 /usr/share/man/man8/vfs_readahead.8 rm -f /usr/local/share/man/man8/vfs_readonly.8 /usr/share/man/man8/vfs_readonly.8 rm -f /usr/local/share/man/man8/vfs_recycle.8 /usr/share/man/man8/vfs_recycle.8 rm -f /usr/local/share/man/man8/vfs_shadow_copy2.8 /usr/share/man/man8/vfs_shadow_copy2.8 rm -f /usr/local/share/man/man8/vfs_shadow_copy.8 /usr/share/man/man8/vfs_shadow_copy.8 rm -f /usr/local/share/man/man8/vfs_smb_traffic_analyzer.8 /usr/share/man/man8/vfs_smb_traffic_analyzer.8 rm -f /usr/local/share/man/man8/vfs_streams_depot.8 /usr/share/man/man8/vfs_streams_depot.8 rm -f /usr/local/share/man/man8/vfs_streams_xattr.8 /usr/share/man/man8/vfs_streams_xattr.8 rm -f /usr/local/share/man/man8/vfs_xattr_tdb.8 /usr/share/man/man8/vfs_xattr_tdb.8 rm -f /usr/local/share/man/man8/winbindd.8 /usr/share/man/man8/winbindd.8 echo "Unpacking ReadyNAS default copy of Samba from backup..." tar xvzf /opt/samba-readynas_default.tar.gz echo "Restoring default INIT script..." mv /etc/init.d/samba.default /etc/init.d/samba mv /etc/init.d/winbind.default /etc/init.d/winbind echo "Restoring default /etc/samba directory..." mv /etc/samba.default /etc/samba # Leave /usr/local directories created - no harm in leaving them plus might contain other apps data # Safe to leave /usr/local/lib in /etc/ld.so.conf but need to re-run ldconfig echo "Flushing out deleted libraries..." ldconfig echo "Removing backed up default Samba install..." rm -f /opt/samba-readynas_default.tar.gz if grep -q "^SAMBA=1" /etc/default/services then echo "Starting old Samba daemon..." /etc/init.d/samba start fi if grep -q "^WINBIND=1" /etc/default/services then echo "Starting old Winbind daemon..." /etc/init.d/winbind start fi echo "Cleaning up uninstall files..." rm /tmp/uninstall-samba.sh