Hey all, I am hearing that there is interest from users in the usr merge layout (turning off the split-usr use flag) on their systems.
You can't really do this on a live system without migrating your system to the new layout. I wrote a script a while back that attempts this, but I haven't packaged it yet because I'm not sure how safe it is. I will attach the script here before I package it. Any comments or suggestions for this would be very helpful. Thanks, William
#!/bin/bb
is_internal()
{
[ -z "$1" ] && return 1
case $(command -v $1) in
*/*) rc=1 ;;
*) rc=0 ;;
esac
return $rc
}
run_command()
{
local dry_run
[ $DRYRUN -eq 1 ] && dry_run=echo
$dry_run "$@"
}
DRYRUN=1
HELP=0
while [ $# -gt 0 ]; do
case $1 in
-d|--dryrun|--dry-run) DRYRUN=1 ;;
-h|--help) HELP=1 ;;
esac
shift
done
if [ $HELP -eq 1 ]; then
echo "$(basename $0) -h \| --help - displays this message"
echo "$(basename $0) --dryrun \| --dry-run - show what would be done"
exit 0
fi
for cmd in cp ln; do
if ! is_internal $cmd; then
echo "Please rebuild busybox and include the $cmd command"
exit 1
fi
done
if [ -L /bin -a -L /sbin ]; then
echo "It appears that the /usr merge has already been done on this
system."
exit 0
fi
# copy binaries
for dir in /bin /sbin /usr/sbin; do
run_command cp -a $dir/* /usr/bin
done
# copy libraries
for dir in /lib*; do
[ -L $dir ] && continue
run_command cp -a $dir/* /usr$dir
done
# Create the /usr merge compatibility symlinks
for dir in /bin /sbin; do
run_command rm -rf $dir
run_command ln -s usr/bin $dir
done
run_command rm -rf /usr/sbin
run_command ln -s bin /usr/sbin
for dir in /lib*; do
run_command rm -rf $dir
run_command ln -s usr$dir $dir
done
signature.asc
Description: PGP signature
