Comment mettre à jour automatiquement l'éditeur Atom?

49

La mise à jour automatique de la fonctionnalité Atom n'est pas encore prise en charge pour Ubuntu. Depuis leur référentiel GitHub:

Currently only a 64-bit version is available.

Download atom-amd64.deb from the Atom releases page. Run sudo dpkg --install atom-amd64.deb on the downloaded package. Launch Atom using the installed atom command. The Linux version does not currently automatically update so you will need to repeat these steps to upgrade to future releases.

J'ai essayé d'utiliser Webupd8 PPA , mais cela ne fonctionne pas.

    
posée Igor V. 24.02.2015 - 21:09
la source

12 réponses

69

TL; DR si vous ne souhaitez pas utiliser le APP. , vous pouvez utiliser un script pour télécharger et installer automatiquement via cron.

  1. Créer un nouveau fichier atom-auto-update

    sudo nano /usr/local/bin/atom-auto-update
    
  2. Ajoutez les lignes suivantes

    #!/bin/bash
    wget -q https://github.com/atom/atom/releases/latest -O /tmp/latest
    wget -q $(awk -F '[<>]' '/href=".*atom-amd64.deb/ {match($0,"href=\"(.*.deb)\"",a); print "https://github.com/" a[1]} ' /tmp/latest) -O /tmp/atom-amd64.deb
    dpkg -i /tmp/atom-amd64.deb
    
  3. Enregistrez le fichier et rendez-le exécutable

    sudo chmod +x /usr/local/bin/atom-auto-update
    
  4. Testez le script

    sudo atom-auto-update
    
  5. Créer une tâche cron pour le script

    sudo crontab -e
    
  6. Ajouter cette ligne

    par exemple: à 10 heures chaque semaine

    0 10 * * 1 /usr/local/bin/atom-auto-update
    

    exemple: à 10 heures tous les jours

    0 10 * * * /usr/local/bin/atom-auto-update      
    

Explication

  • wget -q https://github.com/atom/atom/releases/latest -O /tmp/latest

    Téléchargez le site avec les informations de version les plus récentes

  • wget -q $(awk -F '[<>]' '/href=".*atom-amd64.deb/ {match($0,"href=\"(.*.deb)\"",a); print "https://github.com/" a[1]} ' /tmp/latest) -O /tmp/atom-amd64.deb

    1. … awk -F '[<>]' '/href=".*atom-amd64.deb/ {match($0,"href=\"(.*.deb)\"",a); print "https://github.com/" a[1]} ' /tmp/latest …

      Extraire le lien de téléchargement

    2. wget -q $( … ) -O /tmp/atom-amd64.deb

      Télécharger le fichier DEB

  • dpkg -i /tmp/atom-amd64.deb

    Installer le fichier DEB

réponse donnée A.B. 31.05.2015 - 13:14
la source
18
La réponse de

A.B est une bonne solution! J'ai ajouté l'option d'affichage de la barre de progression dans le code bash pour notifier la progression:

#!/bin/bash
wget -q https://github.com/atom/atom/releases/latest -O /tmp/latest
wget --progress=bar -q 'https://github.com'$(cat /tmp/latest | grep -o -E 'href="([^"#]+)atom-amd64.deb"' | cut -d'"' -f2 | sort | uniq) -O /tmp/atom-amd64.deb -q --show-progress
dpkg -i /tmp/atom-amd64.deb
    
réponse donnée user981604 15.08.2015 - 06:58
la source
6

Comme réponse précédente avec modification mineure, pour permettre la mise à jour au démarrage, voici la procédure

  1. Créez un fichier en exécutant la commande suivante:

    sudo nano /usr/local/bin/atom-update  
    

