Güncellenmiş paketleri geri almayı destekleyen bir dağıtım var mı?


23

Güncellemeden sonra değiştirilen paketleri geri alma özelliğini destekleyen bir araç veya tüm bir dağıtım var mı?

Örnek olarak: A, B ve C paketlerini yükselttim. Bu paketlerle birkaç gün çalıştıktan sonra, B'de anlaşma gerektiren bir hatayla karşılaştım.

Bir hata raporu verirken, yapmak üzere olduğum şeyi bitirebilmem için B'yi önceki sürüme indirmem gerekir. Bu arada A, B'ye bağımlıdır, bu yüzden de düşürülmesi gerekir, ancak C her ikisinden de bağımsızdır, bu nedenle şu anki sürümünde kalabilir.

Bunu destekleyen bir araç veya dağıtım var mı?

Çoğu dağıtımın bir paketi düşürmenin bir yolu olduğunu biliyorum, ancak önceki paket havuzlardan kaldırıldı ve bu bazı durumlarda (örneğin, X sunucusunu ve Mesa'yı yükselttikten sonra) gerçekten alıyor, çünkü bu genellikle kabataslak ya da mümkün değil. dağınık


3
Dikkat edilmesi gerekenler: paket sürümü değişikliği küçükse, aşağıdaki yanıtlar geçerli olabilir; ancak, daha büyük paket değişikliklerinin daha sonra eski sürümlerde düzgün çalışmayacak diskteki verileri yükseltebileceğini unutmayın. Örneğin, mysql-server (veya joomla) ana yükseltme alanları ekler ve değiştirir ve SQL tablolarını yükseltir, inn2 yükseltme veritabanı tipini değiştirebilir veya bazı dağıtım sistemi yükseltme ext3'ü ext4 dosya sistemine yükseltebilir veya bazı paket yükseltme yapılandırma dosyalarını dönüştürebilir, Bu "geri alınamayan" değişikliklere karşı tek koruma LVM / btrfs / etc anlık görüntüleridir (veya çok daha yavaş yedekleme / geri yükleme).
Matija Nalis

@MatijaNalis +1'den bahsettiği için!
Steffen Winkler

Yanıtlar:


21

NixOS yükseltme geri alma işlemlerini destekliyor olsa da, anladığım kadarıyla istediğiniz kadar ilerlemiyor: A, B ve C'yi tek bir işlemde yükseltirseniz, tüm işlemi geri alabilirsiniz, ancak yalnızca A ve B. (A, B ve C'yi geri alıp ardından C'yi yükseltebilmelisiniz ...) İşlemsel bir perspektiften mantıklı olsa da.

Debian (birlikte anlık arşivinde Eğer B eski sürüme izin ve benzeri araçlar olacak artık eski paketleri varsa) aptveya aptitudesize olduğuna ikna ettiğimiz bir kez irade birçok durumda (A da döndürüldüğünü gerektiğini anlamaya sadece B yükseltmek istemiyorum). Ancak dediğiniz gibi, biraz dağınık olma eğilimindedir ve paket düşürmeleri zaten Debian'da desteklenmez (bu, çoğu zaman çalıştıkları, ancak kırılırlarsa, bunun bir hata olmadığı anlamına gelir).


1
Bu ilginç görünüyor! Topluluk aktif ve sağlıklı görünüyor. Bunu kesinlikle deneyeceğim, teşekkür ederim! Cuma akşamına kadar daha iyi / farklı bir cevap yoksa, cevabınızı işaretlerim.
Steffen Winkler

NixOS'ta geri dönüşler harika, ancak asıl güç bildirimsel yaklaşımdan geliyor: Paketler (ve sistem) açıklaması git deposundan alınabilir, böylece sisteminizi şubeler de dahil olmak üzere bir yazılım projesini yönettiğiniz gibi yönetebilirsiniz ve birleştirmeleri vb (ve bağlı atomik yükseltmeleri ve malzeme kırmak asla saflığa)
Daniel Jour

Nix paket yöneticisi, 'yerel' paket yöneticileriyle yan yana diğer Linux dağıtımlarında da çalıştırılabilir. Aynı zamanda OSX üzerinde de çalışıyor ve Windows'ta çalışabileceğini iddia ettim. Nix'e ayrıca kendi kopyalarını yüklemek yerine bazı paketlerin 'yerel' versiyonlarını kullanmalarını da söyleyebilirsiniz, ancak bazı garantileri bu şekilde kaybedersiniz (örneğin, bazı bağımlılıkları değiştirdiğinizi fark etmeyebilir).
Warbo,

sadece FYI, dizüstü bilgisayarıma NixOS'u kurmayı başardım (KDE4 görüntüsü bana bir Kernel Panic verdi, ama küçük (~ 390 MB) görüntü çok iyi önyüklendi. , Özellikle masaüstü ortamlarına gelince, paket yöneticisi ile ilgili bazı şeyleri henüz anlayamadım.Gdm / gnome-shell'i yükledim, ancak işe yaramaz. Paketler ve bağımlılıkları yeniden indirildi, yeniden başlatıldıktan sonra işe yaradı, ancak nedenini anlamadım.
Steffen Winkler

@SteffenWinkler NixOS kullanırken normalde bir şeyler kurmazsınız, nix-envbunun yerine bir şeyler belirtir configuration.nixve çalıştırırsınız nixos-rebuild switch. Bu, tüm sistem yapılandırmanızın tek bir yerde olması avantajına sahiptir ve tüm sistem yapılandırmanızı yedeklemek kolaydır (sadece configuration.nixdosyayı yedekleyin ).
Pauan

15

Herhangi bir yumtemel dağıtımda (örneğin Red Hat EL , CentOS , vb.) Şunları yapabilirsiniz:

  1. sistemde yapılan değişikliklerin geçmişini incelemek sudo yum history list

    Loaded plugins: fastestmirror
    ID     | Login user               | Date and time    | Action(s)      | Altered
    ------------------------------------------------------------------------------
        10 | Administrator <admin>    | 2016-03-08 09:08 | Install        |   11   
         9 | Administrator <admin>    | 2016-03-03 16:48 | Install        |    1   
         8 | Administrator <admin>    | 2016-03-03 16:09 | Install        |    5   
         7 | Administrator <admin>    | 2016-02-26 18:13 | Install        |    1   
         6 | Administrator <admin>    | 2016-02-26 15:12 | Install        |   27   
         5 | Administrator <admin>    | 2016-02-26 15:07 | Install        |    1   
         4 | Administrator <admin>    | 2016-02-26 15:05 | Install        |    3  <
         3 | Administrator <admin>    | 2016-02-26 15:03 | Install        |    1 > 
         2 | Administrator <admin>    | 2016-02-26 15:01 | I, U           |   49   
         1 | System <unset>           | 2016-02-26 14:38 | Install        |  296   
    history list
    
  2. ayrıntılarını kontrol et, sudo yum history info 10

  3. kullanarak, tarihteki önceki bir noktaya geri alma sudo yum history rollback 9

Uyarı

Bazı belirgin uyarılar var:

  1. Eski paket artık mevcut değilse, kızartınız (@vonbrand alıntı yapmak).
  2. Yum dışında bir şey yüklerseniz, geçmişi kırabilir.

Örneğimde, bu <kimliği olan satırda 4(son sütunda), bu noktadan sonra geri alamam anlamına gelir.

sudo yum history rollback 2
Loaded plugins: fastestmirror
Transaction history is incomplete, before 4.
 You can use 'history rollback force', to try anyway.
Error: Failed history rollback, incomplete

3
ilginç özellik! Ama 'tost' nedeniyle benim fatura uygun değil.
Steffen Winkler

AFAIK bu sadece RHEL / CentOS 6 veya daha üstü için mümkündür. Hala RHEL / CentOS 5 kullanıyorsanız SOL.
Joker

Bu arada, yönetilen repoları olan bir şirket ortamında, bu yaklaşım oldukça --enablerepodüşürülebilir, aksi halde düşürülmüş bir eski bırakılmış depoyu etkinleştirmek için bir bayrak kullanmanız gerekse bile, her zaman eski paketlere sahip olursunuz .
Wildcard

Eski sürümü tekrar yüklemek yerine geriye dönmenin faydası nedir?
Bratchley

@ Bratchley otomasyonu! yum Sadece kurulu paketlerin ve sürümlerin listesini tutmaya özen gösterir ve eski sürümleri yeniden yüklerken bağımlılıkları kontrol eder . Belli ki el ile yapabilirsin .
andcoz

7

On OpenSUSE kolayca kullanabilirsiniz Btrfs dosya sistemi ile Snapper .

Yükleme sırasında standart dosya sistemi yapılandırmasını kullanıyorsanız, varsayılan olarak etkindir .

Snapper etkinleştirildiğinde, tamamen entegredir yast2ve zypper. Bir şeyi her yüklediğinizde veya yükselttiğinizde (veya bir kullanıcı oluştururken, vb.) Bir dosya sistemi görüntüsü oluşturacaktır.

Sistemi önceki bir duruma döndürmek için yalnızca çalıştırmanız gerekir yast2 snapper.

görüntü tanımını buraya girin


gerçekten ilginç bir araç. Her ne kadar ext4'ü çok seviyorum. Bunu araştıracak! Snapper'ın OpenSUSE'ye değil, btrfs'e 'bağlı' olduğunu varsaymakta haklı mıyım?
Steffen Winkler

Snapper SUSE tarafından geliştirilmiştir. Brtfs anlık görüntülerini "olaylarda" oluşturmayı otomatikleştiren bir araç koleksiyonudur. Sanırım başka dağıtımlarda da kullanabilirsiniz ama emin değilim. Her durumda, herhangi bir dağıtımda Brtfs anlık görüntülerini manuel olarak oluşturabilirsiniz.
andcoz

3
Biriminizde yalnızca ikili dosyalar ve komut dosyaları değil, herhangi bir veri içeriyorsa, anlık görüntüyü geri almanın kendi verilerinizi de geri alacağını unutmayın. Bu seçenek , kendi dosya sisteminin düzenini gerçekten bilenler için en uygun olan riskli seslerdir . Benim için, anlık görüntüler her zaman tutarlı yedeklemeler, çoğaltma ve toplam kurtarma durumları için olmuştur.
jimp

1
Ayrıca birçok paketin içinde dosya ve / veya dizin bulunduğunu, /varbu nedenle /ayrı bir fs veya alt hacim olsa bile birlikte geri alınması gerektiğini unutmayın. Bir yükseltme işlemini, üretim sunucularına uygulamadan önce, işletim sistemi yükseltme geri dönüşü gibi özelliklere dayanmaktan ziyade daha iyi bir şekilde test etmekten çok daha iyidir (bu, yarı aşamalı bir şekilde yapılması son derece kolaydır ancak doğru şekilde çözülmesi oldukça zordur ).
Cas

1
@Jimp İyi bir tavsiye. Her durumda, /homeayrı bir anlık görüntü olmayan bir dosya sisteminde olmadığı sürece OpenSuSE, snapper'ı etkinleştirmez .
andcoz

6

AIX, güncellemeleri geri almakta çok iyidir. Şey - Unix / Linux sitesindeyiz ve Linux istediğinizi asla belirtmediniz :)

