Como atualizar automaticamente o editor do Atom?

50

A atualização automática do recurso Atom ainda não é compatível com o Ubuntu. De seu repositório 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.

Eu tentei usar o Webupd8 PPA , mas não funciona para mim.

    
por Igor V. 24.02.2015 / 21:09

12 respostas

70

TL; DR Se você não quiser usar o PPA , você pode usar um script para baixar e instalar automaticamente via cron.

  1. Crie um novo arquivo atom-auto-update

    sudo nano /usr/local/bin/atom-auto-update
    
  2. Adicione as seguintes linhas

    #!/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. Salve o arquivo e torne-o executável

    sudo chmod +x /usr/local/bin/atom-auto-update
    
  4. Teste o script

    sudo atom-auto-update
    
  5. Crie um cronjob para o script

    sudo crontab -e
    
  6. Adicione esta linha

    por exemplo: às 10h todas as semanas

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

    por exemplo: às 10h todos os dias

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

Explicação

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

    Faça o download do site com as informações mais recentes sobre a versão

  • 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 …

      Extraia o link de download

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

      Faça o download do arquivo DEB

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

    Instale o arquivo DEB

por A.B. 31.05.2015 / 13:14
19

Resposta de A.B é uma boa solução! Eu adicionei a opção mostrar barra de progresso no código bash para notificar o progresso:

#!/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
    
por whiite 15.08.2015 / 06:58
6

Como a resposta anterior com pequenas modificações, para permitir a atualização na inicialização, aqui está o procedimento

  1. Crie um arquivo executando o comando:

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

digite o script abaixo (use editor de texto como "gedit" ou "mousepad" em vez de "nano" é mais conveniente) e salve-o.

#!/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. Para tornar o arquivo executável:

    sudo chmod +x /usr/local/bin/atom-update
    
  2. Agora você pode atualizar manualmente o Atom, digitando o comando:

    sudo atom-update
    
  3. Faça login na sua raiz e adicione a linha abaixo ao /etc/rc.local ( sudo nano /etc/rc.local ) logo antes do comando exit 0 :

    /usr/local/bin/atom-update  
    

Isso permitirá que o script de atualização do atom seja executado toda vez que você ligar o seu PC.

  1. Para verificar se o script foi executado corretamente na inicialização, reinicie o computador, abra o terminal e digite:

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

Você verá a mensagem de registro de acordo.

    
por Chukiat 18.12.2015 / 09:58
3

Com base na resposta de A.B , adicionei a verificação de versão para evitar download / instalação desnecessários:

#!/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}"

Editar: devo esclarecer que isso substituiria o conteúdo do script / usr / local / bin / atom-atualização automática que a resposta de A.B menciona. Os outros passos da resposta são os mesmos.

    
por hordur 13.11.2015 / 07:59
3

Bem, outra versão mais elegante com suporte a ramificação beta, se o script for iniciado com o argumento beta: $ 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
    
por Nikita Unkovsky 18.03.2016 / 22:51
2

A instalação do Atom por meio de um instantâneo garante que você tenha sempre a versão mais recente:

sudo snap install atom --classic
    
por Jorge Castro 15.05.2017 / 15:03
1

Eu escrevi um script Python que pode ser usado para atualizar o pacote DEB de 64 bits do GitHub. Você pode salvar o seguinte conteúdo como update-atom , por exemplo, em /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.'
    
por Andrea Lazzarotto 26.05.2016 / 18:58
1

Para uma abordagem menos específica do Ubuntu, eu escrevi um pacote small atom que verifica novas versões na inicialização (ou você pode verifique manualmente com um comando prático no Atom).

Ele é independente de plataforma (então funciona em qualquer distribuição Linux, Windows, etc ...).

Você pode configurar algumas coisas, como apenas monitorar o canal estável ou a versão beta também, ter notificações, qual tipo e se elas devem ser descartadas, etc ...).

Ele não (pelo menos por enquanto!) atualiza automaticamente o pacote. Eu posso adicionar esse recurso no futuro, se houver interesse suficiente nele.

Feedback bem-vindo, melhor como ingressos no github.

    
por mac 08.08.2016 / 09:02
0

Se você está criando a partir de fontes, eu faço isso por meio de um pequeno script:

cd "/home/YOUR_USER/gitmisc/atom/"
git pull
cd script/
sudo ./build --install                   
    
por Leo Ufimtsev 04.11.2016 / 21:03
0

6 de maio de 2016

Andy Richardson fez o átomo atualizador-linux . É o pacote do átomo, você pode tê-lo em seu átomo executando:

apm install atom-updater-linux

consulte o repositório para mais informações

    
por Adi Prasetyo 09.11.2017 / 08:47
0

Um par de mods para o script python por Andrea Lazzarotto para remover a dependência de notificar-enviar que outros As variantes do Ubuntu não têm por padrão e lidam com o caso em que não há uma cópia do atom instalada. Além disso, deve-se notar que há outras dependências que você precisará também:

sudo apt-get instala python-requests git gvfs-bin

Eu também tive que executar o seguinte para obter outras sub-dependências ...

sudo apt-get -f instalar

#!/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.')
    
por technicalbloke 31.05.2016 / 02:01
0

Ainda outro script personalizado ( Python ) para ajudar a atualizar o atom: link

    
por Dušan Maďar 19.11.2017 / 16:53

Tags