Ubuntu尚不支持自动更新Atom功能。从他们的GitHub存储库中:
当前仅提供64位版本。
从Atom版本页面下载atom-amd64.deb。在下载的软件包上运行sudo dpkg --install atomic-amd64.deb。使用已安装的atom命令启动Atom。Linux版本当前不会自动更新,因此您需要重复这些步骤以升级到将来的版本。
我尝试使用Webupd8 PPA,但这对我不起作用。
Ubuntu尚不支持自动更新Atom功能。从他们的GitHub存储库中:
当前仅提供64位版本。
从Atom版本页面下载atom-amd64.deb。在下载的软件包上运行sudo dpkg --install atomic-amd64.deb。使用已安装的atom命令启动Atom。Linux版本当前不会自动更新,因此您需要重复这些步骤以升级到将来的版本。
我尝试使用Webupd8 PPA,但这对我不起作用。
Answers:
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文件
cat /tmp/latest | grep '.deb' | grep 'href=' | cut -d '"' -f 2
wget https://github.com$(cat /tmp/latest | grep -o -E 'href=".*atom-amd64.deb' | cut -d'"' -f2) -O /tmp/atom-amd64.deb
AB的答案是一个很好的解决方案!我在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”或“ 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
使文件可执行:
sudo chmod +x /usr/local/bin/atom-update
现在,您可以通过键入以下命令来手动更新Atom:
sudo atom-update
登录到您的根目录,然后在命令之前将以下行添加到/etc/rc.local
(sudo nano /etc/rc.local
)exit 0
:
/usr/local/bin/atom-update
每次您打开PC时,这都将使atom更新脚本执行。
要检查脚本在启动时是否已正确运行,请重新启动PC并打开终端,然后键入:
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}"
编辑:我应该澄清这将替换AB的答案中提到的/ usr / local / bin / atom-auto-update脚本的内容。答案的其他步骤是相同的。
好吧,如果脚本使用beta参数启动,则另一个更优雅的版本支持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
通过snap安装Atom将确保您始终拥有最新版本:
sudo snap install atom --classic
我写了一个Python脚本,可用于从GitHub更新64位DEB包。您可以将以下内容另存为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中使用方便的命令手动检查)。
它是独立于平台的(因此可以在任何Linux发行版,Windows等上运行)。
您可以配置一些内容,例如也仅监视稳定的频道或Beta,具有通知,什么类型以及是否应将其关闭等)。
它不会(至少到目前为止!)不会自动更新软件包。如果将来有足够的兴趣,我可能会添加该功能。
欢迎反馈,最好作为github上的票。
The package check for new version of Atom at launch
为The package checks for a new version of Atom at launch
“ 为什么在“ geiger”下?标题替换outadet Atom
为outdated Atom
2016年5月6日
安迪·理查森(Andy Richardson)制造了atom-updater-linux。这是atom包,您可以通过运行以下命令将其放在atom上:
apm install atom-updater-linux
查阅存储库以获取更多信息
Andrea Lazzarotto对python脚本进行了几个修改,以消除对notify-send的依赖(默认情况下其他Ubuntu变体没有这种依赖),并处理尚未安装atom副本的情况。另外,应该注意,您还需要其他依赖项:
须藤apt-get install python-requests 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.')
另一个Python
帮助更新原子的自定义()脚本:https : //gist.github.com/DusanMadar/8f094ef647a0ad54cff1