Devuan
Devuan is a GNU/Linux operating system and fork of the Debian distribution. It is best choice for developers because it does not require systemd and dbus.
CD Image
The listed scripts create a new root filesystem with debootstrap program. It does not use variables only file descriptors and pipes. File descriptors connect the top level script with the lower level schroot/bash shells.
devuan
#!/bin/sh # https://git.devuan.org/devuan/devuan-sdk # sudo TERM=linux schroot -d/root -- bash -ex < cdimage.sh 3<&0 \ 6<debian/debootstrap.sh \ 7<debian/apache.sh \ 8<debian/sdk.sh \ 9<<-'SULOGIN' \ 0<<-'DEBOOTSTRAP' \ 5<<-'CGI-BIN' \ exec bash -ex a2enmod cgid a2enconf serve-cgi-bin service vsftpd start service apache2 start exec sulogin --login-shell --timeout 3 <&3 SULOGIN # create schroot schroot -d/root -- true &> /dev/null || bash -x <&6 # install packages schroot -d/root <&7 -- bash -s 5 # create cdimage schroot -d/root <&8 # start exec schroot -d/root <&9 DEBOOTSTRAP cdimage CGI-BIN
debootstrap
#!/bin/bash # Devuan debootstrap and schroot # set -o physical cd -P "$(mktemp -d)" || exit 1 apt-get install --yes debootstrap schroot ca-certificates locate -r devuan_ascii_2.1_i386_cd-1.iso | xargs -r -I@ cp -avu @ .. wget --continue --directory-prefix=.. \ https://files.devuan.org/devuan_ascii/installer-iso/devuan_ascii_2.1_i386_cd-1.iso #https://files.devuan.org/devuan_jessie/installer-iso/devuan_jessie_1.0.0_i386_CD.iso # ftp://ftp.nluug.nl/pub/os/Linux/distr/devuan/devuan_ascii/installer-iso/devuan_ascii_2.0.0_i386_cd-1.iso # ftp://ftp.nluug.nl/pub/os/Linux/distr/devuan/devuan_ascii/installer-iso/devuan_ascii_2.0.0_amd64_cd-1.iso # ftp://mirror.leaseweb.com/devuan/devuan_ascii/installer-iso/devuan_ascii_2.0.0_amd64_cd-1.iso # https://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-cd/debian-testing-amd64-netinst.iso mount ../devuan_*.iso . cd -P "$(mktemp -d)" || exit 2 chmod 755 . sed -i /etc/schroot/default/fstab \ -e /home\\\|tmp/s%^/%#/% cat > /etc/schroot/chroot.d/$(basename $PWD).conf <<-EOF # schroot chroot definitions. # See schroot.conf(5) for complete documentation of the file format. [$(basename $PWD)] description=Debian type=directory directory=$PWD preserve-environment=false groups=sudo #union-type=overlay setup.fstab=default/fstab EOF bash -ex <<-BASH debootstrap \ --arch=i386 \ --no-check-gpg \ --exclude=$( paste -s -d, <<-'EXCLUDE' libsystemd0 systemd systemd-sysv EXCLUDE ) \ --include=$( paste -s -d, <<-'INCLUDE' apt-utils bsdutils bzip2 ca-certificates file libc6 less locales mawk nano openssh-client openssh-server sudo vim wireless-tools wpasupplicant xz-utils INCLUDE ) \ ascii . file://$OLDPWD #testing . http://deb.devuan.org/merged BASH umount $OLDPWD rmdir $OLDPWD
ftparchive
#!/bin/bash # download packages and create ftparchive 12<<-'APTSOURCES' \ 11<<-'APTRELEASE' \ 10<<-'APTSECURITY' \ 9<<-'APTDOWNLOAD' \ 8<<-'PACKAGES' \ 7<<-'SCAN' \ 6<<-'GPG' \ 5<<-'SIGN' \ 0<<-'SCHROOT' \ 20<<-'DEBS' \ bash -e # deb [trusted=yes] http://deb.devuan.org/merged testing main # deb-src [trusted=yes] http://deb.devuan.org/merged testing main deb [trusted=yes arch=amd64 ] http://deb.devuan.org/devuan unstable main deb-src [trusted=yes arch=amd64 ] http://deb.devuan.org/devuan unstable main APTSOURCES APT::Default-Release "unstable"; APTRELEASE # disable some protection by default and ensure we still do the verification # correctly Acquire::AllowInsecureRepositories "1"; Acquire::AllowDowngradeToInsecureRepositories "1"; APTSECURITY # install tools cat > /etc/apt/sources.list <&12 cat > /etc/apt/apt.conf.d/default-release <&11 cat > /etc/apt/apt.conf.d/weaken-security <&10 apt-get update apt-get install --yes dpkg-dev : apt-get install --yes fdisk/testing mount/testing sysvinit-utils/testing util-linux/testing bsdutils/testing libblkid1/testing libfdisk1/testing libmount1/testing libsmartcols1/testing libuuid1/testing # download release wget --continue --no-check-certificate --directory-prefix=/tmp \ ftp://ftp.nluug.nl/pub/os/Linux/distr/devuan/devuan_ascii/installer-iso/devuan_ascii_2.1_amd64_cd-1.iso \ #https://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-cd/debian-testing-amd64-netinst.iso APTDOWNLOAD cat /var/lib/apt/lists/*_main_binary-amd64_Packages | grep ^Package\\\|^Priority\\\|^Filename | paste - - - | sort | nl -n ln | tee >( # join required and important packages sort -k5 | join -15 - <( cat <<<$'important\nrequired' ) | cut -d\ -f4,7 | nl -n ln | join -j5 <(seq 1) - ) > >( # join desired packages sort -k3 | join -13 - <( # append packages and dependencies cat <&20 | tee >( xargs apt-cache depends \ --recurse \ --installed \ --no-pre-depends \ --no-suggests \ --no-recommends \ --no-conflicts \ --no-breaks \ --no-replaces \ --no-enhances | grep Depends: | cut -d: -f2 | cut -d\ -f2 | grep -v '^<' ) | sort | uniq ) | cut -d\ -f1,7 | sort -n -k2 | nl -n ln | join -j5 <(seq 2 2) - ) | cut -d\ -f4,5 | sort | uniq | # format input for shell reuse grep -o \\S* | xargs -I@ printf %q\\n '@' | sed -e 1~2s/^/basename\ /e -e 0~2s/^/dirname\ /e | xargs -I@ printf %q\\n '@' | # divide package list into directories paste - - | nl -n ln | tee >( # package names cut -f1,2 | join <(seq 2 2) - -j3 ) > >( # uniq directory names cut -f1,3 | join <(seq 1) - -j3 | uniq -i2 ) | sort -k2 -n | cut -d\ -f2,4 | # group packages by folders in one line sed /^1\ /i\\\\\x00 | tail -z -n+2 | cut -d\ -f2 | tr \\n\\\000 \\\ \\\n PACKAGES [ -d debian/dists/testing/main ] || { mkdir -p debian/dists/testing/main while read do mkdir debian/dists/testing/main/$REPLY tee debian/dists/testing/main/$REPLY/Release <<-EOF Archive: testing Origin: Devuan Label: testing Version: 2.0.0 Component: main Architecture: amd64 EOF done <<-WHILE binary-amd64 source WHILE } dpkg-scanpackages debian/pool | tee debian/dists/testing/main/binary-amd64/Packages | tee >( xz -z > debian/dists/testing/main/binary-amd64/Packages.xz ) | grep ^Package: | sort dpkg-scansources debian/pool | tee debian/dists/testing/main/source/Sources | xz -z \ > debian/dists/testing/main/source/Sources.xz apt-ftparchive release debian/dists/testing \ -o APT::FTPArchive::Release::Origin="Debian" \ -o APT::FTPArchive::Release::Label="Debian" \ -o APT::FTPArchive::Release::Suite="testing" \ -o APT::FTPArchive::Release::Codename="testing" \ -o APT::FTPArchive::Release::Valid-Until="$(date --rfc-2822 --utc --date=@1600000000)" \ -o APT::FTPArchive::Release::Architectures="amd64 source" \ -o APT::FTPArchive::Release::Components="main" \ -o APT::FTPArchive::Release::Description="Description: Experimental packages - not released use at your own risk." \ > debian/dists/testing/Release SCAN # Sign files gpg --yes -abs -o dists/sid/Release.gpg dists/sid/Release gpg --clearsign -o dists/sid/InRelease dists/sid/Release # import signatures on client gpg --recv-key --keyserver localhost 0123456789ABCDEF gpg --list-sigs gpg --export 0123456789ABCDEF > /usr/share/keyrings/archive-keyring.gpg GPG deb [trusted=yes signed-by=/usr/share/keyrings/archive-keyring.gpg] ftp://localhost/debian sid main deb-src [trusted=yes signed-by=/usr/share/keyrings/archive-keyring.gpg] ftp://localhost/debian sid main #deb file:/var/www/html/packages/amd64/ / #deb-src file:/var/www/html/packages/amd64/ / #deb [signed-by=/usr/share/keyrings/archive-keyring.gpg] file:/srv/reprepro/debian / #deb-src [signed-by=/usr/share/keyrings/archive-keyring.gpg] file:/srv/reprepro/debian / SIGN # apt download [ -d debian ] || { bash -e <&9 mkdir debian debian/doc touch debian/doc/README } [ -d debian/pool ] || { # debian sources mkdir debian/pool debian/pool/main debian/pool/main/d cd debian/pool/main/d while read do : apt-get source --download-only $REPLY done <<-DEBSRC debian-installer debootstrap devuan-baseconf devuan-keyring DEBSRC cd $OLDPWD # debian installer : wget --continue \ http://deb.devuan.org/devuan/pool/main/d/debian-installer/debian-installer_20180717+devuan1{.dsc,.tar.gz,_amd64.deb} : xargs -L1 wget -c -r -l6 -nv -nc -np -nH --cut-dirs=3 -P \ debian/dists/ascii <<-DI http://deb.devuan.org/devuan/dists/ascii/main/debian-installer/binary-amd64/ http://deb.devuan.org/devuan/dists/ascii/main/installer-amd64/current/images/ DI } mkdir work iso mount /tmp/de*.iso iso mount overlay debian/pool \ -t overlay \ -o lowerdir=iso/debian/pool \ -o upperdir=debian/pool \ -o workdir=work # apt download required packages with filename from lists bash -e <&8 | { cd debian while read do set $REPLY mkdir -p $1 cd $1 shift apt-get -o 'APT::Architecture=amd64' download $* & cd $OLDPWD done wait cd $OLDPWD } # rename packages with epochs version find -name '*%*' -exec dpkg-name -o {} + # scan packages bash -ex <&7 # sign repository : bash -ex <&6 : cat >> /etc/apt/sources.list <&5 # cleanup umount debian/pool iso rmdir work/work work iso SCHROOT apt apt-utils arch-test autoconf automake autopoint autotools-dev binutils binutils-common binutils-x86-64-linux-gnu build-essential busybox-static bzip2 ca-certificates cgpt console-common console-data cpio cpp cpp-6 cpp-8 curl debconf-utils debian-installer debian-keyring debootstrap device-tree-compiler devuan-baseconf devuan-keyring dh-autoreconf dh-strip-nondeterminism dhcpcd5 dialog dirmngr dmsetup dpkg-dev dwz e2fslibs e2fsprogs e2fsprogs-l10n fake-hwclock fakeroot fbterm file fontconfig-config fonts-dejavu-core fonts-lato fuse g++ g++-8 gcc gcc-6-base gcc-7-base gcc-8 gcc-8-base gettext gettext-base git-core git-man gnupg gnupg-agent gnupg-l10n gnupg-utils gnupg2 gpg gpg-agent gpg-wks-client gpg-wks-server gpgconf gpgsm gpgv groff-base htop iftop initramfs-tools initramfs-tools-core intltool-debian iotop isolinux javascript-common joe kbd klibc-utils kpartx less libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libapt-pkg5.0 libarchive-cpio-perl libarchive-zip-perl libasan3 libasan5 libasound2 libasound2-data libassuan0 libatomic1 libbinutils libboost-filesystem1.67.0 libboost-iostreams1.67.0 libboost-program-options1.67.0 libboost-system1.67.0 libc-bin libc-dev-bin libc-l10n libc6 libc6-dev libcc1-0 libcilkrts5 libcom-err2 libcomerr2 libcroco3 libcurl3-gnutls libcurl4 libdebconfclient0 libdevmapper1.02.1 libdpkg-perl liberror-perl libevent-2.1-6 libevent-core-2.1-6 libevent-pthreads-2.1-6 libexpat1 libext2fs2 libfakeroot libfftw3-single3 libfile-fcntllock-perl libfile-stripnondeterminism-perl libfontconfig1 libfreetype6 libfuse2 libgcc-6-dev libgcc-8-dev libgcc1 libgcrypt20 libgdbm-compat4 libgdbm6 libglib2.0-0 libglib2.0-data libgomp1 libgpm2 libicu63 libisl19 libitm1 libjs-jquery libklibc libldap-2.4-2 libldap-common liblocale-gettext-perl liblsan0 libltdl-dev libltdl7 liblua5.2-0 liblzo2-2 libmail-sendmail-perl libmpc3 libmpdec2 libmpfr6 libmpx2 libncurses6 libncursesw6 libnghttp2-14 libopts25 libparted2 libpcap0.8 libpcre2-8-0 libperl5.28 libpipeline1 libpng16-16 libpython3-stdlib libpython3.6-minimal libpython3.6-stdlib libpython3.7 libpython3.7-minimal libpython3.7-stdlib libquadmath0 librtmp1 libruby2.5 libsamplerate0 libsasl2-2 libsasl2-modules libsasl2-modules-db libseccomp2 libsigsegv2 libssh2-1 libssl1.1 libstdc++-8-dev libstdc++6 libsys-hostname-long-perl libtcl8.6 libtext-charwidth-perl libtext-iconv-perl libtinfo5 libtinfo6 libtool libtsan0 libubsan0 libubsan1 libudev1 libunistring2 libunwind8 libusb-1.0-0 libutempter0 libx11-6 libx11-data libx86-1 libxau6 libxcb1 libxdmcp6 libxml2 libyaml-0-2 libzstd1 linux-base linux-libc-dev locales lynx lynx-common m4 make makedev manpages manpages-dev mime-support ntp openresolv openssl parted patch perl perl-base perl-modules-5.28 pinthread po-debconf python3 python3-minimal python3.6 python3.6-minimal rake ruby ruby-did-you-mean ruby-minitest ruby-net-telnet ruby-power-assert ruby-test-unit ruby-xmlrpc ruby2.5 rubygems-integration runit-init schroot schroot-common shared-mime-info sntp ssl-cert strace syslinux-common sysvinit sysvinit-core task-web-server tasksel-data tmux u-boot-tools unzip usbutils vifm vim vim-addon-manager vim-common vim-nox vim-runtime vim-tiny vsftpd wavemon xdg-user-dirs xorriso zip zlib1g zsh zsh-common DEBS
devuan-sdk
#!/bin/sh # build iso image with devuan-sdk 3<&0 \ 0<<-'SHELL' \ 6<<-'SOURCES' \ 7<<-'SDK' \ 8<<'PATCH' \ bash cat > /etc/apt/sources.list <&6 apt-get update apt-get install --yes git cat > .gitconfig <<-'GIT' [user] name = root email = root@localhost GIT [[ -d devuan-sdk ]] || git clone https://git.devuan.org/devuan/devuan-sdk cd devuan-sdk || exit 1 git reset --hard 2b9287a git am <&8 || { git am --abort exit 1 } exec zsh <&7 SHELL #deb [trusted=yes] ftp://localhost/debian testing main #deb-src [trusted=yes] ftp://localhost/debian testing main deb [trusted=yes] http://deb.devuan.org/merged ascii main deb-src [trusted=yes] http://deb.devuan.org/merged ascii main deb [trusted=yes] http://deb.devuan.org/merged ascii-backports main deb-src [trusted=yes] http://deb.devuan.org/merged ascii-backports main deb [trusted=yes] http://deb.devuan.org/merged testing main deb-src [trusted=yes] http://deb.devuan.org/merged testing main deb [trusted=yes] http://deb.devuan.org/merged unstable main deb-src [trusted=yes] http://deb.devuan.org/merged unstable main SOURCES # sudo TERM=linux schroot -d/root/devuan-sdk -- zsh source sdk || exit 1 mirror=ftp://localhost/debian/ mirror=http://deb.devuan.org/merged chroot_variant=buildd chroot_arch=amd64 release=unstable version=2.0.0 iso_type=netinst-auto src_name=debian-installer orig_ver=20181231+devuan1 init : init-repos # chroot and debootstrap [ -r ../devuan-amd64.tgz ] || { # todo cache a local repository apt-get update apt-get install --yes debootstrap chroot-create first schroot \ --directory=/root \ --chroot=devuan-amd64 \ -- sh /debootstrap/debootstrap --second-stage # builds mkdir -p stage builds/amd64/{sysvinit,devuan-{keyring,baseconf}} cat > chroot/amd64/etc/apt/apt.conf.d/00testing <<-'RELEASE' APT::Default-Release "testing"; Dpkg::Options {"--force-confnew";}; RELEASE cat > chroot/amd64/etc/apt/sources.list <<-'APT' #deb [trusted=yes] ftp://localhost/debian testing main #deb-src [trusted=yes] ftp://localhost/debian testing main deb [trusted=yes] http://deb.devuan.org/merged testing main deb-src [trusted=yes] http://deb.devuan.org/merged testing main APT schroot --chroot devuan-amd64 --directory=/root -- apt-get update tar czf ../devuan-amd64.tgz chroot/amd64 } && rm -rf chroot && tar xf ../devuan-amd64.tgz mkdir -p chroot/amd64/usr/src/orig-iso cp -av /tmp/de*.iso \ chroot/amd64/usr/src/orig-iso/devuan-$release-$chroot_arch-$version-netboot.iso # iso seed $iso_type iso-import iso-build-installer : build-deps : build-clean : build-sync : build-pack-orig : build-pack-debian : build-start : build-finish iso-seed : iso-index iso-make #schroot -c devuan-amd64 -d /usr/src/${src_name}-${orig_ver}/build make build_cdrom_isolinux #script -c "exec bash -exc 'PATH=util:$PATH make ./stamps/get_udebs-cdrom_isolinux-stamp SUBARCH= MEDIUM=cdrom FLAVOUR=isolinux -C /usr/src/debian-installer-20180414+devuan1/build'" # debootstrap --variant=buildd --verbose --include=bzip2,less,dialog,zsh,sysvinit,debian-keyring,devuan-keyring,apt-utils,fakeroot,e2fsprogs,curl,file, --exclude=libsystemd0,systemd,systemd-sysv --components=main --foreign --arch amd64 --no-check-gpg testing ../devuan-sdk/chroot/amd64 ftp://localhost/debian/ # qemu-system-x86_64 -m 1G -nographic -cdrom iso/devuan-testing-amd64-netinst-auto.iso --enable-kvm -kernel iso/mnt/install.amd/vmlinuz -initrd iso/mnt/install.amd/initrd.gz -append 'console=ttyS0 auto=true priority=critical' SDK From 01595140931e107cefe0a8257c583f7800f17689 Mon Sep 17 00:00:00 2001 From: furrymcgee <furrymcgee@lippydanger.jumpingcrab.com> Date: Wed, 19 Dec 2018 20:03:03 +0100 Subject: [PATCH] index on master: 2b9287a typo for markdown formatting --- zlibs/build | 3 ++- zlibs/iso | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/zlibs/build b/zlibs/build index 880c14e..d249e90 100755 --- a/zlibs/build +++ b/zlibs/build @@ -183,7 +183,7 @@ build-deps() { act "Installing dep: $d" schroot -c devuan-$chroot_arch -u root \ -d /usr/src \ - -- apt-get --force-yes -y install $d + -- apt-get -y install $d done @@ -205,6 +205,7 @@ build-clean() { rm -rf $R/chroot/$chroot_arch/usr/src/$src_name-${orig_ver} } + return 0 } build-sync() { diff --git a/zlibs/iso b/zlibs/iso index 989a826..84803f0 100755 --- a/zlibs/iso +++ b/zlibs/iso @@ -66,7 +66,7 @@ iso-del-package() { req=(release chroot_arch iso_type) iso=usr/src/devuan-iso/$release-$chroot_arch-$iso_type pname=$1 - freq=($R/chroot/$chroot_arch/$iso/initrd.gz) + #freq=($R/chroot/$chroot_arch/$iso/initrd.gz) reqck || return $? notice "Deleting package from $release $chroot_arch $iso_type: $pname" @@ -79,7 +79,7 @@ iso-add-package() { req=(release chroot_arch iso_type) iso=usr/src/devuan-iso/$release-$chroot_arch-$iso_type pname=$1 - freq=($R/builds/${chroot_arch}/$pname $R/chroot/$chroot_arch/$iso/initrd.gz) + #freq=($R/builds/${chroot_arch}/$pname $R/chroot/$chroot_arch/$iso/initrd.gz) reqck || return $? notice "Adding package to $release $chroot_arch $iso_type: $pname" @@ -104,7 +104,7 @@ iso-add-preseed() { fn iso-add-preseed req=(chroot_arch) iso=usr/src/devuan-iso/$release-$chroot_arch-$iso_type - freq=($R/chroot/$chroot_arch/$iso/initrd.gz) + #freq=($R/chroot/$chroot_arch/$iso/initrd.gz) reqck || return $? @@ -407,7 +407,7 @@ iso-index iso-prepare() { req=(release chroot_arch) root=$R/chroot/$chroot_arch iso=usr/src/devuan-iso/$release-$chroot_arch-$iso_type - freq=($R/chroot/$chroot_arch/$iso/initrd.gz) + #freq=($R/chroot/$chroot_arch/$iso/initrd.gz) reqck || return $? notice "Indexing all packages inside the iso" -- 2.19.2 PATCH