%PDF- %PDF-
Direktori : /proc/self/root/var/lib/dpkg/info/ |
Current File : //proc/self/root/var/lib/dpkg/info/dash.postinst |
#!/bin/dash set -e # $1: dfile, $2: link target, $3: distrib replace_with_link() { dfile="$DPKG_ROOT$1"; ltarget=$2; distrib="$DPKG_ROOT$3" temp="$dfile.tmp" # Safely create a symlink to $ltarget at $dfile, first # making a backup of $dfile (the file being diverted) # in $distrib (if specified). # # The cp / ln -s / mv dance avoids having to live without # $dfile (think: /bin/sh) for even a moment, so applications # running in parallel can continue without trouble. # See dash.preinst for details. if [ -n "$distrib" ] && [ -e "$dfile" ]; then cp -dp "$dfile" "$distrib" fi ln -sf "$ltarget" "$temp" mv -f "$temp" "$dfile" } claim_binsh() { dfile=$1 ltarget=$2 distrib=${3:-$dfile.distrib} diverter=$(dpkg-divert --listpackage $dfile) truename=$(dpkg-divert --truename $dfile) if [ "$diverter" = dash ]; then # good. return fi if [ "$diverter" = LOCAL ]; then # The sysadmin wants it this way. Who am I to argue? return fi if [ -n "$diverter" ] && [ "$diverter" != bash ]; then # Let dpkg-divert error out; we are not taking # over the diversion, unless we added it # ourselves on behalf of bash. dpkg-divert --package dash --no-rename --remove $dfile echo "This should never be reached" exit 1 fi dpkg-divert --package bash --no-rename --remove $dfile dpkg-divert --package dash --no-rename --divert $distrib --add $dfile # remove the old equivalent of $distrib, if it existed. if [ -n "$DPKG_ROOT$truename" ]; then rm -f "$DPKG_ROOT$truename" fi replace_with_link $dfile $ltarget $distrib } unclaim_binsh() { dfile=$1 ltarget=$2 distrib=${3:-$dfile.distrib} diverter=$(dpkg-divert --listpackage $dfile) truename=$(dpkg-divert --truename $dfile) if [ "$diverter" != dash ]; then # good. return fi # Donate the diversion and sh symlink to the bash package. ltarget=$(echo $ltarget | sed s/dash/bash/) dpkg-divert --package dash --no-rename --remove $dfile dpkg-divert --package bash --no-rename --divert $distrib --add $dfile if [ -n "$truename" ]; then rm -f "$truename" fi replace_with_link $dfile $ltarget $distrib } initial_binsh_setup() { dfile=$1 ltarget=$2 distrib=${3:-$dfile.distrib} ashfile=$4 diverter=$(dpkg-divert --listpackage $dfile) truename=$(dpkg-divert --truename $dfile) if [ -z "$diverter" ]; then # good. return fi if [ "$diverter" = ash ]; then dpkg-divert --package ash --no-rename --remove $dfile dpkg-divert --package dash --no-rename --divert $distrib --add $dfile if [ "$truename" != "$distrib" ] && [ -e "$truename" ]; then mv "$truename" "$distrib" fi replace_with_link $dfile $ltarget return fi if [ -h $dfile ] && [ -f $dfile ] && [ -f $ashfile ] && cmp $dfile $ashfile then replace_with_link $dfile $ltarget fi } add_shell() { if ! type add-shell > /dev/null 2>&1; then return fi add-shell /bin/dash } debconf= if [ -f /usr/share/debconf/confmodule ]; then . /usr/share/debconf/confmodule debconf=yes fi if [ "$1" = configure ] && [ -z "$2" ]; then initial_binsh_setup /bin/sh dash '' /bin/ash initial_binsh_setup /usr/share/man/man1/sh.1.gz dash.1.gz \ /usr/share/man/man1/sh.distrib.1.gz \ /usr/share/man/man1/ash.1.gz add_shell elif [ "$1" = configure ] && dpkg --compare-versions "$2" lt 0.4.18; then add_shell fi if [ $debconf ]; then db_get dash/sh if [ "$RET" = true ]; then claim_binsh /bin/sh dash if [ -d "$DPKG_ROOT/usr/share/man/man1/" ]; then claim_binsh /usr/share/man/man1/sh.1.gz dash.1.gz \ /usr/share/man/man1/sh.distrib.1.gz fi else unclaim_binsh /bin/sh dash unclaim_binsh /usr/share/man/man1/sh.1.gz dash.1.gz \ /usr/share/man/man1/sh.distrib.1.gz fi fi # Automatically added by dh_installmenu/13.6ubuntu1 if [ "$1" = "configure" ] && [ -x "`command -v update-menus`" ]; then update-menus fi # End automatically added section