</>

لینوکس‌پارسی

مرجع فارسی آموزش لینوکس

Gentoo • Arch • Debian • Ubuntu • Kali • Parrot
پرش به محتوای اصلی

Command Palette

Search for a command to run...

به‌روزرسانی سیستم در Gentoo — جریان کاری canonical

آموزش کامل و گام‌به‌گام به‌روزرسانی Gentoo: emerge --sync، eselect news، به‌روزرسانی @world، etc-update، @preserved-rebuild، depclean و module-rebuild با توضیح هر پرچم.

مقدماتی۹ دقیقه مطالعهآخرین بروزرسانی: ۱ تیر ۱۴۰۵ویرایش در گیت‌هاب

به‌روزرسانی Gentoo با توزیع‌های باینری متفاوت است؛ اینجا به‌جای دانلود بستهٔ آماده، کد منبع را کامپایل می‌کنید و کنترل کاملی روی نسخه‌ها و USE flagها دارید. این مستند، جریان canonical به‌روزرسانی Gentoo را در هشت گام توضیح می‌دهد. این مراحل را ماهی یک‌بار اجرا کنید تا سیستم همیشه پایدار و امن بماند.

گام ۱: همگام‌سازی مخزن#

نخستین گام، همگام‌سازی درخت Portage با سرورهای Gentoo است:

# همگام‌سازی مخزن اصلی
emerge --sync
# یا شکل کوتاه
emaint sync -a
 
# خروجی نمونه:
# Syncing repository 'gentoo' into '/var/db/repos/gentoo'...
# === Sync completed for gentoo
# Action: sync for repo: gentoo, returned code = 0

اگر از eix استفاده می‌کنید (پیشنهادی):

emerge --ask app-portage/eix
eix-sync
# سریع‌تر و خروجی خلاصه‌تر می‌دهد

استفاده از git

برای سرعت بیشتر، می‌توانید مخزن را به‌جای rsync از git همگام کنید. در /etc/portage/repos.conf/gentoo.conf مقدار sync-type را به git تغییر دهید و sync-uri را به یک mirror git تنظیم کنید. این روش برای کاربرانی که هر روز sync می‌کنند، پهنای باند کمتری مصرف می‌کند.

گام ۲: خواندن اخبار#

پس از همگام‌سازی، اخبار مهم منتشرشده توسط تیم Gentoo را بخوانید. این اخبار معمولاً شامل تغییرات بنیادی هستند که پیش از به‌روزرسانی باید بدانید:

# لیست اخبار خوانده‌نشده
eselect news list
# خروجی:
#   [1]  2026-06-17  Upcoming Python 3.12 cleanup
#   [2]  2026-06-10  GCC 14 default upgrade notes
#   [3]  2026-05-25  New profile default/linux/amd64/23.0
 
# خواندن همه اخبار
eselect news read
 
# خواندن یک خبر خاص
eselect news read 1
 
# پاک کردن اخبار خوانده‌شده
eselect news purge

اخبار را نادیده نگیرید

اخبار Gentoo برای اعلام تغییرات بنیادی منتشر می‌شوند؛ مثلاً migration از پروفایل ۱۷.۰ به ۲۳.۰، تغییرات پیش‌فرض Python، یا آپگرید GCC. نادیده‌گرفتن آن‌ها می‌تواند باعث شکست به‌روزرسانی شود. همیشه پیش از -uDN @world اخبار را بخوانید.

گام ۳: به‌روزرسانی @world#

این فرمان اصلی به‌روزرسانی است:

emerge --ask --update --deep --newuse @world
# یا به‌صورت کوتاه:
emerge -avuDN @world
پرچممعنی
--ask (-a)قبل از شروع، تأیید می‌خواهد
--update (-u)به‌روزرسانی بسته‌های نصب‌شده
--deep (-D)بررسی وابستگی‌های عمیق (نه فقط مستقیم)
--newuse (-N)بازسازی بسته‌هایی که USE flags تغییر کرده
--verbose (-v)نمایش USE flags و جزئیات

خروجی نمونه:

These are the packages that would be merged, in order:
Calculating dependencies... done!
 
[ebuild     U  ] sys-libs/glibc-2.40-r1 [2.39-r6] USE="-debug ..."
[ebuild   R    ] sys-devel/gcc-14.2.1_p20241214  USE="... -lto*"
[ebuild  N    ]  dev-libs/libfoo-1.2.3  USE="bar baz"
[ebuild     U  ] x11-base/xorg-server-21.1.13 [21.1.10]
 
