स्वचालित रूप से एटम संपादक को कैसे अपडेट करें?


51

उबंटू के लिए एटम फीचर का स्वचालित अपडेट अभी तक समर्थित नहीं है। उनके GitHub भंडार से:

वर्तमान में केवल 64-बिट संस्करण उपलब्ध है।

एटम रिलीज़ पृष्ठ से एटम-एएमडी ६४.दब डाउनलोड करें। डाउनलोड किए गए पैकेज पर sudo dpkg - atom-amd64.deb इंस्टॉल करें। स्थापित एटम कमांड का उपयोग करके एटम लॉन्च करें। लिनक्स संस्करण वर्तमान में स्वचालित रूप से अपडेट नहीं होता है इसलिए आपको भविष्य के रिलीज के लिए इन चरणों को दोहराने की आवश्यकता होगी।

मैंने Webupd8 PPA का उपयोग करने की कोशिश की, लेकिन यह मेरे लिए काम नहीं करता है।


1
PPA के साथ क्या समस्या है?
एबी

@AB मुझे लगता है कि अब ठीक है, इसे परीक्षण करने का समय नहीं मिला है और मैं अभी कुछ समय के लिए परमाणु का उपयोग नहीं कर रहा हूं, लेकिन फिर पीपीए ने मेरे संस्करण को अपडेट नहीं किया।
इगोर वी।

मुझे शायद पुराने सवालों का जवाब नहीं देना चाहिए। : \
एबी

1
आपका उत्तर बहुत अच्छा है और यह मुझे ऐसी ही समस्याओं के लिए मदद करेगा। :)
इगोर वी।

जवाबों:


71

TL, DR यदि आप PPA का उपयोग नहीं करना चाहते हैं , तो आप क्रोन के माध्यम से डाउनलोड और स्वचालित रूप से इंस्टॉल करने के लिए एक स्क्रिप्ट का उपयोग कर सकते हैं।


  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
एक संपादित करें और एक upvote! ;-)
फैबी

2
awk: लाइन 1: सिंटैक्स त्रुटि पर या उसके पास, wget: URL manquante उपयोग: wget [विकल्प] ... [URL] ...
Rachid Oussanaa

अगर मैं इस तरह से अपडेट करता हूं, तो क्या मुझे पैकेज को फिर से देखना होगा?
22

1
इससे मुझे एक सिंटैक्स त्रुटि भी मिली जहाँ आप HTML से URL निकालने का प्रयास करते हैं। उन्होंने तब से शायद HTML बदल दिया। इसने मेरे लिए काम किया (पूर्ण नहीं):cat /tmp/latest | grep '.deb' | grep 'href=' | cut -d '"' -f 2
डीन राथर

2
अजीब वाक्यविन्यास त्रुटि का सामना करने वालों के लिए, यहां मेरी तीसरी पंक्ति है:wget https://github.com$(cat /tmp/latest | grep -o -E 'href=".*atom-amd64.deb' | cut -d'"' -f2) -O /tmp/atom-amd64.deb
फेलिप एलिया

20

एबी का जवाब एक अच्छा समाधान है! मैंने प्रगति को सूचित करने के लिए बैश कोड में शो प्रगति बार विकल्प जोड़ा: 

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

