summaryrefslogtreecommitdiffstats
path: root/redhat/docker/pclinuxos.sh
blob: cd76895699c91b13344c68fbe625430a9dda0dc8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/bin/bash -ex

NAME="pclinuxos"
VERSION="${1:-2021}" # E.g: '2020'
IMAGE="${NAME}:${VERSION}"
INSTALLROOT="/dev/shm/${IMAGE}"

grep -qw "${INSTALLROOT}/dev" /proc/mounts && sudo umount "${INSTALLROOT}/dev"
sudo rm -rf "${INSTALLROOT}"
sudo mkdir -p "${INSTALLROOT}"

LANG=C

MIRROR="http://distrib-coffee.ipsl.jussieu.fr/pub/linux/pclinuxos/pclinuxos/apt/pclinuxos/64bit"

curl "${MIRROR}/RPMS.x86_64/" | sed -n "/a href/ s|.*href=\"\(.*\)\.rpm\".*|\1.rpm|p" >"/dev/shm/pkg.list"

mkdir -p "/dev/shm/packages"
while read pkg; do
  file="$(grep "^${pkg}-[0-9]" /dev/shm/pkg.list | sort | tail -n 1)"
  [ -z "${file}" ] && file="$(grep "^${pkg}[0-9]*-[0-9]" /dev/shm/pkg.list | sort | tail -n 1)"
  [ -z "${file}" ] && exit 1
  wget -nv -c "${MIRROR}/RPMS.x86_64/${file}" -O "/dev/shm/packages/${file}" || exit 2
done < "pclinuxos.pkg"

sudo mkdir -p "${INSTALLROOT}/dev"
sudo mount --bind "/dev" "${INSTALLROOT}/dev"

sudo mkdir -p "${INSTALLROOT}/var/lib/rpm"
sudo rpmdb --initdb --root="${INSTALLROOT}"

sudo rpm -Uvh --noscripts --root="${INSTALLROOT}" "/dev/shm/packages/"*".rpm"

# Fix lzma library location
sudo mv "${INSTALLROOT}/lib/liblzma."* "${INSTALLROOT}/lib64"

# Réinstall distro from inside chroot
sudo mount --bind "/dev/shm" "${INSTALLROOT}/dev/shm"
sudo rm -rf "${INSTALLROOT}/var/lib/rpm"
sudo chroot "${INSTALLROOT}" rpmdb --initdb
sudo chroot "${INSTALLROOT}" rpm -Uvh "/dev/shm/packages/"*".rpm"

sudo cp "/etc/resolv.conf" "${INSTALLROOT}/etc/resolv.conf"
sudo chroot "${INSTALLROOT}" apt-get -y update
sudo chroot "${INSTALLROOT}" apt-get -y upgrade

sudo umount "${INSTALLROOT}/dev/shm"
sudo umount "${INSTALLROOT}/dev"

docker rmi -f "${IMAGE}" || :
sudo tar -C "${INSTALLROOT}" -c . | docker import - "${IMAGE}"
docker run -ti --rm "${IMAGE}" ls -l
sudo rm -rf "${INSTALLROOT}"

docker image save "${IMAGE}" >"${IMAGE}.tar"
rm -f "${IMAGE}.tar.gz"
pigz -9 "${IMAGE}.tar"
mv -vf "${IMAGE}.tar.gz" "${HOME}/tde/obs"