Add support for packages.

PR:		148584
Submitted by:	John Hixon
This commit is contained in:
Warner Losh 2010-07-13 23:47:12 +00:00
parent 86836fcf1f
commit 9ae036550c
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=210036
10 changed files with 325 additions and 24 deletions

View File

@ -1,11 +1,11 @@
# $FreeBSD$
FILES= detect-laptop.sh detect-nics.sh detect-emulation.sh disk-info.sh \
disk-list.sh disk-part.sh enable-net.sh list-config.sh list-components.sh \
list-mirrors.sh list-rsync-backups.sh list-tzones.sh query-langs.sh \
send-logs.sh setup-ssh-keys.sh sys-mem.sh test-live.sh test-netup.sh \
update-part-list.sh xkeyboard-layouts.sh xkeyboard-models.sh \
xkeyboard-variants.sh
disk-list.sh disk-part.sh enable-net.sh get-packages.sh list-config.sh \
list-components.sh list-mirrors.sh list-packages.sh list-rsync-backups.sh \
list-tzones.sh query-langs.sh send-logs.sh setup-ssh-keys.sh sys-mem.sh \
test-live.sh test-netup.sh update-part-list.sh xkeyboard-layouts.sh \
xkeyboard-models.sh xkeyboard-variants.sh
FILESMODE= ${BINMODE}
FILESDIR=${SHAREDIR}/pc-sysinstall/backend-query
NO_OBJ=

View File

@ -0,0 +1,60 @@
#!/bin/sh
#-
# Copyright (c) 2010 iXsystems, Inc. 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.
#
# $FreeBSD$
# Script which lists the available packages for this release
###########################################################################
. ${PROGDIR}/backend/functions.sh
. ${PROGDIR}/backend/functions-packages.sh
DEFAULT_FTP_SERVER="ftp.freebsd.org"
FTP_SERVER="${1}"
ID=`id -u`
if [ "${ID}" -ne "0" ]
then
echo "Error: must be root!"
exit 1
fi
if [ -z "${FTP_SERVER}" ]
then
FTP_SERVER="${DEFAULT_FTP_SERVER}"
fi
if [ ! -f "${PKGDIR}/INDEX" ]
then
get_package_index "${FTP_SERVER}"
fi
if [ -f "${PKGDIR}/INDEX" ]
then
echo "${PKGDIR}/INDEX"
exit 0
fi
exit 1

View File

@ -1,6 +1,6 @@
#!/bin/sh
#-
# Copyright (c) 2010 iX Systems, Inc. All rights reserved.
# Copyright (c) 2010 iXsystems, Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions

View File

@ -1,6 +1,6 @@
#!/bin/sh
#-
# Copyright (c) 2010 iX Systems, Inc. All rights reserved.
# Copyright (c) 2010 iXsystems, Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions

View File

@ -0,0 +1,74 @@
#!/bin/sh
#-
# Copyright (c) 2010 iXsystems, Inc. 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.
#
# $FreeBSD$
# Script which lists the available packages for this release
###########################################################################
. ${PROGDIR}/backend/functions.sh
. ${PROGDIR}/backend/functions-packages.sh
PACKAGE_CATEGORY="${1}"
PACKAGE_NAME="${2}"
NARGS=0
if [ ! -f "${PKGDIR}/INDEX" ]
then
echo "Error: please fetch package index with get-packages!"
exit 1
fi
if [ ! -f "${PKGDIR}/INDEX.parsed" ]
then
parse_package_index
fi
if [ -n "${PACKAGE_CATEGORY}" ]
then
NARGS=$((NARGS+1))
fi
if [ -n "${PACKAGE_NAME}" ]
then
NARGS=$((NARGS+1))
fi
echo "Available Packages:"
if [ "${NARGS}" -eq "0" ]
then
show_packages
elif [ "${NARGS}" -eq "1" ]
then
show_packages_by_category "${PACKAGE_CATEGORY}"
elif [ "${NARGS}" -eq "2" ]
then
show_package_by_name "${PACKAGE_CATEGORY}" "${PACKAGE_NAME}"
else
show_packages
fi

View File

@ -4,8 +4,9 @@ FILES= functions-bsdlabel.sh functions-cleanup.sh functions-disk.sh \
functions-extractimage.sh functions-ftp.sh functions-installcomponents.sh \
functions-localize.sh functions-mountdisk.sh \
functions-mountoptical.sh functions-networking.sh \
functions-newfs.sh functions-parse.sh functions-runcommands.sh \
functions-unmount.sh functions-upgrade.sh functions-users.sh \
functions-newfs.sh functions-packages.sh functions-parse.sh \
functions-runcommands.sh functions-unmount.sh \
functions-upgrade.sh functions-users.sh \
functions.sh parseconfig.sh startautoinstall.sh
FILESMODE= ${BINMODE}
FILESDIR=${SHAREDIR}/pc-sysinstall/backend

View File

@ -1,6 +1,6 @@
#!/bin/sh
#-
# Copyright (c) 2010 iX Systems, Inc. All rights reserved.
# Copyright (c) 2010 iXsystems, Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions

View File

