[linux] Met bash parameter functie aanroepen
Frans van Berckel
fberckel op xs4all.nl
Di Dec 19 13:37:38 CET 2017
On Tue, 2017-12-19 at 12:06 +0100, Frans van Berckel wrote:
> On Tue, 2017-12-19 at 11:30 +0100, Frans van Berckel wrote:
> >
> > Hoe vang ik in bash het beste een dpkg -i package.deb error af?
> >
> > Zie script versie, van later vandaag.
>
> #!/bin/bash
> #
> # @brief Building oldstable Debian kernel packages,
> # which is no longer available in unstable
> < # @version ver.1.0.4
# @version ver.1.0.5
> # @date di 19 dec 2017 11:59:13 CET
> # @company Open Software Store, www.osstore.nl
> # @author Frans van Berckel, info op osstore.nl
> #
>
> major='3.16'
> minor='3.16.51-3'
> arch=$(uname -i)
> workdir='/usr/src'
> url='https://deb.debian.org/debian/pool/main/l/linux'
> package='linux-source-${major}_${minor}_all.deb'
> tarball='linux-source-${major}.tar.bz2'
> linuxdir='${workdir}/linux-source-${major}'
> config='${linuxdir}/linux-config-
> ${major}/config.${arch}_none_${arch}.xz'
>
> install_package () {
> for package in wget kernel-package wget tar
> do
> echo "Installing package '${package}'. Please wait..."
> if ! apt-get --yes --no-install-recommends install ${package}
> then
> echo "Error: Failed to install ${package}!" >&2
> exit 1;
> fi
> done
> }
make_kernel_packages () {
make-kpkg clean
make-kpkg --rootcmd fakeroot --jobs $(`nproc`) --initrd kernel_image
kernel_headers
}
> if [ "$(id -u)" -ne 0 ]; then
> echo 'This script must be run as root' >&2
> exit 1;
> fi
>
> for apps in dpkg apt-get
> do
> if ! [ -x "$(command -v ${apps})" ]; then
> echo -e "Error: Are you\nrunning a Debian based distribution?">&2
> exit 1;
> fi
> done
>
> # Check for all necessary build dependencies
> for apps in make-kpkg wget tar
> do
> if ! [ -x "$(command -v ${apps})" ]; then
> apt-get update
> install_package
> fi
> done
>
> # Download the oldstable kernel package and install
> if [ ! -d "${workdir}" ]; then
> if ! mkdir ${workdir} 2>/dev/null; then
> print_error
> exit 1;
> fi
> fi
> cd ${workdir}
> if [ ! -f "${package}" ]; then
> wget -c ${url}/${package}
> if [[ $? -ne 0 ]]; then
> echo "Error: Downloading ${package} failed!"
> exit 1;
> fi
> dpkg -i ${package}
> fi
> if [ ! -d "${linuxdir}" ]; then
> if [ -f "${tarball}" ]; then
> tar xjvf ${tarball}
> if [[ $? -ne 0 ]]; then
> echo "Error: Extracting ${tarball} failed!"
> exit 1;
> fi
> fi
> fi
> # Generate config with default from the ARCH supplied defconfig file
> cd ${linuxdir}
> if [ ! -f "./.config" ]; then
> if [ -f "${config}" ]; then
> xzcat ${config} >> ./.config
> if [[ $? -ne 0 ]]; then
> echo "Error: Extracting ${config} failed!"
> exit 1;
> fi
> else
> < echo "Error: What's goning on, with the kernel config?"
> < exit 1;
ARCH=${arch}
make-kpkg --config defconfig
make_kernel_packages
> fi
> < make ARCH=${arch} defconfig
make-kpkg --config oldconfig
make_kernel_packages
> fi
Onderstaande in make_kernel_packages functie gezet ...
> < make-kpkg clean
> < make-kpkg --rootcmd fakeroot --jobs $(`nproc`) --initrd
> kernel_image kernel_headers
> cd ${workdir}
> ls -l *.deb
>
> #Installing the new kernel
> #Check first file names before running dpkg
> #dpkg -i linux-image-${major}_${minor}_${arch}.deb
> #dpkg -i linux-headers-${major}_${minor}_${arch}.deb
Met vriendelijke groet,
Frans van Berckel
Meer informatie over de Linux
maillijst