Her bir AIX güncellemesi, değiştirilen tüm dosyaları / var dosya sisteminin içindeki ayrı bir alt dizine kaydeder. Güncelleştirme basit yerli komutuyla döndürülebilir ve geri dönme eğilimi yoktur o kadar olması ağı gerek yoktur o şey yüklemek yeniden değildir ve herhangi bir bağlı değildir, herhangi bir medya / paketler ihtiyaç anlık görüntü teknolojisi - etki, dosyaların güncellemeden önceki gibi görünmesidir.

Bonus olarak, mksysbönyüklenebilir bir tek başına sistem yedeği oluşturmak için önemsiz bir yerel komut vardır . Bazı arıza / bozulma nedeniyle önyükleme yapamayan tamamen işlevsiz bir sistemde kolayca önyüklenebilen dosya.

Ve onlarca yıllık bir geçmişi olan kanıtlanmış teknoloji :)


Sık sık bu şekilde geri yüklenen programlarla tutarsız bir durumda ve geri alma (örneğin, depolama motoru değişen bir veritabanı veya yeni bir yapılandırma dosyası formatına geçiş yapan bir servis) sorunlarıyla mı karşılaşıyorsunuz? o?
Josh Rumbut

1
Bu, geleneksel olarak sıkıştırılmış / sıkıştırılmış tarball'larda dağıtılmış yazılım için basit bir paket yönetim sistemi kurduğumda kullandığım model. Güncellemeleri yüklediği zaman, ilk önce değiştirilecek her şeyin bir "geri alma paketi" oluşturdu. Bu geri alma paketi daha sonra, aralarında başka güncelleme paketleri uygulanmadıkça geri dönmek için kullanılabilir. Uygun paket yöneticilerinin bunu yapıp yapamayacağını sık sık merak etmişimdir, ancak sadece ters sırayla geri dönme kısıtlamaları göz önüne alındığında ... belki sadece gitmeliyiz.
Monty Harder,