@ -0,0 +1,148 @@
#!/bin/sh
#-
# Copyright (c) 2010 iXsystems, Inc. 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.
#
# $FreeBSD$
# Functions which runs commands on the system
. ${BACKEND}/functions.sh
. ${BACKEND}/functions-parse.sh
. ${BACKEND}/functions-ftp.sh
get_package_index()
{
FTP_SERVER="${1}"
FTP_DIR="ftp://${FTP_SERVER}/pub/FreeBSD/releases/${FBSD_ARCH}/${FBSD_BRANCH}/packages"
INDEX_FILE="INDEX"
USE_BZIP2=0
if [ -f "/usr/bin/bzip2" ]
then
INDEX_FILE="${INDEX_FILE}.bz2"
USE_BZIP2=1
fi
ftp "${FTP_DIR}/${INDEX_FILE}"
if [ -f "${INDEX_FILE}" ]
then
if [ "${USE_BZIP2}" -eq "1" ]
then
bzip2 -d "${INDEX_FILE}"
INDEX_FILE="${INDEX_FILE%.bz2}"
fi
mv "${INDEX_FILE}" "${PKGDIR}"
fi
}
parse_package_index()
{
INDEX_FILE="${PKGDIR}/INDEX"
exec 3<&0
exec 0<"${INDEX_FILE}"
while read -r line
do
CATEGORY=""
PACKAGE=""
DESC=""
i=0
SAVE_IFS="${IFS}"
IFS="|"
for part in ${line}
do
if [ "${i}" -eq "1" ]
then
PACKAGE=`basename "${part}"`
elif [ "${i}" -eq "3" ]
then
DESC="${part}"
elif [ "${i}" -eq "6" ]
then
CATEGORY=`echo "${part}" | cut -f1 -d' '`
fi
i=$((i+1))
done
echo "${CATEGORY}|${PACKAGE}|${DESC}" >> "${INDEX_FILE}.parsed"
IFS="${SAVE_IFS}"
done
exec 0<&3
}
show_package_file()
{
PKGFILE="${1}"
exec 3<&0
exec 0<"${PKGFILE}"
while read -r line
do
CATEGORY=`echo "${line}" | cut -f1 -d'|'`
PACKAGE=`echo "${line}" | cut -f2 -d'|'`
DESC=`echo "${line}" | cut -f3 -d'|'`
echo "${CATEGORY}/${PACKAGE}:${DESC}"
done
exec 0<&3
}
show_packages_by_category()
{
CATEGORY="${1}"
INDEX_FILE="${PKGDIR}/INDEX.parsed"
TMPFILE="/tmp/.pkg.cat"
grep "^${CATEGORY}|" "${INDEX_FILE}" > "${TMPFILE}"
show_package_file "${TMPFILE}"
rm "${TMPFILE}"
}
show_package_by_name()
{
CATEGORY="${1}"
PACKAGE="${2}"
INDEX_FILE="${PKGDIR}/INDEX.parsed"
TMPFILE="/tmp/.pkg.cat.pak"
grep "^${CATEGORY}|${PACKAGE}" "${INDEX_FILE}" > "${TMPFILE}"
show_package_file "${TMPFILE}"
rm "${TMPFILE}"
}
show_packages()
{
show_package_file "${PKGDIR}/INDEX.parsed"
}

View File

@ -11,49 +11,55 @@ Help Commands
System Query Commands
disk-list
Provides a listing of the disk drives detected on this system
Provides a listing of the disk drives detected on this system
disk-part <disk>
Queries the specified disk and returns information about its partitions
Queries the specified disk and returns information about its partitions
disk-info <disk>
Returns information about the disks size, cyls, heads, and sectors
Returns information about the disks size, cyls, heads, and sectors
detect-laptop
Tests to see if this system is a laptop or desktop
Tests to see if this system is a laptop or desktop
detect-emulation
Tests to see if this system is actually running in an emulator such as VirtualBox
Tests to see if this system is actually running in an emulator such as VirtualBox
detect-nics
Returns a listing of the detected network cards on this system
Returns a listing of the detected network cards on this system
list-config
Returns a listing of the pc-sysinstall configuration
list-components
Returns a listing of the available components which can be installed
Returns a listing of the available components which can be installed
list-mirrors
Returns a listing of the available FTP mirrors
Returns a listing of the available FTP mirrors
list-packages
Returns a listing of the available packages
list-rsync-backups <user> <host> <port>
Returns a listing of available rsync-backups on the target server in the life-preserver/ dir
Returns a listing of available rsync-backups on the target server in the life-preserver/ dir
list-tzones
Returns a listing of available timezones
Returns a listing of available timezones
query-langs
Return a list of languages that the installer supports
get-packages
Retrieves the list of packages from an FTP mirror
sys-mem
Return the size of installed system RAM in MegaBytes
Return the size of installed system RAM in MegaBytes
test-netup
Test if an internet connection is available
Test if an internet connection is available
update-part-list
Return a list of PC-BSD & FreeBSD installs on this system for updates
Return a list of PC-BSD & FreeBSD installs on this system for updates
xkeyboard-layouts
Return a list of keyboard layouts that xorg supports

View File

@ -43,6 +43,10 @@ export PROGDIR
COMPDIR="${PROGDIR}/components"
export COMPDIR
# Set this to the packages location
PKGDIR="${PROGDIR}/conf"
export PKGDIR
# End of user-editable configuration
#####################################################################
@ -156,6 +160,10 @@ case $1 in
list-mirrors) ${QUERYDIR}/list-mirrors.sh "${2}"
;;
# Function which lists available packages
list-packages) ${QUERYDIR}/list-packages.sh "${2}" "${3}"
;;
# Function which lists available backups on a rsync/ssh server
list-rsync-backups) ${QUERYDIR}/list-rsync-backups.sh "${2}" "${3}" "${4}"
;;
@ -172,6 +180,10 @@ case $1 in
send-logs) ${QUERYDIR}/send-logs.sh ${2}
;;
# Function to get package index
get-packages) ${QUERYDIR}/get-packages.sh "${2}"
;;
# Function which allows setting up of SSH keys
setup-ssh-keys) ${QUERYDIR}/setup-ssh-keys.sh "${2}" "${3}" "${4}"
;;
@ -209,4 +221,4 @@ case $1 in
esac
# Exit with success if we made it to the end
exit 0
exit $?