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

Автоматическое обновление функции Atom еще не поддерживается для Ubuntu. Из своего репозитория GitHub:

  

В настоящее время доступна только 64-разрядная версия.

     

Скачайте atom-amd64.deb с страницы выпуска Atom. Запустить sudo dpkg   - установить atom-amd64.deb в загруженный пакет. Запустите Atom с помощью установленной команды атома. В настоящее время версия Linux отсутствует   автоматически, поэтому вам нужно будет повторить эти шаги для обновления   к будущим выпускам.

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

49 голосов | спросил Igor V. 24 FebruaryEurope/MoscowbTue, 24 Feb 2015 23:09:16 +0300000000pmTue, 24 Feb 2015 23:09:16 +030015 2015, 23:09:16

4 ответа


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 Maypm15 2015, 14:14:02
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 AM00000070000000831 2015, 07:58:08
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 Maypm16 2016, 19:58:22
0

Еще один пользовательский сценарий (Python) для обновления атома: https://gist.github.com/DusanMadar/8f094ef647a0ad54cff1

ответил Dušan Maďar 19 72017vEurope/Moscow11bEurope/MoscowSun, 19 Nov 2017 18:53:12 +0300 2017, 18:53:12

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132