lanet olsun. GNU / Linux dağıtımlarını kastettiğimi belirtmeliydim. Ancak ilginç olarak, AIX bugünlerde GNU / Linux 'programlarını' çalıştırabiliyor gibi görünüyor, daha yakından bakacağım.
Steffen Winkler

5

Fedora'da (ve diğer dağıtımlarda da eminim) önceki bir sürüme dönmeyi isteyebilirsiniz:

dnf downgrade <packages>

Size paketlerin sondan sonraki sürümünü alır ve aşağıdakilerden birini isteyebilirsiniz:

dnf downgrade <package>.<version>

Bu, yalnızca paket (ler) hala depolarda mevcutsa çalışır. İşlevsellik hiçbir şekilde duyulmamış değildir. Yükseltmenin bir parçası konfigürasyonları değiştirecekti, geri dönüşü mutlaka tam sürümüne bağlı olmayacak.


Ayrıca geri almak #thing geri alma DNF geçmişini kullanabilirsiniz
Daha Net

This only works if the package(s) are still available in the repositories. evet, kesinlikle sorun bu. Bunun için, özellikle de salınan dağıtımların miktarında, 'daha geniş bir' çözüm bulunmadığına şaşırdım. Şu andan itibaren NixOS benim en iyi seçeneğim gibi görünüyor, ya da sadece farklılıklar üzerinde çalışan ve sistemi son 20 (?) Güncellemede zaman içinde belirli bir noktaya geri yükleyebilecek bir tür sistem görüntüleme aracına ihtiyacım var.
Steffen Winkler

