Arch Linux'ta güncellemeleri nasıl sorumlu bir şekilde otomatik olarak çalıştırabilirim?


15

Linux Arch'a yeni gelen biriyim ve hala bazı paradigmalarına alışıyorum. Biraz daha yapılandırılmış ve bazı açılardan tahmin edilebilir olan başka bir dağıtımdan birçok alışkanlıkla geliyorum.

Birkaç sistemle yapmak istediğim bir şey, bir cron işinin tüm sistem paketlerinin otomatik güncellemelerini yapmasını sağlamak. Sistemden nasıl işlerin nasıl gittiğini söyleyen bazı anlamlı geri bildirimler istemek dışında bu oldukça kolay görünüyor gibi görünüyor.

  • Tam çıktısı pacmangereksizdir. İndirme işlemlerinin ne kadar sürdüğünü veya 53/46 güncellemesinde olduğunu umursamıyorum.
  • Çoğunlukla başarıları umursamıyorum.
  • Hataları önemsiyorum. Bir güncelleme çalıştırması başarısız olursa, bunu bilmek istiyorum ve herhangi bir özel hata mesajı yamalanmalıdır.
  • Yükleme sırasında verilen "bildirimler" i önemsiyorum. Örneğin, bugünün systemd güncellemesi şunları söyledi:

    :: coredumps are no longer sent to the journal by default. To re-enable:  
    echo >/etc/sysctl.d/50-coredump.conf \  
        "kernel.core_pattern=|/usr/lib/systemd/systemd-coredump %p %u %g %s %t %e"
    

    Veya dosya sistemi bunu üretti:

    warning: /etc/group installed as /etc/group.pacnew  
    warning: /etc/passwd installed as /etc/passwd.pacnew  
    warning: /etc/shadow installed as /etc/shadow.pacnew
    

    Bu son kategori aslında bu soruyu sormamı istedi, çünkü bunlar paket setinde çok tutarsız görünüyor. Bunlardan bazıları post_upgrade(), diğerleri install(), vb. Tarafından üretiliyor gibi görünmektedir . Bazen stdout'a, bazen stderr'a yazılırlar. Mesajların formatı büyük ölçüde değişir: bazen bir bloğun tamamı bir şekilde girintili olarak eklenir, diğer zamanlarda sadece çıplak bir yankı dizesi vardır.

Bir sisteme müdahale etmemi gerektirebilecek, ancak başka türlü rahatsız edilmeyecek şeyleri bilmek istiyorum. Bu verileri akıllıca yöneten ve sistem yönetimini basitleştiren bir araç var mı? Paketler tarafından üretilen çıktıyı pacman işleminden ayrı olarak kurmanın herhangi bir yolu var mı? Yoksa yükleme günlüğündeki iyi huylu öğeleri filtreleyen bir tür ayrıştırıcı yazmak için tek başımayım?

This Bunun ne kadar aptal olduğunu atlamadan önce, lütfen bir felaket durumunda kurtarmayı kolaylaştıracak anlık görüntü tabanlı tam sistem yedekleri olmadan bunu üretim sunucularında yapmayacak kadar akıllı olduğumu unutmayın.


Yapacağım ilk şey yaourt, hem sorunuzdan hem de kavramsal modelinizden etiketi kaldırmaktır : bunu resmi depolarla yapmaya çalışmak yeterince zor olacak, AUR'dan karışıma rasgele paketler eklemek onu quixotic yapacak ...
jasonwryan

Oh, ve bu aptalca bir fikir değil; ancak Arch'ın çalışma biçimine çok fazla iter. Günde bir kez kullanmak checkupdatesve -Syuing olmak oldukça önemsiz bir iştir; Teklifinizin gerektireceği tüm işler için gerçek bir fayda görmüyorum.
jasonwryan

@jasonwryan Bunu genişletmek istedim ama aslında aynı iş akışına sığdırmak istediğim bazı AUR paketleri var. Şu anda yaourt'u yaygın olarak kullanıyorum ve paket yönetimi operasyonları için kuru çalışma desteği olmadığı gerçeğini özlüyorum! : /
Caleb