puis tapez le script ci-dessous (utilisez un éditeur de texte tel que "gedit" ou "mousepad" au lieu de "nano", c'est plus pratique) puis sauvegardez-le.

#!/bin/bash    
wget -q https://github.com/atom/atom/releases/latest -O /tmp/latest
MATCHEDROW=$(awk -F '[<>]' '/href=".*atom-amd64.deb/' /tmp/latest)
LATEST=$(echo $MATCHEDROW | grep -o -P '(?<=href=").*(?=" rel)')
VER_LATEST=$(echo $MATCHEDROW | rev | cut -d"/" -f 2 | rev | sed 's/v//g')
VER_INST=$(dpkg -l atom | tail -n1 | tr -s ' ' | cut -d" " -f 3)

if [ "$VER_LATEST" != "$VER_INST" ]; then
   wget --progress=bar -q "https://github.com/$LATEST" -O /tmp/atom-amd64.deb --show-progress
   dpkg -i /tmp/atom-amd64.deb
   echo "Atom has been update from $VER_LATEST to $VER_INST"
   logger -t atom-update "Atom has been update from $VER_INST to $VER_LATEST"
else
   echo "Atom version $VER_INST is the latest version, no update require"
   logger -t atom-update "Atom version $VER_INST is the latest version, no update require"
fi
  1. Pour rendre le fichier exécutable:

    sudo chmod +x /usr/local/bin/atom-update
    
  2. Vous pouvez maintenant mettre à jour manuellement Atom en tapant la commande suivante:

    sudo atom-update
    
  3. Connectez-vous à votre racine, puis ajoutez la ligne ci-dessous à /etc/rc.local ( sudo nano /etc/rc.local ) juste avant la commande exit 0 :

    /usr/local/bin/atom-update  
    

Ceci laissera le script de mise à jour de l'atome s'exécuter chaque fois que vous allumez votre PC.

  1. Pour vérifier que le script s'est correctement exécuté au démarrage, redémarrez votre PC et ouvrez le terminal, puis tapez:

    cat /var/log/syslog | grep 'atom.*'  
    

Vous verrez le message du journal en conséquence.

    
réponse donnée Chukiat 18.12.2015 - 09:58
la source
3

En me basant sur la réponse de A.B , j'ai ajouté une vérification de version pour éviter les téléchargements / installations inutiles:

#!/bin/bash

TMP_DIR=$(mktemp -d)

TMP_LATEST="${TMP_DIR}/latest"
TMP_FILE="${TMP_DIR}/atom-amd64.deb"

wget -q https://github.com/atom/atom/releases/latest -O ${TMP_LATEST}
LATEST=$(awk -F '[<>]' '/href=".*atom-amd64.deb/ {match($0,"href=\"(.*.deb)\"",a); print "https://github.com/" a[1]} ' ${TMP_LATEST})
VER_LATEST=$(echo $LATEST | rev | cut -d"/" -f 2 | rev | sed 's/v//g')

VER_INST=$(dpkg -l atom | tail -n1 | tr -s ' ' | cut -d" " -f 3)

if [ "$VER_LATEST" != "$VER_INST" ]; then
  wget -q $LATEST -O $TMP_FILE
  VER_DOWN=$(dpkg-deb -f $TMP_FILE Version)
  if [ "$VER_DOWN" != "$VER_INST" ]; then
    dpkg -i $TMP_FILE
  fi
fi

rm -rf "${TMP_DIR}"

Éditer: Je devrais préciser que cela remplacerait le contenu du script / usr / local / bin / atom-auto-update mentionné dans la réponse de A.B. Les autres étapes de la réponse sont les mêmes.

    
réponse donnée hordur 13.11.2015 - 07:59
la source
3

Eh bien, une autre version plus élégante prenant en charge la branche bêta, si le script est lancé avec un argument bêta: $ update-atom beta

#!/bin/bash
DLPATH="https://atom.io/download/deb"
DLDEST="$HOME/Downloads/atom-amd64.deb"

if ! [ -z "$1" ] && [ $1=="beta" ];  then
  echo "Updating beta"
  DLPATH="$DLPATH?channel=beta"
  DLDEST="$HOME/Downloads/atom-amd64-beta.deb"
else
  echo "Updating stable"
fi

rm -f $DLDEST
wget -O $DLDEST $DLPATH 
sudo dpkg -i $DLDEST
    
réponse donnée Nikita Unkovsky 18.03.2016 - 22:51
la source
2

L’installation d’Atom en un tournemain assurera de toujours disposer de la dernière version:

sudo snap install atom --classic
    
réponse donnée Jorge Castro 15.05.2017 - 15:03
la source
1

J'ai écrit un script Python qui peut être utilisé pour mettre à jour le paquet DEB 64 bits de GitHub. Vous pouvez enregistrer le contenu suivant sous update-atom , par exemple dans /etc/cron.hourly ou /etc/cron.daily :

#!/usr/bin/env python

import os
import requests


def msg(text):
    """Give message to user."""
    os.system('notify-send "Atom updater" "{}"'.format(text))


def current():
    """Get current version."""
    f = os.popen("apt show atom 2>/dev/null | grep Ver")
    return f.read().split(' ')[1].strip()


def latest():
    """Get latest version."""
    upd_url = 'https://github.com/atom/atom/releases/latest'
    final = requests.get(upd_url).url
    return final.split('tag/v')[1]


def compare(cv, lv):
    """Compare versions."""
    return lv.split('.') > cv.split('.')


def upgrade(version):
    """Perform upgrade."""
    tempfile = '/tmp/atom.deb'
    url = (
        'https://github.com/atom/atom/releases/download/'
        'v{}/atom-amd64.deb'.format(version)
    )
    code = os.system(
        'rm -f {} && '
        'wget "{}" -O {} && '
        'dpkg -i {}'.format(tempfile, url, tempfile, tempfile)
    )
    return code == 0

if __name__ == '__main__':
    cv = current()
    try:
        lv = latest()
    except requests.exceptions.ConnectionError:
        print 'No network'
        exit(0)
    print 'Current version', cv
    print 'Latest version', lv
    result = compare(cv, lv)
    if result:
        print 'A new version is available!'
        msg('Updating Atom to version {}...'.format(lv))
        if upgrade(lv):
            msg('Update completed.')
        else:
            msg('Problem during update.')
    else:
        print 'Atom is updated.'
    
réponse donnée Andrea Lazzarotto 26.05.2016 - 18:58
la source
1

Pour une approche moins spécifique à Ubuntu, j’ai écrit un paquet à petit atome qui recherche les nouvelles versions au démarrage vérifiez manuellement avec une commande pratique dans Atom).