@SteffenWinkler, eski paket artık mevcut değilse, kızartılırsınız. Açıkçası. Bir çeşit yerel yedeklemeniz yoksa.
von

2
@MTilsted, çünkü zaten çok eski? Depolar, zamanın başlangıcındaki tüm sürümleri içermez.
vonbrand

1
Dnf.conf dosyasında (yum.conf ile aynı), keepcache = true Eski paketler kullanılabilir, çünkü london önbelleği manuel olarak temizlenmez. Ama "şişirme" paket önbelleğine gitti.
mmv-ru

2

Arch Linux ayrıca sürüm düşürme paketlerini ve çekirdeği de destekler . İşlemi otomatikleştirmek için downgraderve downgradearaçlarını da yükleyebilirsiniz . Btrfs çözümü de çalışıyor, daha önce manuel bir geri alma işlemi yapmak için kullandım.

Sistemimi nasıl geri alırım:

sudo -i
mount /dev/sda3 /mnt/hd #mount the top btrfs subvolume
ls #find the version you want
mv @ @-old #move the '/' subvolume (I named mine '@')
btrfs sub snap @-<date> @ #replace @ with the backup from <date>
sync
reboot #the changes will take effect once the system restarts

Btrfs'nin bir yararı, alt hacimleri ve dinamik "bölümleri" kullanabilmenizdir. Örneğin, / ((@ @), / tmp (@tmp) ve / home (@home) için bir alt hacme sahibim. Bunlardan herhangi birini yedeklemek ve geri almak kolaydır. Ayrı bir alt hacme sahibim / tmp var çünkü sistemin geri kalanıyla yedekleme yapmak anlamsız görünüyor, çünkü neredeyse her yeniden başlatmada silindi.


Wiki'de bir link takip ettim ve buraya geldim . Bu oldukça havalı görünüyor ve depoları kontrol etmekten 2013 yılına kadar geri dönen dosyalar var! Bu olduğunda neden btrfs yolunu kullanmalı? 'Yükseltilmiş' dosyalar nedeniyle mi? Yoksa başka bir sebep var mı?
Steffen Winkler

NixOS'a kısa bir ziyaret yaptıktan sonra şimdi kalıcı olarak Arch Linux'a geçtim. (Arch Linux) her zaman düşündüğüm kadar kararsız değil ve sağlıklı bir topluluğu var.
Steffen Winkler

@SteffenWinkler Bu doğru. Ayrıca, Arch düşürme seçenekleri "resmen" desteklenmez ve düşürme muhtemelen bağımlılıkları görmezden gelir (bir şey yanlış giderse oldukça karışık olabilir).
Caleb Reister

2

Arch Linux'u kullanıyorum ve indirilen tüm paketleri saklıyor, /var/cache/pacman/pkg/böylece istediğiniz zaman herhangi bir paketi düşürebilirsiniz (önyükleme yapamıyor, canlı bir usb kullanıyorsunuz). Gönderen Arch Wiki :

pacman -U <file_name_of_the_package>

Paketin yükseltilmesini önlemek için, aşağıdakilere paket adını ekleyin /etc/pacman.conf:

IgnorePkg=linux

Yer kazanmak için önbellek klasörünü aşağıdakilerle temizleyebilirsiniz:

pacman -Sc

Tüm eski paketleri silecek ve en yenilerini tutacak ya da -Scctümünü kaldırmak için kullanılacak .


Bunun (paketleri görmezden
gelmenin)

Wiki'de bir link takip ettim ve buraya geldim . Bu oldukça havalı görünüyor ve depoları kontrol etmekten 2013 yılına kadar geri dönen dosyalar var! Bu olduğunda neden btrfs yolunu kullanmalı? 'Yükseltilmiş' dosyalar nedeniyle mi? Yoksa başka bir sebep var mı?
Steffen Winkler
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.