web-dev-qa-db-fra.com

Comment mettre à jour automatiquement l'éditeur Atom?

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

Actuellement, seule une version 64 bits est disponible.

Téléchargez atom-AMD64.deb à partir de la page Atom releases. Exécutez Sudo dpkg --install atom-AMD64.deb sur le package téléchargé. Lancez Atom à l'aide de la commande atom installée. Actuellement, la version Linux ne se met pas à jour automatiquement, vous devrez donc répéter ces étapes pour effectuer la mise à niveau vers les versions futures.

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

51
Igor V.

TL; DR Si vous ne souhaitez pas utiliser le PPA , 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. Ajouter 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. Sauvegarder le fichier et le rendre exécutable

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

    Sudo atom-auto-update
    
  5. Créer un cronjob 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
    

    par 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écharger le site avec les dernières informations de version

  • 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

71
A.B.

A.B La réponse est une bonne solution! J'ai ajouté l'option show progress bar 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
19
whiite

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

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

    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", ce qui est plus pratique), puis enregistrez-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  
    

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

  1. Pour vérifier que le script a bien fonctionné 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.

6
Chukiat

Eh bien, une autre version plus élégante prenant en charge la branche bêta, si le script est lancé avec l’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
3
Nikita Unkovsky

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}"

Edit: 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.

3
hordur

L'installation de Atom en un tournemain garantira que vous disposerez toujours de la dernière version:

Sudo snap install atom --classic
2
Jorge Castro

Pour une approche moins spécifique à Ubuntu, j’ai écrit un petit paquetage atom qui vérifie les nouvelles versions au démarrage (ou vous pouvez le vérifier manuellement à l’aide d’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 quelques éléments tels que 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 (au moins pour le moment!) Met automatiquement à jour le paquet. Je pourrais ajouter cette fonctionnalité à l’avenir si elle suscitait suffisamment d’intérêt.

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

1
mac

J'ai écrit un script Python pouvant être utilisé pour mettre à jour le paquet DEB 64 bits à partir 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 __== '__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.'
1

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                   
0
Leo Ufimtsev

Encore un autre script personnalisé (Python) pour aider à la mise à jour de l’atome: https://Gist.github.com/DusanMadar/8f094ef647a0ad54cff1

0
Dušan Maďar

Quelques mods du script python par Andrea Lazzarotto pour supprimer la dépendance sur notify-send dont les autres variantes d'Ubuntu ne disposent pas par défaut et gérer le cas où il n'y en a pas. t déjà une copie de atom installée. En outre, il convient de noter que vous aurez également besoin d'autres dépendances:

Sudo apt-get installe les requêtes python git gvfs-bin

Je devais aussi exécuter le suivant 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 __== '__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.')
0
technicalbloke

6 mai 2016

Andy Richardson fait atom-updater-linux . C'est le paquet atom, vous pouvez l'avoir sur votre atom en lançant:

apm install atom-updater-linux

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

0
Adi Prasetyo