From 717188201a9256c7c178476526fabd4a64fc1108 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Tue, 1 Jul 2025 15:51:56 +0200 Subject: [PATCH] contrib: remove mkimage-xxx scripts These scripts have not been actively maintained for several Years, are un-tested, and there may be better alternatives / implementations to use for this purpose. A search on GitHub only showed a single active use of one of these scripts; let's remove them, as there are no plans to maintain (and test) these scripts. Signed-off-by: Sebastiaan van Stijn --- contrib/mkimage-alpine.sh | 90 ---------------- contrib/mkimage-arch-pacman.conf | 92 ----------------- contrib/mkimage-arch.sh | 154 ---------------------------- contrib/mkimage-archarm-pacman.conf | 98 ------------------ contrib/mkimage-crux.sh | 75 -------------- contrib/mkimage-pld.sh | 73 ------------- contrib/mkimage-yum.sh | 146 -------------------------- 7 files changed, 728 deletions(-) delete mode 100755 contrib/mkimage-alpine.sh delete mode 100644 contrib/mkimage-arch-pacman.conf delete mode 100755 contrib/mkimage-arch.sh delete mode 100644 contrib/mkimage-archarm-pacman.conf delete mode 100755 contrib/mkimage-crux.sh delete mode 100755 contrib/mkimage-pld.sh delete mode 100755 contrib/mkimage-yum.sh diff --git a/contrib/mkimage-alpine.sh b/contrib/mkimage-alpine.sh deleted file mode 100755 index 60bfc80dd9..0000000000 --- a/contrib/mkimage-alpine.sh +++ /dev/null @@ -1,90 +0,0 @@ -#!/bin/sh - -set -e - -[ $(id -u) -eq 0 ] || { - printf >&2 '%s requires root\n' "$0" - exit 1 -} - -usage() { - printf >&2 '%s: [-r release] [-m mirror] [-s] [-c additional repository] [-a arch]\n' "$0" - exit 1 -} - -tmp() { - TMP=$(mktemp -d ${TMPDIR:-/var/tmp}/alpine-docker-XXXXXXXXXX) - ROOTFS=$(mktemp -d ${TMPDIR:-/var/tmp}/alpine-docker-rootfs-XXXXXXXXXX) - trap "rm -rf $TMP $ROOTFS" EXIT TERM INT -} - -apkv() { - curl -sSL $MAINREPO/$ARCH/APKINDEX.tar.gz | tar -Oxz \ - | grep --text '^P:apk-tools-static$' -A1 | tail -n1 | cut -d: -f2 -} - -getapk() { - curl -sSL $MAINREPO/$ARCH/apk-tools-static-$(apkv).apk \ - | tar -xz -C $TMP sbin/apk.static -} - -mkbase() { - $TMP/sbin/apk.static --repository $MAINREPO --no-cache --allow-untrusted \ - --root $ROOTFS --initdb add alpine-base -} - -conf() { - printf '%s\n' $MAINREPO > $ROOTFS/etc/apk/repositories - printf '%s\n' $ADDITIONALREPO >> $ROOTFS/etc/apk/repositories -} - -pack() { - local id - id=$(tar --numeric-owner -C $ROOTFS -c . | docker import - alpine:$REL) - - docker tag $id alpine:latest - docker run --rm alpine printf 'alpine:%s with id=%s created!\n' $REL $id -} - -save() { - [ $SAVE -eq 1 ] || return 0 - - tar --numeric-owner -C $ROOTFS -c . | xz > rootfs.tar.xz -} - -while getopts "hr:m:sc:a:" opt; do - case $opt in - r) - REL=$OPTARG - ;; - m) - MIRROR=$OPTARG - ;; - s) - SAVE=1 - ;; - c) - ADDITIONALREPO=$OPTARG - ;; - a) - ARCH=$OPTARG - ;; - *) - usage - ;; - esac -done - -REL=${REL:-edge} -MIRROR=${MIRROR:-http://nl.alpinelinux.org/alpine} -SAVE=${SAVE:-0} -MAINREPO=$MIRROR/$REL/main -ADDITIONALREPO=$MIRROR/$REL/${ADDITIONALREPO:-community} -ARCH=${ARCH:-$(uname -m)} - -tmp -getapk -mkbase -conf -pack -save diff --git a/contrib/mkimage-arch-pacman.conf b/contrib/mkimage-arch-pacman.conf deleted file mode 100644 index 45fe03dc96..0000000000 --- a/contrib/mkimage-arch-pacman.conf +++ /dev/null @@ -1,92 +0,0 @@ -# -# /etc/pacman.conf -# -# See the pacman.conf(5) manpage for option and repository directives - -# -# GENERAL OPTIONS -# -[options] -# The following paths are commented out with their default values listed. -# If you wish to use different paths, uncomment and update the paths. -#RootDir = / -#DBPath = /var/lib/pacman/ -#CacheDir = /var/cache/pacman/pkg/ -#LogFile = /var/log/pacman.log -#GPGDir = /etc/pacman.d/gnupg/ -HoldPkg = pacman glibc -#XferCommand = /usr/bin/curl -C - -f %u > %o -#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u -#CleanMethod = KeepInstalled -#UseDelta = 0.7 -Architecture = auto - -# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup -#IgnorePkg = -#IgnoreGroup = - -#NoUpgrade = -#NoExtract = - -# Misc options -#UseSyslog -#Color -#TotalDownload -# We cannot check disk space from within a chroot environment -#CheckSpace -#VerbosePkgLists - -# By default, pacman accepts packages signed by keys that its local keyring -# trusts (see pacman-key and its man page), as well as unsigned packages. -SigLevel = Required DatabaseOptional -LocalFileSigLevel = Optional -#RemoteFileSigLevel = Required - -# NOTE: You must run `pacman-key --init` before first using pacman; the local -# keyring can then be populated with the keys of all official Arch Linux -# packagers with `pacman-key --populate archlinux`. - -# -# REPOSITORIES -# - can be defined here or included from another file -# - pacman will search repositories in the order defined here -# - local/custom mirrors can be added here or in separate files -# - repositories listed first will take precedence when packages -# have identical names, regardless of version number -# - URLs will have $repo replaced by the name of the current repo -# - URLs will have $arch replaced by the name of the architecture -# -# Repository entries are of the format: -# [repo-name] -# Server = ServerName -# Include = IncludePath -# -# The header [repo-name] is crucial - it must be present and -# uncommented to enable the repo. -# - -# The testing repositories are disabled by default. To enable, uncomment the -# repo name header and Include lines. You can add preferred servers immediately -# after the header, and they will be used before the default mirrors. - -#[testing] -#Include = /etc/pacman.d/mirrorlist - -[core] -Include = /etc/pacman.d/mirrorlist - -[extra] -Include = /etc/pacman.d/mirrorlist - -#[community-testing] -#Include = /etc/pacman.d/mirrorlist - -[community] -Include = /etc/pacman.d/mirrorlist - -# An example of a custom package repository. See the pacman manpage for -# tips on creating your own repositories. -#[custom] -#SigLevel = Optional TrustAll -#Server = file:///home/custompkgs - diff --git a/contrib/mkimage-arch.sh b/contrib/mkimage-arch.sh deleted file mode 100755 index a618f2ccab..0000000000 --- a/contrib/mkimage-arch.sh +++ /dev/null @@ -1,154 +0,0 @@ -#!/usr/bin/env bash -# Generate a minimal filesystem for archlinux and load it into the local -# docker as "archlinux" -# requires root -set -e - -# reset umask to default -umask 022 - -hash pacstrap &> /dev/null || { - echo "Could not find pacstrap. Run pacman -S arch-install-scripts" - exit 1 -} - -hash expect &> /dev/null || { - echo "Could not find expect. Run pacman -S expect" - exit 1 -} - -export LANG="C.UTF-8" - -ROOTFS=$(mktemp -d ${TMPDIR:-/var/tmp}/rootfs-archlinux-XXXXXXXXXX) -chmod 755 $ROOTFS - -# required packages -PKGREQUIRED=( - bash - haveged - pacman - pacman-mirrorlist -) - -# packages to ignore for space savings -PKGIGNORE=( - dhcpcd - diffutils - file - inetutils - iproute2 - iputils - jfsutils - licenses - linux - linux-firmware - lvm2 - man-db - man-pages - mdadm - nano - netctl - openresolv - pciutils - pcmciautils - psmisc - reiserfsprogs - s-nail - sysfsutils - systemd-sysvcompat - usbutils - vi - which - xfsprogs -) - -PKGREMOVE=( - gawk - haveged - less - linux-libre - linux-libre-firmware -) - -PKGREQUIRED="${PKGREQUIRED[*]}" -IFS=',' -PKGIGNORE="${PKGIGNORE[*]}" -unset IFS -PKGREMOVE="${PKGREMOVE[*]}" - -arch="$(uname -m)" -case "$arch" in - armv*) - if pacman -Q archlinuxarm-keyring > /dev/null 2>&1; then - pacman-key --init - pacman-key --populate archlinuxarm - else - echo "Could not find archlinuxarm-keyring. Please, install it and run pacman-key --populate archlinuxarm" - exit 1 - fi - PACMAN_CONF=$(mktemp ${TMPDIR:-/var/tmp}/pacman-conf-archlinux-XXXXXXXXX) - version="$(echo $arch | cut -c 5)" - sed "s/Architecture = armv/Architecture = armv${version}h/g" './mkimage-archarm-pacman.conf' > "${PACMAN_CONF}" - PACMAN_MIRRORLIST='Server = http://mirror.archlinuxarm.org/$arch/$repo' - PACMAN_EXTRA_PKGS='archlinuxarm-keyring' - EXPECT_TIMEOUT=1800 # Most armv* based devices can be very slow (e.g. RPiv1) - ARCH_KEYRING=archlinuxarm - DOCKER_IMAGE_NAME="armv${version}h/archlinux" - ;; - *) - PACMAN_CONF='./mkimage-arch-pacman.conf' - PACMAN_MIRRORLIST='Server = https://mirrors.kernel.org/archlinux/$repo/os/$arch' - PACMAN_EXTRA_PKGS='' - EXPECT_TIMEOUT=60 - ARCH_KEYRING=archlinux - DOCKER_IMAGE_NAME=archlinux - ;; -esac - -export PACMAN_MIRRORLIST - -expect << EOF - set send_slow {1 .1} - proc send {ignore arg} { - sleep .1 - exp_send -s -- \$arg - } - set timeout $EXPECT_TIMEOUT - - spawn pacstrap -C $PACMAN_CONF -c -d -G -i $ROOTFS base $PKGREQUIRED $PACMAN_EXTRA_PKGS --ignore $PKGIGNORE - expect { - -exact "anyway? \[Y/n\] " { send -- "n\r"; exp_continue } - -exact "(default=all): " { send -- "\r"; exp_continue } - -exact "installation? \[Y/n\]" { send -- "y\r"; exp_continue } - -exact "delete it? \[Y/n\]" { send -- "y\r"; exp_continue } - } -EOF - -arch-chroot $ROOTFS /bin/sh -c 'rm -r /usr/share/man/*' -arch-chroot $ROOTFS /bin/sh -c "haveged -w 1024; pacman-key --init; pkill haveged; pacman-key --populate $ARCH_KEYRING" -arch-chroot $ROOTFS /bin/sh -c "ln -sf /usr/share/zoneinfo/UTC /etc/localtime" -arch-chroot $ROOTFS /bin/sh -c "for pkg in $PKGREMOVE; do if pacman -Qi \$pkg > /dev/null 2>&1; then pacman -Rs --noconfirm \$pkg; fi; done" -echo 'en_US.UTF-8 UTF-8' > $ROOTFS/etc/locale.gen -arch-chroot $ROOTFS locale-gen - -# udev doesn't work in containers, rebuild /dev -DEV=$ROOTFS/dev -rm -rf $DEV -mkdir -p $DEV -mknod -m 666 $DEV/null c 1 3 -mknod -m 666 $DEV/zero c 1 5 -mknod -m 666 $DEV/random c 1 8 -mknod -m 666 $DEV/urandom c 1 9 -mkdir -m 755 $DEV/pts -mkdir -m 1777 $DEV/shm -mknod -m 666 $DEV/tty c 5 0 -mknod -m 600 $DEV/console c 5 1 -mknod -m 666 $DEV/tty0 c 4 0 -mknod -m 666 $DEV/full c 1 7 -mknod -m 600 $DEV/initctl p -mknod -m 666 $DEV/ptmx c 5 2 -ln -sf /proc/self/fd $DEV/fd - -tar --numeric-owner --xattrs --acls -C $ROOTFS -c . | docker import - $DOCKER_IMAGE_NAME -docker run --rm -t $DOCKER_IMAGE_NAME echo Success. -rm -rf $ROOTFS diff --git a/contrib/mkimage-archarm-pacman.conf b/contrib/mkimage-archarm-pacman.conf deleted file mode 100644 index f4b45f54d7..0000000000 --- a/contrib/mkimage-archarm-pacman.conf +++ /dev/null @@ -1,98 +0,0 @@ -# -# /etc/pacman.conf -# -# See the pacman.conf(5) manpage for option and repository directives - -# -# GENERAL OPTIONS -# -[options] -# The following paths are commented out with their default values listed. -# If you wish to use different paths, uncomment and update the paths. -#RootDir = / -#DBPath = /var/lib/pacman/ -#CacheDir = /var/cache/pacman/pkg/ -#LogFile = /var/log/pacman.log -#GPGDir = /etc/pacman.d/gnupg/ -HoldPkg = pacman glibc -#XferCommand = /usr/bin/curl -C - -f %u > %o -#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u -#CleanMethod = KeepInstalled -#UseDelta = 0.7 -Architecture = armv - -# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup -#IgnorePkg = -#IgnoreGroup = - -#NoUpgrade = -#NoExtract = - -# Misc options -#UseSyslog -#Color -#TotalDownload -# We cannot check disk space from within a chroot environment -#CheckSpace -#VerbosePkgLists - -# By default, pacman accepts packages signed by keys that its local keyring -# trusts (see pacman-key and its man page), as well as unsigned packages. -SigLevel = Required DatabaseOptional -LocalFileSigLevel = Optional -#RemoteFileSigLevel = Required - -# NOTE: You must run `pacman-key --init` before first using pacman; the local -# keyring can then be populated with the keys of all official Arch Linux -# packagers with `pacman-key --populate archlinux`. - -# -# REPOSITORIES -# - can be defined here or included from another file -# - pacman will search repositories in the order defined here -# - local/custom mirrors can be added here or in separate files -# - repositories listed first will take precedence when packages -# have identical names, regardless of version number -# - URLs will have $repo replaced by the name of the current repo -# - URLs will have $arch replaced by the name of the architecture -# -# Repository entries are of the format: -# [repo-name] -# Server = ServerName -# Include = IncludePath -# -# The header [repo-name] is crucial - it must be present and -# uncommented to enable the repo. -# - -# The testing repositories are disabled by default. To enable, uncomment the -# repo name header and Include lines. You can add preferred servers immediately -# after the header, and they will be used before the default mirrors. - -#[testing] -#Include = /etc/pacman.d/mirrorlist - -[core] -Include = /etc/pacman.d/mirrorlist - -[extra] -Include = /etc/pacman.d/mirrorlist - -#[community-testing] -#Include = /etc/pacman.d/mirrorlist - -[community] -Include = /etc/pacman.d/mirrorlist - -[alarm] -Include = /etc/pacman.d/mirrorlist - -[aur] -Include = /etc/pacman.d/mirrorlist - -# An example of a custom package repository. See the pacman manpage for -# tips on creating your own repositories. -#[custom] -#SigLevel = Optional TrustAll -#Server = file:///home/custompkgs - diff --git a/contrib/mkimage-crux.sh b/contrib/mkimage-crux.sh deleted file mode 100755 index cb4fc23b0c..0000000000 --- a/contrib/mkimage-crux.sh +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/bin/env bash -# Generate a minimal filesystem for CRUX/Linux and load it into the local -# docker as "cruxlinux" -# requires root and the crux iso (http://crux.nu) - -set -e - -die() { - echo >&2 "$@" - exit 1 -} - -[ "$#" -eq 1 ] || die "1 argument(s) required, $# provided. Usage: ./mkimage-crux.sh /path/to/iso" - -ISO=${1} - -ROOTFS=$(mktemp -d ${TMPDIR:-/var/tmp}/rootfs-crux-XXXXXXXXXX) -CRUX=$(mktemp -d ${TMPDIR:-/var/tmp}/crux-XXXXXXXXXX) -TMP=$(mktemp -d ${TMPDIR:-/var/tmp}/XXXXXXXXXX) - -VERSION=$(basename --suffix=.iso $ISO | sed 's/[^0-9.]*\([0-9.]*\).*/\1/') - -# Mount the ISO -mount -o ro,loop $ISO $CRUX - -# Extract pkgutils -tar -C $TMP -xf $CRUX/tools/pkgutils#*.pkg.tar.gz - -# Put pkgadd in the $PATH -export PATH="$TMP/usr/bin:$PATH" - -# Install core packages -mkdir -p $ROOTFS/var/lib/pkg -touch $ROOTFS/var/lib/pkg/db -for pkg in $CRUX/crux/core/*; do - pkgadd -r $ROOTFS $pkg -done - -# Remove agetty and inittab config -if (grep agetty ${ROOTFS}/etc/inittab 2>&1 > /dev/null); then - echo "Removing agetty from /etc/inittab ..." - chroot ${ROOTFS} sed -i -e "/agetty/d" /etc/inittab - chroot ${ROOTFS} sed -i -e "/shutdown/d" /etc/inittab - chroot ${ROOTFS} sed -i -e "/^$/N;/^\n$/d" /etc/inittab -fi - -# Remove kernel source -rm -rf $ROOTFS/usr/src/* - -# udev doesn't work in containers, rebuild /dev -DEV=$ROOTFS/dev -rm -rf $DEV -mkdir -p $DEV -mknod -m 666 $DEV/null c 1 3 -mknod -m 666 $DEV/zero c 1 5 -mknod -m 666 $DEV/random c 1 8 -mknod -m 666 $DEV/urandom c 1 9 -mkdir -m 755 $DEV/pts -mkdir -m 1777 $DEV/shm -mknod -m 666 $DEV/tty c 5 0 -mknod -m 600 $DEV/console c 5 1 -mknod -m 666 $DEV/tty0 c 4 0 -mknod -m 666 $DEV/full c 1 7 -mknod -m 600 $DEV/initctl p -mknod -m 666 $DEV/ptmx c 5 2 - -IMAGE_ID=$(tar --numeric-owner -C $ROOTFS -c . | docker import - crux:$VERSION) -docker tag $IMAGE_ID crux:latest -docker run -i -t crux echo Success. - -# Cleanup -umount $CRUX -rm -rf $ROOTFS -rm -rf $CRUX -rm -rf $TMP diff --git a/contrib/mkimage-pld.sh b/contrib/mkimage-pld.sh deleted file mode 100755 index 615c2030a3..0000000000 --- a/contrib/mkimage-pld.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/sh -# -# Generate a minimal filesystem for PLD Linux and load it into the local docker as "pld". -# https://www.pld-linux.org/packages/docker -# -set -e - -if [ "$(id -u)" != "0" ]; then - echo >&2 "$0: requires root" - exit 1 -fi - -image_name=pld - -tmpdir=$(mktemp -d ${TMPDIR:-/var/tmp}/pld-docker-XXXXXX) -root=$tmpdir/rootfs -install -d -m 755 $root - -# to clean up: -docker rmi $image_name || : - -# build -rpm -r $root --initdb - -set +e -install -d $root/dev/pts -mknod $root/dev/random c 1 8 -m 644 -mknod $root/dev/urandom c 1 9 -m 644 -mknod $root/dev/full c 1 7 -m 666 -mknod $root/dev/null c 1 3 -m 666 -mknod $root/dev/zero c 1 5 -m 666 -mknod $root/dev/console c 5 1 -m 660 -set -e - -poldek -r $root --up --noask -u \ - --noignore \ - -O 'rpmdef=_install_langs C' \ - -O 'rpmdef=_excludedocs 1' \ - vserver-packages \ - bash iproute2 coreutils grep poldek - -# fix netsharedpath, so containers would be able to install when some paths are mounted -sed -i -e 's;^#%_netsharedpath.*;%_netsharedpath /dev/shm:/sys:/proc:/dev:/etc/hostname;' $root/etc/rpm/macros - -# no need for alternatives -poldek-config -c $root/etc/poldek/poldek.conf ignore systemd-init - -# this makes initscripts to believe network is up -touch $root/var/lock/subsys/network - -# cleanup large optional packages -remove_packages="ca-certificates" -for pkg in $remove_packages; do - rpm -r $root -q $pkg && rpm -r $root -e $pkg --nodeps -done - -# cleanup more -rm -v $root/etc/ld.so.cache -rm -rfv $root/var/cache/hrmib/* -rm -rfv $root/usr/share/man/man?/* -rm -rfv $root/usr/share/locale/*/ -rm -rfv $root/usr/share/help/*/ -rm -rfv $root/usr/share/doc/* -rm -rfv $root/usr/src/examples/* -rm -rfv $root/usr/share/pixmaps/* - -# and import -tar --numeric-owner --xattrs --acls -C $root -c . | docker import - $image_name - -# and test -docker run -i -u root $image_name /bin/echo Success. - -rm -r $tmpdir diff --git a/contrib/mkimage-yum.sh b/contrib/mkimage-yum.sh deleted file mode 100755 index 42b9581cb3..0000000000 --- a/contrib/mkimage-yum.sh +++ /dev/null @@ -1,146 +0,0 @@ -#!/usr/bin/env bash -# -# Create a base CentOS Docker image. -# -# This script is useful on systems with yum installed (e.g., building -# a CentOS image on CentOS). - -set -e - -usage() { - cat << EOOPTS -$(basename $0) [OPTIONS] -OPTIONS: - -p "" The list of packages to install in the container. - The default is blank. Can use multiple times. - -g "" The groups of packages to install in the container. - The default is "Core". Can use multiple times. - -y The path to the yum config to install packages from. The - default is /etc/yum.conf for Centos/RHEL and /etc/dnf/dnf.conf for Fedora - -t Specify Tag information. - default is referred at /etc/{redhat,system}-release -EOOPTS - exit 1 -} - -# option defaults -yum_config=/etc/yum.conf -if [ -f /etc/dnf/dnf.conf ] && command -v dnf &> /dev/null; then - yum_config=/etc/dnf/dnf.conf - alias yum=dnf -fi -# for names with spaces, use double quotes (") as install_groups=('Core' '"Compute Node"') -install_groups=() -install_packages=() -version= -while getopts ":y:p:g:t:h" opt; do - case $opt in - y) - yum_config=$OPTARG - ;; - h) - usage - ;; - p) - install_packages+=("$OPTARG") - ;; - g) - install_groups+=("$OPTARG") - ;; - t) - version="$OPTARG" - ;; - \?) - echo "Invalid option: -$OPTARG" - usage - ;; - esac -done -shift $((OPTIND - 1)) -name=$1 - -if [[ -z $name ]]; then - usage -fi - -# default to Core group if not specified otherwise -if [ ${#install_groups[*]} -eq 0 ]; then - install_groups=('Core') -fi - -target=$(mktemp -d --tmpdir $(basename $0).XXXXXX) - -set -x - -mkdir -m 755 "$target"/dev -mknod -m 600 "$target"/dev/console c 5 1 -mknod -m 600 "$target"/dev/initctl p -mknod -m 666 "$target"/dev/full c 1 7 -mknod -m 666 "$target"/dev/null c 1 3 -mknod -m 666 "$target"/dev/ptmx c 5 2 -mknod -m 666 "$target"/dev/random c 1 8 -mknod -m 666 "$target"/dev/tty c 5 0 -mknod -m 666 "$target"/dev/tty0 c 4 0 -mknod -m 666 "$target"/dev/urandom c 1 9 -mknod -m 666 "$target"/dev/zero c 1 5 - -# amazon linux yum will fail without vars set -if [ -d /etc/yum/vars ]; then - mkdir -p -m 755 "$target"/etc/yum - cp -a /etc/yum/vars "$target"/etc/yum/ -fi - -if [[ -n "$install_groups" ]]; then - yum -c "$yum_config" --installroot="$target" --releasever=/ --setopt=tsflags=nodocs \ - --setopt=group_package_types=mandatory -y groupinstall "${install_groups[@]}" -fi - -if [[ -n "$install_packages" ]]; then - yum -c "$yum_config" --installroot="$target" --releasever=/ --setopt=tsflags=nodocs \ - --setopt=group_package_types=mandatory -y install "${install_packages[@]}" -fi - -yum -c "$yum_config" --installroot="$target" -y clean all - -cat > "$target"/etc/sysconfig/network << EOF -NETWORKING=yes -HOSTNAME=localhost.localdomain -EOF - -# effectively: febootstrap-minimize --keep-zoneinfo --keep-rpmdb --keep-services "$target". -# locales -rm -rf "$target"/usr/{{lib,share}/locale,{lib,lib64}/gconv,bin/localedef,sbin/build-locale-archive} -# docs and man pages -rm -rf "$target"/usr/share/{man,doc,info,gnome/help} -# cracklib -rm -rf "$target"/usr/share/cracklib -# i18n -rm -rf "$target"/usr/share/i18n -# yum cache -rm -rf "$target"/var/cache/yum -mkdir -p --mode=0755 "$target"/var/cache/yum -# sln -rm -rf "$target"/sbin/sln -# ldconfig -rm -rf "$target"/etc/ld.so.cache "$target"/var/cache/ldconfig -mkdir -p --mode=0755 "$target"/var/cache/ldconfig - -if [ -z "$version" ]; then - for file in "$target"/etc/{redhat,system}-release; do - if [ -r "$file" ]; then - version="$(sed 's/^[^0-9\]*\([0-9.]\+\).*$/\1/' "$file")" - break - fi - done -fi - -if [ -z "$version" ]; then - echo >&2 "warning: cannot autodetect OS version, using '$name' as tag" - version=$name -fi - -tar --numeric-owner -c -C "$target" . | docker import - $name:$version - -docker run -i -t --rm $name:$version /bin/bash -c 'echo success' - -rm -rf "$target"