[pve-devel] [PATCH ifupdown2] debian: postinst: ensure /etc/iproute2/rt_tables.d exists
Michael Köppl
m.koeppl at proxmox.com
Tue Jul 8 19:32:59 CEST 2025
Since I was just not encountering this problem (again), gave this patch
a quick spin on my Trixie dev VM. Was able to `ifreload -a` without
warnings again and apply networking changes through the UI without
encountering errors in the task log. As before, any changes are applied
successfully, just without the warnings.
Tested-by: Michael Köppl <m.koeppl at proxmox.com>
On 7/8/25 18:43, Friedrich Weber wrote:
> When upgrading to Debian Trixie, iproute2 is also upgraded. Its
> postinst deletes /etc/iproute2/rt_tables.d if it is currently empty
> (or only contains a README file) [1]. After that, ifreload -a will
> always print a warning:
>
>> error: [Errno 2] No such file or directory: '/etc/iproute2/rt_tables.d/ifupdown2_vrf_map.conf'
>
> because it cannot create the file if the parent directory does not
> exist.
>
> To avoid that, create the directory in ifupdown2's postinst if it
> does not exist yet.
>
> Commit b115f7f ("add /etc/iproute2/rt_tables.d/ to managed
> directories") already added the directory to ifupdown2.dirs, but this
> does not seem to be effective, due to the following sequence of events
> on upgrade:
>
> 1) iproute2 is unpacked
> 2) ifupdown2 is unpacked. The directory still exists, so the
> ifupdown2.dirs entry does not have an effect
> 3) ifroute2 is set up, and its postinst empties and removes the
> directory
> 4) ifupdown2 is set up
>
> [1] https://sources.debian.org/src/iproute2/6.15.0-1/debian/iproute2.postinst/
>
> Signed-off-by: Friedrich Weber <f.weber at proxmox.com>
> ---
>
> Notes:
> Please check the reasoning for plausibility, my understanding of dpkg
> is very basic, this is just what I could infer from running strace on
> the upgrade.
>
> An alternative solution would be to patch ifupdown2 itself to create
> the directory (if needed) before trying to write to the
> ifupdown2_vrf_map.conf file.
>
> debian/ifupdown2.postinst | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/debian/ifupdown2.postinst b/debian/ifupdown2.postinst
> index f9a719c..13cc987 100644
> --- a/debian/ifupdown2.postinst
> +++ b/debian/ifupdown2.postinst
> @@ -111,6 +111,9 @@ case "$1" in
> process_udev
> chmod +x /usr/share/ifupdown2/__main__.py
> postinst_remove_diverts
> + if [ ! -d /etc/iproute2/rt_tables.d ]; then
> + mkdir /etc/iproute2/rt_tables.d || echo "could not create /etc/iproute2/rt_tables.d"
> + fi
> if [ -z "$2" ] && [ ! -e /proxmox_install_mode ]; then
> proxmox_compatibility
> echo "Reloading network config on first install"
More information about the pve-devel
mailing list