ITADN

podman quadlet install -r causes broken generated files

#29004Opensimonbrauner 创建于 2026-06-22
kind/bug
S
simonbraunercommented
### Issue Description Running `podman quadlet install -r` a couple of times may produce broken systemd unit. ### Steps to reproduce the issue Example quadlet: ```ini [Container] Image=docker.io/library/postgres:17-alpine ContainerName=pg17 PublishPort=54317:5432 Environment=POSTGRES_PASSWORD=postgres [Service] Restart=always [Install] WantedBy=default.target ``` Run the `podman quadlet install -r` command a couple of times and it will show this log ```shell Jun 22 13:41:09 sbrauner-thinkpadt14gen6.tpb.csb systemd[3531]: Reloading finished in 160 ms. Jun 22 13:41:09 sbrauner-thinkpadt14gen6.tpb.csb systemd[3531]: /run/user/4242740/systemd/generator/A.service:10: Invalid section header '[Service][Restart=aRestarEnvironmeEnvironment=PODMAN_SYSTEMDKillMode=KillMoExecStop=ExecStop=/usr/bin/podman rm -v -fExecStopPExecStopPost=-/usr/bin/podman rm -v -fDelegate=DeleType=notiTypNotifyAccNotifyAcSyslogIdeSyslogIdentExecStartExecStart=/usr/bin/podman run --name pg17 --replace --rm --cgroups=split --sdnotify=conmon -d --publish 54317:5432 --env POSTGRES_PASSWORD=postgres docker.io/library/postgres:1' Jun 22 13:41:09 sbrauner-thinkpadt14gen6.tpb.csb systemd[50670]: quadlet-generator[50670]: Failed creating symlink /run/user/4242740/systemd/generator/default.target.wants/A.service: symlink ../A.service /run/user/4242740/systemd/generator/default.target.wants/A.service: file exists Jun 22 13:41:08 sbrauner-thinkpadt14gen6.tpb.csb systemd[3531]: Reloading... Jun 22 13:41:08 sbrauner-thinkpadt14gen6.tpb.csb systemd[3531]: Reload requested from client PID 50649 ('podman') (unit ptyxis-spawn-4148ae39-f8db-424a-a435-119e2e6a24d1.scope)... ``` And the output file will be corrupted ```ini # Automatically generated by /usr/lib/systemd/user-generators/podman-user-generator # [X-Container] Image=docker.io/library/postgres:17-alpine ContainerName=pg17 PublishPort=54317:5432 Environment=POSTGRES_PASSWORD=postgres [Service][Restart=aRestarEnvironmeEnvironment=PODMAN_SYSTEMDKillMode=KillMoExecStop=ExecStop=/usr/bin/podman rm -v -fExecStopPExecStopPost=-/usr/bin/podman rm -v -fDelegate=DeleType=notiTypNotifyAccNotifyAcSyslogIdeSyslogIdentExecStartExecStart=/usr/bin/podman run --name pg17 --replace --rm --cgroups=split --sdnotify=conmon -d --publish 54317:5432 --env POSTGRES_PASSWORD=postgres docker.io/library/postgres:1 [Install][WantedBy=WantedBy=defaul [Unit] Wants=podWants=podman-user-wait-network-onlineAfter=podAfter=podman-user-wait-network-onlineSourcePatSourcePath=/home/sbrauner/.config/containers/systemd/A.cRequiresMRequiresMountsFor=%t/containers ``` ### Describe the results you received ```shell $ cat /run/user/4242740/systemd/generator/default.target.wants/A.service # Automatically generated by /usr/lib/systemd/user-generators/podman-user-generator # [X-Container] Image=docker.io/library/postgres:17-alpine ContainerName=pg17 PublishPort=54317:5432 Environment=POSTGRES_PASSWORD=postgres [Service][Restart=aRestarEnvironmeEnvironment=PODMAN_SYSTEMDKillMode=KillMoExecStop=ExecStop=/usr/bin/podman rm -v -fExecStopPExecStopPost=-/usr/bin/podman rm -v -fDelegate=DeleType=notiTypNotifyAccNotifyAcSyslogIdeSyslogIdentExecStartExecStart=/usr/bin/podman run --name pg17 --replace --rm --cgroups=split --sdnotify=conmon -d --publish 54317:5432 --env POSTGRES_PASSWORD=postgres docker.io/library/postgres:1 [Install][WantedBy=WantedBy=defaul [Unit] Wants=podWants=podman-user-wait-network-onlineAfter=podAfter=podman-user-wait-network-onlineSourcePatSourcePath=/home/sbrauner/.config/containers/systemd/A.cRequiresMRequiresMountsFor=%t/containers ``` ### Describe the results you expected ```shell $ cat /run/user/4242740/systemd/generator/default.target.wants/A.service # Automatically generated by /usr/lib/systemd/user-generators/podman-user-generator-original # [X-Container] Image=docker.io/library/postgres:17-alpine ContainerName=pg17 PublishPort=54317:5432 Environment=POSTGRES_PASSWORD=postgres [Service] Restart=always Environment=PODMAN_SYSTEMD_UNIT=%n KillMode=mixed ExecStop=/usr/bin/podman rm -v -f -i pg17 ExecStopPost=-/usr/bin/podman rm -v -f -i pg17 Delegate=yes Type=notify NotifyAccess=all SyslogIdentifier=%N ExecStart=/usr/bin/podman run --name pg17 --replace --rm --cgroups=split --sdnotify=conmon -d --publish 54317:5432 --env POSTGRES_PASSWORD=postgres docker.io/library/postgres:17-alpine [Install] WantedBy=default.target [Unit] Wants=podman-user-wait-network-online.service After=podman-user-wait-network-online.service SourcePath=/home/sbrauner/.config/containers/systemd/A.container RequiresMountsFor=%t/containers ``` ### podman info output ```yaml host: arch: amd64 buildahVersion: 1.44.0 cdiSpecDirs: - /etc/cdi - /var/run/cdi cgroupControllers: - cpu - io - memory - pids cgroupManager: systemd cgroupVersion: v2 conmon: package: conmon-2.2.1-2.fc44.x86_64 path: /usr/bin/conmon version: 'conmon version 2.2.1, commit: ' cpuUtilization: idlePercent: 94.05 systemPercent: 1.34 userPercent: 4.62 cpus: 14 databaseBackend: sqlite distribution: distribution: fedora variant: workstation version: "44" emulatedArchitectures: - linux/arm - linux/arm64 - linux/arm64be - linux/loong64 - linux/mips - linux/mips64 - linux/ppc - linux/ppc64 - linux/ppc64le - linux/riscv32 - linux/riscv64 - linux/s390x eventLogger: journald freeLocks: 2046 hostname: sbrauner-thinkpadt14gen6.tpb.csb idMappings: gidmap: - container_id: 0 host_id: 4242740 size: 1 - container_id: 1 host_id: 165536 size: 165536 uidmap: - container_id: 0 host_id: 4242740 size: 1 - container_id: 1 host_id: 165536 size: 165536 kernel: 7.0.12-201.fc44.x86_64 linkmode: dynamic logDriver: journald memFree: 9844387840 memTotal: 33030959104 networkBackend: netavark networkBackendInfo: backend: netavark defaultNetwork: podman dns: package: aardvark-dns-2.0.0-1.20260622092550897134.main.5.gda6856f.fc44.x86_64 path: /usr/libexec/podman/aardvark-dns version: aardvark-dns 2.0.0 package: netavark-2.0.0-1.20260619111836814958.main.5.g8a649cd1.fc44.x86_64 path: /usr/libexec/podman/netavark version: netavark 2.0.0 ociRuntime: name: crun package: crun-1.28-1.20260617092403306714.main.6.gfe55c271.fc44.x86_64 path: /usr/bin/crun version: |- crun version UNKNOWN commit: 2e9b9b5fa00dc90b9d80ce503b954f49f0f48b0a rundir: /run/user/4242740/crun spec: 1.0.0 +SYSTEMD +SELINUX +APPARMOR +CAP +SECCOMP +EBPF +CRIU +LIBKRUN +WASM:wasmedge +JSON_C os: linux pasta: executable: /usr/bin/pasta package: passt-0^20260611.ga9c61ff-1.fc44.x86_64 version: | pasta 0^20260611.ga9c61ff-1.fc44.x86_64 Copyright Red Hat GNU General Public License, version 2 or later <https://www.gnu.org/licenses/old-licenses/gpl-2.0.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. remoteSocket: exists: true path: /run/user/4242740/podman/podman.sock rootlessNetworkCmd: pasta rootlessPortForwarder: rootlessport security: apparmorEnabled: false capabilities: CAP_CHOWN,CAP_DAC_OVERRIDE,CAP_FOWNER,CAP_FSETID,CAP_KILL,CAP_NET_BIND_SERVICE,CAP_SETFCAP,CAP_SETGID,CAP_SETPCAP,CAP_SETUID,CAP_SYS_CHROOT rootless: true seccompEnabled: true seccompProfilePath: /usr/share/containers/seccomp.json selinuxEnabled: true serviceIsRemote: false swapFree: 8589930496 swapTotal: 8589930496 uptime: 1h 44m 51.00s (Approximately 0.04 days) variant: "" plugins: authorization: null log: - k8s-file - none - passthrough - journald network: - bridge - macvlan - ipvlan volume: - local registries: search: - registry.fedoraproject.org - registry.access.redhat.com - docker.io store: containerStore: number: 0 paused: 0 running: 0 stopped: 0 graphDriverName: overlay graphOptions: overlay.mountopt: nodev,metacopy=on graphRoot: /home/sbrauner/.local/share/containers/storage graphRootAllocated: 510389456896 graphRootUsed: 28615192576 graphStatus: Backing Filesystem: btrfs Native Overlay Diff: "false" Supports d_type: "true" Supports shifting: "false" Supports volatile: "true" Using metacopy: "false" imageCopyTmpDir: /var/tmp imageStore: number: 7 runRoot: /run/user/4242740/containers transientStore: false volumePath: /home/sbrauner/.local/share/containers/storage/volumes version: APIVersion: 6.1.0-dev BuildOrigin: 'Copr: rhcontainerbot/podman-next' Built: 1782086400 BuiltTime: Mon Jun 22 02:00:00 2026 GitCommit: c271cbdd1f92d4510810373cdc8a9cad61dc6d99 GoVersion: go1.26.4-X:nodwarf5 Os: linux OsArch: linux/amd64 Version: 6.1.0-dev ``` ### Podman in a container No ### Privileged Or Rootless Rootless ### Upstream Latest Release Yes ### Additional environment details Additional environment details ### Additional information Additional information like issue happens only occasionally or issue happens with a particular architecture or on a particular setting
1 条评论