[pve-devel] [PATCH ifupdown2] debian: postinst: ensure /etc/iproute2/rt_tables.d exists

Friedrich Weber f.weber at proxmox.com
Tue Jul 8 18:43:44 CEST 2025


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"
-- 
2.47.2





More information about the pve-devel mailing list