#!/bin/sh
# $FreeBSD: ports/ports-mgmt/bpkg/files/bpkg.sh.in,v 1.9 2007/12/12 23:48:52 miwi Exp $
# Copyright (c) 2007 Andy Kosela <andy.kosela@gmail.com>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
trap trap_exit 2
pkg=$@
root() {
if [ `id -u` != 0 ]; then
echo "bpkg: access denied, root privileges required"
exit 0
fi
}
trap_exit() {
echo -e "\n*** SIGINT ***"
exit 1
}
missing() {
echo "bpkg: can't find the port in /usr/ports/"
exit 0
}
main() {
root
if [ -z "$pkg" ]; then
echo "bpkg: you didn't specify any package to install/upgrade"
exit 0
fi
echo "Available in ports:"
for e in $pkg; do
cd /usr/ports && make search path=/$e.* | awk '/Port/ /Path/ { print $0 "\n" }'
done
for z in $pkg; do
pkg_install=`cd /usr/ports && make search path=/$z.* | grep Path | cut -d/ -f4,5`
for e in $pkg_install; do
e_stripped=`echo $e | cut -d/ -f2`
e_installed=`grep $e$ /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`
if [ -z "$e_installed" ]; then
echo -n "Do you want to install new $e? [y] "
else
echo -n "Do you want to upgrade installed $e_installed? [y] "
fi
read key
case $key in
n) ;;
*)
if [ ! -z "$e_installed" ]; then
echo -n "Creating backup package in /usr/tmp/$e_installed.tbz... "
cd /usr/tmp/ && pkg_create -b $e_installed
echo "Done."
fi
# Fetch and install binary package
echo ""
if [ ! -z "$e_installed" ]; then
if [ ! -z "`grep $e /root/ports.lst`" ]; then
echo "It seems you installed this package using ports."
echo "It is strongly recommended to upgrade it using also ports."
echo -n "Do you want to cancel this binary upgrade process? [y] "
read key
case $key in
n)
sed -i '' s,$e,,g /root/ports.lst 1>/dev/null 2>&1;;
*) exit 0;;
esac
fi
echo "Upgrading installed package:"
pkg_delete -f $e_installed 1>/dev/null 2>&1
if [ ! -z `pkg_info -oq $e_installed 2>/dev/null` ]; then
echo "*** cannot proceed without first removing the package ***"
exit 0
fi
pkg_add -r $e_stripped
exit 0
else
echo "Installing new package:"
pkg_add -r $e_stripped
exit 0
fi;;
esac
done
done
}
pkg_latest() {
root
if [ -z "$pkg" ]; then
echo "bpkg: you didn't specify any package to install/upgrade"
exit 0
fi
echo "Available in ports:"
for e in $pkg; do
cd /usr/ports && make search path=/$e.* | awk '/Port/ /Path/ { print $0 "\n" }'
done
for z in $pkg; do
pkg_install=`cd /usr/ports && make search path=/$z.* | grep Path | cut -d/ -f4,5`
for e in $pkg_install; do
e_stripped=`echo $e | cut -d/ -f2`
e_installed=`grep $e$ /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`
if [ -z "$e_installed" ]; then
echo -n "Do you want to install new $e? [y] "
else
echo -n "Do you want to upgrade installed $e_installed? [y] "
fi
read key
case $key in
n) ;;
*)
arch=`uname -m`
setenv PACKAGESITE ftp://ftp.freebsd.org/pub/FreeBSD/ports/$arch/packages-stable/Latest/
if [ ! -z "$e_installed" ]; then
echo -n "Creating backup package in /usr/tmp/$e_installed.tbz... "
cd /usr/tmp/ && pkg_create -b $e_installed
echo "Done."
fi
# Fetch and install binary package
echo ""
if [ ! -z "$e_installed" ]; then
if [ ! -z "`grep $e /root/ports.lst`" ]; then
echo "It seems you installed this package using ports."
echo "It is strongly recommended to upgrade it using also ports."
echo -n "Do you want to cancel this binary upgrade process? [y] "
read key
case $key in
n)
sed -i '' s,$e,,g /root/ports.lst 1>/dev/null 2>&1;;
*)
unsetenv PACKAGESITE
exit 0;;
esac
fi
echo "Upgrading installed package:"
pkg_delete -f $e_installed 1>/dev/null 2>&1
if [ ! -z `pkg_info -oq $e_installed 2>/dev/null` ]; then
echo "*** cannot proceed without first removing the package ***"
exit 0
fi
pkg_add -r $e_stripped
unsetenv PACKAGESITE
exit 0
else
echo "Installing new package:"
pkg_add -r $e_stripped
unsetenv PACKAGESITE
exit 0
fi;;
esac
done
done
}
simulation() {
root
if [ -z "$pkg" ]; then
echo "bpkg: you didn't specify any package to install/upgrade"
exit 0
fi
echo "Available in ports:"
for e in $pkg; do
cd /usr/ports && make search path=/$e.* | awk '/Port/ /Path/ { print $0 "\n" }'
done
for z in $pkg; do
pkg_install=`cd /usr/ports && make search path=/$z.* | grep Path | cut -d/ -f4,5`
for e in $pkg_install; do
e_stripped=`echo $e | cut -d/ -f2`
e_installed=`grep $e$ /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`
if [ -z "$e_installed" ]; then
echo -n "Do you want to install new $e? [y] "
else
echo -n "Do you want to upgrade installed $e_installed? [y] "
fi
read key
case $key in
n) ;;
*)
if [ ! -z "$e_installed" ]; then
echo -n "Creating backup package in /usr/tmp/$e_installed.tbz... "
cd /usr/tmp/ && pkg_create -b $e_installed
echo "Done."
fi
# Fetch and install binary package
echo ""
if [ ! -z "$e_installed" ]; then
echo "Upgrading installed package:"
pkg_delete -n $e_installed 1>/dev/null 2>&1
pkg_add -rn $e_stripped
exit 0
else
echo "Installing new package:"
pkg_add -rn $e_stripped
exit 0
fi;;
esac
done
done
}
build_port() {
root
if [ -z "$pkg" ]; then
echo "bpkg: you didn't specify any package to install/upgrade"
exit 0
fi
echo "Available in ports:"
for e in $pkg; do
cd /usr/ports && make search path=/$e.* | awk '/Port/ /Path/ { print $0 "\n" }'
done
for z in $pkg; do
pkg_install=`cd /usr/ports && make search path=/$z.* | grep Path | cut -d/ -f4,5`
for e in $pkg_install; do
e_stripped=`echo $e | cut -d/ -f2`
e_installed=`grep $e$ /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`
if [ -z "$e_installed" ]; then
echo -n "Do you want to install new $e? [y] "
else
echo -n "Do you want to upgrade installed $e_installed? [y] "
fi
read key
case $key in
n) ;;
*)
if [ ! -z "$e_installed" ]; then
echo -n "Creating backup package in /usr/tmp/$e_installed.tbz... "
cd /usr/tmp/ && pkg_create -b $e_installed
echo "Done."
fi
# Install from port (source)
echo ""
if [ ! -z "$e_installed" ]; then
echo "Upgrading installed port:"
[ -z "`grep $e /root/ports.lst`" ] && echo $e >> /root/ports.lst
pkg_delete -f $e_installed 1>/dev/null 2>&1
if [ ! -z `pkg_info -oq $e_installed 2>/dev/null` ]; then
echo "*** cannot proceed without first removing the package ***"
exit 0
fi
else
echo "Installing new port:"
echo $e >> /root/ports.lst
fi
echo -n "Do you want to explicitly set config options now? [n] "
read key2
case $key2 in
y) echo -n "Recursive? [n] "
read key
case $key in
y) cd /usr/ports/$e && make config-recursive
cd /usr/ports/$e && make install clean
exit 0;;
*) cd /usr/ports/$e && make config
cd /usr/ports/$e && make install clean
exit 0;;
esac;;
*) cd /usr/ports/$e && make install clean
exit 0;;
esac
exit 0;;
esac
done
done
}
all() {
root
echo ""
echo -n "Do you want to upgrade all installed packages using binary packages? (interactive mode) [y] "
read key
case $key in
n) echo "Upgrading all ports:"
all=`pkg_info -aoq`
pkg_delete -ifa
for e in $all; do
cd /usr/ports/$e && make install clean
done
exit 0;;
*) echo "Upgrading all packages:"
all=`ls -l /var/db/pkg/ | awk '{print $9}' | sed 's/\(.*\)-.*/\1/g' | awk '{ORS=" " ;print}'`
pkg_delete -ifa && pkg_add -r $all
exit 0;;
esac
}
all_non-interactive() {
root
echo ""
echo -n "Do you want to upgrade all installed packages using binary packages? (non-interactive mode) [y] "
read key
case $key in
n) echo "Upgrading all ports:"
all=`pkg_info -aoq`
pkg_delete -fa
for e in $all; do
cd /usr/ports/$e && make install clean
done
exit 0;;
*) echo "Upgrading all packages:"
all=`ls -l /var/db/pkg/ | awk '{print $9}' | sed 's/\(.*\)-.*/\1/g' | awk '{ORS=" " ;print}'`
pkg_delete -fa && pkg_add -r $all
exit 0;;
esac
}
pkg_info-xI() {
for e in $pkg; do
info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`
if [ -z "$info" ]; then
path=`cd /usr/ports && make search path=/$e | grep -w Path | cut -d/ -f4,5`
echo -e "\033[33m*** not installed ***\033[0m"
for i in $path; do
echo "$i: `cat /usr/ports/$i/Makefile | grep COMMENT | cut -d= -f2`"
done
else
echo -e "\033[33m*** installed ***\033[0m"
pkg_info -I $info
fi
done
exit 0
}
pkg_info-xL() {
for e in $pkg; do
info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d: -f3`
if [ ! -z "$info" ]; then
for i in $info; do
echo -e "\033[33m*** installed ***\033[0m"
echo "$i: `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`"
echo ""
pkg_info -L `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`
done
else
echo "bpkg: no installed packages match $e"
fi
done
exit 0
}
pkg_inf() {
echo -e "\033[33m*** installed ***\033[0m"
pkg_info
echo "***`pkg_info | wc -l` packages installed ***"
exit 0
}
pkg_info-xs() {
for e in $pkg; do
info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d: -f3`
if [ ! -z "$info" ]; then
for i in $info; do
echo -e "\033[33m*** installed ***\033[0m"
echo "$i: `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`"
echo ""
pkg_info -s `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`
done
else
echo "bpkg: no installed packages match $e"
fi
done
exit 0
}
pkg_info-xr() {
for e in $pkg; do
info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d: -f3`
if [ -z "$info" ]; then
path=`cd /usr/ports && make search path=/$e.* | grep -w Path | cut -d/ -f4,5`
for i in $path; do
echo -e "\033[33m*** not installed ***\033[0m"
echo "$i: `cat /usr/ports/$i/Makefile | grep -w COMMENT | cut -d= -f2`"
echo ""
echo "Information in ports for `echo $i | cut -d/ -f2`:"
echo ""
cd /usr/ports && make search path=/$i$ | grep .*-deps
echo ""
done
else
for i in $info; do
echo -e "\033[33m*** installed ***\033[0m"
echo "$i: `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`"
echo ""
echo "Information in ports for $i:"
echo ""
cd /usr/ports && make search path=/$i$ | grep .*-deps
echo ""
pkg_info -rR `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`
done
fi
done
exit 0
}
pkg_info-xg() {
for e in $pkg; do
info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d: -f3`
if [ ! -z "$info" ]; then
for i in $info; do
echo -e "\033[33m*** installed ***\033[0m"
echo "$i: `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`"
echo ""
pkg_info -g `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`
done
else
echo "bpkg: no installed packages match $e"
fi
done
exit 0
}
pkg_info-xf() {
for e in $pkg; do
info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d: -f3`
if [ -z "$info" ]; then
path=`cd /usr/ports && make search path=/$e.* | grep -w Path | cut -d/ -f4,5`
for i in $path; do
echo -e "\033[33m*** not installed ***\033[0m"
echo "$i: `cat /usr/ports/$i/Makefile | grep -w COMMENT | cut -d= -f2`"
echo ""
echo "Packing list:"
cat /usr/ports/$i/pkg-plist
echo ""
done
else
for i in $info; do
echo -e "\033[33m*** installed ***\033[0m"
echo "$i: `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`"
echo ""
pkg_info -f `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`
done
fi
done
exit 0
}
pkg_info-xk() {
for e in $pkg; do
info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d: -f3`
if [ ! -z "$info" ]; then
for i in $info; do
echo -e "\033[33m*** installed ***\033[0m"
echo "$i: `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`"
echo ""
pkg_info -k `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`
done
else
echo "bpkg: no installed packages match $e"
fi
done
exit 0
}
pkg_info-xD() {
for e in $pkg; do
info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d: -f3`
if [ ! -z "$info" ]; then
for i in $info; do
echo -e "\033[33m*** installed ***\033[0m"
echo "$i: `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`"
echo ""
pkg_info -D `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`
done
else
echo "bpkg: no installed packages match $e"
fi
done
exit 0
}
pkg_info-x() {
for e in $pkg; do
info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d: -f3`
if [ -z "$info" ]; then
path=`cd /usr/ports && make search path=/$e.* | grep -w Path | cut -d/ -f4,5`
for i in $path; do
echo -e "\033[33m*** not installed ***\033[0m"
echo "$i: `cat /usr/ports/$i/Makefile | grep -w COMMENT | cut -d= -f2`"
echo ""
echo "Description:"
echo "`cat /usr/ports/$i/pkg-descr`"
echo ""
done
else
for i in $info; do
echo -e "\033[33m*** installed ***\033[0m"
echo "$i: `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`"
echo ""
pkg_info `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`
done
fi
done
exit 0
}
pkg_ver() {
echo -e "\033[33m*** installed ***\033[0m"
pkg_version -Iv
echo "***`pkg_info | wc -l` packages installed ***"
exit 0
}
pkg_path() {
path=`cd /usr/ports && make search path=/$pkg | grep -w Path | cut -d/ -f4,5`
for e in $path; do
echo "$e" ; cat /usr/ports/$e/Makefile | grep -w COMMENT | cut -d= -f2
done
exit 0
}
pkg_makefile() {
path=`cd /usr/ports && make search path=/$pkg$ | grep -w Path | cut -d/ -f4,5`
[ -z "$path" ] && missing
less /usr/ports/$path/Makefile 2>/dev/null
exit 0
}
make_search() {
for e in $pkg; do
info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d: -f3`
if [ -z "$info" ]; then
path=`cd /usr/ports && make search path=/$e | grep -w Path | cut -d/ -f4,5`
for i in $path; do
echo -e "\033[33m*** not installed ***\033[0m"
cd /usr/ports && make search path=/$i$
done
else
for i in $info; do
echo -e "\033[33m*** installed ***\033[0m"
echo "$i: `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`"
echo ""
cd /usr/ports && make search path=/$i$
done
fi
done
exit 0
}
make_search_S() {
for e in $pkg; do
cd /usr/ports && make search path=/$e
done
exit 0
}
make_search_info() {
for e in $pkg; do
cd /usr/ports && make search info=$e
done
exit 0
}
pkg_find() {
arch=`uname -m`
sys=`uname -r | cut -d- -f1,2 | tr '[:upper:]' '[:lower:]'`
for e in $pkg; do
echo "ls $e*" >> /tmp/bpkg.tmp
done
echo "ftp.freebsd.org/pub/FreeBSD/ports/$arch/packages-$sys/Latest/"
ftp -4Va ftp://ftp.freebsd.org/pub/FreeBSD/ports/$arch/packages-$sys/Latest/ < /tmp/bpkg.tmp
rm /tmp/bpkg.tmp
exit 0
}
pkg_latestftp() {
arch=`uname -m`
for e in $pkg; do
echo "ls $e*" >> /tmp/bpkg.tmp
done
echo "ftp.freebsd.org/pub/FreeBSD/ports/$arch/packages-stable/Latest/"
ftp -4Va ftp://ftp.freebsd.org/pub/FreeBSD/ports/$arch/packages-stable/Latest/ < /tmp/bpkg.tmp
rm /tmp/bpkg.tmp
exit 0
}
pkg_delete-xr() {
root
z=`pkg_info -xoQ $pkg 2>/dev/null`
if [ -z "$z" ]; then
echo "bpkg: no installed packages match pattern(s)"
exit 0
fi
echo -e "\033[33m*** installed ***\033[0m"
pkg_info -xoQ $pkg | awk -F: '{OFS=": " ; print $2, $1}'
for e in $pkg; do
sed -i '' s,.*$e,,g /root/ports.lst 1>/dev/null 2>&1
done
echo ""
echo -n "Do you want to use recursive removal? [n] "
read key
case $key in
y) echo -n "Do you want to use force removal? [n] "
read key2
case $key2 in
y) pkg_delete -xrfi $pkg
exit 0;;
*) pkg_delete -xri $pkg
exit 0;;
esac;;
*) echo -n "Do you want to use force removal? [n] "
read key2
case $key2 in
y) pkg_delete -xf $pkg
exit 0;;
*) pkg_delete -x $pkg
exit 0;;
esac;;
esac
}
pkg_clean() {
root
echo "Cleaning /usr/ports/distfiles/*"
rm -rf /usr/ports/distfiles/* 1>/dev/null 2>&1
echo "Done."
exit 0
}
pkg_clean2() {
root
echo "Cleaning /usr/ports/distfiles/* and /usr/ports/*/*/work/"
rm -rf /usr/ports/distfiles/* 1>/dev/null 2>&1 ; rm -rf /usr/ports/*/*/work/ 1>/dev/null 2>&1
echo "Done."
exit 0
}
pkg_which-() {
grep "$pkg"$ /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
awk -F: '{ print $1 ":\t" $2 }'
exit 0
}
pkg_backup() {
root
z=`pkg_info -xoQ $pkg 2>/dev/null`
if [ -z "$z" ]; then
echo "bpkg: no installed packages match pattern(s)"
exit 0
fi
pkg_install=`pkg_info -xoQ $pkg | cut -d: -f1 | awk '{ORS=" " ; print}'`
echo "Creating backup package(s) "$pkg_install"in /usr/tmp/"
for e in `pkg_info -xoq $pkg`; do
cd /usr/tmp/ && pkg_create -xb $e
done
echo "Done."
exit 0
}
pkg_time() {
echo "Packages (date of installation):"
echo ""
/bin/ls -lUTt /var/db/pkg/ | awk -F' ' '{ print $6,$7,$8,$9,$10 }' | cut -d/ -f1,5
echo "***`pkg_info | wc -l` packages installed ***"
exit 0
}
make_showc() {
for e in $pkg; do
info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d: -f3`
if [ -z "$info" ]; then
path=`cd /usr/ports && make search path=/$e.* | grep Path | cut -d/ -f4,5`
for i in $path; do
echo -e "\033[33m*** not installed ***\033[0m"
echo "$i: `cat /usr/ports/$i/Makefile | grep COMMENT | cut -d= -f2`"
echo ""
echo -n "Do you want to display config options recursively? [n] "
read key
case $key in
y) cd /usr/ports/$i && make showconfig-recursive;;
*) cd /usr/ports/$i && make showconfig;;
esac
echo ""
done
else
for i in $info; do
echo -e "\033[33m*** installed ***\033[0m"
echo "$i: `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`"
echo ""
echo -n "Do you want to display config options recursively? [n] "
read key
case $key in
y) cd /usr/ports/$i && make showconfig-recursive;;
*) cd /usr/ports/$i && make showconfig;;
esac
echo ""
done
fi
done
exit 0
}
make_rmc() {
root
for e in $pkg; do
info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d: -f3`
if [ -z "$info" ]; then
path=`cd /usr/ports && make search path=/$e.* | grep Path | cut -d/ -f4,5`
for i in $path; do
echo -e "\033[33m*** not installed ***\033[0m"
echo "$i: `cat /usr/ports/$i/Makefile | grep COMMENT | cut -d= -f2`"
echo ""
echo -n "Do you want to remove config options recursively? [n] "
read key
case $key in
y) cd /usr/ports/$i && make rmconfig-recursive;;
*) cd /usr/ports/$i && make rmconfig;;
esac
echo ""
done
else
for i in $info; do
echo -e "\033[33m*** installed ***\033[0m"
echo "$i: `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`"
echo ""
echo -n "Do you want to remove config options recursively? [n] "
read key
case $key in
y) cd /usr/ports/$i && make rmconfig-recursive;;
*) cd /usr/ports/$i && make rmconfig;;
esac
echo ""
done
fi
done
exit 0
}
make_config() {
root
for e in $pkg; do
info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d: -f3`
if [ -z "$info" ]; then
path=`cd /usr/ports && make search path=/$e.* | grep Path | cut -d/ -f4,5`
for i in $path; do
echo -e "\033[33m*** not installed ***\033[0m"
echo "$i: `cat /usr/ports/$i/Makefile | grep COMMENT | cut -d= -f2`"
echo ""
echo -n "Do you want to set config options recursively? [n] "
read key
case $key in
y) cd /usr/ports/$i && make config-recursive;;
*) cd /usr/ports/$i && make config;;
esac
echo ""
done
else
for i in $info; do
echo -e "\033[33m*** installed ***\033[0m"
echo "$i: `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`"
echo ""
echo -n "Do you want to set config options recursively? [n] "
read key
case $key in
y) cd /usr/ports/$i && make config-recursive;;
*) cd /usr/ports/$i && make config;;
esac
echo ""
done
fi
done
exit 0
}
make_depends() {
root
if [ -z "$pkg" ]; then
echo "bpkg: you didn't specify any package to install/upgrade"
exit 0
fi
echo "Available in ports:"
for i in $pkg; do
cd /usr/ports && make search path=/$e.* | awk '/Port/ /Path/ { print $0 "\n" }'
done
for z in $pkg; do
pkg_install=`cd /usr/ports && make search path=/$z.* | grep Path | cut -d/ -f4,5`
for e in $pkg_install; do
e_stripped=`echo $e | cut -d/ -f2`
e_installed=`grep $e$ /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`
if [ -z "$e_installed" ]; then
echo -n "Do you want to install new $e? [y] "
else
echo -n "Do you want to upgrade installed $e_installed? [y] "
fi
read key
case $key in
n) ;;
*)
if [ ! -z "$e_installed" ]; then
echo -n "Creating backup package in /usr/tmp/$e_installed.tbz... "
cd /usr/tmp/ && pkg_create -b $e_installed
echo "Done."
fi
echo ""
if [ ! -z "$e_installed" ]; then
echo "Upgrading installed port and all dependencies:"
pkg_delete -f $e_installed 1>/dev/null 2>&1
if [ ! -z `pkg_info -oq $e_installed 2>/dev/null` ]; then
echo "*** cannot proceed without first removing the package ***"
exit 0
fi
else
echo "Installing new port and all dependencies:"
fi
echo -n "Do you want to explicitly set config options now? [n] "
read key2
case $key2 in
y) echo -n "Recursive? [n] "
read key
case $key in
y) cd /usr/ports/$e && make config-recursive
cd /usr/ports/$e && make depends && make install clean
exit 0;;
*) cd /usr/ports/$e && make config
cd /usr/ports/$e && make depends && make install clean
exit 0;;
esac;;
*) cd /usr/ports/$e && make depends && make install clean
exit 0;;
esac
exit 0;;
esac
done
done
}
make_ldd() {
for e in $pkg; do
info=`grep $e /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d: -f3`
if [ -z "$info" ]; then
echo "bpkg: no installed packages match $e"
else
for i in $info; do
echo -e "\033[33m*** installed ***\033[0m"
echo "$i: `grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`"
echo ""
echo "List of dynamic object dependencies:"
echo ""
pkg=`grep $i /var/db/pkg/*/+CONTENTS | grep -w ORIGIN | cut -d/ -f5`
bin=`pkg_info -L $pkg | awk '/\/usr\/local\/bin/ /\/usr\/local\/sbin/ /usr\/local\/libexec/'`
for o in $bin; do
/usr/bin/ldd -a $o
done
echo ""
done
fi
done
exit 0
}
make_ldd_all() {
echo ""
echo "List of all missing dynamic object dependencies:"
echo ""
for e in `/bin/ls -l /bin/ 2>/dev/null | awk -F' ' '{print $9}'`; do
libs=`/usr/bin/ldd -a /bin/$e 2>/dev/null | grep found`
if [ ! -z "$libs" ]; then
grep "$e"$ /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
awk -F: '{ print $1 ":\t" $2 }'
echo "$libs"
for i in `echo $libs | cut -d' ' -f1 | cut -d. -f1,2`; do
grep "$i". /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
awk -F: '{ print $2 "\t [" $1 "]" }'
done
echo ""
fi
done
for e in `/bin/ls -l /sbin/ 2>/dev/null | awk -F' ' '{print $9}'`; do
libs=`/usr/bin/ldd -a /sbin/$e 2>/dev/null | grep found`
if [ ! -z "$libs" ]; then
grep "$e"$ /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
awk -F: '{ print $1 ":\t" $2 }'
echo "$libs"
for i in `echo $libs | cut -d' ' -f1 | cut -d. -f1,2`; do
grep "$i". /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
awk -F: '{ print $2 "\t [" $1 "]" }'
done
echo ""
fi
done
for e in `/bin/ls -l /usr/bin/ 2>/dev/null | awk -F' ' '{print $9}'`; do
libs=`/usr/bin/ldd -a /usr/bin/$e 2>/dev/null | grep found`
if [ ! -z "$libs" ]; then
grep "$e"$ /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
awk -F: '{ print $1 ":\t" $2 }'
echo "$libs"
for i in `echo $libs | cut -d' ' -f1 | cut -d. -f1,2`; do
grep "$i". /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
awk -F: '{ print $2 "\t [" $1 "]" }'
done
echo ""
fi
done
for e in `/bin/ls -l /usr/games/ 2>/dev/null | awk -F' ' '{print $9}'`; do
libs=`/usr/bin/ldd -a /usr/games/$e 2>/dev/null | grep found`
if [ ! -z "$libs" ]; then
grep "$e"$ /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
awk -F: '{ print $1 ":\t" $2 }'
echo "$libs"
for i in `echo $libs | cut -d' ' -f1 | cut -d. -f1,2`; do
grep "$i". /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
awk -F: '{ print $2 "\t [" $1 "]" }'
done
echo ""
fi
done
for e in `/bin/ls -l /usr/libexec/ 2>/dev/null | awk -F' ' '{print $9}'`; do
libs=`/usr/bin/ldd -a /usr/libexec/$e 2>/dev/null | grep found`
if [ ! -z "$libs" ]; then
grep "$e"$ /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
awk -F: '{ print $1 ":\t" $2 }'
echo "$libs"
for i in `echo $libs | cut -d' ' -f1 | cut -d. -f1,2`; do
grep "$i". /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
awk -F: '{ print $2 "\t [" $1 "]" }'
done
echo ""
fi
done
for e in `/bin/ls -l /usr/sbin/ 2>/dev/null | awk -F' ' '{print $9}'`; do
libs=`/usr/bin/ldd -a /usr/sbin/$e 2>/dev/null | grep found`
if [ ! -z "$libs" ]; then
grep "$e"$ /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
awk -F: '{ print $1 ":\t" $2 }'
echo "$libs"
for i in `echo $libs | cut -d' ' -f1 | cut -d. -f1,2`; do
grep "$i". /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
awk -F: '{ print $2 "\t [" $1 "]" }'
done
echo ""
fi
done
for e in `/bin/ls -l /usr/local/bin/ 2>/dev/null | awk -F' ' '{print $9}'`; do
libs=`/usr/bin/ldd -a /usr/local/bin/$e 2>/dev/null | grep found`
if [ ! -z "$libs" ]; then
grep "$e"$ /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
awk -F: '{ print $1 ":\t" $2 }'
echo "$libs"
for i in `echo $libs | cut -d' ' -f1 | cut -d. -f1,2`; do
grep "$i". /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
awk -F: '{ print $2 "\t [" $1 "]" }'
done
echo ""
fi
done
for e in `/bin/ls -l /usr/local/libexec/ 2>/dev/null | awk -F' ' '{print $9}'`; do
libs=`/usr/bin/ldd -a /usr/local/libexec/$e 2>/dev/null | grep found`
if [ ! -z "$libs" ]; then
grep "$e"$ /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
awk -F: '{ print $1 ":\t" $2 }'
echo "$libs"
for i in `echo $libs | cut -d' ' -f1 | cut -d. -f1,2`; do
grep "$i". /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
awk -F: '{ print $2 "\t [" $1 "]" }'
done
echo ""
fi
done
for e in `/bin/ls -l /usr/local/sbin/ 2>/dev/null | awk -F' ' '{print $9}'`; do
libs=`/usr/bin/ldd -a /usr/local/sbin/$e 2>/dev/null | grep found`
if [ ! -z "$libs" ]; then
grep "$e"$ /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
awk -F: '{ print $1 ":\t" $2 }'
echo "$libs"
for i in `echo $libs | cut -d' ' -f1 | cut -d. -f1,2`; do
grep "$i". /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
awk -F: '{ print $2 "\t [" $1 "]" }'
done
echo ""
fi
done
for e in `/bin/ls -l /usr/X11R6/bin/ 2>/dev/null | awk -F' ' '{print $9}'`; do
libs=`/usr/bin/ldd -a /usr/X11R6/bin/$e 2>/dev/null | grep found`
if [ ! -z "$libs" ]; then
grep "$e"$ /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
awk -F: '{ print $1 ":\t" $2 }'
echo "$libs"
for i in `echo $libs | cut -d' ' -f1 | cut -d. -f1,2`; do
grep "$i". /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
awk -F: '{ print $2 "\t [" $1 "]" }'
done
echo ""
fi
done
for e in `/bin/ls -l /usr/X11R6/libexec/ 2>/dev/null | awk -F' ' '{print $9}'`; do
libs=`/usr/bin/ldd -a /usr/X11R6/libexec/$e 2>/dev/null | grep found`
if [ ! -z "$libs" ]; then
grep "$e"$ /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
awk -F: '{ print $1 ":\t" $2 }'
echo "$libs"
for i in `echo $libs | cut -d' ' -f1 | cut -d. -f1,2`; do
grep "$i". /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
awk -F: '{ print $2 "\t [" $1 "]" }'
done
echo ""
fi
done
for e in `/bin/ls -l /usr/X11R6/sbin/ 2>/dev/null | awk -F' ' '{print $9}'`; do
libs=`/usr/bin/ldd -a /usr/X11R6/sbin/$e 2>/dev/null | grep found`
if [ ! -z "$libs" ]; then
grep "$e"$ /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
awk -F: '{ print $1 ":\t" $2 }'
echo "$libs"
for i in `echo $libs | cut -d' ' -f1 | cut -d. -f1,2`; do
grep "$i". /var/db/pkg/*/+CONTENTS | awk -F 'pkg/' '{ print $2 }' | \
sed '/@dirrm/ d ; /@unexec/ d ; /@comment/ d ; s/\/+CONTENTS//g ; s/:@comment .*ORIGIN//g' | \
awk -F: '{ print $2 "\t [" $1 "]" }'
done
echo ""
fi
done
exit 0
}
help() {
echo "bpkg version `pkg_info -xI bpkg | cut -d- -f2 | cut -d' ' -f1`"
echo ""
echo "Usage: bpkg [-bBdDeEfFgiIjkLmMnoOpqQrsSwz] pkg-name ..."
echo " bpkg [-aAcChltvZ]"
echo ""
echo "Please see the bpkg(8) man page for more information"
echo ""
exit 0
}
# End of functions
################################################################################
while getopts b:B:d:D:e:E:f:F:g:i:I:j:k:L:m:M:n:o:O:p:q:Q:r:s:S:w:z:aAcChltvZ opts; do
case $opts in
b) pkg=$OPTARG
build_port;;
B) pkg=$OPTARG
pkg_backup;;
d) pkg=$OPTARG
pkg_delete-xr;;
D) pkg=$OPTARG
pkg_info-x;;
e) pkg=$OPTARG
make_config;;
E) pkg=$OPTARG
make_depends;;
f) pkg=$OPTARG
pkg_info-xf;;
F) pkg=$OPTARG
pkg_find;;
g) pkg=$OPTARG
pkg_info-xg;;
i) pkg=$OPTARG
make_search;;
I) pkg=$OPTARG
pkg_info-xI;;
j) pkg=$OPTARG
make_search_info;;
k) pkg=$OPTARG
pkg_info-xk;;
L) pkg=$OPTARG
pkg_info-xL;;
m) pkg=$OPTARG
pkg_makefile;;
M) pkg=$OPTARG
pkg_info-xD;;
n) pkg=$OPTARG
simulation;;
o) pkg=$OPTARG
make_showc;;
O) pkg=$OPTARG
make_rmc;;
p) pkg=$OPTARG
pkg_path;;
q) pkg=$OPTARG
pkg_latest;;
Q) pkg=$OPTARG
pkg_latestftp;;
r) pkg=$OPTARG
pkg_info-xr;;
s) pkg=$OPTARG
pkg_info-xs;;
S) pkg=$OPTARG
make_search_S;;
w) pkg=$OPTARG
pkg_which-;;
z) pkg=$OPTARG
make_ldd;;
a) all;;
A) all_non-interactive;;
c) pkg_clean;;
C) pkg_clean2;;
h) help;;
l) pkg_inf;;
t) pkg_time;;
v) pkg_ver;;
Z) make_ldd_all;;
*) help;;
esac
done
main
syntax highlighted by Code2HTML, v. 0.9.1