J'ai un package qui sera mis à jour bientôt, mais je sais que certains users préfèreront utiliser l'ancien. C'est pourquoi j'ai utilisé une routine update-alternatives dans le package. Le problème est également que le nouveau package dépend d'un nouveau file d' unité .
Pour résumer,
dpkg -L mypackage-1.0
/opt/mypackage-1.0/binary
dpkg -L mypackage-service-1.0
/opt/mypackage-1.0/mypackage.service
Lors de l'installation, dpkg -i mypackage-1.0
fournira une seule alternative à mypackage et dpkg -i myservice-service-1.0
à myservice-service
Ceux-ci sont interdépendants.
dpkg -L mypackage-2.0
/opt/mypackage-2.0/binary
dpkg -L mypackage-service-2.0
/opt/mypackage-2.0/mypackage.service
Lors de l'installation, dpkg -i mypackage-2.0
fournira une nouvelle alternative ( /lib/systemd/system/mypackage.service -> /etc/alternatives/mypackage.service
) à mypackage et dpkg -i myservice-service-2.0
à mypackage-service
L'idée derrière est de permettre un basculement facile mais explicite entre les versions avec update-alternatives --config mypackage
à la update-alternatives --config mypackage
à update-alternatives --config mypackage
et update-alternatives --config mypackage-service
La première partie fonctionne bien, mais la deuxième partie s'est avérée être un problème. Il semble que je ne peux pas utiliser de liens symboliques pour les files unitaires (exactement ce que update-alternatives --install
fait).
J'utilise systemctl 215 sur Debian Jessie .
Je suppose que l'set pourrait être mis différemment à partir de zéro.
Jusqu'à ce que vous puissiez mettre à niveau vers une version plus récente de systemd
où le problème est résolu, vous devrez utiliser un autre mécanisme que update-alternatives
pour copyr et déplacer les files au lieu de les symlink
des symlink
version actuelle.