Index: head/net/cvsup-mirror/pkg-deinstall =================================================================== --- head/net/cvsup-mirror/pkg-deinstall (revision 25654) +++ head/net/cvsup-mirror/pkg-deinstall (revision 25655) @@ -1,99 +1,109 @@ #! /bin/sh ask() { local question default answer question=$1 default=$2 if [ -z "${PACKAGE_BUILDING}" ]; then read -p "${question} [${default}]? " answer fi if [ x${answer} = x ]; then answer=${default} fi echo ${answer} } yesno() { local dflt question answer question=$1 dflt=$2 while :; do answer=$(ask "${question}" "${dflt}") case "${answer}" in [Yy]*) return 0;; [Nn]*) return 1;; esac echo "Please answer yes or no." done } delete_account() { - local u g + local u g home u=$1 g=$2 if yesno "Do you want me to remove group \"${g}\"" y; then pw groupdel -n ${g} echo "Done." fi if yesno "Do you want me to remove user \"${u}\"" y; then + eval home=~${u} pw userdel -n ${u} echo "Done." + if [ -d "${home}" ]; then + echo "Please remember to remove the home directory \"${home}\" as" + echo "well as the mirrored files." + fi fi } if [ x$2 != xDEINSTALL ]; then exit fi export PATH=/bin:/usr/bin:/usr/sbin base=${PKG_PREFIX}/etc/cvsup . ${base}/config.sh || exit if ps -axc | grep -q cvsupd; then - echo "Please kill your running cvsupd processes first" >&2 - exit 1 + if yesno "There are some cvsupd processes running. Shall I kill them" y + then + killall cvsupd + sleep 2 + else + echo "OK ... I hope you know what you are doing." + fi fi tmp="/etc/#cvsma$$" trap "rm -f ${tmp}" 0 1 2 3 15 rm -rf ${base}/prefixes rm -f ${base}/.start_server if yesno "Do you want me to remove scheduled updates from \"/etc/crontab\"" y then sed "/\/etc\/cvsup\/update\.sh/d" /etc/crontab >${tmp} || exit chmod 644 ${tmp} mv ${tmp} /etc/crontab || exit echo "Done." fi if yesno \ "Do you want me to remove the cvsupd logging from \"/etc/syslog.conf\"" y then sed "/^!cvsupd/,/cvsupd\.log\$/d" /etc/syslog.conf >${tmp} || exit chmod 644 ${tmp} mv ${tmp} /etc/syslog.conf || exit if [ -f /var/run/syslog.pid ]; then echo "Giving syslogd a kick in the pants." kill -HUP $(cat /var/run/syslog.pid) fi echo "Done." fi if yesno "Do you want me to remove the cvsupd log entry from \ \"/etc/newsyslog.conf\"" y; then sed "/cvsupd\.log/d" /etc/newsyslog.conf >${tmp} || exit chmod 644 ${tmp} mv ${tmp} /etc/newsyslog.conf || exit echo "Done." fi delete_account ${user} ${group} delete_account ${cuser} ${cgroup} Property changes on: head/net/cvsup-mirror/pkg-deinstall ___________________________________________________________________ Modified: cvs2svn:cvs-rev ## -1 +1 ## -1.2 \ No newline at end of property +1.3 \ No newline at end of property Index: head/net/cvsup-mirror/pkg-install =================================================================== --- head/net/cvsup-mirror/pkg-install (revision 25654) +++ head/net/cvsup-mirror/pkg-install (revision 25655) @@ -1,234 +1,254 @@ #! /bin/sh base=${PREFIX}/etc/cvsup prefixes=${base}/prefixes chmods_done=" " ask() { local question default answer question=$1 default=$2 if [ -z "${PACKAGE_BUILDING}" ]; then read -p "${question} [${default}]? " answer fi if [ x${answer} = x ]; then answer=${default} fi echo ${answer} } yesno() { local dflt question answer question=$1 dflt=$2 while :; do answer=$(ask "${question}" "${dflt}") case "${answer}" in [Yy]*) return 0;; [Nn]*) return 1;; esac echo "Please answer yes or no." done } install_links() { local link dir subdir path while [ $# -ge 3 ]; do link=$1 dir=$2 subdir=$3 echo " Linking ${link} -> ${dir}" ln -sf ${dir} ${prefixes}/${link} || exit if [ "x${dir}" != "xSKIP" -a "x${dir}" != "x.." ]; then if [ "x${subdir}" = "x." ]; then path=${dir} else path=${dir}/${subdir} fi ( cd ${prefixes} || exit if [ "x${subdir}" != "x." -a -h ${path} ]; then cat </dev/null 2>&1; then echo -n " Fixing ownerships and modes in ${path} ..." ( chdir ${prefixes} && \ chown -R ${cuser}:${cgroup} ${path} && \ chmod -R a+rX ${path} ) || exit echo " done." chmods_done="${chmods_done}${path} " fi fi shift 3 done } make_account() { - local u g + local u g gcos homeopt home u=$1 g=$2 + gcos=$3 + homeopt=${4:+"-d $4"} + if pw group show "${g}" >/dev/null 2>&1; then echo "You already have a group \"${g}\", so I will use it." else echo "You need a group \"${g}\"." if which -s pw && yesno "Would you like me to create it" y; then pw groupadd ${g} || exit echo "Done." else echo "Please create it, and try again." if ! grep -q "^${u}:" /etc/passwd; then echo "While you're at it, please create a user \"${u}\" too," echo "with a default group of \"${g}\"." fi exit 1 fi fi if pw user show "${u}" >/dev/null 2>&1; then echo "You already have a user \"${u}\", so I will use it." else echo "You need a user \"${u}\"." if which -s pw && yesno "Would you like me to create it" y; then - pw useradd ${u} -g ${g} -h - -d /nonexistent \ - -s /nonexistent -c "CVSup Daemon" || exit + pw useradd ${u} -g ${g} -h - ${homeopt} \ + -s /nonexistent -c "${gcos}" || exit echo "Done." else echo "Please create it, and try again." exit 1 fi fi + + if [ x"$homeopt" = x ]; then + eval home=~${u} + if [ ! -d "${home}" ]; then + if yesno \ + "Would you like me to create ${u}'s home directory (${home})" y + then + (umask 77 && \ + mkdir -p ${home}/.cvsup && \ + touch ${home}/.cvsup/auth) || exit + chown -R ${u}:${g} ${home} || exit + else + echo "Please create it, and try again." + exit 1 + fi + fi + fi } case $2 in POST-INSTALL) . ${base}/config.sh || exit if which -s pw && which -s lockf; then : else cat <>/etc/syslog.conf !cvsupd ${facility}.info /var/log/cvsupd.log EOF if [ ! -f /var/log/cvsupd.log ]; then echo "Creating \"/var/log/cvsupd.log\"." cp /dev/null /var/log/cvsupd.log fi if [ -f /var/run/syslog.pid ]; then echo "Giving syslogd a kick in the pants." kill -HUP $(cat /var/run/syslog.pid) fi echo "Adding cvsupd log entry to \"/etc/newsyslog.conf\"." cat <>/etc/newsyslog.conf /var/log/cvsupd.log 664 7 * 24 Z EOF echo "Done." else cat <>/etc/crontab ${m} ${hstr} * * * root ${base}/update.sh EOF cat <