Atom editörü otomatik olarak nasıl güncellenir?


51

Atom özelliğinin otomatik güncellenmesi henüz Ubuntu için desteklenmemektedir. GitHub deposundan:

Şu anda sadece 64 bit sürümü mevcut.

Atom-amd64.deb dosyasını Atom sürümünden indirin. İndirilen pakette sudo dpkg --install atom-amd64.deb dosyasını çalıştırın. Kurulu atom komutunu kullanarak Atom'u başlatın. Linux sürümü şu anda otomatik olarak güncellenmemektedir, bu nedenle gelecekteki sürümlere yükseltmek için bu adımları tekrar etmeniz gerekecektir.

Webupd8 PPA'yı kullanmayı denedim, ancak benim için çalışmıyor.


1
PPA ile sorun nedir?
AB

@ AB bence artık sorun yok, test etmek için zamanım olmadı ve bir süredir atom kullanmıyorum, ancak o zaman PPA sürümümü güncellemiyordu.
Igor V.

Muhtemelen eski soruları cevaplamamalıyım. : \
AB

1
Cevabınız harika ve benzer sorunlar için bana yardımcı olacaktır. :)
Igor V.

Yanıtlar:


71

TL; DR Eğer PPA'yı kullanmak istemiyorsanız , cron üzerinden indirmek ve otomatik olarak kurmak için bir komut dosyası kullanabilirsiniz.


  1. Yeni bir dosya oluştur atom-auto-update

    sudo nano /usr/local/bin/atom-auto-update
    
  2. Aşağıdaki satırları ekleyin

    #!/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. Dosyayı kaydedin ve çalıştırılabilir hale getirin

    sudo chmod +x /usr/local/bin/atom-auto-update
    
  4. Komut dosyasını test et

    sudo atom-auto-update
    
  5. Senaryo için bir cronjob oluşturun

    sudo crontab -e
    
  6. Bu satırı ekle

    örneğin: her hafta saat 10'da

    0 10 * * 1 /usr/local/bin/atom-auto-update
    

    örneğin: her gün saat 10'da

    0 10 * * * /usr/local/bin/atom-auto-update      
    

açıklama

  • wget -q https://github.com/atom/atom/releases/latest -O /tmp/latest

    Siteyi en son sürüm bilgileri ile indirin

  • 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 …

      İndirme bağlantısını çıkart

    2. wget -q $( … ) -O /tmp/atom-amd64.deb

      DEB dosyasını indir

  • dpkg -i /tmp/atom-amd64.deb

    DEB dosyasını yükleyin


1
Bir düzenleme ve bir artı! ;-)
Fabby

2
awk: 1. satır: sözdizimi de hata veya yakınında wget: URL Manquante Kullanımı: wget [seçenek] ... [URL] ...
Rachid Oussanaa

Bu şekilde güncelleme yaparsam paketleri reçine ile doldurmam gerekir mi?
becko,

1
Bu aynı zamanda, URL’yi HTML’den çıkarmaya çalıştığınız bir sözdizimi hatası verdi. Muhtemelen HTML’yi o zamandan beri değiştirdiler. Bu benim için çalıştı (tamamlanmadı):cat /tmp/latest | grep '.deb' | grep 'href=' | cut -d '"' -f 2
Dean Rather

2
Awk sözdizimi hatasıyla karşı karşıya olanlar için, işte üçüncü satırım: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'nin Cevabı güzel bir çözüm! İlerlemeyi bildirmek için bash kodunda göster ilerleme çubuğu seçeneğini ekledim: 

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

Küçük değişikliklerle önceki cevap olarak, başlangıçta güncellemeye izin vermek için, işte prosedür

  1. Komutu çalıştırarak dosya oluşturun:

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

daha sonra aşağıdaki betiği yazın ("nano" yerine "gedit" veya "mousepad" gibi bir metin düzenleyicisi kullanın) daha sonra uygundur.

#!/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. Dosyayı çalıştırılabilir yapmak için:

    sudo chmod +x /usr/local/bin/atom-update
    
  2. Artık şu komutu yazarak Atom'u manuel olarak güncelleyebilirsiniz:

    sudo atom-update
    
  3. Kökünüze giriş yapın ve komuttan hemen önce /etc/rc.local ( sudo nano /etc/rc.local) satırına aşağıdaki satırı ekleyin exit 0:

    /usr/local/bin/atom-update  
    

