#!/bin/sh #Script untuk otomatisasi pembuatan repository lokal #Pembuat: Mochamad Taufan Rezzafri (taufan.rezzafri@yahoo.co.id) #Lisensi : GPL #Terdiri dari 5 bagian yaitu : # 1. Eksekusi apt-move -d `lsb_release -sc` update # 2. Pembuatan Directory tree yang belum dibuat secara otomatis pada langkah pertama # 3. Pembuatan file Release # 4. Pembuatan File info (berguna bila repository ditempatkan pada media CD/DVD) # 5. Memberikan "tandatangan" pada file Release dan pembuatan file Public.key #http://rezzafri.wordpress.com/2010/06/07/pembuatan-repository-local-ubuntu-dengan-apt-move/ RELEASE=`lsb_release -sc` LOCALDIR=`grep 'LOCALDIR' /etc/apt-move.conf | sed 's/[A-Z]\+=//'` if [ ! -d $LOCALDIR ];then mkdir -v -p $LOCALDIR fi cd $LOCALDIR echo "1) Executing \"apt-move -d $RELEASE update\" :" if apt-move -d $RELEASE update > "log-`date +%Y-%m-%d`" then echo "Succesfully Done!!" else echo "Failed moving to repository" exit $? fi echo echo "2) Creating APT repository tree :" for f in `ls $PWD/pool/` do if mkdir -p $PWD/dists/$RELEASE/$f/binary-i386 then echo "\tDirectory: \"dists/$RELEASE/$f/binary-i386\" created" else echo "\tFailed creating directory" fi done echo echo "3) Creating Packages file :" for f in `ls $PWD/pool/` do apt-ftparchive packages pool/$f/ > dists/$RELEASE/$f/binary-i386/Packages cat dists/$RELEASE/$f/binary-i386/Packages | gzip -9c > dists/$RELEASE/$f/binary-i386/Packages.gz echo "\tdists/$RELEASE/$f/binary-i386/Packages created" echo "\tdists/$RELEASE/$f/binary-i386/Packages.gz created" done echo echo "4) Create Release File :" COMPONENT=`ls $PWD/pool/ | tr '\n' ' '| sed 's/[ ]*$//'` OUTFILE=`mktemp` ( cat << EOF APT::FTPArchive::Release { Origin "APT-Move"; Label "APT-Move"; Suite "$RELEASE"; Codename "$RELEASE"; Architectures "i386"; Components "$COMPONENT"; Description "Ubuntu Updates CD"; }; EOF ) > $OUTFILE if [ -f $OUTFILE ] then rm -f dists/$RELEASE/{Release,Release.gpg} apt-ftparchive -c $OUTFILE release dists/$RELEASE/ > Release wait mv Release dists/$RELEASE/Release echo "\tRelease file created" echo if [ -f dists/$RELEASE/Release ] then echo "5) Signing Release file" gpg -bao dists/$RELEASE/Release.gpg dists/$RELEASE/Release wait echo "Release file signed" fi fi echo echo "6) Create info file" rm -rf .disk mkdir .disk echo Ubuntu-Extras `date +%Y-%m-%d` > .disk/info echo "CD INFO: \"Ubuntu-Extras `date +%Y-%m-%d`\"" echo echo "7) Create Public keys" PUBLIC_KEY=Public.key ( cat << EOF Before using this CDROM, do the following command on terminal : \$ cd /path/to/cdrom/ \$ sudo apt-key add $PUBLIC_KEY \$ sudo apt-cdrom add EOF ) > README.TXT while [ "$name" = "" ]; do read -p "What is your name or key ID (that you use in your PGP)? " name done if `gpg --export -a "$name" > $PUBLIC_KEY`; then echo "$PUBLIC_KEY created" else echo "failed to create $PUBLIC_KEY" exit $? fi rm -f $OUTFILE echo "Creating Local Repository, Done!!" exit 0