web-dev-qa-db-fra.com

Comment permettre aux mises à niveau sans assistance de démarrer même sur batterie?

Par défaut, les mises à niveau sans assistance sont déclenchées par anacron et ne démarrent que lorsqu'elles fonctionnent sur courant alternatif et ne démarrent pas lorsqu'elles fonctionnent sur batterie. Ce comportement est facile à comprendre pour éviter le gaspillage d'énergie. Quoi qu'il en soit, je souhaite permettre aux mises à niveau sans assistance de démarrer même si la machine fonctionne sur batterie, car certains de mes amis, dont moi, utilisent toujours leur ordinateur portable uniquement sur batterie. L'astuce suivante ne fonctionne pas sur 16.04:

Ensemble ANACRON_RUN_ON_BATTERY_POWER=yes dans /etc/default/anacron

Pour Ubuntu 16.04, existe-t-il un autre moyen de permettre à anacron, ou aux mises à niveau sans assistance, de commencer même à fonctionner sur batterie?

Les astuces sur le sujet suivant ne fonctionnent pas sur 16.04: exécuter anacron même sur batterie (ordinateur portable)

Modifier 1:

Comme demandé, j'ai utilisé la commande dpkg -L anacron | xargs grep -lwi power 2>/dev/null du commentaire de waltinator. Ensuite, je change comme ça, mais pas de changement, les mises à niveau sans assistance ne démarrent toujours pas sur batterie:

. Commentez les lignes suivantes dans /etc/init.d/anacron

# if test x"$ANACRON_RUN_ON_BATTERY_POWER" != x"yes" && test -x /usr/bin/on_ac_power
# then
#    /usr/bin/on_ac_power >/dev/null
#    if test $? -eq 1
#    then
#      log_progress_msg "deferred while on battery power"
#  log_end_msg 0
#  exit 0
#    fi
#fi
1
NicolasSmith

Après avoir cherché longtemps pour permettre à anacron de démarrer même sur batterie, j'abandonne. Parce que j'ai trouvé un script pour démarrer des mises à niveau sans assistance si la machine fonctionne sur batterie, ce que je voulais à l'origine.

Exécutez les mises à niveau sans assistance si la machine fonctionne sur batterie, parfaite pour un ordinateur portable. Script à exécuter lors de la connexion. Exigence:

  • Mises à niveau sans assistance installées et activées ( link )
  • Autoriser les mises à niveau sans assistance et la mise à jour apt à s'exécuter sans mot de passe Invite avec sudoers ( link )
  • Exécuter le script à la connexion ( link )

Script:

#!/bin/bash
sleep 6m
level=$(cat /sys/class/power_supply/BAT0/capacity)
status=$(cat /sys/class/power_supply/BAT0/status)
lastupdate=$(cat /var/log/unattended-upgrades/unattended-upgrades.log | grep `date -I` | tail -1)
# Exit if not discharging
if [ "${status}" != "Discharging" ]; then
  exit 0
fi
# Exit if updated today
if [ -n "$lastupdate" ]; then
  exit 0
fi
# Update
if [ "${level}" -ge 70 ]; then  
    Sudo apt update && Sudo unattended-upgrades
fi
0
NicolasSmith

Le 16.04, vous pouvez écrire un fichier systemd pour y parvenir. Créez le fichier /etc/systemd/system/anacron.service.d/override.conf avec le contenu suivant:

[Unit]
ConditionACPower=
ConditionACPower=false

Notez que certains cronjobs vérifient indépendamment la source d'alimentation et refusent de fonctionner sur batterie, par ex. /etc/cron.daily/mlocate

0
Nick

selon https://github.com/mvo5/unattended-upgrades/blob/master/data/50unattended-upgrades.Ubunt vous pouvez ajouter l'option suivante au fichier /etc/apt/apt.conf.d/50unattended-upgrades:

Unattended-Upgrade::OnlyOnACPower "false";

vérifier avec Sudo unattended-upgrades --verbose si ça marche

0
Martin