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

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

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

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

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

51
задан 16 September 2016 в 05:43

12 ответов

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


  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:00 каждую неделю

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

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

    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

71
ответ дан 22 November 2019 в 23:50

Ответ A.B является хорошим решением! Я добавил, показывают вариант индикатора выполнения в коде удара для уведомления progress: 

#!/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
20
ответ дан 22 November 2019 в 23:50

Ну, другая более изящная версия с поддержкой бета ответвления, если сценарий, запущенный с бета аргументом: $ 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
ответ дан 22 November 2019 в 23:50

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

sudo snap install atom --classic
2
ответ дан 22 November 2019 в 23:50

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

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

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

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

#!/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.*'  
    

Вы будете видеть, что журнал обменивается сообщениями соответственно.

6
ответ дан 22 November 2019 в 23:50

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

cd "/home/YOUR_USER/gitmisc/atom/"
git pull
cd script/
sudo ./build --install                   
0
ответ дан 22 November 2019 в 23:50

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

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

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

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

приветствие Обратной связи, лучше всего как билеты на GitHub.

1
ответ дан 22 November 2019 в 23:50

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

0
ответ дан 22 November 2019 в 23:50

6 мая 2016

Andy Richardson сделал atom-updater-linux. Это - пакет атома, у Вас может быть он на Вашем атоме путем выполнения:

apm install atom-updater-linux

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

0
ответ дан 22 November 2019 в 23:50

Основываясь на ответе 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. Другие шаги ответа являются тем же.

3
ответ дан 22 November 2019 в 23:50

Я записал сценарий Python, который может использоваться для обновления пакета DEB на 64 бита от 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.'
1
ответ дан 22 November 2019 в 23:50

Несколько модификаций к сценарию Python Andrea Lazzarotto для удаления зависимости от уведомляют - отправляют, который другие варианты Ubuntu не имеют по умолчанию и обрабатывают случай, где уже нет копии установленного атома. Кроме того, нужно отметить, что существуют другие зависимости, в которых Вы будете нуждаться также:

склонные sudo - получают gvfs-мусорное-ведро мерзавца запросов Python установки

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

склонные sudo - получают установку-f

#!/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.')
0
ответ дан 22 November 2019 в 23:50

Другие вопросы по тегам:

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