diff options
Diffstat (limited to 'selfstrap')
-rwxr-xr-x | selfstrap | 60 |
1 files changed, 29 insertions, 31 deletions
@@ -1,5 +1,6 @@ | |||
1 | #!/bin/bash | 1 | #!/bin/bash |
2 | set -e | 2 | set -e |
3 | set -o pipefail | ||
3 | 4 | ||
4 | debian_mirror=http://httpredir.debian.org/debian | 5 | debian_mirror=http://httpredir.debian.org/debian |
5 | debian_security_mirror=http://security.debian.org | 6 | debian_security_mirror=http://security.debian.org |
@@ -98,7 +99,6 @@ apt_() | |||
98 | 99 | ||
99 | set -- "$@" -o Apt::Install-Recommends=false | 100 | set -- "$@" -o Apt::Install-Recommends=false |
100 | set -- "$@" -o Apt::Architecture="$target_arch" | 101 | set -- "$@" -o Apt::Architecture="$target_arch" |
101 | set -- "$@" -o Apt::Default-Release="$target_release" | ||
102 | 102 | ||
103 | # Set default paths to within the created system. | 103 | # Set default paths to within the created system. |
104 | set -- "$@" -o Dir="$TARGET" | 104 | set -- "$@" -o Dir="$TARGET" |
@@ -125,7 +125,10 @@ apt_() | |||
125 | # Avoid deleting lists on the calling system. | 125 | # Avoid deleting lists on the calling system. |
126 | set -- "$@" -o APT::Get::List-Cleanup=false | 126 | set -- "$@" -o APT::Get::List-Cleanup=false |
127 | 127 | ||
128 | set -- apt-"${apt_cmd}" "$@" | 128 | case "${apt_cmd}" in |
129 | get | cache ) set -- apt-"${apt_cmd}" "$@" ;; | ||
130 | * ) set -- apt "${apt_cmd}" "$@" ;; | ||
131 | esac | ||
129 | if command -v eatmydata >/dev/null | 132 | if command -v eatmydata >/dev/null |
130 | then | 133 | then |
131 | set -- eatmydata -- "$@" | 134 | set -- eatmydata -- "$@" |
@@ -222,39 +225,29 @@ populate_rootfs() | |||
222 | install_devices | 225 | install_devices |
223 | } | 226 | } |
224 | 227 | ||
228 | bookworm_sources() | ||
229 | { | ||
230 | cat <<END | ||
231 | deb http://httpredir.debian.org/debian bookworm main contrib non-free non-free-firmware | ||
232 | deb http://httpredir.debian.org/debian-security/ bookworm-security main contrib non-free non-free-firmware | ||
233 | deb http://httpredir.debian.org/debian bookworm-updates main contrib non-free non-free-firmware | ||
234 | deb http://httpredir.debian.org/debian bookworm-backports main contrib non-free non-free-firmware | ||
235 | END | ||
236 | } | ||
237 | |||
225 | write_sources_list() | 238 | write_sources_list() |
226 | { | 239 | { |
227 | local dest="$TARGET"/etc/apt/sources.list | 240 | local dest="$TARGET"/etc/apt/sources.list |
241 | local dest_aptconf="$TARGET"/etc/apt/apt.conf.d/default-release | ||
228 | [ ! "$REWRITE_SOURCES_LIST" -a -e "$dest" ] && return | 242 | [ ! "$REWRITE_SOURCES_LIST" -a -e "$dest" ] && return |
229 | printf 'APT::Default-Release "%s";\n' "$target_release" > "$TARGET"/etc/apt/apt.conf.d/default-release | 243 | case "$target_release" |
230 | ( | 244 | in |
231 | if [ "$target_release" = stretch -o "$target_release" = buster ] | 245 | bookworm) |
232 | then | 246 | bookworm_sources | column -t > "$dest" |
233 | _updates='/updates ' | 247 | : > "$dest_aptconf" |
234 | else | 248 | ;; |
235 | _updates='-security' | 249 | *) "die unrecognized target release: $target_release" ;; |
236 | fi | 250 | esac |
237 | if [ "$target_release" ] | ||
238 | then | ||
239 | printf '%s\n' \ | ||
240 | "deb ${debian_mirror} ${target_release} main contrib non-free" \ | ||
241 | "deb ${debian_mirror} ${target_release}-backports main contrib non-free" \ | ||
242 | "deb ${debian_security_mirror} ${target_release}$_updates main contrib non-free" | ||
243 | fi | ||
244 | if apt-cache policy 2>/dev/null | grep -q ' sid/' | ||
245 | then | ||
246 | printf '%s\n' \ | ||
247 | "deb ${debian_mirror} sid main contrib non-free" | ||
248 | fi | ||
249 | if [ "$target_release" = stretch ] | ||
250 | then | ||
251 | printf '%s\n' \ | ||
252 | "deb ${debian_mirror} buster main contrib non-free" \ | ||
253 | "deb ${debian_mirror} buster-backports main contrib non-free" \ | ||
254 | "deb ${debian_security_mirror} buster/updates main contrib non-free" | ||
255 | |||
256 | fi | ||
257 | ) | column -t > "$dest" | ||
258 | } | 251 | } |
259 | 252 | ||
260 | parse_apt_simul_line() | 253 | parse_apt_simul_line() |
@@ -493,6 +486,11 @@ required_packages=$(required_packages) && [ "$required_packages" ] || die 'faile | |||
493 | export LC_ALL=C | 486 | export LC_ALL=C |
494 | export DEBIAN_FRONTEND=noninteractive | 487 | export DEBIAN_FRONTEND=noninteractive |
495 | 488 | ||
489 | if ! (apt_ policy | (! grep 990)) | ||
490 | then | ||
491 | die "apt policy looks wrong" | ||
492 | fi | ||
493 | |||
496 | if [ "$REAL_APT_INSTALL" ]; then | 494 | if [ "$REAL_APT_INSTALL" ]; then |
497 | # Some files need to be present before 'apt-get install' can install anything. | 495 | # Some files need to be present before 'apt-get install' can install anything. |
498 | # In particular: | 496 | # In particular: |