ขั้นตอนที่เหมาะสมที่สุดในการอัพเกรด Gentoo Linux?


23

นี่เป็นวิธีที่ฉันอัพเกรด Gentoo มาเป็นเวลานาน นี่เป็นวิธีที่แนะนำหรือไม่ gotchas ใด ๆ หรือวิธีที่ดีกว่าที่จะใช้?

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 บนโผล่ออกมาเอง
ทอมริท

2
--tree (-t) ยังมีประโยชน์สำหรับการทำความเข้าใจว่าเกิดอะไรขึ้น
lkraav

คำตอบ:


5

ดูเหมือนว่าคุณจะได้รับความคุ้มครอง เคล็ดลับอื่น ๆ เพียงอย่างเดียวอาจจะช้ากว่าการอัปเดตการขายส่งของคนตาบอด คุณสามารถอัปเดตแพ็กเกจหรือเครือข่ายการพึ่งพาเป็นรายบุคคลด้วยemerge -DNuav <atom>แทนที่จะworldใช้ (ใช้ --oneshot สำหรับสิ่งที่คุณไม่ต้องการเพิ่มลงในไฟล์โลกเช่นระบบ libs เป็นต้น)

โปรดทราบว่ามันจะง่ายกว่าถ้าคุณทำข้อมูลให้ทันสมัยอยู่เสมอแทนที่จะไปอัพเดทชุดเสาหินทุก ๆ สองสามเดือน นอกจากนี้เพื่อหลีกเลี่ยงความประหลาดใจมากเกินไปคุณอาจพบว่ามีประโยชน์ในการสมัครสมาชิกหนึ่งในรายชื่อผู้รับจดหมายเช่นgentoo-user(คำเตือน: ~ 100 อีเมลต่อวันในรายการนี้) เนื่องจากปัญหาการอัปเดตหลัก ๆ น่าจะปรากฏในรายการด้วย การอภิปรายจำนวนมากอธิบายวิธีแก้ปัญหา

ฉันเดาว่าการอัปเดต "ปัญหา" ที่สำคัญครั้งต่อไปจะเป็นการโอนย้ายไปยัง openrc เมื่อมันมีเสถียรภาพ (ดำเนินการใน ~ กลางปีที่แล้วของ iirc โดยมีปัญหาเพียงเล็กน้อยเท่านั้นส่วนใหญ่เกิดจากการเปลี่ยนแปลงเครือข่าย)


2
ใช่ +1 อย่างแน่นอนในการรักษาตามปกติมากกว่าในก้อนใหญ่ มีการเปลี่ยนแปลงเป็นครั้งคราวที่ทำลายได้มากมาย github.com/lkraav/gentoo-cron-weeklyเป็นชุดเครื่องมือการรายงานรายสัปดาห์ที่เรียบง่ายของฉัน
lkraav

8

ฉันใช้ใกล้เคียงกับขั้นตอนเดียวกันกับที่คุณทำยกเว้น:

  • eix-syncแทนที่จะเป็นemerge --syncเพราะฉันชอบเห็นการเปลี่ยนแปลงของทรีพอร์เทจ นี่เป็นสิ่งที่ดีโดยเฉพาะอย่างยิ่งสำหรับการสังเกตแพ็คเกจฉันอาจต้องการติดตั้งที่ใหม่กับต้นไม้

  • layman -S (บางครั้ง) ก่อนที่หลักจะปรากฏขึ้นเพื่อซิงค์การเปลี่ยนแปลงใด ๆ ในภาพซ้อนทับ

  • eclean-dist -dหลังจากการrevdep-rebuildทำความสะอาด tarballs ล้าสมัย ฉันทำสิ่งนี้หลังจากเกิดขึ้นทุกครั้งเนื่องจากการลดระดับแพ็คเกจไม่ได้เป็นเช่นนั้น

  • eix-test-obsoleteเป็นขั้นตอนสุดท้ายเพื่อช่วยให้ไฟล์ของฉัน / etc / portage เป็นระเบียบและทันสมัย สิ่งนี้ยังช่วยให้ฉันรู้ว่าเมื่อฉันติดตั้งแพคเกจที่ถูกลบออกจากการขนส่งอย่างสมบูรณ์ดังนั้นฉันต้องไปรับ ebuild จากที่เก็บ ตัวอย่างล่าสุดฉันต้องปิดบัง iproute2 ทุกรุ่น> 2.6.22.20070710 ทุกรุ่นเนื่องจากเคอร์เนลเก่าทำงานบน Xen VPS ของฉัน แต่เพิ่งถูกลบออกจากการขนส่ง

