J'ai une question curieuse à propos de Update Manager et de la commande de terminal do-release-upgrade
en tant qu'utilisateur, j'ai remarqué que de nombreuses personnes posent des questions lors de leur exécution:
do-release-upgrade -d
et il renvoie:
Checking for a new Ubuntu release
Get:1 Upgrade tool signature[198B]
Get:2 Upgrade tool[1,147kB]
Fetched 1,148 kB in 0s(0B/s)
authenticate 'utopic.tar.gz' against 'utopic.tar.gz.gpg'
extracting 'utopic.tar.gz'
mais lorsque vous exécutez:
do-release-upgrade -c
il renvoie:
Checking for a new Ubuntu release
No new release found
Et si je vais dans Software & Updates -> Updates -> Notify me of a new Ubuntu version and set it to For any new version
do-release-upgrade -d
retournera:
Checking for a new Ubuntu release
Get:1 Upgrade tool signature[198B]
Get:2 Upgrade tool[1,147kB]
Fetched 1,148 kB in 0s(0B/s)
authenticate 'utopic.tar.gz' against 'utopic.tar.gz.gpg'
extracting 'utopic.tar.gz'
et il en sera de même:
do-release-upgrade -c
retournera:
Checking for a new Ubuntu release
New release '14.10' available.
Run 'do-release-upgrade' to upgrade to it.
Et si je le mets à Never
les deux commandes do-release-upgrade -d
et do-release-upgrade -c
renverra:
Checking for a new Ubuntu release
No new release found
Mais dans Software & Updates, je mets toutes les autres mises à jour à Never
m'informer comme je le fais dist-upgrade
via le terminal uniquement et il fonctionne en effet, il met à jour toutes les mises à jour et correctifs de sécurité disponibles.
Pourquoi alors cela ne fonctionne pas avec do-release-upgrade
? Ne devrait-il pas faire ce que je lui dis de faire malgré ce qui est défini dans Software & Updates? Ou est-il simplement conçu de cette façon?
Modifier
Une petite édition à la question pour clarifier un peu plus, je ne veux pas recevoir de notifications graphiques sur les nouvelles mises à jour ou versions disponibles ou quoi que ce soit, donc dans Software & Updates je mets les mises à jour et notifications à Never
parce que je J'aimerais le faire via le terminal et tout fonctionne sauf do-release-upgrade
Le do-release-upgrade
, le gestionnaire de mise à jour, le programme Sources de logiciels et le Centre logiciel partagent tous quelques bibliothèques et fichiers de configuration communs.
L'aspect particulier que vous regardez (la prochaine version d'Ubuntu pour laquelle vous vouliez être invité) est défini dans le fichier /etc/update-manager/release-upgrades
.
Vous pouvez le modifier et définir la valeur de l'option Prompt
. Citant les commentaires:
Default prompting behavior, valid options:
never - Never check for a new release.
normal - Check to see if a new release is available. If more than one new
release is found, the release upgrader will attempt to upgrade to
the release that immediately succeeds the currently-running
release.
lts - Check to see if a new LTS release is available. The upgrader
will attempt to upgrade to the first LTS release available after
the currently-running one. Note that this option should not be
used if the currently-running release is not itself an LTS
release, since in that case the upgrader won't be able to
determine if a newer release is available.
L'interface graphique et la ligne de commande dérivent ces paramètres (car finalement, ils finissent tous par utiliser la classe Python _ UpdateManager.Core.MetaRelease.MetaReleaseCore
, dans lequel:
# some constants
CONF = "/etc/update-manager/release-upgrades"
CONF_METARELEASE = "/etc/update-manager/meta-release"
Et
if parser.has_option("DEFAULT", "Prompt"):
type = parser.get("DEFAULT", "Prompt").lower()
if (type == "never" or type == "no"):
# nothing to do for this object
# FIXME: what about no longer supported?
self.downloaded.set()
return
Ainsi, c'est ainsi qu'il a été codé, sans aucune option pour remplacer le fichier de configuration.
Par conséquent, si vous souhaitez désactiver la notification de l'interface graphique, mais pouvoir utiliser do-release-upgrade
, vous devrez éditer le fichier de configuration. Cela peut être fait assez facilement (en remplaçant lts
par normal
, si vous préférez):
sed -i.bak 's/^Prompt=.*$/Prompt=lts/' /etc/update-manager/release-upgrades
do-release-upgrade -c
sed -i.bak 's/^Prompt=.*$/Prompt=never/' /etc/update-manager/release-upgrades
Notez qu'il semble y avoir un répertoire pour la configuration extensible (/etc/update-manager/release-upgrades.d
), mais il semble être inutilisé pour l'instant.
Celui-ci est la meilleure explication compréhensible pour moi maintenant, par exemple lorsque dans Logiciels et mises à jour -> Mises à jour -> Me notifier d'une nouvelle version d'Ubuntu et la définir sur for long-term support versions
, la sortie de do-release-upgrade -d
sera> = true, comme do-release-upgrade -d
signifie:
Check if upgrading to the latest devel (*development) release is possible
Ce serait la version> = (supérieure) que vous utilisez actuellement, mais pas la version LTS plutôt que celle en cours de développement (instable).
Mais do-release-upgrade -c
Sera> = faux tel qu'il signifie:
Check only if a new distribution release is available
and report the result via the exit code
Et ce serait la version LTS (stable). Et cela ne fonctionnera que s'il existe une version LTS supérieure à celle que vous utilisez actuellement.
Mais si vous définissez dans Software & Updates -> Updates -> Notify me of a new Ubuntu version for any versions
Et cela signifierait pour les versions stables et instables (devel). Les deux commandes do-release-upgrade -d
Et do-release-upgrade -c
Ou -c -d
Renverront alors ensemble. Dans ce cas, -c
Peut même être supprimé car -d
Le ferait fonctionner pour les deux, le cas échéant.
Et dans un cas, si les notifications sont définies sur Never
, les deux commandes renvoient un résultat négatif. Cela pourrait même être appelé une fonction de blocage comme si vous ne pouviez pas mettre à niveau la version vers une nouvelle version en utilisant -c
Ou -d
Dans la commande do-release-upgrade
. J'excepte ceci car il a probablement été conçu de cette façon.
P.S.
@ mur la réponse me convient encore mieux que la mienne. Merci :). Mais je vais également laisser celui-ci dans un souci d'itération.