Gentoo Linux’u yükseltmek için en uygun prosedür?


23

Gentoo'yu uzun zamandır böyle geliştiriyorum. Bu mi tavsiye yöntemi? Herhangi bir gotchas veya kullanmak için daha iyi yöntemler?

emerge --sync
emerge -uDav --tree world
emerge -av --depclean
revdep-rebuild -v -- --ask
dispatch-conf
glsa-check -t all
glsa-check -f all

6
-N bayrağını kişisel olarak ortaya çıkarıyorum
Tom Ritter

2
--tree (-t), neler olduğunu anlamak için de kullanışlıdır
lkraav

Yanıtlar:


5

Örtülmüş gibi görünüyorsun. Diğer tek ipucu belki de kör toptan güncellemeden biraz daha yavaştır. Her zaman tek tek sahip paketler veya bağımlılık zincirlerini güncelleyebilirsiniz emerge -DNuav <atom>yerine world(örneğin sistem kütüphanelerini gibi dünya dosyasına eklemek istemiyorum şeyler için --oneshot kullanın).

Her birkaç ayda bir monolitik toplu güncellemeler yapmak yerine düzenli olarak güncel kalırsanız, her zaman daha kolay olduğunu unutmayın. Ayrıca, çok fazla süprizden kaçınmak için, şu gentoo-userana kadar herhangi bir büyük güncelleme sorununun ortaya çıkması muhtemel olduğundan, aşağıdaki gibi bir e-posta listesinden birine üye olmanız yararlı olabilir (UYARI: ~ bu listede günde 100 posta). Onları nasıl çözüleceğini açıklayan tartışma bol.

Bir sonraki büyük "sorun" güncellemesinin, sabitlendikten sonra openrc'ye geçiş olacağını tahmin ediyorum (bu, özellikle ağ değişiklikleriyle ilgili birkaç sorunla geçen yılın başlarında yapıldı).


2
Evet, kesinlikle büyük parçalardan ziyade düzenli olarak güncel tutmak için +1. Ara sıra çok fazla değişiklik gösteren değişiklikler var. github.com/lkraav/gentoo-cron-weekly haftalık basit raporlama araç setim .
lkraav

8

Aşağıdakiler haricinde, yaptığınız adımların yakınında kullanıyorum:

  • eix-syncbunun yerine emerge --syncportage ağacındaki değişiklikleri görmeyi seviyorum. Bu, özellikle ağaç için yeni yüklemek isteyeceğim paketleri farketmek için güzel.

  • layman -S (bazen) ana bindirmelerdeki değişiklikleri senkronize etmek için ortaya çıkmadan önce.

  • eclean-dist -drevdep-rebuildeski tarballs temizlemek için sonra . Her ortaya çıktıktan sonra bunu yapıyorum, çünkü paket düşüşleri o kadar yaygın değil.

  • eix-test-obsolete/ etc / portage dosyalarımı düzenli ve güncel tutmaya yardımcı olacak son adım olarak. Bu ayrıca, portage'dan tamamen çıkarılmış paketleri kurduğumda bana haber veriyor, bu yüzden ebuild'i depodan almam gerekiyor. Yeni bir örnek, Xen VPS'imde çalışan eski çekirdeğin neden olduğu iproute2> 2.6.22.20070710'un tüm sürümlerini maskelemek zorundayım ancak son zamanlarda portage'dan çıkarıldım.

eix-syncve eix-test-obsoleteapp-portage / eix içerisindeler.

eclean-dist app-portage / gentoolkit içinde.


Eix-sync için +1
Tim

5
  1. emerge --syncveya eix-syncveya emerge-delta-webrsyncveeix-update
  2. emerge -av portage
  3. eclean-dist

Linux-headers, glibc, binutils, libtool veya gcc'den birinin magor güncellemesi olup olmadığını kontrol edin (örn. Gcc, 4.6'dan 4.8'e kadar olan güncellemeleri). Değilse, 11. adıma gidin.

