Skip to content

Commit 3da311b

Browse files
authored
Merge pull request #706 from AkihiroSuda/optimize-apt-get
cidata: Install packages at once
2 parents 68b3644 + 6a3bcb0 commit 3da311b

File tree

1 file changed

+64
-68
lines changed

1 file changed

+64
-68
lines changed

pkg/cidata/cidata.TEMPLATE.d/boot/30-install-packages.sh

Lines changed: 64 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,6 @@ update_fuse_conf() {
1010
fi
1111
}
1212

13-
dnf_install() {
14-
if grep -q "Oracle Linux Server release 8" /etc/system-release; then
15-
dnf install --repo ol8_baseos_latest --repo ol8_codeready_builder "$@"
16-
else
17-
dnf install "$@"
18-
fi
19-
}
20-
2113
INSTALL_IPTABLES=0
2214
if [ "${LIMA_CIDATA_CONTAINERD_SYSTEM}" = 1 ] || [ "${LIMA_CIDATA_CONTAINERD_USER}" = 1 ]; then
2315
INSTALL_IPTABLES=1
@@ -28,89 +20,93 @@ fi
2820

2921
# Install minimum dependencies
3022
if command -v apt-get >/dev/null 2>&1; then
31-
DEBIAN_FRONTEND=noninteractive
32-
export DEBIAN_FRONTEND
33-
apt-get update
34-
if [ "${LIMA_CIDATA_MOUNTS}" -gt 0 ]; then
35-
if ! command -v sshfs >/dev/null 2>&1; then
36-
apt-get install -y sshfs
37-
fi
23+
pkgs=""
24+
if [ "${LIMA_CIDATA_MOUNTS}" -gt 0 ] && ! command -v sshfs >/dev/null 2>&1; then
25+
pkgs="${pkgs} sshfs"
3826
fi
39-
if [ "${INSTALL_IPTABLES}" = 1 ]; then
40-
if [ ! -e /usr/sbin/iptables ]; then
41-
apt-get install -y iptables
42-
fi
27+
if [ "${INSTALL_IPTABLES}" = 1 ] && [ ! -e /usr/sbin/iptables ]; then
28+
pkgs="${pkgs} iptables"
4329
fi
44-
if [ "${LIMA_CIDATA_CONTAINERD_USER}" = 1 ]; then
45-
if ! command -v newuidmap >/dev/null 2>&1; then
46-
apt-get install -y uidmap fuse3 dbus-user-session
47-
fi
30+
if [ "${LIMA_CIDATA_CONTAINERD_USER}" = 1 ] && ! command -v newuidmap >/dev/null 2>&1; then
31+
pkgs="${pkgs} uidmap fuse3 dbus-user-session"
32+
fi
33+
if [ -n "${pkgs}" ]; then
34+
DEBIAN_FRONTEND=noninteractive
35+
export DEBIAN_FRONTEND
36+
apt-get update
37+
# shellcheck disable=SC2086
38+
apt-get install -y --no-upgrade --no-install-recommends -q ${pkgs}
4839
fi
4940
elif command -v dnf >/dev/null 2>&1; then
41+
pkgs=""
5042
if ! command -v tar >/dev/null 2>&1; then
51-
dnf_install -y tar
43+
pkgs="${pkgs} tar"
5244
fi
53-
if [ "${LIMA_CIDATA_MOUNTS}" -gt 0 ]; then
54-
if ! command -v sshfs >/dev/null 2>&1; then
55-
if grep -q "release 8" /etc/system-release && grep -qv "^Oracle" /etc/system-release; then
56-
dnf_install --enablerepo powertools -y fuse-sshfs
57-
else
58-
dnf_install -y fuse-sshfs
59-
fi
60-
fi
45+
if [ "${LIMA_CIDATA_MOUNTS}" -gt 0 ] && ! command -v sshfs >/dev/null 2>&1; then
46+
pkgs="${pkgs} fuse-sshfs"
6147
fi
62-
if [ "${INSTALL_IPTABLES}" = 1 ]; then
63-
if [ ! -e /usr/sbin/iptables ]; then
64-
dnf_install -y iptables
65-
fi
48+
if [ "${INSTALL_IPTABLES}" = 1 ] && [ ! -e /usr/sbin/iptables ]; then
49+
pkgs="${pkgs} iptables"
6650
fi
6751
if [ "${LIMA_CIDATA_CONTAINERD_USER}" = 1 ]; then
6852
if ! command -v newuidmap >/dev/null 2>&1; then
69-
dnf_install -y shadow-utils
53+
pkgs="${pkgs} shadow-utils"
7054
fi
7155
if ! command -v mount.fuse3 >/dev/null 2>&1; then
72-
dnf_install -y fuse3
56+
pkgs="${pkgs} fuse3"
7357
fi
74-
if [ ! -e /usr/bin/fusermount ]; then
75-
# Workaround for https://github.com/containerd/stargz-snapshotter/issues/340
76-
ln -s fusermount3 /usr/bin/fusermount
58+
fi
59+
if [ -n "${pkgs}" ]; then
60+
dnf_install_flags="-y --setopt=install_weak_deps=False"
61+
if grep -q "Oracle Linux Server release 8" /etc/system-release; then
62+
dnf_install_flags="${dnf_install_flags} --enablerepo ol8_baseos_latest --enablerepo ol8_codeready_builder"
63+
elif grep -q "release 8" /etc/system-release; then
64+
dnf_install_flags="${dnf_install_flags} --enablerepo powertools"
7765
fi
66+
# shellcheck disable=SC2086
67+
dnf install ${dnf_install_flags} ${pkgs}
68+
fi
69+
if [ "${LIMA_CIDATA_CONTAINERD_USER}" = 1 ] && [ ! -e /usr/bin/fusermount ]; then
70+
# Workaround for https://github.com/containerd/stargz-snapshotter/issues/340
71+
ln -s fusermount3 /usr/bin/fusermount
7872
fi
7973
elif command -v pacman >/dev/null 2>&1; then
80-
if [ "${LIMA_CIDATA_MOUNTS}" -gt 0 ]; then
81-
if ! command -v sshfs >/dev/null 2>&1; then
82-
pacman -Sy --noconfirm sshfs
83-
fi
74+
pkgs=""
75+
if [ "${LIMA_CIDATA_MOUNTS}" -gt 0 ] && ! command -v sshfs >/dev/null 2>&1; then
76+
pkgs="${pkgs} sshfs"
77+
fi
78+
# other dependencies are preinstalled on Arch Linux
79+
if [ -n "${pkgs}" ]; then
80+
# shellcheck disable=SC2086
81+
pacman -Sy --noconfirm ${pkgs}
8482
fi
85-
# other dependencies are preinstalled on Arch Linux (https://linuximages.de/openstack/arch/)
8683
elif command -v zypper >/dev/null 2>&1; then
87-
if [ "${LIMA_CIDATA_MOUNTS}" -gt 0 ]; then
88-
if ! command -v sshfs >/dev/null 2>&1; then
89-
zypper install -y sshfs
90-
fi
84+
pkgs=""
85+
if [ "${LIMA_CIDATA_MOUNTS}" -gt 0 ] && ! command -v sshfs >/dev/null 2>&1; then
86+
pkgs="${pkgs} sshfs"
9187
fi
92-
if [ "${INSTALL_IPTABLES}" = 1 ]; then
93-
if [ ! -e /usr/sbin/iptables ]; then
94-
zypper install -y iptables
95-
fi
88+
if [ "${INSTALL_IPTABLES}" = 1 ] && [ ! -e /usr/sbin/iptables ]; then
89+
pkgs="${pkgs} iptables"
9690
fi
97-
if [ "${LIMA_CIDATA_CONTAINERD_USER}" = 1 ]; then
98-
if ! command -v mount.fuse3 >/dev/null 2>&1; then
99-
zypper install -y fuse3
100-
fi
91+
if [ "${LIMA_CIDATA_CONTAINERD_USER}" = 1 ] && ! command -v mount.fuse3 >/dev/null 2>&1; then
92+
pkgs="${pkgs} fuse3"
93+
fi
94+
if [ -n "${pkgs}" ]; then
95+
# shellcheck disable=SC2086
96+
zypper --non-interactive install -y --no-recommends ${pkgs}
10197
fi
10298
elif command -v apk >/dev/null 2>&1; then
103-
if [ "${LIMA_CIDATA_MOUNTS}" -gt 0 ]; then
104-
if ! command -v sshfs >/dev/null 2>&1; then
105-
apk update
106-
apk add sshfs
107-
fi
99+
pkgs=""
100+
if [ "${LIMA_CIDATA_MOUNTS}" -gt 0 ] && ! command -v sshfs >/dev/null 2>&1; then
101+
pkgs="${pkgs} sshfs"
108102
fi
109-
if [ "${INSTALL_IPTABLES}" = 1 ]; then
110-
if ! command -v iptables >/dev/null 2>&1; then
111-
apk update
112-
apk add iptables
113-
fi
103+
if [ "${INSTALL_IPTABLES}" = 1 ] && ! command -v iptables >/dev/null 2>&1; then
104+
pkgs="${pkgs} iptables"
105+
fi
106+
if [ -n "${pkgs}" ]; then
107+
apk update
108+
# shellcheck disable=SC2086
109+
apk add ${pkgs}
114110
fi
115111
fi
116112

0 commit comments

Comments
 (0)