Il est indépendant de la plate-forme (il fonctionne donc sur toutes les distributions Linux, Windows, etc ...).

Vous pouvez configurer certaines choses, comme surveiller uniquement le canal stable ou la version bêta, avoir des notifications, quel type, et si elles doivent être révocables, etc ...).

Cela ne pas (du moins pour le moment!) met automatiquement le paquet à jour. J'ajouterai peut-être cette fonctionnalité à l'avenir si l'intérêt y est suffisant.

Vos commentaires sont les bienvenus, mieux que des billets sur github.

    
réponse donnée mac 08.08.2016 - 09:02
la source
0

Si vous construisez à partir de sources, je le fais via un petit script:

cd "/home/YOUR_USER/gitmisc/atom/"
git pull
cd script/
sudo ./build --install                   
    
réponse donnée Leo Ufimtsev 04.11.2016 - 21:03
la source
0

6 mai 2016

Andy Richardson a fabriqué atom- updater-linux . C'est un paquet atom, vous pouvez l'avoir sur votre atome en lançant:

apm install atom-updater-linux

consultez le référentiel pour plus d'informations

    
réponse donnée Adi Prasetyo 09.11.2017 - 08:47
la source
0

Quelques modifications du script python par Andrea Lazzarotto pour supprimer la dépendance de notify-send Les variantes d'Ubuntu n'ont pas par défaut et gèrent le cas où aucune copie d'atome n'est déjà installée. Notez également que vous aurez également besoin d'autres dépendances:

sudo apt-get install python-request git gvfs-bin

J'ai également dû exécuter les éléments suivants pour obtenir d'autres sous-dépendances ...

sudo apt-get -f install

#!/usr/bin/env python
import os
import requests

def msg(text):
  """Give message to user."""
  os.system('notify-send "Atom updater" "{}"'.format(text)
  + ' 2>/dev/null '
  +'|| echo "{}"'.format(text))

def current():
    """Get current version."""
    f = os.popen("apt show atom 2>/dev/null | grep Ver")
    result = f.read()
    if result:
      return result.split(' ')[1].strip()
    return "0.0"

def latest():
    """Get latest version."""
    upd_url = 'https://github.com/atom/atom/releases/latest'
    final = requests.get(upd_url).url
    return final.split('tag/v')[1]

def compare(cv, lv):
    """Compare versions."""
    return lv.split('.') > cv.split('.')

def upgrade(version):
    """Perform upgrade."""
    tempfile = '/tmp/atom.deb'
    url = (
        'https://github.com/atom/atom/releases/download/'
        'v{}/atom-amd64.deb'.format(version)
    )
    code = os.system(
        'rm -f {} && '
        'wget "{}" -O {} && '
        'dpkg -i {}'.format(tempfile, url, tempfile, tempfile)
    )
    return code == 0

if __name__ == '__main__':
    cv = current()
    try:
        lv = latest()
    except requests.exceptions.ConnectionError:
        print 'No network'
        exit(0)
    print 'Current version', cv
    print 'Latest version', lv
    result = compare(cv, lv)
    if result:
        print 'A new version is available!'
        msg('Updating Atom to version {}...'.format(lv))
        if upgrade(lv):
            msg('Update completed.')
        else:
            msg('Problem during update.')
    else:
        msg('Atom is updated.')
    
réponse donnée technicalbloke 31.05.2016 - 02:01
la source
0

Encore un autre script personnalisé ( Python ) pour vous aider à mettre à jour l'atome: link

    
réponse donnée Dušan Maďar 19.11.2017 - 16:53
la source

Lire d'autres questions sur les étiquettes