[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