Would you like to merge these packages? [Yes/No]: y

دامنه @world

@world شامل هر بسته‌ای است که صریحاً نصب کرده‌اید (نه وابستگی‌ها). این مجموعه می‌تواند بزرگ باشد و به‌روزرسانی آن ساعت‌ها طول بکشد. اگر فقط یک بسته را می‌خواهید به‌روز کنید، آن را به‌صورت جداگانه نصب کنید (مثلاً emerge -av firefox)، اما برای امنیت سیستم، حداقل ماهی یک‌بار @world را به‌روز کنید.

گام ۴: به‌روزرسانی فایل‌های پیکربندی#

پس از نصب، فایل‌های پیکربندی در /etc ممکن است نسخه‌های جدیدی داشته باشند. Portage آن‌ها را به‌صورت ._cfg0000_ نگه می‌دارد تا پیکربندی فعلی شما را بازنویسی نکند:

# روش سنتی (تعاملی)
etc-update
# لیست فایل‌های با تضاد را نشان می‌دهد و از شما می‌پرسد چه کنید
 
# روش پیشنهادی (ذخیره و انتخاب هوشمند)
dispatch-conf
# تفاوت‌ها را نمایش می‌دهد و تغییرات قبلی را در /etc/config-archive نگه می‌دارد

dispatch-conf بهتر است

dispatch-conf مزیت‌های زیادی نسبت به etc-update دارد: فایل‌های قدیمی را آرشیو می‌کند، با diff رنگی تفاوت‌ها را نشان می‌دهد و می‌تواند فایل‌هایی که فقط کامنت تغییر کرده را به‌صورت خودکار ادغام کند. در /etc/dispatch-conf.conf آن را پیکربندی کنید.

گام ۵: بازسازی بسته‌های وابسته به کتابخانه حذف‌شده#

وقتی یک کتابخانه نسخه‌بندی‌شده (مثلاً libfoo.so.4) حذف می‌شود اما بسته‌ای به آن وابسته است، Portage آن را به‌صورت موقت نگه می‌دارد تا بسته‌های وابسته بازسازی شوند:

# بازسازی بسته‌های وابسته
emerge @preserved-rebuild
# خروجی:
# Calculating dependencies... done!
# [ebuild   R   ] media-video/ffmpeg-6.1.1
# [ebuild   R   ] media-libs/libsndfile-1.2.2

گام ۶: پاک‌سازی بسته‌های اضافی#

بسته‌هایی که دیگر به چیزی وابسته نیستند (یعنی فقط به‌عنوان وابستگی نصب شده بودند و حالا بسته اصلی حذف شده) باید پاک شوند:

# پیش‌نمایش
emerge --ask --depclean
# خروجی:
# Calculating dependencies... done!
#   dev-libs/libfoo-1.2.3 pulled by:
#     (none)
# Packages removed: 12
 
# اجرای پاک‌سازی
emerge --depclean

depclean را با احتیاط اجرا کنید

--depclean می‌تواند بسته‌های ضروری را حذف کند اگر چیزی به آن‌ها وابسته به‌نظر نمی‌رسد (مثلاً اگر از world حذف کرده‌اید). همیشه پیش از تأیید، لیست را با دقت بخوانید. اگر بسته‌ای را شخصاً نصب کرده‌اید اما در @world نیست، با emerge --noreplace PACKAGE آن را به world اضافه کنید تا از حذف محافظت شود.

گام ۷: بازسازی ماژول‌های کرنل#

پس از به‌روزرسانی یا نصب کرنل جدید، ماژول‌های خارجی (مانند NVIDIA، VirtualBox، ZFS) باید برای کرنل جدید بازسازی شوند:

# بازسازی ماژول‌های خارجی
emerge @module-rebuild
# خروجی:
# Calculating dependencies... done!
# [ebuild   R   ] x11-drivers/nvidia-drivers-565.77  LINUX_MODULES_EXTRA="..."
# [ebuild   R   ] app-emulation/virtualbox-modules-7.1.4

این مجموعه بسته‌هایی است که در /var/lib/module-rebuild/ ثبت شده‌اند.

گام ۸: بازسازی لینک‌های شکسته (اختیاری)#

اگر بسته‌ای به‌اشتباه حذف یا خراب شده، می‌توانید با revdep-rebuild (از app-portage/gentoolkit) بسته‌های وابسته به لینک‌های شکسته را بازسازی کنید:

# نصب gentoolkit (اگر ندارید)
emerge --ask app-portage/gentoolkit
 
# بررسی و بازسازی
revdep-rebuild -i
# خروجی:
# Checking reverse dependencies...
# Packages to rebuild: 3

revdep-rebuild امروز کمتر لازم است

در Portage مدرن، @preserved-rebuild بیشتر کارها انجام می‌دهد و revdep-rebuild کمتر ضروری است. اما اگر بعد از به‌روزرسانی برنامه‌ای خطای cannot open shared object file داد، این فرمان می‌تواند نجات‌بخش باشد.

جدول مرور کلی#

گامفرمانهدف
۱emerge --syncهمگام‌سازی درخت Portage
۲eselect news readخواندن اخبار مهم
۳emerge -avuDN @worldبه‌روزرسانی بسته‌ها
۴dispatch-confادغام فایل‌های پیکربندی
۵emerge @preserved-rebuildبازسازی بسته‌های وابسته
۶emerge --ask --depcleanپاک‌سازی بسته‌های اضافی
۷emerge @module-rebuildبازسازی ماژول‌های کرنل
۸revdep-rebuild -iرفع لینک‌های شکسته (اختیاری)

خطاهای رایج#

۱. بسته‌های مسدودشده (blocked packages)#

[ebuild  N    ] app-foo/bar-2.0
[blocks B      ] app-foo/baz ("app-foo/baz" is blocking app-foo/bar-2.0)

دلیل: دو بسته با هم ناسازگارند. راه‌حل: معمولاً باید بسته مسدودکننده را حذف کنید:

# حذف بسته مسدودکننده
emerge --ask --depclean app-foo/baz
 
# سپس تلاش مجدد
emerge -avuDN @world

۲. تعارض فایل پیکربندی هنگام نصب#

* Detected file collision(s):
*   /etc/foo.conf
* Searching all installed packages for file collisions...

دلیل: دو بسته می‌خواهند فایل یکسانی را نصب کنند. راه‌حل:

# بررسی مالک فایل
equery belongs /etc/foo.conf
 
# معمولاً با پاک‌سازی بسته قبلی حل می‌شود
emerge --ask --depclean
emerge -avuDN @world

۳. خطای Circular dependency#

Calculating dependencies... done!
* Error: circular dependencies:
*   dev-libs/libfoo depends on dev-libs/libbar
*   dev-libs/libbar depends on dev-libs/libfoo

راه‌حل: معمولاً با به‌روزرسانی Portage یا تغییر USE flagها حل می‌شود:

# به‌روزرسانی Portage
emerge --ask sys-apps/portage
 
# تلاش مجدد
emerge -avuDN @world
 
# اگر حل نشد، USE flagهای مرتبط را موقتاً تغییر دهید
USE="-foo" emerge -avuDN @world

سهولت با --quiet-build

اگر خروجی کامپایل پر سر و صداست، از --quiet-build=y استفاده کنید تا فقط خطاها نمایش داده شوند. این گزینه را در /etc/portage/make.conf به EMERGE_DEFAULT_OPTS اضافه کنید:

EMERGE_DEFAULT_OPTS="--ask --quiet-build=y --keep-going"

خلاصه و مرحله بعد#

جریان canonical به‌روزرسانی Gentoo شامل هشت گام است: --sync، خواندن اخبار، -uDN @world، dispatch-conf، @preserved-rebuild، --depclean، @module-rebuild و در نهایت revdep-rebuild. اجرای ماهانهٔ این چرخه، سیستم را پایدار و امن نگه می‌دارد.

برای درک عمیق‌تر Portage به آموزش Portage و برای مدیریت USE flagها به آموزش USE Flags مراجعه کنید. اگر از Distribution Kernel استفاده می‌کنید، آموزش Distribution Kernel نکات هماهنگی کرنل با به‌روزرسانی را پوشش می‌دهد. برای رفع خطاهای پیچیده، آموزش عیب‌یابی را ببینید.

اشتراک‌گذاری:

این صفحه در تاریخ ۱ تیر ۱۴۰۵ به‌روزرسانی شده است.