eix-syncและeix-test-obsoleteอยู่ใน app-portage / eix

eclean-dist อยู่ใน app-portage / gentoolkit


+1 สำหรับ eix-sync
Tim

5
  1. emerge --syncหรือeix-syncหรือemerge-delta-webrsyncและeix-update
  2. emerge -av portage
  3. eclean-dist

ตรวจสอบว่าหนึ่งใน linux-headers, glibc, binutils, libtool หรือ gcc มีการปรับปรุง magor (เช่นการปรับปรุง gcc จาก 4.6 เป็น 4.8) ถ้าไม่ไปที่ขั้นตอนที่ 11

สร้างใหม่ทั้งหมด:

  1. rm -rf PKGDIR/* แทนที่ PKGDIR ด้วยเส้นทางของคุณไปยังแพ็คเกจ dir!
  2. emerge -av linux-headers glibc binutils gcc-config libtool gcc
  3. gcc-config <number of new gcc> เปลี่ยนเป็น gcc ใหม่
  4. source /etc/profile
  5. emerge -avb glibc binutils gcc libtool
  6. emerge -avbke system
  7. emerge -avbke world

หากคุณมีปัญหาใด ๆ ในขั้นตอนที่ 10 หรือ 11 ให้แก้ไขและลองอีกครั้ง

อัปเดตโลก:

  1. ทำความสะอาดไฟล์โลกของคุณ/var/lib/portage/worldจากแพ็กเกจที่ไม่จำเป็นและตรวจสอบ/etc/portageเอนทิตี
  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 ให้แก้ไขและทำซ้ำขั้นตอนทั้งหมดจากขั้นตอนที่ 13

  1. etc-update หรือ dispatch-conf
  2. glsa-check -vp affected คุณสามารถมีผลกระทบต่อแพ็คเกจในช่องหลังจากอัพเดท
  3. emaint --check all

3

หากเป้าหมายของคุณคือการมีแพ็คเกจล่าสุดทั้งหมดแน่นอนว่าใช่ซึ่งครอบคลุมทุกฐาน ฉันประหลาดใจที่มันได้ผลกับคุณมาเป็นเวลานานเพราะฉันคิดว่าคุณจะถูกกัดบ่อย ๆ ด้วยบล็อก, deps แตกหักและอื่น ๆ ในสองสามปีที่ผ่านมาฉันมีความระมัดระวังมากขึ้นเกี่ยวกับการอัปเดตขายส่ง เลือกแทนที่จะทำทีละน้อยหลังจากดูแผนผังการอัพเดท การพัฒนาของ Gentoo นั้นผ่านพ้นไปแล้ว อาจเป็นเพราะการเพิ่มขึ้นของ Ubuntu

ยังไงก็ตามสิ่งเพิ่มเติมอีกอย่างที่คุณอาจจะลองเพื่อที่จะจุกจิกเกี่ยวกับกระบวนการทั้งหมดนั้นคือการกำจัดสิ่งสกปรก มีสคริปต์ออกมีหากคุณค้นหา


1
ถ้าคุณยึดติดกับ ebuilds ที่ไม่ได้เปิดโปง Gentoo ก็ค่อนข้างมีความมั่นคงในความคิดของฉันและไม่ใช่ว่าทุกคนจะพังโดยทำการซิงค์และสร้างโลก คุณจำเป็นต้องรู้ว่าสิ่งที่คุณกำลังทำอะไร แต่สามารถพูดได้ว่าเป็น apt หรือ yum ฉันถูกพวกเขาทั้งคู่กัด
John Downey

1
การอุดตัน / การแตกสามครั้งล่าสุดที่ฉันนึกได้คือ libcomerr / e2fsprogs, firefox2 / 3 และ xorg 1.3 / 1.5 ในทุกกรณีมันต้องใช้การนวดที่ไม่น่าสนใจเพื่อทำให้การอัปเดตขายส่งเป็นไปได้และไม่มีคำหลัก ~ ที่เกี่ยวข้อง
Adam D'Amico

2
เวอร์ชั่นล่าสุดของการขนส่ง - พูดภายใน 6 เดือนที่ผ่านมา - แก้ไขโดยอัตโนมัติเกือบบล็อกและตัวแบ่งทั้งหมด การรวม libcomerr / e2fsprogs
Dan Carley

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

นั่นคือสิ่งที่คุณควรเรียกใช้ก่อน มันไม่จำเป็นถ้าคุณอัพเกรดแพ็คเกจทั้งหมด

โอ้และฉันชอบ cfg-update;)


1

นี่คือสิ่งที่ฉันทำ:

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.

หากคุณไม่เข้าใจความคิดเห็นอย่างสมบูรณ์โปรดอ่านสิ่งนี้เนื่องจากเป็นสิทธิ์ในการอัปเดตแพ็คเกจของคุณ

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


0

กระบวนการของคุณถูกต้องแม้ว่าการเรียกใช้ทุกคำสั่งอาจไม่จำเป็นโดยปกติฉันจะทำการซิงค์และอัปเดตโลก Emerge จะบอกคุณตามปกติถ้าคุณต้องการเรียกใช้สคริปต์เพื่อสร้างไฟล์ใหม่เช่นในระหว่างการอัพเกรด Python ที่สำคัญและจะบอกคุณเมื่อรวมการเปลี่ยนแปลงการกำหนดค่าด้วย เนื่องจาก Gentoo ไม่มีเส้นทางการปรับรุ่นจากรุ่นสู่รุ่น ช่วงเวลาที่คุณปรากฏในโลกคุณมีรุ่นล่าสุด


0

เป็นเวลานานตอนนี้ฉันมักจะใช้ขั้นตอนนี้:

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

สำหรับฉันฉันชอบที่จะอัปเดตข้ามคืน แต่บางครั้งมันก็เกิดขึ้นว่ามีบางอย่างล้มเหลวคุณจึงต้องดาวน์โหลดโปรแกรมทั้งหมด (หรือบางส่วน) อีกครั้ง

บางทีสวิตช์ - ใหม่นั้นไม่จำเป็นโดยไม่จำเป็น แต่ฉันมักจะแก้ไข make.conf ของฉันดังนั้นมันจึงสมเหตุสมผลสำหรับฉัน


คุณสามารถใช้ "- ติดตั้งการเปลี่ยนแปลงที่ใช้แล้ว" แทน "- ใหม่" ซึ่งจะติดตั้งแพ็กเกจใหม่ด้วยแฟล็กใช้ที่คุณเปลี่ยนไปอย่างชัดเจน แทนที่จะล้าสมัยให้เพิ่มการใช้แฟล็ก ฯลฯ คุณควรใช้ "--newuse" เป็นระยะ ๆ
hayalci

0

ดูดีแม้ว่าฉันจะไม่รีบวิ่งอย่างรวดเร็ว

ถ้าคุณไม่มีความต้องการเนื้อที่ว่างบนฮาร์ดดิสก์ต่ำคุณก็สามารถกลับมาใหม่และลดมลภาวะในลำไส้ปกติได้ ไม่มีอันตรายใด ๆ ที่มีพวกเขารอบระยะเวลาสั้น ๆ หากคุณโชคร้ายพอที่จะสังเกตเห็นแพ็กเกจที่เสียหายหลังจากการอัพเดทคุณจะต้องแน่ใจว่าพวกเขาไม่ได้เป็นผลมาจากการลบการอ้างอิงที่หลวม


0

นั่นคือวิธีที่ฉันทำกับ VPS:

ขั้นตอนที่ 0 (จาก / etc / crontab)

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

ขั้นตอนที่ 1:

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

ขั้นตอนที่ 2:

emerge --depclean && revdep-rebuild && eclean-pkg && rm /usr/portage/distfiles/*
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.