如何自动更新Atom编辑器?

Ubuntu尚不支持自动更新Atomfunction。 从他们的GitHub存储库:

目前只有64位版本可用。

从Atom版本页面下载atom-amd64.deb。 在下载的软件包上运行sudo dpkg –install atom-amd64.deb。 使用installed atom命令启动Atom。 Linux版本目前不会自动更新,因此您需要重复这些步骤才能升级到将来的版本。

我尝试使用Webupd8 PPA,但它对我不起作用。

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文件

AB的答案是一个很好的解决方案! 我在bash代码中添加了show progress bar选项以通知进度:

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

作为前面的回答,稍加修改,为了让启动更新,这里是程序

  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. 登录到root,然后在exit 0命令之前sudo nano /etc/rc.local下行添加到/etc/rc.local sudo nano /etc/rc.local ):

     /usr/local/bin/atom-update 

每次打开PC时都会执行primefaces更新脚本。

  1. 要在启动时检查脚本是否正常运行,请重新启动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 

通过快照安装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的方法,我写了一个小的primefaces包来检查启动时的新版本(或者你可以在Atom中用一个方便的命令手动检查)。

它是独立于平台的(所以它适用于所有Linux发行版,Windows等…)。

你可以配置一些东西,比如只监控稳定的频道或测试版,有通知,什么类型,以及它们是否应该被解雇等等。)。

它(至少现在!) 不会自动更新包。 如果对它有足够的兴趣,我可以在将来添加该function。

反馈欢迎,最好作为github上的门票。

如果您从源代码构建,我通过一个小脚本执行此操作:

 cd "/home/YOUR_USER/gitmisc/atom/" git pull cd script/ sudo ./build --install 

2016年5月6日

Andy Richardson创造了atom-updater-linux 。 它是primefaces包,你可以通过运行它在你的primefaces上:

 apm install atom-updater-linux 

有关更多信息,请咨询存储库

Andrea Lazzarotto为python脚本添加了几个mod,用于删除对其他Ubuntu变体默认没有的notify-send的依赖,并处理尚未安装atom的副本的情况。 此外,应该注意还有其他依赖项,你也需要:

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.') 

另一个自定义( Python )脚本来帮助更新atom: https : //gist.github.com/DusanMadar/8f094ef647a0ad54cff1