Apt-get ile son güncelleme yapıldı.


30

Son kez bulmam gerek.

apt-get update

Komut sunucumda çalıştırıldı. Bu bilgiyi nasıl belirleyebilirim?

Yanıtlar:


23

En azından Ubuntu sistemlerinde aşağıdakileri içeren bir /etc/apt/apt.conf.d/15update-stamp dosyası var:

APT::Update::Post-Invoke-Success {"touch /var/lib/apt/periodic/update-success-stamp 2>/dev/null || true";};

Öyleyse / var / lib / apt / periodic / update-success-stamp'iniz varsa ve varsa, kullanabilirsiniz.

stat -c %y /var/lib/apt/periodic/update-success-stamp

son "apt-get update" çağrısı zamanını alma komutu.

Sisteminizde uygun bir yapılandırma dosyası yoksa, her zaman ekleyebilirsiniz.


Aptconf satırını dahil etmek için +1. Ubuntu 14.04'te dosya göründüğü gibi/var/lib/apt/periodic/update-stamp
GnP

11

Apt-get update komutunu çalıştırdığınızda güncellenen / var / lib / apt / list dosyalarındaki Access zamanlarını kontrol edebilirsiniz. Apt-get update sudo ile çalıştırıldıysa, /var/log/auth.log’da oturum açmış bir satırın olması gerekir.


2
Başka bir yerde belirtildiği gibi, bazı dosyaların güncellenmediğini ve bu nedenle tekrar indirilmediğini görebilirsiniz. Paket listelerinizin ne kadar güncel olduğunu bilmek istiyorsanız, apt-get güncellemesinin en son ne zaman çalıştırılacağını bilmek istemiyorsanız, sorun yoktur. İlki daha muhtemeldir.
David Pashley

10

Bir apt-get updatedosya oluşturmayabilir veya güncelleyemez, önbellek dizinini günceller, böylece son apt-get updateçalıştırıldığında zaman damgasını almak için bunu kullanabiliriz :

stat -c %Y /var/cache/apt/

Paket kurulumunun da önbellek dizinini güncelleyebileceğini unutmayın. Bu güvenilir bir kontrol değilapt-get update
GnP

3

Kilit dosyalarından gitme. Kilitleme dosyaları güvenilir değildir, yeni Linux sürümleri ile zaman içinde hareket etme eğilimindedirler ve çoğu program bunlarla birlikte çalıştıklarında kilitleme dosyalarını temizler (kaldırır).

Aşağıdaki komut size aradığınızı verecektir.

ls -lt --time-style="long-iso" /var/log/apt | grep -o '\([0-9]\{2,4\}[- ]\)\{3\}[0-9]\{2\}:[0-9]\{2\}' -m 1

Bu bir iki komuttur. Birinci komut filtresinin sonuçları, boru (|) sembolünden ikinciye girer.

İlk komutta, / var / log / apt dizininin dosya içeriklerini listelemek için "ls" kullanıyorum, apt-get için erişim geçmişi günlüklerini saklayan dizin. "-Lt" kısmı aslında iki anahtardır. İlk "l" anahtarı "ls" e satır başına bir dosya ayrıntılarıyla listelemesini söyler. İkinci "t" düğmesi "ls" ye tarih ve saate göre sıralama yapmasını söyler. "- time-style" tarih saatini "YYYY-AA-GG YG: AA" biçiminde göstermeye zorlar.

Komutun "grep" bölümünde, "-o" düğmesi grep'e yalnızca normal ifadeyle tam olarak eşleşen her satırın bölümlerini göstermesini söyler. Burada kullandığım normal ifade, "ls" komutunda belirtilen formattaki tarih saatlerini algılar. Ayrıca, "grep" komutunun en sonunda, hemen ardından "1" sayısının bulunduğu bir "-m" düğmesi bulunduğunu gösteren gerçek sihir parçasını fark edeceksiniz. Bu, "grep" e birinciyi bulduktan sonra kibrit aramayı bırakmasını söyler.

Bu yüzden, özet olarak, uygun günlük dosyası ayrıntılarını listeliyoruz, böylece en son değiştirilen tarihi görebiliyoruz, daha sonra tarihe göre sıralıyoruz ve grep'e, ilk tarihi en baştan çekmesini ve ardından geri dönmesini söylüyoruz. Bu apt-get koştu son tarih.

Bununla birlikte, bir an için şeytanın avukatı oynamak, Ubuntu gibi Debian platformlarının apt-get'i düzenli olarak çalışan bir iş olarak planlaması yaygındır. Apt-get yürütmesinin diğer ucundaki kişiyi arıyorsanız, aslında bir makine bulabilirsiniz. Herhangi bir zaman damgasının çakışmadığını görmek için erişim günlüklerini her zaman uygun günlüklerle eşleştirebilirsiniz. Bir kullanıcının komut geçmişine bir ölçüde bakmak da mümkündür.

