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.
110 lines
3.7 KiB
Bash
110 lines
3.7 KiB
Bash
10 years ago
|
#!/bin/sh -ex
|
||
|
|
||
|
# check for fakeroot
|
||
|
if [ "$LOGNAME" = "root" ] \
|
||
|
|| [ "$USER" = "root" ] \
|
||
|
|| [ "$USERNAME" = "root" ] \
|
||
|
|| [ "$SUDO_COMMAND" != "" ] \
|
||
|
|| [ "$SUDO_USER" != "" ] \
|
||
|
|| [ "$SUDO_UID" != "" ] \
|
||
|
|| [ "$SUDO_GID" != "" ]; then
|
||
|
echo "don't run this script as root - there is no need to"
|
||
|
exit
|
||
|
fi
|
||
|
|
||
|
# modify these
|
||
|
ARCH="amd64"
|
||
|
DIST="squeeze"
|
||
|
MIRROR="http://127.0.0.1:3142/ftp.de.debian.org/debian"
|
||
|
DIRECTORY="`pwd`/debian-$DIST-$ARCH-ministrap"
|
||
|
|
||
|
# re-execute script in fakeroot
|
||
|
if [ "$FAKEROOTKEY" = "" ]; then
|
||
|
echo "re-executing script inside fakeroot"
|
||
|
fakeroot $0;
|
||
|
rsync -Phaze ssh $DIRECTORY/ mister-muffin.de:/var/www/
|
||
|
ssh mister-muffin.de "chown -R www-data:www-data /var/www/dudle.mister-muffin.de/"
|
||
|
exit
|
||
|
fi
|
||
|
|
||
|
# apt options
|
||
|
APT_OPTS="-y"
|
||
|
APT_OPTS=$APT_OPTS" -o Apt::Architecture=$ARCH"
|
||
|
APT_OPTS=$APT_OPTS" -o Dir::Etc::TrustedParts=$DIRECTORY/etc/apt/trusted.gpg.d"
|
||
|
APT_OPTS=$APT_OPTS" -o Dir::Etc::Trusted=$DIRECTORY/etc/apt/trusted.gpg"
|
||
|
APT_OPTS=$APT_OPTS" -o Apt::Get::AllowUnauthenticated=true"
|
||
|
APT_OPTS=$APT_OPTS" -o Apt::Get::Download-Only=true"
|
||
|
APT_OPTS=$APT_OPTS" -o Apt::Install-Recommends=false"
|
||
|
APT_OPTS=$APT_OPTS" -o Dir=$DIRECTORY/"
|
||
|
APT_OPTS=$APT_OPTS" -o Dir::Etc=$DIRECTORY/etc/apt/"
|
||
|
APT_OPTS=$APT_OPTS" -o Dir::Etc::SourceList=$DIRECTORY/etc/apt/sources.list"
|
||
|
APT_OPTS=$APT_OPTS" -o Dir::State=$DIRECTORY/var/lib/apt/"
|
||
|
APT_OPTS=$APT_OPTS" -o Dir::State::Status=$DIRECTORY/var/lib/dpkg/status"
|
||
|
APT_OPTS=$APT_OPTS" -o Dir::Cache=$DIRECTORY/var/cache/apt/"
|
||
|
|
||
|
# clean root directory
|
||
|
rm -rf $DIRECTORY
|
||
|
|
||
|
# initial setup for apt to work properly
|
||
|
mkdir -p $DIRECTORY
|
||
|
mkdir -p $DIRECTORY/etc/apt/
|
||
|
mkdir -p $DIRECTORY/etc/apt/sources.list.d/
|
||
|
mkdir -p $DIRECTORY/etc/apt/preferences.d/
|
||
|
mkdir -p $DIRECTORY/var/lib/apt/
|
||
|
mkdir -p $DIRECTORY/var/lib/apt/lists/partial/
|
||
|
mkdir -p $DIRECTORY/var/lib/dpkg/
|
||
|
mkdir -p $DIRECTORY/var/cache/apt/
|
||
|
# apt somehow needs this file to be present
|
||
|
touch $DIRECTORY/var/lib/dpkg/status
|
||
|
|
||
|
# fill sources.list
|
||
|
echo deb $MIRROR $DIST main > $DIRECTORY/etc/apt/sources.list
|
||
|
|
||
|
# update and install git and ruby
|
||
|
apt-get $APT_OPTS update
|
||
|
apt-get $APT_OPTS install ruby git-core libgettext-ruby1.8 libjson-ruby1.8
|
||
|
|
||
|
# unpack downloaded archives
|
||
|
for deb in $DIRECTORY/var/cache/apt/archives/*.deb; do
|
||
|
dpkg -x $deb $DIRECTORY
|
||
|
done
|
||
|
|
||
|
# delete obsolete directories
|
||
|
rm -rf $DIRECTORY/usr/share/
|
||
|
rm -rf $DIRECTORY/usr/lib/perl/
|
||
|
rm -rf $DIRECTORY/usr/lib/gconv/
|
||
|
rm -rf $DIRECTORY/usr/lib/git-core/
|
||
|
rm -rf $DIRECTORY/usr/sbin/
|
||
|
rm -rf $DIRECTORY/var/
|
||
|
rm -rf $DIRECTORY/bin/
|
||
|
rm -rf $DIRECTORY/sbin/
|
||
|
rm -rf $DIRECTORY/selinux/
|
||
|
rm -rf $DIRECTORY/etc/*
|
||
|
|
||
|
# delete all setuid programs
|
||
|
find $DIRECTORY -perm -4000 -delete
|
||
|
|
||
|
# delete all binaries except for "git" and "ruby"
|
||
|
find $DIRECTORY/usr/bin/ -type f -o -type l | egrep -v "ruby|git$" | xargs rm -rf
|
||
|
|
||
|
# git needs /etc/passwd otherwise git says: "You dont't exist, go away!"
|
||
|
cat > $DIRECTORY/etc/passwd << __END__
|
||
|
www-data:x:33:33:www-data:/var/www:/bin/sh
|
||
|
__END__
|
||
|
|
||
|
# dont forget to create /tmp directory for dudle
|
||
|
mkdir -m 777 $DIRECTORY/tmp
|
||
|
|
||
|
# get latest dudle
|
||
|
bzr branch https://dudle.inf.tu-dresden.de/unstable/ $DIRECTORY/dudle.mister-muffin.de
|
||
|
( cd $DIRECTORY/dudle.mister-muffin.de; make; )
|
||
|
bzr branch https://dudle.inf.tu-dresden.de/unstable/extensions/dc-net/ $DIRECTORY/dudle.mister-muffin.de/extensions/dc-net/
|
||
|
( cd $DIRECTORY/dudle.mister-muffin.de/extensions/dc-net/; make; )
|
||
|
|
||
|
# fix shebang
|
||
|
find $DIRECTORY/dudle.mister-muffin.de/ -type f -regex ".*\.cgi\|.*\.rb" \
|
||
|
| xargs sed -i 's/#!\/usr\/bin\/env ruby/#!\/usr\/bin\/ruby/'
|
||
|
|
||
|
#wget https://dudle.inf.tu-dresden.de/doc/0-register.ogv https://dudle.inf.tu-dresden.de/doc/1-setup.ogv https://dudle.inf.tu-dresden.de/doc/2-participate.ogv
|
||
|
#mv 0-register.ogv 1-setup.ogv 2-participate.ogv $DIRECTORY/dudle.mister-muffin.de/
|