|
53 | 53 | ]
|
54 | 54 |
|
55 | 55 | # Packages to be installed in the base container
|
56 |
| -packages = """ |
57 |
| -automake |
58 |
| -bison |
59 |
| -build-essential |
60 |
| -dvipng |
61 |
| -epstool |
62 |
| -fig2dev |
63 |
| -gettext |
64 |
| -gfortran |
65 |
| -git |
66 |
| -gnuplot |
67 |
| -imagemagick |
68 |
| -ipset |
69 |
| -iptables |
70 |
| -libcairo2-dev |
71 |
| -libffi-dev |
72 |
| -libfile-slurp-perl |
73 |
| -libisl-dev |
74 |
| -libjson-perl |
75 |
| -libmongodb-perl |
76 |
| -libopenmpi3 |
77 |
| -libperl-dev |
78 |
| -libproj-dev |
79 |
| -libsnappy-dev |
80 |
| -libsvg-perl |
81 |
| -libsystemd-dev |
82 |
| -libterm-readkey-perl |
83 |
| -libterm-readline-gnu-perl |
84 |
| -libxml-libxslt-perl |
85 |
| -libxml-writer-perl |
86 |
| -m4 |
87 |
| -nginx |
88 |
| -ninja-build |
89 |
| -npm |
90 |
| -pandoc |
91 |
| -pari-gp2c |
92 |
| -php8.1-fpm |
93 |
| -proj-bin |
94 |
| -python3-requests |
95 |
| -rsyslog-relp |
96 |
| -ssh |
97 |
| -texlive |
98 |
| -texlive-latex-extra |
99 |
| -tk-dev |
100 |
| -unattended-upgrades |
101 |
| -unzip |
102 |
| -wget |
103 |
| -""".split() |
104 |
| -# Due to (other's) bugs, some packages cannot be installed during installation. |
105 |
| -# Let's also use it to separate "standard tools" and "extra stuff". |
106 |
| -packages_later = """ |
107 |
| -ffmpeg |
108 |
| -graphviz |
109 |
| -libgeos-dev |
110 |
| -libhdf5-dev |
111 |
| -libnetcdf-dev |
112 |
| -libopenmpi-dev |
113 |
| -libxml2-dev |
114 |
| -libxslt1-dev |
115 |
| -macaulay2 |
116 |
| -octave |
117 |
| -octave-econometrics |
118 |
| -octave-statistics |
119 |
| -""".split() |
| 56 | +system_packages = [ |
| 57 | +# SageMath prerequisites as of Sage 9.7 |
| 58 | +'bc', |
| 59 | +'binutils', |
| 60 | +'bzip2', |
| 61 | +'ca-certificates', |
| 62 | +'cliquer', |
| 63 | +'cmake', |
| 64 | +'curl', |
| 65 | +'ecl', |
| 66 | +'eclib-tools', |
| 67 | +'fflas-ffpack', |
| 68 | +'flintqs', |
| 69 | +'g++', |
| 70 | +'gcc', |
| 71 | +'gengetopt', |
| 72 | +'gfan', |
| 73 | +'gfortran', |
| 74 | +'glpk-utils', |
| 75 | +'gmp-ecm', |
| 76 | +'lcalc', |
| 77 | +'libatomic-ops-dev', |
| 78 | +'libboost-dev', |
| 79 | +'libbraiding-dev', |
| 80 | +'libbrial-dev', |
| 81 | +'libbrial-groebner-dev', |
| 82 | +'libbz2-dev', |
| 83 | +'libcdd-dev', |
| 84 | +'libcdd-tools', |
| 85 | +'libcliquer-dev', |
| 86 | +'libcurl4-openssl-dev', |
| 87 | +'libec-dev', |
| 88 | +'libecm-dev', |
| 89 | +'libffi-dev', |
| 90 | +'libflint-arb-dev', |
| 91 | +'libflint-dev', |
| 92 | +'libfplll-dev', |
| 93 | +'libfreetype6-dev', |
| 94 | +'libgc-dev', |
| 95 | +'libgd-dev', |
| 96 | +'libgf2x-dev', |
| 97 | +'libgiac-dev', |
| 98 | +'libgivaro-dev', |
| 99 | +'libglpk-dev', |
| 100 | +'libgmp-dev', |
| 101 | +'libgsl-dev', |
| 102 | +'libhomfly-dev', |
| 103 | +'libiml-dev', |
| 104 | +'liblfunction-dev', |
| 105 | +'liblinbox-dev', |
| 106 | +'liblrcalc-dev', |
| 107 | +'liblzma-dev', |
| 108 | +'libm4ri-dev', |
| 109 | +'libm4rie-dev', |
| 110 | +'libmpc-dev', |
| 111 | +'libmpfi-dev', |
| 112 | +'libmpfr-dev', |
| 113 | +'libncurses5-dev', |
| 114 | +'libntl-dev', |
| 115 | +'libopenblas-dev', |
| 116 | +'libpari-dev', |
| 117 | +'libpcre3-dev', |
| 118 | +'libplanarity-dev', |
| 119 | +'libppl-dev', |
| 120 | +'libprimesieve-dev', |
| 121 | +'libpython3-dev', |
| 122 | +'libqhull-dev', |
| 123 | +'libreadline-dev', |
| 124 | +'librw-dev', |
| 125 | +'libsingular4-dev', |
| 126 | +'libsqlite3-dev', |
| 127 | +'libssl-dev', |
| 128 | +'libsuitesparse-dev', |
| 129 | +'libsymmetrica2-dev', |
| 130 | +'libz-dev', |
| 131 | +'libzmq3-dev', |
| 132 | +'libzn-poly-dev', |
| 133 | +'m4', |
| 134 | +'make', |
| 135 | +'nauty', |
| 136 | +'ninja-build', |
| 137 | +'openssl', |
| 138 | +'palp', |
| 139 | +'pari-doc', |
| 140 | +'pari-elldata', |
| 141 | +'pari-galdata', |
| 142 | +'pari-galpol', |
| 143 | +'pari-gp2c', |
| 144 | +'pari-seadata', |
| 145 | +'patch', |
| 146 | +'perl', |
| 147 | +'pkg-config', |
| 148 | +'planarity', |
| 149 | +'ppl-dev', |
| 150 | +'python3', |
| 151 | +'python3-distutils', |
| 152 | +'python3-venv', |
| 153 | +'r-base-dev', |
| 154 | +'r-cran-lattice', |
| 155 | +'singular', |
| 156 | +'singular-doc', |
| 157 | +'sqlite3', |
| 158 | +'sympow', |
| 159 | +'tachyon', |
| 160 | +'tar', |
| 161 | +'tox', |
| 162 | +'xcas', |
| 163 | +'xz-utils', |
| 164 | +# SageMath development |
| 165 | +'autoconf', |
| 166 | +'automake', |
| 167 | +'git', |
| 168 | +'gpgconf', |
| 169 | +'libtool', |
| 170 | +'openssh', |
| 171 | +'openssh-client', |
| 172 | +'pkg-config', |
| 173 | +# SageMath recommendations |
| 174 | +'default-jdk', |
| 175 | +'dvipng', |
| 176 | +'ffmpeg', |
| 177 | +'imagemagick', |
| 178 | +'latexmk', |
| 179 | +'libavdevice-dev', |
| 180 | +'pandoc', |
| 181 | +'tex-gyre', |
| 182 | +'texlive-fonts-recommended', |
| 183 | +'texlive-lang-cyrillic', |
| 184 | +'texlive-lang-english', |
| 185 | +'texlive-lang-european', |
| 186 | +'texlive-lang-french', |
| 187 | +'texlive-lang-german', |
| 188 | +'texlive-lang-italian', |
| 189 | +'texlive-lang-japanese', |
| 190 | +'texlive-lang-polish', |
| 191 | +'texlive-lang-portuguese', |
| 192 | +'texlive-lang-spanish', |
| 193 | +'texlive-latex-extra', |
| 194 | +'texlive-xetex', |
| 195 | +# SageMath optional |
| 196 | +'4ti2', |
| 197 | +'clang', |
| 198 | +'coinor-cbc', |
| 199 | +'coinor-libcbc-dev', |
| 200 | +'graphviz', |
| 201 | +'libfile-slurp-perl', |
| 202 | +'libgraphviz-dev', |
| 203 | +'libigraph-dev', |
| 204 | +'libisl-dev', |
| 205 | +'libjson-perl', |
| 206 | +'libmongodb-perl', |
| 207 | +'libnauty-dev', |
| 208 | +'libperl-dev', |
| 209 | +'libpolymake-dev', |
| 210 | +'libsvg-perl', |
| 211 | +'libterm-readkey-perl', |
| 212 | +'libterm-readline-gnu-perl', |
| 213 | +'libxml-libxslt-perl', |
| 214 | +'libxml-writer-perl', |
| 215 | +'libxml2-dev', |
| 216 | +'lrslib', |
| 217 | +'pari-gp2c', |
| 218 | +'pdf2svg', |
| 219 | +'polymake', |
| 220 | +'texinfo', |
| 221 | +# SageMathCell |
| 222 | +'bison', |
| 223 | +'build-essential', |
| 224 | +'epstool', |
| 225 | +'fig2dev', |
| 226 | +'gettext', |
| 227 | +'gnuplot', |
| 228 | +'ipset', |
| 229 | +'iptables', |
| 230 | +'libcairo2-dev', |
| 231 | +'libgeos-dev', |
| 232 | +'libhdf5-dev', |
| 233 | +'libnetcdf-dev', |
| 234 | +'libopenmpi-dev', |
| 235 | +'libopenmpi3', |
| 236 | +'libproj-dev', |
| 237 | +'libsnappy-dev', |
| 238 | +'libsystemd-dev', |
| 239 | +'libxslt1-dev', |
| 240 | +'macaulay2', |
| 241 | +'nginx', |
| 242 | +'npm', |
| 243 | +'octave', |
| 244 | +'octave-econometrics', |
| 245 | +'octave-statistics', |
| 246 | +'php8.1-fpm', |
| 247 | +'proj-bin', |
| 248 | +'python3-requests', |
| 249 | +'rsyslog-relp', |
| 250 | +'ssh', |
| 251 | +'texlive', |
| 252 | +'tk-dev', |
| 253 | +'tmpreaper', |
| 254 | +'unattended-upgrades', |
| 255 | +'unzip', |
| 256 | +'wget', |
| 257 | +] |
120 | 258 |
|
121 | 259 | # Optional Sage packages to be installed
|
122 | 260 | sage_optional_packages = [
|
@@ -699,15 +837,12 @@ def create(self):
|
699 | 837 | os.environ.pop("HTTP_PROXY")
|
700 | 838 |
|
701 | 839 | self.update()
|
702 |
| - log.info("installing packages") |
703 |
| - self.inside("apt install -y " + " ".join(packages)) |
704 | 840 | self.inside("/usr/sbin/deluser ubuntu --remove-home")
|
705 |
| - log.info("installing later packages") |
706 |
| - self.inside("apt install -y " + " ".join(packages_later)) |
707 | 841 | # Need to preseed or there will be a dialog
|
708 | 842 | self.inside(communicate, "/usr/bin/debconf-set-selections",
|
709 | 843 | "tmpreaper tmpreaper/readsecurity note")
|
710 |
| - self.inside("apt install -y tmpreaper") |
| 844 | + log.info("installing packages") |
| 845 | + self.inside("apt install -y " + " ".join(system_packages)) |
711 | 846 |
|
712 | 847 | def destroy(self):
|
713 | 848 | r"""
|
|
0 commit comments