Tam yeniden oluşturma:

  1. rm -rf PKGDIR/* PKGDIR'ı dir dir!
  2. emerge -av linux-headers glibc binutils gcc-config libtool gcc
  3. gcc-config <number of new gcc> Yeni gcc'ye geç
  4. source /etc/profile
  5. emerge -avb glibc binutils gcc libtool
  6. emerge -avbke system
  7. emerge -avbke world

10. veya 11. adımda sorun yaşarsanız düzeltin ve tekrar deneyin

Dünyayı güncelle:

  1. Dünya dosyanızı /var/lib/portage/worldgereksiz paketlerden temizleyin ve /etc/portagevarlıkları kontrol edin
  2. fixpackages
  3. emerge -avuDN world
  4. eselect python update
  5. python-updater -- -av
  6. perl-cleaner --all -- -av
  7. emerge -a --depclean
  8. revdep-rebuild -i -- -av

14-18 arası adımlarda herhangi bir sorun yaşarsanız düzeltin ve 13. adımdaki tüm adımları tekrarlayın.

  1. etc-update veya dispatch-conf
  2. glsa-check -vp affected Güncellemeden sonra etkilenen paketleri yuvalarda olabilir
  3. emaint --check all

3

Amacınız tüm paketlerin mutlak sonuncusu olmaksa, o zaman evet, bu tüm temelleri kapsıyor gibi görünüyor. Bunun sizin için uzun zamandır çalıştığına şaşırdım, çünkü sık sık bloklar, kırılan paralar vb. Tarafından ısırılacağınızı hayal ediyorum çünkü Son birkaç yılda toptan güncellemede çok daha dikkatli olmuştum. güncelleme ağacını gördükten sonra bunu parça parça yapmak yerine seçerek. Gentoo gelişimi gün geçtikçe geçmiş gibi görünüyor. Belki de Ubuntu'nun yükselişindendir.

Her neyse, deneyebileceğin bir şey daha var, sadece tüm süreç hakkında titiz olmak için, akıntılarını temizlemektir. Arama yaparsanız, orada komut dosyaları var.


1
Maskelenmemiş ebuild'lere sadık kalırsanız, Gentoo benim görüşüme göre oldukça istikrarlı bir hale geldi ve her biri gerçekten bir senkronizasyon ve ortaya çıkma dünyasıyla kırılmaz. Ne yaptığınızı bilmeniz gerekiyor ama aynı şey apt ya da yum için de söylenebilir. İkisi de ısırıldım.
John Downey

1
Aklıma gelen üç yeni blok / kırılma libcomerr / e2fsprogs, firefox2 / 3 ve xorg 1.3 / 1.5. Bütün bu durumlarda, toptan güncellemenin çalışması için önemsiz bir masaj yapılması gerekiyordu ve hiçbir anahtar kelime söz konusu değildi.
Adam D'Amico

2
Portage'ın en son sürümleri - son 6 ay içinde - neredeyse tüm blokları ve araları otomatik olarak çözer. Libcomerr / e2fsprogs dahil.
Dan Carley

3
glsa-check -t all
glsa-check -f all

İlk önce kaçman gereken şey bu. Tüm paketleri yükseltirseniz gereksizdir.

Oh ve ben cfg-update'i tercih ederim;)


1

Bu benim işim:

emerge --sync         //Synchronize the package manager with the latest 
                      //version of each package.


emerge -aDvNu system  //updates the system, but only important if you want the
                      //latest stable version of the actual compiler and libraries
                      //with the core system.

emerge -uDNav world   //world means everything we've asked to be emerged before
                      //this does not include things that came pre installed.
                      //N means if you change your use directives in 
                      //your make.conf file to pull in the new packages.

emerge -av depclean   //removes libraries or programs that don't have any other 
                      //dependencies because of an update.


revdep-rebuild        //means if something is broken by an update, it 
                      //recompiles it.  Fixes dynamic and static linking problems.

Yorumları tam olarak anlamadıysanız, bunu okuyun çünkü gentoo paketlerinizi nasıl güncelleyeceğinize dair otoritedir.

http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=1


0

İşleminiz doğrudur, ancak her komutu çalıştırmak muhtemelen gerekli değildir, genellikle sadece bir senkronizasyon ve güncelleme dünyası yapıyorum. Emerge, genellikle büyük bir Python yükseltmesi gibi bir dosyayı yeniden oluşturmak için bir komut dosyası çalıştırmanız gerekip gerekmediğini ve ayrıca yapılandırma değişikliklerinin ne zaman birleştirileceğini size söyleyecektir. Çünkü Gentoo'nun versiyondan versiyona yükseltme yolu yok. Dünyayı yarattığınız an en son sürüme sahip olursunuz.


0

Uzun zamandır bu prosedürü hep kullandım:

emerge -f --update --newuse --deep world && emerge --update --newuse --deep world

Ben, benim için gece boyunca güncellemeyi tercih ediyorum. Ancak bazen bir şeyler başarısız olur ve bu yüzden tüm programları (veya bazı programları) tekrar indirmeniz gerekir.

Belki --newuse anahtarı gereksizdir, ancak genellikle make.conf'umu düzenliyorum, bu yüzden benim için anlamlı.


"--Newuse" yerine "--reinstall changed-use" kullanabilirsiniz; bu, paketleri açıkça değiştirdiğiniz kullanım bayraklarıyla yeniden yükler. Eski kullanım yerine bayraklar vb. Eklendi. Yine de zaman zaman "--newuse" ile koşmalısınız.
hayalci

0

Görünüşe göre depclean için hızlı koşmam.

Sabit disk alanı gibi bir gereksiniminiz olmadıkça, daha az düzenli aralıklarla geri gelip depclean yapabilirsiniz. Kısa süre etrafta olmalarının bir zararı yok. Güncellemeden sonra bazı kırık paketleri fark edecek kadar şanssızsanız, o zaman herhangi bir gevşek bağımlılığı ortadan kaldırmanın bir sonucu olmadığından emin olabilirsiniz.


0

VPS'imde böyle yapıyorum:

adım 0 (/ etc / crontab'dan)

0 0   * * *     root    emerge --sync &> /dev/null

Aşama 1:

emerge --update --deep --newuse world -av

Adım 2:

emerge --depclean && revdep-rebuild && eclean-pkg && rm /usr/portage/distfiles/*
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.