2
Arch'ın DNA'sı ellerinizi kirletiyor: Bu sadece çalıştırılması amaçlanmayan şey değil; oraya gidebilirsin, ama bu bir Pyrrhic zaferi olacak ve burada belgelenirse, sadece bir sürü
yeniyi

2
Geçen yıl denemek için biraz zaman harcadım ve düzenli olarak öldürme sistemleri olmadan yükseltmeleri elde etmenin tek yolunun yeni görüntüler oluşturmak (ki bu temel test noktası gibi görünüyor ve Arch'da daha güvenilir) sonucuna vardım ve nakil servisinin bir yapılandırma ile Yönetim aracı. Belki güncellemeler biraz azaldı, ancak 6 aylık bir sürede manuel müdahale olmadan bir sistemi hortumlayacak 3-4 vardı.
Matt

Yanıtlar:


11

Hem siz hem de bu iş parçacığında olabilecek diğer kişiler için açık olmak istiyorum. Yapmak istediğiniz şey mümkün değil . Arch beklediğinin gerçeğinin gizlemiyor Eğer sisteminizi yönetmek için. Bu sorumluluğun bir kısmı güncelleme döngüsü için mevcut.

Şimdi, güncelleme işleminin sorumlu bir şekilde otomatikleştirebileceğiniz adımları vardır , ancak asla otomatikleştirilmeyecektir -Syu. Yükseltme için orada olmanız yeterlidir.

Örneğin yapabileceğiniz, cronyüklenmesi gereken paketleri yükleyen (ancak yüklemeyen) bir iş ayarlamaktır . Aşağıdaki pacmanbelgelerden bir alıntıdır :

SYNC OPTIONS
...
-w  --downloadonly
    Retrieve all packages from the server, but do not install/upgrade anything.

Daha sonra, çalıştırmak için bir croniş kurabilirsiniz sudo pacman -Syuw. Çok aşina değilim cronveya zamanlama yetenekleri. Ancak, yalnızca belirli bir koşul yerine getirildikten sonra bir işi yürütebiliyorsa (örneğin, belirli bir değeri döndüren bir komut), gerektiğinde yeni paketlerin indirilmesini tetiklemek oldukça önemsiz olacaktır.

checkupdates | wc -lMesela bir çek kontrol etmeyi hayal ederdim . Sıfırın üzerinde bir sayı döndürürse, indirme işlemini tetikleyebilirsiniz. Yine de, bu -Syu, mevcut olduğunuzda ve yükseltme ile başa çıkmaya hazır olduğunuzda çalışmanın yerini almayacaktır .

Yeni sürüme geçiş sırasında nelerden çıktı alabileceğinizle ilgili sorunuzun son kısmı için, aradığınız şey /var/log/pacman.log. İlginizi çekebilecek tüm hata bilgilerini içerir.


Orada bir araç yapmak içindir pacmanbilmeyen kullanıcılar için biraz daha kolay. Yanılmıyorsam, manuel müdahaleyi gerektiren bir güncelleme olması durumunda haber öğeleri hakkında da bir bildirim sağlar.

Bu araç kısa vadede hayatınızı biraz daha kolaylaştırabilir, ancak Posta Listelerini mantıklı ve özenle takip etmenin yerini tutmaz.


2
Aslında, manuel müdahaleler gerektiren resmi paketlerle ilgili bildirimler için arch-dev-public ve arch- general'i izlemenizi tavsiye ederim .
HalosGhost

Ayrıca, @jasonwryan tamamen doğrudur. Bunu yapmak pacmanmümkün olabilir. Bunu yapmak yaourtmümkün değildir.
HalosGhost

yaourtaslında bunu biraz daha iyi bir iş yapıyor pacmanolsa da, demek istediğim gibi, aur yardımcısından biraz daha fazla varsayılan yapılandırması neredeyse kesinlikle uzun vadede işleri mahveder. Bununla birlikte, son derece yapılandırılabilir ve kaynak ağaçlarını çok etkili bir şekilde korumak için yapılabilir. Her ikisi de yaourtve pacmansadece alpmyine de sarın .
mikeserv

Veya, sanırım söylemek daha doğru, yaourtsarar pacmanve bazı ek alpmişlevsellik ve pacmansarar alpm. Yine de her durumda, yaourtuzanır pacman.
2014'te

Belirtildiği gibi burada , -Syuwpotansiyel olarak oldukça tehlikelidir. Güncellemeler uygulanmazsa ve yazılım daha sonra yüklenirse kısmi güncellemeler üretme yeteneğine sahiptir -S.
Sparhawk

1

Gerçekten iyi bir iş çıkaran eski bir senaryo var; buna safepac denir .

EDIT: Bu komut dosyası hala github üzerinde kullanılabilir: https://github.com/bencahill/binfiles/blob/master/safepac

Ne işe yarar ve nasıl çalışır?

Arch'ı genellikle güncelleme şeklim, haberleri okumak ve sonra yapmak pacman -Syuya da sadece yapmak pacman -Syuve bir şeyler ters giderse haberleri okumaktır. Şimdi bu komut dosyası başka bir şey yapmıyor: RSS beslemesinden en son haber girişlerini alıyor, biraz sedsihir yapıyor ve haberlerde güncellemeleri olan tüm paketlerin adlarını karşılaştırıyor. Haberlerde "paket adı" ve "paket adı" ile eşleşir ve paket adı haberlerde bir yerde görünüyorsa paketi yok sayar ve yalnızca diğerlerini günceller. Bu şekilde, yanlış olabilecek her şey, konuyu el ile incelemek için zamana kadar ertelenecek, kritik olmayan güncellemeler otomatik olarak yapılacaktır!

Genellikle, muhtemelen pürüzsüz olmayan bir güncellemeye baktığınızda, safepachala haberlerde olduğu için belirli bir paketi görmezden gelmek istemezsiniz . Görmezden gelenin nedeni budur. Her zaman el güncelledik Yani, listeyi göz ardı etmek, ilgili haber girişi ekleyebilir nerede, haber girişi sayısıdır. Ayrıca, anahtarla ayrıştırmasına dahil etmek istediğiniz en son haber sayısını da belirtebilirsiniz . Betik ayrıca mevcut olmayan girişleri atlayacak kadar akıllıdır. Haberlerde keyfi olarak görünebilecek çok kısa adlara sahip paketlerle ilgili sorunlarla karşılaşırsanız ("evet" gibi), haberlerde görünseler bile her zaman yüklenecekleri şekilde beyaz listeye ekleyebilirsiniz .safepac -Ia xxxxxx-nsafepac -Wa

Bu komut dosyası ayrıca size tam bir posta (tam günlüklü?) Ve güncellemenin dikkat çekici kısımları ile gönderildiği için çalışan bir posta kurulumuna ihtiyacınız olduğunu lütfen unutmayın:

pacmanbu kelimeleri aramak ve özete eklemek için çıkışın ayrıştırılması :
"note" "pacnew" "error" "önemli" "uyarı" "mevcut".

Senaryo eski, ama fikir iyi ve muhtemelen hala küçük güncelleme ile çalışıyor.


olası bir sorun, haberlerde büyük (veya kırılma) güncellemenin söylenmediği, ancak kendiniz izlemeniz gerektiğidir. Durumda, python2'den python3'e güncelleme
Lesto

Yine de, checkupdates (pacman-utils) kullanabilir ve paketlerin listesini alabilir ve daha sonra havuzunuz varsa iyi bir şekilde beyaz listeye alabilirsiniz, ancak daha sonra yerel bir repo gibi bir şey kurmak daha iyidir
Lesto

-2

Ben kendi tronitimiyaourt cron tarafından koşmak için kullanıyorum .


1
Yaourt etkili bir şekilde öldü : Bu çok kötü bir fikir.
jasonwryan

Kullandığım yaourtkendim yıllardır. Bu iyi bir araçtı, ama "sarmak" için inşa edilen şeylerin şekli değişti ve şu anda pek çok şeyi yanlış yapıyor. Bu noktada o kadar sorunlu ki, aracın yazarları artık kendilerini kullanmadıklarını bile söylediler. Bir AUR yardımcısı istiyorsanız, aktif olarak korunanlardan birini denemenizi öneririm. Kendime geçtim yayve oldukça mutluyum.
Caleb

Bu yardımcı program da yaybenim için çalışıyor .
vadzim
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.