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
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
|
|
|