Как автоматически обновлять редактор Atom?

49

Автоматическое обновление функции Atom еще не поддерживается для Ubuntu. Из своего репозитория 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.

Я попытался использовать Webupd8 PPA , но он не работает для меня.     

задан Igor V. 24.02.2015 в 21:09
источник

12 ответов

69

TL; DR Если вы не хотите использовать PPA , вы можете использовать скрипт для загрузки и автоматической установки через cron.

  1. Создайте новый файл atom-auto-update

    sudo nano /usr/local/bin/atom-auto-update
    
  2. Добавьте следующие строки

    #!/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. Сохраните файл и сделайте его выполнимым

    sudo chmod +x /usr/local/bin/atom-auto-update
    
  4. Проверьте скрипт

    sudo atom-auto-update
    
  5. Создайте cronjob для скрипта

    sudo crontab -e
    
  6. Добавьте эту строку

    например: в 10 утра каждую неделю

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

    например: в 10 утра каждый день

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

Объяснение

  • 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

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

      Извлеките ссылку для скачивания

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

      Загрузите файл DEB

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

    Установите файл DEB

ответ дан A.B. 31.05.2015 в 13:14
источник
18
Ответ

A.B - приятное решение! Я добавил параметр индикатора прогресса выполнения в код bash для уведомления о прогрессе:

#!/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
    
ответ дан user981604 15.08.2015 в 06:58
6

Как и предыдущий ответ с незначительной модификацией, чтобы обновить при запуске, выполните процедуру

  1. Создайте файл, выполнив команду:

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

затем введите приведенный ниже сценарий (более удобным является использование текстового редактора, такого как «gedit» или «mousepad» вместо «nano»), а затем сохраните его.

#!/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. Чтобы сделать исполняемый файл:

    sudo chmod +x /usr/local/bin/atom-update
    
  2. Теперь вы можете вручную обновить Atom, набрав команду:

    sudo atom-update
    
  3. Войдите в свой корень, а затем добавьте следующую строку в /etc/rc.local ( sudo nano /etc/rc.local ) непосредственно перед командой exit 0 :

    /usr/local/bin/atom-update  
    

Это позволит сценарию обновления атома выполнять каждый раз, когда вы включаете свой компьютер.

  1. Чтобы проверить правильность запуска сценария при запуске, перезагрузите компьютер и откройте терминал, а затем введите:

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

Соответственно вы увидите сообщение журнала.

    
ответ дан Chukiat 18.12.2015 в 09:58
3

Основываясь на ответе A.B , я добавил проверку версий, чтобы избежать ненужной загрузки / установки:

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

Изменить: я должен пояснить, что это заменит содержимое сценария / usr / local / bin / atom-auto-update, о котором говорится в ответе A.B. Остальные шаги ответа одинаковы.

    
ответ дан hordur 13.11.2015 в 07:59
3

Ну, еще одна элегантная версия с поддержкой бета-ветки, если скрипт запущен с бета-аргументом: $ 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
    
ответ дан Nikita Unkovsky 18.03.2016 в 22:51
2

Установка Atom с помощью привязки гарантирует, что у вас всегда будет последняя версия:

sudo snap install atom --classic
    
ответ дан Jorge Castro 15.05.2017 в 15:03
1

Я написал сценарий Python, который можно использовать для обновления 64-битного пакета DEB от GitHub. Вы можете сохранить следующий контент как update-atom , например, в /etc/cron.hourly или /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.'
    
ответ дан Andrea Lazzarotto 26.05.2016 в 18:58
1

Для менее специфичного для Ubuntu подхода я написал пакет small atom , который проверяет наличие новых версий при запуске (или вы можете проверьте вручную с помощью удобной команды в Atom).

Он независим от платформы (поэтому он работает с любым дистрибутивом linux, окнами и т. д.).

Вы можете настроить несколько вещей, например, только мониторинг стабильного канала или бета-версии, наличие уведомлений, какой тип, а также их отклонение и т. д.).

Он не (по крайней мере, сейчас!) автоматически обновляет пакет. Я могу добавить эту функцию в будущем, если в ней будет достаточно интереса.

Обратная связь приветствуем, лучше всего в качестве билетов на github.

    
ответ дан mac 08.08.2016 в 09:02
0

Если вы строите из источников, я делаю это с помощью небольшого скрипта:

cd "/home/YOUR_USER/gitmisc/atom/"
git pull
cd script/
sudo ./build --install                   
    
ответ дан Leo Ufimtsev 04.11.2016 в 21:03
0

6 мая 2016 года

Энди Ричардсон сделал atom- Updater-линукс . Это атомный пакет, вы можете получить его на своем атоме, запустив:

apm install atom-updater-linux

обратитесь к репозиторию за дополнительной информацией

    
ответ дан Adi Prasetyo 09.11.2017 в 08:47
0

Несколько модов к скрипту python от Андреа Лаззаротто , чтобы удалить зависимость от уведомлений-отправки, которые другие Варианты Ubuntu по умолчанию отсутствуют и обрабатывают случай, когда еще не установлена ​​копия атома. Кроме того, следует отметить, что вам понадобятся и другие зависимости:

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

Мне также пришлось запустить следующее, чтобы получить некоторые другие зависимостей ...

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.')
    
ответ дан technicalbloke 31.05.2016 в 02:01
0

Еще один пользовательский скрипт ( Python ) для обновления атома: Ссылка

    
ответ дан Dušan Maďar 19.11.2017 в 16:53