Atom 편집기를 자동으로 업데이트하는 방법은 무엇입니까?


51

Abun 기능 의 자동 업데이트는 아직 Ubuntu에서 지원되지 않습니다. GitHub 저장소에서 :

현재 64 비트 버전 만 사용할 수 있습니다.

Atom 릴리스 페이지에서 atom-amd64.deb를 다운로드하십시오. 다운로드 한 패키지에서 sudo dpkg --install atom-amd64.deb를 실행하십시오. 설치된 atom 명령을 사용하여 Atom을 실행하십시오. Linux 버전은 현재 자동으로 업데이트되지 않으므로 이후 릴리스로 업그레이드하려면이 단계를 반복해야합니다.

Webupd8 PPA를 사용해 보았지만 작동하지 않습니다.


1
PPA의 문제점은 무엇입니까?
AB

@AB 지금은 괜찮다고 생각하고 테스트 할 시간이 없었으며 지금은 원자를 사용하지 않지만 PPA는 내 버전을 업데이트하지 않았습니다.
Igor V.

나는 아마도 오래된 질문에 대답해서는 안됩니다. : \
AB

1
귀하의 답변은 훌륭하며 비슷한 문제에 도움이 될 것입니다. :)
Igor 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. 스크립트에 대한 크론 작업 생성

    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
편집 공감! ;-)
Fabby

2
AWK : 1 줄 : 구문에서 에러 또는 근처 wget을 : URL manquante 사용량 : wget을 [OPTION] ... [URL] ...
라시드 Oussanaa

이 방법으로 업데이트하면 패키지를 수지로 만들어야합니까?
becko

1
또한 HTML에서 URL을 추출하려고 할 때 구문 오류가 발생했습니다. 그들은 그때부터 HTML을 바꿨을 것입니다. 이것은 나를 위해 일했다 (완료되지 않은) :cat /tmp/latest | grep '.deb' | grep 'href=' | cut -d '"' -f 2
Dean Rather

2
awk 구문 오류에 직면 한 사람들을 위해, 여기 제 3 행이 있습니다 :wget https://github.com$(cat /tmp/latest | grep -o -E 'href=".*atom-amd64.deb' | cut -d'"' -f2) -O /tmp/atom-amd64.deb
Felipe Elia

20

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

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.local ( sudo nano /etc/rc.local)에 아래 행을 추가하십시오 exit 0.

    /usr/local/bin/atom-update  
    

이렇게하면 PC를 켤 때마다 atom 업데이트 스크립트가 실행될 수 있습니다.

  1. 시작시 스크립트가 제대로 실행되었는지 확인하려면 PC를 다시 시작하고 터미널을 연 다음 다음을 입력하십시오.

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

이에 따라 로그 메시지가 표시됩니다.


더 이상 작동하지 않습니다. 업데이트 하시겠습니까?
흥미로운 녹스

이것이 실제로 Atom을 업그레이드하면 혼란 스럽습니다 .Atom이 1.23.3에서 1.19.7로 업데이트되었습니다 . 경우 나는 현재 최신 다운로드 에서 Atom.io을 하고 sudo dpkg -i atom-amd64.deb그때 (1.19.7)를 통해`포장 풀기 원자 (1.23.3)을 얻는다.
Pablo 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
나는 문제없이 오랫동안 이와 같이 사용 해 왔으며 항상 업데이트하도록 상기시키는 대신 자동 업데이트되기 때문에 뎁을 선호합니다.
Jorge Castro

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

덜 우분투 특정 접근 방식을 위해 시작할 때 새 버전을 확인 하는 작은 원자 패키지 를 작성했습니다 (또는 Atom 내에서 편리한 명령으로 수동으로 확인할 수 있습니다).

그것은 플랫폼 독립적입니다 (그래서 모든 리눅스 배포판, 창 등에서 작동합니다 ...).

안정적인 채널 또는 베타 만 모니터링하고 알림, 유형 및 해제 가능 여부 등 몇 가지를 구성 할 수 있습니다.

패키지를 자동으로 업데이트 하지는 않습니다 . 관심이 충분한 경우 나중에 해당 기능을 추가 할 수 있습니다.

피드백 환영, github의 티켓으로 가장 좋습니다.


세 이하 : 당신의 GitHub의 페이지를 변경 제안 사용 제목 교체 The package check for new version of Atom at launchThe package checks for a new version of Atom at launch언더 왜 "가이거"? 대체 표제를 outadet Atom함께outdated Atom
카렐

@karel - 감사 . 일부 오류는 이 버그 로 인한 것 입니다. :)
mac

0

소스에서 빌드하는 경우 작은 스크립트를 통해이 작업을 수행합니다.

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

0

2016 년 5 월 6 일

Andy Richardsonatom-updater-linux를 만들었습니다 . 그것은 원자 패키지이므로 다음을 실행하여 원자에 가질 수 있습니다.

apm install atom-updater-linux

자세한 내용은 저장소를 참조하십시오


0

Andrea Lazzarotto 의 python 스크립트에 대한 몇 가지 개조로 기본적으로없는 다른 우분투 변형에 대해 notify-send에 대한 종속성을 제거하고 이미 설치된 아톰 사본이없는 경우를 처리합니다. 또한 필요한 다른 종속성이 있습니다.

sudo apt-get 설치 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.')

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.