फिर नीचे स्क्रिप्ट टाइप करें ("नैनो" के बजाय "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. अब आप मैन्युअल रूप से एटम को कमांड टाइप करके अपडेट कर सकते हैं:

    sudo atom-update
    
  3. अपनी रूट में लॉगिन करें, और फिर कमांड से ठीक पहले /etc/rc.local ( sudo nano /etc/rc.local) में नीचे की पंक्ति जोड़ें exit 0:

    /usr/local/bin/atom-update  
    

यह हर बार जब आप अपने पीसी को चालू करते हैं, तो एटम अपडेट स्क्रिप्ट निष्पादित करेगा।

  1. यह जांचने के लिए कि स्क्रिप्ट स्टार्ट अप पर ठीक से चल रही है, अपने पीसी को पुनरारंभ करें और टर्मिनल खोलें फिर टाइप करें:

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

आपको अपने अनुसार लॉग मैसेज दिखाई देगा।


यह अब काम नहीं कर रहा है। क्या आप कृपया इसे अपडेट कर सकते हैं?
दिलचस्प नॉक्स

मुझे विश्वास है कि अगर यह मेरे एटम को अपग्रेड करता है, तो मुझे एटम 1.23.3 से 1.19.7 तक अपडेट किया गया है । अगर मैं Atom.io से नवीनतम डाउनलोड करता हूं और sudo dpkg -i atom-amd64.debफिर मुझे `अनपैकिंग एटम (1.23.3) ओवर (1.19.7) मिलता है।
पाब्लो ए

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}"

संपादित करें: मुझे स्पष्ट करना चाहिए कि यह / usr / लोकल / बिन / एटम-ऑटो-अपडेट स्क्रिप्ट की सामग्री को प्रतिस्थापित करेगा जो AB के उत्तर का उल्लेख करता है। उत्तर के अन्य चरण समान हैं।


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

एक स्नैप के माध्यम से एटम को स्थापित करना यह सुनिश्चित करेगा कि आपके पास हमेशा नवीनतम संस्करण होगा:

sudo snap install atom --classic

क्या स्नैप या एप के माध्यम से स्थापित एटम के बीच प्रदर्शन या उपयोग में अंतर है? मैं वास्तव में नहीं समझता कि सामान्य रूप से एक या दूसरे को कैसे चुना जाए। धन्यवाद।
रेमन सुआरेज़

1
मैं लंबे समय से बिना किसी मुद्दे के साथ इस तरह का उपयोग कर रहा हूं, मैं इसे अपने डीबीएस के लिए पसंद करता हूं क्योंकि यह मुझे हर समय अपडेट करने के लिए याद दिलाने के बजाय ऑटौपडेट करता है।
जॉर्ज कास्त्रो

1

मैंने एक पायथन स्क्रिप्ट लिखी है जिसका उपयोग 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.'

1

कम उबंटू-विशिष्ट दृष्टिकोण के लिए, मैंने एक छोटा परमाणु पैकेज लिखा था जो स्टार्टअप पर नए संस्करणों की जांच करता है (या आप एटम के भीतर एक आसान कमांड के साथ मैन्युअल रूप से जांच कर सकते हैं)।

यह प्लेटफ़ॉर्म इंडिपेंडेंट है (इसलिए यह किसी भी linux distro, windows, etc ... पर काम करता है)।

आप कुछ चीज़ों को कॉन्फ़िगर कर सकते हैं, जैसे केवल स्थिर चैनल या बीटा की निगरानी करना, सूचनाएं रखना, किस प्रकार, और यदि उन्हें खारिज किया जाना चाहिए, आदि ...)।

यह करता है नहीं (कम से कम अब के लिए!) स्वचालित रूप से पैकेज अद्यतन करें। मैं भविष्य में उस सुविधा को जोड़ सकता हूं यदि इसमें पर्याप्त रुचि है।

प्रतिक्रिया का स्वागत, जीथब पर टिकट के रूप में सर्वश्रेष्ठ।


अपने GitHub पृष्ठ को बदलने के लिए सुझाव: उपयोग शीर्षक The package check for new version of Atom at launchके The package checks for a new version of Atom at launchतहत क्यों "Geiger" के तहत बदलें ? outadet Atomoutdated Atom
बजे

@ कारेल - धन्यवाद, कियाइस बग के कारण कुछ त्रुटियां थीं । :)
मैक

0

यदि आप स्रोतों से निर्माण कर रहे हैं, तो मैं एक छोटी स्क्रिप्ट के माध्यम से ऐसा करता हूं:

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


0

एंड्रिया लज्जाओत्तो द्वारा पाइथन स्क्रिप्ट के लिए मॉड के एक जोड़े ने सूचना-भेजने पर निर्भरता को हटाने के लिए जो अन्य उबंटू वेरिएंट डिफ़ॉल्ट रूप से नहीं है और उस मामले को संभालते हैं जहां पहले से ही एटम की एक प्रति स्थापित नहीं है। इसके अलावा, यह ध्यान दिया जाना चाहिए कि अन्य निर्भरताएँ हैं जिनकी आपको आवश्यकता होगी:

sudo apt-get install अजगर-अनुरोध 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.')

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.