diff options
Diffstat (limited to 'tools/boca-createjail')
| -rwxr-xr-x | tools/boca-createjail | 82 |
1 files changed, 56 insertions, 26 deletions
diff --git a/tools/boca-createjail b/tools/boca-createjail index 1340282..7e4ec5c 100755 --- a/tools/boca-createjail +++ b/tools/boca-createjail @@ -1,23 +1,23 @@ #!/bin/bash homejail=/home/bocajail -[ "$1" != "" ] && homejail=$1 +[ "$1" != "" ] && homejail="$1" echo "=================================================================================" echo "============= CREATING $homejail (this might take some time) ===============" echo "=================================================================================" for i in setquota ln id chown chmod dirname useradd mkdir cp rm mv apt-get dpkg uname debootstrap schroot; do - p=`which $i` + p="$(which $i)" if [ -x "$p" ]; then echo -n "" else - echo command "$i" not found + echo "command $i not found" exit 1 fi done -if [ "`id -u`" != "0" ]; then +if [[ "$(id -u)" != "0" ]]; then echo "Must be run as root" exit 1 fi -if [ ! -r /etc/lsb-release ]; then +if [[ ! -r /etc/lsb-release ]]; then echo "File /etc/lsb-release not found. Is this a ubuntu or debian-like distro?" echo "If so, execute the command" echo "" @@ -27,23 +27,23 @@ if [ ! -r /etc/lsb-release ]; then exit 1 fi . /etc/lsb-release -if [ -d /bocajail/ ]; then +if [[ -d /bocajail/ ]]; then echo "You seem to have already a /bocajail installed" echo "If you want to reinstall, remove it first (e.g. rm /bocajail) and then run /etc/icpc/createbocajail.sh" exit 1 fi -if [ -f $homejail/proc/cpuinfo ]; then +if [[ -f "${homejail}/proc/cpuinfo" ]]; then echo "You seem to have already installed /bocajail and the /bocajail/proc seems to be mounted" - chroot $homejail umount /sys >/dev/nul 2>/dev/null - chroot $homejail umount /proc >/dev/nul 2>/dev/null + chroot "$homejail" umount /sys >/dev/nul 2>/dev/null + chroot "$homejail" umount /proc >/dev/nul 2>/dev/null echo "Please reboot the system to remove such mounted point" exit 1 fi id -u bocajail >/dev/null 2>/dev/null -if [ $? != 0 ]; then - useradd -m -s /bin/bash -d $homejail -g users bocajail +if [[ $? != 0 ]]; then + useradd -m -s /bin/bash -d "$homejail" -g users bocajail cat <<EOF > /var/lib/AccountsService/users/bocajail [User] SystemAccount=true @@ -57,9 +57,9 @@ fi setquota -u bocajail 0 500000 0 10000 -a rm -rf /bocajail -mkdir -p $homejail/tmp -chmod 1777 $homejail/tmp -ln -s $homejail /bocajail +mkdir -p "$homejail/tmp" +chmod 1777 "$homejail/tmp" +ln -s "$homejail" /bocajail #for i in usr lib var bin sbin etc dev; do # [ -d $homejail/$i ] && rm -rf $homejail/$i # cp -ar /$i $homejail @@ -69,7 +69,7 @@ ln -s $homejail /bocajail #mkdir -p $homejail/proc #mkdir -p $homejail/sys uname -m | grep -q 64 -if [ $? == 0 ]; then +if [[ $? == 0 ]]; then archt=amd64 else archt=i386 @@ -84,21 +84,21 @@ type=directory users=bocajail,nobody,root FIM -#debootstrap --arch $archt $DISTRIB_CODENAME $homejail -debootstrap $DISTRIB_CODENAME $homejail -if [ $? != 0 ]; then +#debootstrap --arch "$archt" "$DISTRIB_CODENAME" "$homejail" +debootstrap "$DISTRIB_CODENAME" "$homejail" 'http://archive.ubuntu.com/ubuntu' +if [[ $? != 0 ]]; then echo "bocajail failed to debootstrap" exit 1 else schroot -l | grep -q bocajail -if [ $? == 0 ]; then +if [[ $? == 0 ]]; then echo "bocajail successfully installed at $homejail" else echo "*** some error has caused bocajail not to install properly -- I will try it again with different parameters" echo "location=$homejail" >> /etc/schroot/chroot.d/bocajail.conf - debootstrap $DISTRIB_CODENAME $homejail + debootstrap "$DISTRIB_CODENAME" "$homejail" 'http://archive.ubuntu.com/ubuntu' schroot -l | grep -q bocajail - if [ $? == 0 ]; then + if [[ $? == 0 ]]; then echo "*** bocajail successfully installed at $homejail" else echo "*** bocajail failed to install" @@ -107,6 +107,35 @@ else fi fi +printf "*** Patching broken repositories on Ubuntu noble\n" +if [[ "$DISTRIB_CODENAME" == 'noble' ]]; then + printf '*** Ubuntu %s detected on %s\n' "$DISTRIB_CODENAME" "$homejail" + + if [[ ! -f "${homejail}/etc/apt/sources.list.d/ubuntu.sources" ]]; then + printf "*** Sources file missing\n" + +cat <<EOF > "${homejail}/etc/apt/sources.list.d/ubuntu.sources" +Types: deb +URIs: http://archive.ubuntu.com/ubuntu +Suites: noble noble-updates noble-backports +Components: main restricted universe multiverse +Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg + +Types: deb +URIs: http://security.ubuntu.com/ubuntu +Suites: noble-security +Components: main restricted universe multiverse +Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg +EOF + printf '*** Patched %s for broken repositories\n' "$homejail" + fi +fi + +# We have two PPAs: +# add-apt-repository -y ppa:icpc-latam/maratona-linux +# add-apt-repository -y ppa:icpc-latam/unstable +# Please use only the STABLE one when officially releasing! + echo "*** Populating $homejail" cat <<EOF > /home/bocajail/tmp/populate.sh #!/bin/bash @@ -117,21 +146,22 @@ echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen /usr/sbin/locale-gen /usr/sbin/update-locale apt-get -y update -apt-get -y install software-properties-common +apt-get -y dist-upgrade --purge +apt-get -y install software-properties-common --no-install-recommends add-apt-repository -y ppa:icpc-latam/maratona-linux apt-get -y update -apt-get -y upgrade apt-get -y install maratona-linguagens --no-install-recommends --allow-unauthenticated +apt-get autoremove --purge apt-get -y clean umount /proc EOF mkdir -p /bocajail/usr/bin -[ -x /usr/bin/safeexec ] && cp -a /usr/bin/safeexec /bocajail/usr/bin/ -cp -f /etc/apt/sources.list $homejail/etc/apt/ +[[ -x /usr/bin/safeexec ]] && cp -a /usr/bin/safeexec /bocajail/usr/bin/ +cp -f /etc/apt/sources.list "${homejail}/etc/apt/" chmod 755 /home/bocajail/tmp/populate.sh export LC_ALL=en_US.UTF-8 -cd / ; chroot $homejail /tmp/populate.sh +cd / ; chroot "$homejail" /tmp/populate.sh |