aboutsummaryrefslogtreecommitdiff
path: root/tools/boca-createjail
diff options
context:
space:
mode:
Diffstat (limited to 'tools/boca-createjail')
-rwxr-xr-xtools/boca-createjail82
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