Skip to content

Instantly share code, notes, and snippets.

@foundObjects
Last active June 17, 2020 15:44
Show Gist options
  • Save foundObjects/2dce45783e537298bc37dc73f6aee76f to your computer and use it in GitHub Desktop.
Save foundObjects/2dce45783e537298bc37dc73f6aee76f to your computer and use it in GitHub Desktop.
PVE apt header package retention
#! /bin/sh
set -e
. /usr/share/pve-kernel-helper/scripts/functions
eval "$(apt-config shell APT_CONF_D Dir::Etc::parts/d)"
test -n "${APT_CONF_D}" || APT_CONF_D="/etc/apt/apt.conf.d"
config_file="${APT_CONF_D}/76pveconf"
generate_apt_config() {
kernels="$(kernel_keep_versions "$@")"
cat <<- EOF
// DO NOT EDIT! File autogenerated by $0
APT::NeverAutoRemove
{
EOF
for kernel in $kernels; do
escaped_kver="$(echo "$kernel" | sed -e 's#\([\.\+]\)#\\\1#g')"
echo " \"^pve-kernel-${escaped_kver}$\";"
done
echo '};'
if [ "${APT_AUTO_REMOVAL_KERNELS_DEBUG:-false}" = 'true' ]; then
cat <<-EOF
/* Debug information:
# dpkg list:
$(dpkg -l | grep -F 'pve-kernel' || true)
# list of installed kernel packages:
$kernels
*/
EOF
fi
}
generate_apt_config "$@" > "${config_file}.dpkg-new"
mv -f "${config_file}.dpkg-new" "$config_file"
chmod 444 "$config_file"
#! /bin/sh
set -e
# autoremove override for pve-headers packages; retain the same headers as installed
# kernels so we don't break dkms modules
#
# place this file in /etc/kernel/postrm.d/ and postinst.d/
. /usr/share/pve-kernel-helper/scripts/functions
eval "$(apt-config shell APT_CONF_D Dir::Etc::parts/d)"
test -n "${APT_CONF_D}" || APT_CONF_D="/etc/apt/apt.conf.d"
config_file="${APT_CONF_D}/86pve-headers-override"
generate_apt_config() {
kernels="$(kernel_keep_versions "$@")"
cat <<- EOF
// DO NOT EDIT! File autogenerated by $0
APT::NeverAutoRemove
{
EOF
for kernel in $kernels; do
escaped_kver="$(echo "$kernel" | sed -e 's#\([\.\+]\)#\\\1#g')"
echo " \"^pve-headers-${escaped_kver}$\";"
done
echo '};'
if [ "${APT_AUTO_REMOVAL_KERNELS_DEBUG:-false}" = 'true' ]; then
cat <<-EOF
/* Debug information:
# dpkg list:
$(dpkg -l | grep -F 'pve-headers' || true)
# list of installed kernel header packages:
$kernels
*/
EOF
fi
}
generate_apt_config "$@" > "${config_file}.dpkg-new"
mv -f "${config_file}.dpkg-new" "$config_file"
chmod 444 "$config_file"
#! /bin/sh
set -e
. /usr/share/pve-kernel-helper/scripts/functions
eval "$(apt-config shell APT_CONF_D Dir::Etc::parts/d)"
test -n "${APT_CONF_D}" || APT_CONF_D="/etc/apt/apt.conf.d"
config_file="${APT_CONF_D}/76pveconf"
generate_apt_config() {
kernels="$(kernel_keep_versions "$@")"
cat <<- EOF
// DO NOT EDIT! File autogenerated by $0
APT::NeverAutoRemove
{
EOF
for kernel in $kernels; do
escaped_kver="$(echo "$kernel" | sed -e 's#\([\.\+]\)#\\\1#g')"
echo " \"^pve-kernel-${escaped_kver}$\";"
done
echo '};'
if [ "${APT_AUTO_REMOVAL_KERNELS_DEBUG:-false}" = 'true' ]; then
cat <<-EOF
/* Debug information:
# dpkg list:
$(dpkg -l | grep -F 'pve-kernel' || true)
# list of installed kernel packages:
$kernels
*/
EOF
fi
}
generate_apt_config "$@" > "${config_file}.dpkg-new"
mv -f "${config_file}.dpkg-new" "$config_file"
chmod 444 "$config_file"
#! /bin/sh
set -e
# autoremove override for pve-headers packages; retain the same headers as installed
# kernels so we don't break dkms modules
#
# place this file in /etc/kernel/postrm.d/ and postinst.d/
. /usr/share/pve-kernel-helper/scripts/functions
eval "$(apt-config shell APT_CONF_D Dir::Etc::parts/d)"
test -n "${APT_CONF_D}" || APT_CONF_D="/etc/apt/apt.conf.d"
config_file="${APT_CONF_D}/86pve-headers-override"
generate_apt_config() {
kernels="$(kernel_keep_versions "$@")"
cat <<- EOF
// DO NOT EDIT! File autogenerated by $0
APT::NeverAutoRemove
{
EOF
for kernel in $kernels; do
escaped_kver="$(echo "$kernel" | sed -e 's#\([\.\+]\)#\\\1#g')"
echo " \"^pve-headers-${escaped_kver}$\";"
done
echo '};'
if [ "${APT_AUTO_REMOVAL_KERNELS_DEBUG:-false}" = 'true' ]; then
cat <<-EOF
/* Debug information:
# dpkg list:
$(dpkg -l | grep -F 'pve-headers' || true)
# list of installed kernel header packages:
$kernels
*/
EOF
fi
}
generate_apt_config "$@" > "${config_file}.dpkg-new"
mv -f "${config_file}.dpkg-new" "$config_file"
chmod 444 "$config_file"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment