Thủ tục tối ưu để nâng cấp Gentoo Linux?


23

Đây là cách tôi đã nâng cấp Gentoo trong một thời gian dài. Đây có phải là phương pháp được đề nghị ? Bất kỳ gotchas hoặc phương pháp tốt hơn để sử dụng?

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

6
Tôi thêm cờ -N vào cá nhân xuất hiện
Tom Ritter

2
--tree (-t) cũng thuận tiện để hiểu những gì đang diễn ra
lkraav

Câu trả lời:


5

Có vẻ như bạn đã có nó được bảo hiểm. Mẹo duy nhất khác là có thể đưa nó chậm hơn một chút so với cập nhật bán buôn mù. Bạn luôn có thể cập nhật các gói hoặc chuỗi phụ thuộc riêng lẻ emerge -DNuav <atom>thay vì world(sử dụng --oneshot cho những thứ bạn không muốn thêm vào tệp thế giới, chẳng hạn như libs hệ thống chẳng hạn).

Lưu ý rằng sẽ luôn dễ thực hiện hơn nếu bạn cập nhật thường xuyên thay vì cập nhật hàng loạt nguyên khối mỗi vài tháng. Ngoài ra, để tránh quá nhiều bất ngờ, bạn có thể thấy hữu ích khi đăng ký một trong các danh sách gửi thư như gentoo-user(CẢNH BÁO: ~ 100 thư mỗi ngày trong danh sách này) vì hầu như mọi vấn đề cập nhật lớn đều có thể xuất hiện trong danh sách với nhiều cuộc thảo luận giải thích làm thế nào để giải quyết chúng.

Tôi đoán rằng bản cập nhật "vấn đề" lớn tiếp theo sẽ là quá trình di chuyển sang openrc một khi nó ổn định (nó được thực hiện vào ~ vòm giữa năm ngoái chỉ với một vài vấn đề, chủ yếu là thay đổi mạng).


2
Đúng, chắc chắn +1 về việc cập nhật thường xuyên chứ không phải trong khối lớn. Có những thay đổi thường xuyên chỉ phá vỡ rất nhiều. github.com/lkraav/gentoo-cron-weekly là bộ công cụ báo cáo hàng tuần đơn giản của tôi.
lkraav

8

Tôi đã sử dụng gần với các bước tương tự bạn làm, ngoại trừ:

  • eix-syncthay emerge --syncvì bởi vì tôi thích nhìn thấy những thay đổi của cây portage. Điều này đặc biệt tốt khi nhận thấy các gói tôi có thể muốn cài đặt mới cho cây.

  • layman -S (thỉnh thoảng) trước khi xuất hiện chính để đồng bộ mọi thay đổi trong lớp phủ.

  • eclean-dist -dsau khi revdep-rebuildlàm sạch tarball lỗi thời. Tôi làm điều này sau mỗi lần xuất hiện, vì việc hạ cấp gói không phổ biến.

  • eix-test-obsoletelà bước cuối cùng để giúp giữ cho các tập tin / etc / portage của tôi gọn gàng và cập nhật. Điều này cũng cho tôi biết khi tôi đã cài đặt các gói đã bị xóa hoàn toàn khỏi portage vì vậy tôi cần phải lấy ebuild từ kho lưu trữ. Một ví dụ gần đây, tôi phải che tất cả các phiên bản của iproute2> 2.6.22.20070710 do hạt nhân cũ hơn chạy trên Xen Xen VPS của tôi nhưng gần đây nó đã bị xóa khỏi portage.

eix-synceix-test-obsoleteđang ở trong ứng dụng portage / eix.

eclean-dist nằm trong ứng dụng portage / gentoolkit.


+1 cho đồng bộ hóa eix
Tim

5
  1. emerge --synchoặc eix-synchoặc emerge-delta-webrsynceix-update
  2. emerge -av portage
  3. eclean-dist

Kiểm tra xem một trong các tiêu đề linux, glibc, binutils, libtool hoặc gcc có cập nhật magor (ví dụ: cập nhật gcc từ 4.6 đến 4.8). Nếu nó không đi đến bước 11.

Xây dựng lại đầy đủ:

  1. rm -rf PKGDIR/* Thay thế PKGDIR bằng đường dẫn đến gói dir!
  2. emerge -av linux-headers glibc binutils gcc-config libtool gcc
  3. gcc-config <number of new gcc> Chuyển sang gcc mới
  4. source /etc/profile
  5. emerge -avb glibc binutils gcc libtool
  6. emerge -avbke system
  7. emerge -avbke world

Nếu bạn có bất kỳ vấn đề nào ở bước 10 hoặc 11 thì hãy sửa nó và thử lại

Cập nhật thế giới:

  1. Làm sạch tệp thế giới của bạn /var/lib/portage/worldkhỏi các gói không cần thiết và kiểm tra /etc/portagecác thực thể
  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

Nếu bạn gặp bất kỳ rắc rối nào trong các bước 14-18, hãy sửa nó và lặp lại tất cả các bước từ bước 13

  1. etc-update hoặc là dispatch-conf
  2. glsa-check -vp affected Bạn có thể có các gói bị ảnh hưởng trong các khe sau khi cập nhật
  3. emaint --check all

3

Nếu mục tiêu của bạn là có gói mới nhất tuyệt đối, thì có, điều đó dường như bao gồm tất cả các cơ sở. Mặc dù vậy, tôi rất ngạc nhiên vì điều này đã có hiệu quả với bạn trong một thời gian dài, bởi vì tôi sẽ tưởng tượng rằng bạn thường xuyên bị cắn bởi các khối, các bộ phận bị hỏng, v.v. Trong vài năm qua, tôi đã cẩn thận hơn rất nhiều về việc cập nhật bán buôn, bầu thay vì làm điều đó từng phần sau khi xem cây cập nhật. Sự phát triển của Gentoo dường như đã qua thời hoàng kim. Có lẽ đó là do sự gia tăng của Ubuntu.

Dù sao, một điều nữa bạn có thể thử, chỉ để thực sự khó tính về toàn bộ quá trình, là dọn dẹp các bản tin của bạn. Có kịch bản ngoài đó nếu bạn tìm kiếm.


1
Nếu bạn dính vào các ebuild chưa được khám phá thì Gentoo đã trở nên khá ổn định theo quan điểm của tôi và không thực sự phá vỡ bằng cách thực hiện một thế giới đồng bộ và nổi lên. Bạn cần phải biết những gì bạn đang làm nhưng điều tương tự có thể được nói cho apt hoặc yum. Tôi đã bị cả hai cắn.
John Downey

1
Ba sự tắc nghẽn / phá vỡ rất gần đây tôi có thể nghĩ đến là libcomerr / e2fspross, firefox2 / 3 và xorg 1.3 / 1.5. Trong tất cả các trường hợp, phải mất mát không tầm thường để làm cho cập nhật bán buôn hoạt động, và không có ~ từ khóa liên quan.
Adam D'Amico

2
Các phiên bản mới nhất của portage - giả sử trong vòng 6 tháng qua - tự động giải quyết gần như tất cả các khối và ngắt. Bao gồm libcomerr / e2fspross.
Dan Carley

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

Đó là những gì bạn nên chạy đầu tiên. Không cần thiết nếu bạn nâng cấp tất cả các gói.

Oh và tôi thích cập nhật cfg;)


1

Đây là những gì tôi làm:

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.

Nếu bạn không hoàn toàn hiểu các bình luận, hãy đọc nó bởi vì đó là cơ quan về cách cập nhật các gói gentoo của bạn.

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


0

Quá trình của bạn là chính xác mặc dù chạy mọi lệnh có lẽ không cần thiết thường tôi chỉ cần thực hiện đồng bộ hóa và thế giới cập nhật. Emerge sẽ cho bạn biết thông thường nếu bạn cần chạy tập lệnh để xây dựng lại tệp, chẳng hạn như trong quá trình nâng cấp Python lớn và cũng sẽ cho bạn biết khi nào cần hợp nhất các thay đổi cấu hình. Vì Gentoo không thực sự có đường dẫn nâng cấp từ phiên bản này sang phiên bản khác. Khoảnh khắc bạn nổi lên trên thế giới bạn đã có phiên bản mới nhất.


0

Trong một thời gian dài bây giờ tôi luôn sử dụng thủ tục này:

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

Tôi, đối với tôi, thích cập nhật qua đêm. Nhưng đôi khi điều đó xảy ra là một cái gì đó không thành công và vì vậy bạn phải tải lại tất cả (hoặc một số) chương trình.

Có lẽ công tắc --newuse là không cần thiết, nhưng tôi thường chỉnh sửa make.conf của mình để nó có ý nghĩa đối với tôi.


Bạn có thể sử dụng "--reinstall đã thay đổi sử dụng" thay vì "--newuse", cài đặt lại các gói này với các cờ sử dụng mà bạn đã thay đổi rõ ràng. Thay vì lỗi thời, hãy thêm cờ sử dụng, v.v. Thỉnh thoảng bạn vẫn nên chạy với "--newuse".
hayalci

0

Có vẻ tốt, mặc dù tôi sẽ không nhanh chóng chạy depclean.

Trừ khi bạn có một yêu cầu như dung lượng ổ cứng thấp thì bạn có thể quay lại và giải phóng mặt bằng ở những nơi ít thường xuyên hơn. Không có hại khi có chúng trong một thời gian ngắn. Nếu bạn không đủ may mắn để nhận thấy một số gói bị hỏng sau khi cập nhật thì bạn sẽ chắc chắn rằng chúng không phải là kết quả của việc loại bỏ bất kỳ phụ thuộc lỏng lẻo nào.


0

Đó là cách tôi làm trên VPS của mình:

bước 0 (từ / etc / crontab)

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

bước 1:

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

bước 2:

emerge --depclean && revdep-rebuild && eclean-pkg && rm /usr/portage/distfiles/*
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.