Bu yardımcı olur umarım!


1
Maalesef çalışmıyor. In /var/log/aptBen mesela bir yaptığınızda bunun da kaydedilir apt-get install some-package. Aslında Ubuntu'da yaptığım zaman hiçbir şeyi apt-get update
Alex,

2

Son değişikliklerin paket listelerine ne zaman uygulandığını bulmak için / var / cache / apt üzerindeki son değiştirilmiş zamanları kontrol edebileceğinizden şüpheleniyorum.

Bunu yeni test ettim ve üst üste iki kez "sudo apt-get update" komutunu kullandım ve tarihler şu anki değerlerinden farklı değildi, ancak bunun uygulanacağı için yeni güncellemeler olmadığından ve önbelleklerin hazır olduğundan şüpheliyim. bugüne kadar.


1
$ ls -l /var/lib/dpkg/lock 
-rw-r----- 1 root root 0 2011-11-16 09:40 /var/lib/dpkg/lock

1

Synaptic bir geçmiş dosyası (> Dosya> Geçmiş) kaydeder, yetenek / tarih / var / log / yetenek ve otomatik olarak yüklenmiş paketleri / var / lib / aptitude / pkgstates içine otomatik olarak kaydeder, böylece bunları en son etkinlik için kontrol edebilirsiniz.


1

/var/cache/aptKoşmam gerekip gerekmediğini belirlemek için kullanıyorum apt-get update. Varsayılan olarak, geçerli saat ile önbellek süresi arasındaki fark /var/cache/apt24 saatten azsa, çalıştırmam gerekmez apt-get update. Varsayılan güncelleme aralığı, bir sayı fonksiyona geçirilerek geçersiz kılınabilirrunAptGetUpdate()

function getLastAptGetUpdate()
{
    local aptDate="$(stat -c %Y '/var/cache/apt')"
    local nowDate="$(date +'%s')"

    echo $((nowDate - aptDate))
}

function runAptGetUpdate()
{
    local updateInterval="${1}"

    local lastAptGetUpdate="$(getLastAptGetUpdate)"

    if [[ "$(isEmptyString "${updateInterval}")" = 'true' ]]
    then
        # Default To 24 hours
        updateInterval="$((24 * 60 * 60))"
    fi

    if [[ "${lastAptGetUpdate}" -gt "${updateInterval}" ]]
    then
        info "apt-get update"
        apt-get update -m
    else
        local lastUpdate="$(date -u -d @"${lastAptGetUpdate}" +'%-Hh %-Mm %-Ss')"

        info "\nSkip apt-get update because its last run was '${lastUpdate}' ago"
    fi
}

Örnek çıktı:

<root@ubuntu><~/ubuntu-cookbooks/libraries>
# runAptGetUpdate 

Skip apt-get update because its last run was '0h 37m 43s' ago

Bu fonksiyonları kişisel github'umdan aldım: https://github.com/gdbtek/ubuntu-cookbooks/blob/master/libraries/util.bash


Cevap eksik. Nedir infove isEmptyString? Ayrıca, infoaynı zamanda bir komut olduğundan, işlev adı için kötü bir seçimdir. Bunun dışında güzel bir çözüm!
Ronny Andersson,

@RonnyAndersson, bu lib'deki herkes
Nam Nguyen

0

/var/log/dpkg.log, neyin yapıldığıyla ilgili bir geçmişi tutacaktır, ancak hangi uygulamanın dpkg (synaptic, apt-get, etc) olarak adlandırılması gerekmez.


0

apt-get 'i bir dosyaya önce bir zaman damgası yazan bir betiğe yerleştirin ve ardından normal işleri yapar. Bu şekilde zaman damgası formatını ve konumunu tanımlayabilirsiniz;)


Sujoy, yüzlerce sunucunuz varsa ve bir betiğe sarmak pratik değildir ve apt-get paketinizi bir sonraki güncellemenizde sorun yaratabilecek başka bir betiği sürdürmek istemezsiniz. İstekte bulunanın bilgisayarında mevcut olan bilgiyi kullanan bir cevap aradığını düşünüyorum.
pdwalker

0

İşte son gün içinde çalıştırılmamışsa, güncelleme yapmak için basit bir astar.

(find /var/lib/apt/periodic/update-success-stamp -mtime +1 | grep update-success-stamp) && (/usr/bin/apt-get update)

Bir günden daha önce değiştirilmiş olan güncelleme-başarı damgası dosyasını arar. Doğru yaştaki dosyayı bulursa, güncellemeyi çalıştırır. Not: Bunun çalışması için güncelleme-başarı damgası dosyasının var olması gerekir.

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.