Welche Problemumgehung sollte verwendet werden, um das Problem zu beheben, dass systemctl sich weigert, Unit-Dateien zu aktivieren, die Symlinks sind?

7

Ich habe ein Paket, das bald aktualisiert wird, aber ich weiß, dass einige Benutzer es vorziehen werden, das alte zu verwenden. Aus diesem Grund habe ich im Paket eine Routine für Aktualisierungsalternativen verwendet . Das Problem ist auch , dass das neuere Paket auf einer neueren hängt Einheit Dateien.

Um zusammenzufassen,

dpkg -L mypackage-1.0
/opt/mypackage-1.0/binary
dpkg -L mypackage-service-1.0
/opt/mypackage-1.0/mypackage.service

Bei der Installation dpkg -i mypackage-1.0wird eine einzige Alternative bieten mypackage und dpkg -i myservice-service-1.0zu myservice-Service

Diese sind voneinander abhängig.

dpkg -L mypackage-2.0
/opt/mypackage-2.0/binary
dpkg -L mypackage-service-2.0
/opt/mypackage-2.0/mypackage.service

Bei der Installation dpkg -i mypackage-2.0wird eine neue Alternative ( /lib/systemd/system/mypackage.service -> /etc/alternatives/mypackage.service) zu mypackage und dpkg -i myservice-service-2.0zu mypackage-service bereitgestellt

Die Idee dahinter ist, einen einfachen und dennoch expliziten Wechsel zwischen Versionen mit update-alternatives --config mypackageund zu ermöglichenupdate-alternatives --config mypackage-service

Der erste Teil funktioniert gut, aber der zweite Teil stellte sich als Problem heraus. Es scheint, dass ich keine Symlinks zu Unit-Dateien verwenden kann (genau das, was update-alternatives --installfunktioniert).

Ich benutze systemctl 215 auf Debian Jessie .

Ich nehme an, das Ganze könnte von Grund auf anders angelegt werden.

staroselskii
quelle
1
Unterscheiden sich die beiden Einheiten in einer anderen Weise als dem Befehl, den sie starten? Könnten Sie nicht eine Einheit versenden, die die Alternative für die Binärdatei verwendet?
Stephen Kitt
Als Problem, das Sie mit Notizen verknüpft haben, wurde dieses Problem in einer neueren Version von behoben systemd.
Mark Stosberg

Antworten:

1

Bis Sie ein Upgrade auf eine neuere Version durchführen können, systemdbei der das Problem behoben ist, müssen Sie einen anderen Mechanismus verwenden update-alternatives, um Dateien zu kopieren und zu verschieben symlink, da das Verhalten von systemdmit der aktuellen Version nicht geändert werden kann.

Mark Stosberg
quelle