Atomエディターを自動的に更新する方法は?


51

Ubuntuでは、Atom機能の自動更新はまだサポートされていません。GitHubリポジトリから:

現在、64ビットバージョンのみが使用可能です。

Atomリリースページからatom-amd64.debをダウンロードします。ダウンロードしたパッケージでsudo dpkg --install atom-amd64.debを実行します。インストールされたatomコマンドを使用してAtomを起動します。Linuxバージョンは現在自動的に更新されないため、これらの手順を繰り返して将来のリリースにアップグレードする必要があります。

Webupd8 PPAを使用してみましたが、うまくいきません。


1
PPAの問題は何ですか?
AB

@AB今は大丈夫だと思うし、テストする時間もなかったし、しばらくの間atomを使っていないが、当時はPPAは私のバージョンを更新していなかった。
イゴールV.

おそらく古い質問には答えるべきではありません。:\
AB

1
あなたの答えは素晴らしく、同様の問題を解決するのに役立ちます。:)
イゴールV.

回答:


71

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ファイルをインストールする


1
編集賛成票!;-)
ファビー

2
awk:1行目またはその近くの構文エラー、wget:URL manquante Utilization:wget [OPTION] ... [URL] ...
Rachid Oussanaa

この方法で更新する場合、パッケージを樹脂化する必要がありますか?
becko 16

1
これにより、HTMLからURLを抽出しようとする構文エラーも発生しました。それ以降、おそらくHTMLが変更されました。これは私のために働いた(完全ではない):cat /tmp/latest | grep '.deb' | grep 'href=' | cut -d '"' -f 2
ディーン

2
awkの構文エラーが直面している人のために、ここで私の三行がある:wget https://github.com$(cat /tmp/latest | grep -o -E 'href=".*atom-amd64.deb' | cut -d'"' -f2) -O /tmp/atom-amd64.deb
フェリペEliaの

20

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

6

わずかな変更を加えた前の回答として、起動時に更新できるようにするための手順は次のとおりです。

  1. 次のコマンドを実行してファイルを作成します。

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

次に、以下のスクリプトを入力し(「nano」の代わりに「gedit」や「mousepad」などのテキストエディタを使用すると便利です)、保存します。

#!/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.localsudo nano /etc/rc.local)に次の行を追加しますexit 0

    /usr/local/bin/atom-update  
    

これにより、PCの電源を入れるたびに、原子更新スクリプトが実行されます。

  1. 起動時にスクリプトが正しく実行されたことを確認するには、PCを再起動してターミナルを開き、次のように入力します。

    cat /var/log/syslog | grep 'atom.*'  
    

それに応じてログメッセージが表示されます。


もう機能していません。更新してください。
興味深いノックス

Atomが1.23.3から1.19.7に更新されたので、これで本当にAtomがアップグレードされたら混乱します。場合、私は現在の最新のダウンロードからAtom.ioをし、sudo dpkg -i atom-amd64.debその後、私は`オーバー開梱原子(1.23.3)(1.19.7)を取得します。
パブロA

3

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スクリプトの内容を置き換えることを明確にする必要があります。答えの他のステップは同じです。


3

さて、ベータ引数を使用してスクリプトを起動した場合、ベータブランチをサポートするよりエレガントなバージョン: $ 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

2

スナップ経由でAtomをインストールすると、常に最新バージョンを使用できます。

sudo snap install atom --classic

snapまたはaptを介してインストールされたAtomのパフォーマンスまたは使用法に違いはありますか?私は一般的にどちらを選択するかを本当に理解していません。ありがとう。
ラモンスアレス

1
私はこのように長い間問題なく使用していますが、常に更新するように通知するのではなく自動更新するため、彼らのデブよりもそれを好みます。
ホルヘカストロ

1

GitHubから64ビットDEBパッケージを更新するために使用できるPythonスクリプトを作成しました。次のコンテンツは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

ubuntu固有ではないアプローチのために、起動時に新しいバージョンを確認する小さなatomパッケージを作成しました(または、Atom内の便利なコマンドを使用して手動で確認できます)。

プラットフォームに依存しません(したがって、Linuxディストリビューション、Windowsなどで動作します)。

安定したチャネルまたはベータ版のみを監視する、通知を受け取る、種類、および却下可能にするかどうかなど、いくつかの設定を行うことができます。

(少なくとも今のところは!)パッケージは自動的に更新されませ。十分な関心があれば、将来その機能を追加するかもしれません。

フィードバックを歓迎します。githubのチケットとして最適です。


下:あなたのGitHubのページを変更するための提案使用法の見出し置き換えるThe package check for new version of Atom at launchThe package checks for a new version of Atom at launch下になぜ「ガイガー」?置き換え見出しoutadet Atomoutdated Atom
カレル

@karel - 、ありがとうござい行わ。エラーの一部はこのバグが原因でした。:)
mac

0

ソースからビルドする場合、小さなスクリプトを使用してこれを行います。

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


0

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.