Bu, atom güncelleme betiğinin PC'nizi her açtığınızda çalıştırılmasına izin verecektir.

  1. Komut dosyasının başlangıçta düzgün çalıştığını kontrol etmek için PC'nizi yeniden başlatın ve terminali açın, sonra şunu yazın:

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

Günlük mesajını buna göre göreceksiniz.


Artık çalışmıyor. Lütfen güncelleyebilir misiniz?
İlginç Knox

Bu gerçekten Atomum'u yükseltirse, Atom'un 1.23.3'ten 1.19.7'ye yükseltildiğini alıyorum . Eğer ben şimdiki son karşıdan gelen Atom.io ve sudo dpkg -i atom-amd64.debsonra (1.19.7) üzerinden `Ambalajın açılması atomu (1.23.3) olsun.
Pablo,

3

AB'nin cevabını temel alarak , gereksiz indirme / yükleme yapmamak için sürüm kontrolü ekledim:

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

Düzenleme: Bunun, AB'nin cevabından bahseden / usr / local / bin / atom-auto-update komut dosyasının içeriğinin yerini alacağını netleştirmeliyim. Cevabın diğer adımları aynı.


3

Pekala, senaryonun beta argümanı ile başlatılmış olması halinde, beta şubesinin desteğiyle daha şık bir versiyon: $ 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'u bir çırpıda yüklemek her zaman en son sürüme sahip olmanızı sağlar:

sudo snap install atom --classic

Snap veya apt ile kurulan Atom arasında performans veya kullanım açısından bir fark var mı? Genel olarak birini veya diğerini nasıl seçeceğimi gerçekten anlamıyorum. Teşekkürler.
Ramon Suarez,

1
Uzun zamandır problemsiz bir şekilde kullanıyorum, her zaman güncellememi hatırlatmaktansa otomatik güncellemeler olduğundan dolayı ben debs.
Jorge Castro

1

GitHub'dan 64 bit DEB paketini güncellemek için kullanılabilecek bir Python betiği yazdım. Aşağıdaki içeriği update-atom, örneğin olarak /etc/cron.hourlyveya içinde kaydedebilirsiniz /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

Daha az ubuntusa özgü bir yaklaşım için, başlangıçta yeni sürümleri kontrol eden küçük bir atom paketi yazdım (ya da Atom içinde kullanışlı bir komutla manuel olarak kontrol edebilirsiniz).

Platformdan bağımsızdır (bu yüzden herhangi bir linux dağıtımında, pencerelerde vb. Çalışır).

Yalnızca sabit kanalı veya beta sürümünü izlemek, bildirimleri olması, ne tür ve çıkarılabilir olması gerektiği vb. Gibi birkaç şeyi yapılandırabilirsiniz.

O mu değil (en azından şimdilik!) Otomatik paketi günceller. Gelecekte bu konuya yeterince ilgi varsa ekleyebilirim.

Geri bildirim hoş geldiniz, en iyi github biletleri.


Altında: En GitHub sayfasını değiştirmek için Öneri Kullanımı başlığı değiştirin The package check for new version of Atom at launchile The package checks for a new version of Atom at launchAltında Niçin "Geiger"? yerine başlığinı outadet Atomileoutdated Atom
Karel

@karel - Teşekkürler bitti . Bazı hatalar bu hataya bağlıydı . :)
mac

0

Kaynaklardan oluşturuyorsanız, bunu küçük bir komut dosyasıyla yapıyorum:

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


0

Diğer Ubuntu değişkenlerinin varsayılan olarak sahip olmadığı bildir-gönder bağımlılığını ortadan kaldırmak için Andrea Lazzarotto'nun python betiğine bir çift mod atılmış ve zaten yüklü bir atom kopyasının olmadığı durumda ele alınmıştır. Ayrıca, ihtiyaç duyacağınız başka bağımlılıklar da olduğu belirtilmelidir:

sudo apt-get install python-istekler git gvfs-bin

Başka bağımlılıklar almak için aşağıdakileri de yapmak zorunda kaldım ...

sudo apt-get -f kurulumu

#!/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.')

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.