You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

190 lines
6.7 KiB
Bash

#!/bin/sh
PKGARCH=$1
OS=$(cat /etc/os-release | grep "^ID=" | awk -F"=" '{print $2}')
NAME=$(cat /etc/os-release | grep "^NAME=" | awk -F"=" '{print $2}')
if [ $# -eq 0 ]; then
>&2 echo "Please Specify an Option"
exit 1
fi
isRoot() {
if [ "$EUID" -ne 0 ]; then
echo "Must be run as root"
exit 1
fi
}
install_script_dependencies(){
apt-get update
apt-get install -y curl dpkg-dev genisoimage
}
make_pool(){
for COMPONENT in $@
do
mkdir -p $PWD/pool/$COMPONENT
done
}
download_packages(){
for COMPONENT in $@
do
PKGS=$(grep -E --no-filename '(^Package:|^Architecture:|^$)' /var/lib/apt/lists/*${COMPONENT}_binary-$PKGARCH* \
| sed -e '/Package: /s///' -e '/Architecture: /s///' \
| awk 'NR%3 {printf("%s", ":"$0); next} {print $0}' | cut -c2- )
cd $PWD/pool/$COMPONENT && apt-get download $PKGS -o dir::cache="$PWD/pool/$COMPONENT" ; cd .. ; cd ..
done
}
dirsplit_do(){
dirsplit -m $PWD .$PWD/vol*
}
set_dirs(){
DIRS=$(ls | grep vol)
count=0
}
make_isos_debian(){
for DIR in $DIRS
do
count=$((count + 1))
mkdir -p $PWD/$DIR/dists/$OS/main/binary-$PKGARCH
mkdir -p $PWD/$DIR/dists/$OS/contrib/binary-$PKGARCH
mkdir -p $PWD/$DIR/dists/$OS/non-free/binary-$PKGARCH
mkdir -p $PWD/$DIR/dists/$OS/non-free-firmware/binary-$PKGARCH
cd $DIR && dpkg-scanpackages -a $PKGARCH pool/main | gzip -9 > $PWD/dists/$OS/main/binary-$PKGARCH/Packages.gz ; cd ..
cd $DIR && dpkg-scanpackages -a $PKGARCH pool/contrib | gzip -9 > $PWD/dists/$OS/contrib/binary-$PKGARCH/Packages.gz ; cd ..
cd $DIR && dpkg-scanpackages -a $PKGARCH pool/non-free | gzip -9 > $PWD/dists/$OS/non-free/binary-$PKGARCH/Packages.gz ; cd ..
cd $DIR && dpkg-scanpackages -a $PKGARCH pool/non-free-firmware | gzip -9 > $PWD/dists/$OS/non-free-firmware/binary-$PKGARCH/Packages.gz ; cd ..
genisoimage -v -J -R -l -V "${OS} ${PKGARCH} Disk ${count}" -o $OS-DVD-$count-$PKGARCH.iso $PWD/$DIR
done
}
make_isos_ubuntu(){
for DIR in $DIRS
do
count=$((count + 1))
mkdir -p $PWD/$DIR/dists/$OS/main/binary-$PKGARCH
mkdir -p $PWD/$DIR/dists/$OS/restricted/binary-$PKGARCH
mkdir -p $PWD/$DIR/dists/$OS/universe/binary-$PKGARCH
mkdir -p $PWD/$DIR/dists/$OS/multiverse/binary-$PKGARCH
cd $DIR && dpkg-scanpackages -a $PKGARCH pool/main | gzip -9 > $PWD/dists/$OS/main/binary-$PKGARCH/Packages.gz ; cd ..
cd $DIR && dpkg-scanpackages -a $PKGARCH pool/restricted | gzip -9 > $PWD/dists/$OS/restricted/binary-$PKGARCH/Packages.gz ; cd ..
cd $DIR && dpkg-scanpackages -a $PKGARCH pool/universe | gzip -9 > $PWD/dists/$OS/universe/binary-$PKGARCH/Packages.gz ; cd ..
cd $DIR && dpkg-scanpackages -a $PKGARCH pool/multiverse | gzip -9 > $PWD/dists/$OS/multiverse/binary-$PKGARCH/Packages.gz ; cd ..
genisoimage -v -J -R -l -V "${OS} ${PKGARCH} Disk ${count}" -o $OS-DVD-$count-$PKGARCH.iso $PWD/$DIR
done
}
make_isos_linuxmint(){
for DIR in $DIRS
do
count=$((count + 1))
mkdir -p $PWD/$DIR/dists/$OS/main/binary-$PKGARCH
mkdir -p $PWD/$DIR/dists/$OS/restricted/binary-$PKGARCH
mkdir -p $PWD/$DIR/dists/$OS/universe/binary-$PKGARCH
mkdir -p $PWD/$DIR/dists/$OS/multiverse/binary-$PKGARCH
mkdir -p $PWD/$DIR/dists/$OS/upstream/binary-$PKGARCH
mkdir -p $PWD/$DIR/dists/$OS/import/binary-$PKGARCH
cd $DIR && dpkg-scanpackages -a $PKGARCH pool/main | gzip -9 > $PWD/dists/$OS/main/binary-$PKGARCH/Packages.gz ; cd ..
cd $DIR && dpkg-scanpackages -a $PKGARCH pool/restricted | gzip -9 > $PWD/dists/$OS/restricted/binary-$PKGARCH/Packages.gz ; cd ..
cd $DIR && dpkg-scanpackages -a $PKGARCH pool/universe | gzip -9 > $PWD/dists/$OS/universe/binary-$PKGARCH/Packages.gz ; cd ..
cd $DIR && dpkg-scanpackages -a $PKGARCH pool/import | gzip -9 > $PWD/dists/$OS/import/binary-$PKGARCH/Packages.gz ; cd ..
cd $DIR && dpkg-scanpackages -a $PKGARCH pool/upstream | gzip -9 > $PWD/dists/$OS/upstream/binary-$PKGARCH/Packages.gz ; cd ..
cd $DIR && dpkg-scanpackages -a $PKGARCH pool/multiverse | gzip -9 > $PWD/dists/$OS/multiverse/binary-$PKGARCH/Packages.gz ; cd ..
genisoimage -v -J -R -l -V "${OS} ${PKGARCH} Disk ${count}" -o $OS-DVD-$count-$PKGARCH.iso $PWD/$DIR
done
}
make_isos_lmde(){
for DIR in $DIRS
do
count=$((count + 1))
mkdir -p $PWD/$DIR/dists/$OS/main/binary-$PKGARCH
mkdir -p $PWD/$DIR/dists/$OS/contrib/binary-$PKGARCH
mkdir -p $PWD/$DIR/dists/$OS/non-free/binary-$PKGARCH
mkdir -p $PWD/$DIR/dists/$OS/non-free-firmware/binary-$PKGARCH
mkdir -p $PWD/$DIR/dists/$OS/upstream/binary-$PKGARCH
mkdir -p $PWD/$DIR/dists/$OS/import/binary-$PKGARCH
cd $DIR && dpkg-scanpackages -a $PKGARCH pool/main | gzip -9 > $PWD/dists/$OS/main/binary-$PKGARCH/Packages.gz ; cd ..
cd $DIR && dpkg-scanpackages -a $PKGARCH pool/contrib | gzip -9 > $PWD/dists/$OS/contrib/binary-$PKGARCH/Packages.gz ; cd ..
cd $DIR && dpkg-scanpackages -a $PKGARCH pool/non-free | gzip -9 > $PWD/dists/$OS/non-free/binary-$PKGARCH/Packages.gz ; cd ..
cd $DIR && dpkg-scanpackages -a $PKGARCH pool/non-free-firmware | gzip -9 > $PWD/dists/$OS/non-free-firmware/binary-$PKGARCH/Packages.gz ; cd ..
cd $DIR && dpkg-scanpackages -a $PKGARCH pool/import | gzip -9 > $PWD/dists/$OS/import/binary-$PKGARCH/Packages.gz ; cd ..
cd $DIR && dpkg-scanpackages -a $PKGARCH pool/upstream | gzip -9 > $PWD/dists/$OS/upstream/binary-$PKGARCH/Packages.gz ; cd ..
genisoimage -v -J -R -l -V "${OS} ${PKGARCH} Disk ${count}" -o $OS-DVD-$count-$PKGARCH.iso $PWD/$DIR
done
}
main_debian(){
isRoot
install_script_dependencies
make_pool main contrib non-free non-free-firmware
download_packages main contrib non-free non-free-firmware
dirsplit_do
set_dirs
make_isos_debian
}
main_lmde(){
isRoot
install_script_dependencies
make_pool main contrib non-free non-free-firmware upstream import
download_packages main contrib non-free non-free-firmware upstream import
dirsplit_do
set_dirs
make_isos_lmde
}
main_ubuntu(){
isRoot
install_script_dependencies
make_pool main restricted universe multiverse
download_packages main restricted universe multiverse
dirsplit_do
set_dirs
make_isos_ubuntu
}
main_linuxmint(){
isRoot
install_script_dependencies
make_pool main restricted universe multiverse upstream import
download_packages main restricted universe multiverse upstream import
dirsplit_do
set_dirs
make_isos_linuxmint
}
if [ $OS = "ubuntu" ]; then
main_ubuntu
echo "Done"
elif [ $OS = "debian" ]; then
main_debian
echo "Done"
elif [ $OS = "kali" ]; then
main_debian
echo "Done"
elif [ $OS = "parrot" ]; then
main_debian
echo "Done"
elif [ $OS = "devuan" ]; then
main_debian
echo "Done"
elif [ $OS = "peppermint" ]; then
main_debian
echo "Done"
elif [ $NAME = "Linux Mint" ]; then
main_linuxmint
echo "Done"
elif [ $NAME = "LMDE" ]; then
main_lmde
echo "Done"
else
echo "ERROR: UNRECOGNIZED DISTRO"
fi