Как автоматически обновить редактор Atom?
Автоматическое обновление функции Atom для Ubuntu еще не поддерживается. Из их репозитория GitHub:
В настоящее время доступна только 64-битная версия.
Загрузите atom-amd64.deb со страницы релизов Atom. Запустите sudo dpkg --install atom-amd64.deb для загруженного пакета. Запустите Atom с помощью установленной команды atom. Версия для Linux в настоящее время не обновляется автоматически, поэтому вам нужно будет повторить эти шаги для обновления до будущих выпусков.
Я пытался использовать Webupd8 PPA, но он не работает для меня.
12 ответов
TL;DR Если вы не хотите использовать PPA, вы можете использовать скрипт для загрузки и автоматической установки через cron.
Создать новый файл
atom-auto-update
sudo nano /usr/local/bin/atom-auto-update
Добавьте следующие строки
#!/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
Сохраните файл и сделайте его исполняемым
sudo chmod +x /usr/local/bin/atom-auto-update
Протестируйте скрипт
sudo atom-auto-update
Создать cronjob для скрипта
sudo crontab -e
Добавить эту строку
например: в 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
… awk -F '[<>]' '/href=".*atom-amd64.deb/ {match($0,"href=\"(.*.deb)\"",a); print "https://github.com/" a[1]} ' /tmp/latest …
Извлечь ссылку для скачивания
wget -q $( … ) -O /tmp/atom-amd64.deb
Скачать файл DEB
dpkg -i /tmp/atom-amd64.deb
Установите файл DEB
ОтветАБ- отличное решение! Я добавил опцию индикатора выполнения в коде 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
Как и предыдущий ответ с незначительными изменениями, чтобы позволить обновление при запуске, вот процедура
Создайте файл, выполнив команду:
sudo nano /usr/local/bin/atom-update
затем введите приведенный ниже скрипт (используйте текстовый редактор типа "gedit" или "коврик для мыши" вместо "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
Чтобы сделать файл исполняемым:
sudo chmod +x /usr/local/bin/atom-update
Теперь вы можете вручную обновить Atom, набрав команду:
sudo atom-update
Войдите в свой root, а затем добавьте следующую строку в
/etc/rc.local
(sudo nano /etc/rc.local
) как раз передexit 0
команда:/usr/local/bin/atom-update
Это позволит запускать скрипт обновления atom каждый раз, когда вы включаете компьютер.
Чтобы убедиться, что скрипт запускается правильно, перезагрузите компьютер и откройте терминал, затем введите:
cat /var/log/syslog | grep 'atom.*'
Вы увидите сообщение журнала соответственно.
Основываясь на ответе AB, я добавил проверку версии, чтобы избежать ненужной загрузки / установки:
#!/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, о котором упоминается в ответе AB. Другие шаги ответа такие же.
Ну, еще одна более элегантная версия с поддержкой бета-ветки, если скрипт запускается с бета-аргументом: $ 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
Установка Atom с помощью оснастки гарантирует, что у вас всегда будет последняя версия:
sudo snap install atom --classic
Я написал скрипт на 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.'
Для менее специфичного для Ubuntu подхода я написал небольшой пакет Atom, который проверяет наличие новых версий при запуске (или вы можете проверить вручную с помощью удобной команды в Atom).
Он не зависит от платформы (поэтому работает на любом дистрибутиве Linux, Windows и т. Д.).
Вы можете настроить несколько вещей, таких как только мониторинг стабильного канала или бета-версии, наличие уведомлений, какого типа, и если они должны быть отклонены, и т. Д...).
Он не (по крайней мере, пока!) Автоматически обновляет пакет. Я могу добавить эту функцию в будущем, если она будет достаточно интересной.
Обратная связь приветствуется, лучше всего как билеты на github.
Несколько модов к скрипту python от Andrea Lazzarotto, чтобы убрать зависимость от notify-send, которой нет в других вариантах Ubuntu по умолчанию, и обработать случай, когда копия атома еще не установлена. Также следует отметить, что вам также понадобятся другие зависимости:
sudo apt-get установить python-запросы git gvfs-bin
Я также должен был выполнить следующее, чтобы получить некоторые другие подчиненные зависимости...
sudo apt-get -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.')
Если вы строите из источников, я делаю это с помощью небольшого скрипта:
cd "/home/YOUR_USER/gitmisc/atom/"
git pull
cd script/
sudo ./build --install
6 мая 2016 г.
Энди Ричардсон сделал Atom-Updater-Linux. Это пакет атомов, вы можете получить его на вашем атоме, запустив:
apm install atom-updater-linux
обратитесь к хранилищу для получения дополнительной информации
Еще один обычай (Python
) скрипт, помогающий обновить атом: https://gist.github.com/DusanMadar/8f094ef647a0ad54cff1