فرق update و upgrade در APT از آن موضوعهایی است که تقریبا هر کاربر اوبونتو، دبیان و توزیعهای مبتنی بر آن خیلی زود با آن روبهرو میشود، اما همیشه بهدرستی درکش نمیکند. خیلیها این دو دستور را پشت سر هم اجرا میکنند، بدون اینکه بدانند هرکدام دقیقا در چه لایهای از مدیریت بستهها اثر میگذارد. نتیجه این ابهام گاهی فقط یک سوءبرداشت ساده است و گاهی میتواند به عیبیابی دشوار، برداشت اشتباه از وضعیت سیستم یا تصمیمگیری نامناسب در زمان نگهداری سرور منجر شود.

اگر بخواهیم خیلی خلاصه بگوییم، apt update فهرست محلی بستهها و نسخههای موجود در مخازن را تازه میکند، اما خودش چیزی را نصب یا ارتقا نمیدهد. در مقابل، apt upgrade با تکیه بر همان اطلاعات تازهشده، تلاش میکند بستههای نصبشده را به نسخههای جدیدتر ارتقا دهد؛ البته تا جایی که این کار بدون حذف بستههای دیگر یا ایجاد تغییرات پیچیده در وابستگیها ممکن باشد. همین تفاوت ظاهرا کوچک، در عمل تعیین میکند چه زمانی فقط باید اطلاعات مخازن را همگام کنید و چه زمانی واقعا باید روی سیستم تغییر اعمال شود.
در این مقاله، موضوع را دقیق و کاربردی بررسی میکنیم: apt update دقیقا چه میکند، apt upgrade چه کاری انجام میدهد، چرا معمولا این دو پشت سر هم اجرا میشوند، چرا بعضی بستهها با upgrade ارتقا پیدا نمیکنند، full-upgrade چه نقشی دارد و هنگام بهروزرسانی با APT به چه نکات مدیریتی و امنیتی باید توجه کرد. هدف این است که در پایان فقط تعریف نظری این دستورها را ندانید، بلکه بتوانید با اطمینان بیشتری تصمیم بگیرید روی سیستم شخصی یا سرور، کدام دستور را در چه شرایطی اجرا کنید.
فرق update و upgrade در APT دقیقا چیست؟
برای فهم دقیق تفاوت، باید بدانیم APT با دو لایه از اطلاعات کار میکند. لایه اول، اطلاعات مخازن است؛ یعنی اینکه چه بستههایی در مخازن تعریفشده وجود دارند، آخرین نسخه هر بسته چیست و هر بسته به چه وابستگیهایی نیاز دارد. لایه دوم، وضعیت واقعی سیستم است؛ یعنی اینکه همین حالا چه بستههایی روی دستگاه شما نصب هستند و نسخه فعلی آنها چیست.
apt update با لایه اول کار میکند. این دستور اطلاعات محلی شما درباره مخازن را بهروز میکند. در مقابل، apt upgrade با استفاده از همین اطلاعات، سعی میکند بستههای نصبشده را در لایه دوم به نسخههای جدیدتر ارتقا دهد.
apt update: فهرست محلی بستهها و نسخههای قابل دریافت را تازه میکند.apt upgrade: بستههای نصبشده را، اگر شرایطش فراهم باشد، به نسخههای جدیدتر ارتقا میدهد.
پس اگر فقط apt update را اجرا کنید، سیستم شما صرفا از وضعیت تازه مخازن باخبر میشود. اما اگر apt upgrade را اجرا کنید، APT میکوشد بر اساس آن اطلاعات، تغییر واقعی روی بستههای نصبشده اعمال کند. به همین دلیل است که این دو دستور از نظر نقش، مکمل هم هستند اما یکسان نیستند.
sudo apt update
sudo apt upgrade
این ترتیب رایج دقیقا از همین منطق میآید: اول اطلاعات مخازن را تازه کنید و بعد، اگر لازم بود، بستههای نصبشده را ارتقا دهید؛ فرق update و upgrade همینجا روشن میشود.
دستور apt update دقیقا چه کاری انجام میدهد؟
وقتی apt update را اجرا میکنید، APT به مخازنی که در سیستم تعریف شدهاند مراجعه میکند و فهرست بستهها و متادیتای مربوط به آنها را دریافت یا بازخوانی میکند. این دادهها شامل نام بسته، نسخه، معماری، وابستگیها، توضیحات و اطلاعات لازم برای اعتبارسنجی هستند. در واقع این دستور «دانش محلی» سیستم را درباره آنچه در مخازن وجود دارد تازه میکند.
نکته مهم این است که apt update خودش بستهای را نصب، جایگزین یا ارتقا نمیدهد. حتی اگر در پایان خروجی ببینید که تعداد زیادی بسته قابل ارتقا هستند، تا وقتی دستور ارتقا را اجرا نکردهاید، نسخه بستههای نصبشده تغییری نکرده است.
به زبان ساده، apt update شبیه تازهکردن فهرست موجودی یک فروشگاه است، نه خرید کردن. شما فقط میفهمید چه چیزی موجود است و چه نسخهای از آن در دسترس قرار دارد.
خروجی apt update را چطور بخوانیم؟
در خروجی این دستور معمولا با چند نوع پیام روبهرو میشوید:
- Hit: اطلاعات از قبل موجود بوده و استفاده از آن بدون مشکل انجام شده است.
- Get: اطلاعات جدید از مخزن دریافت شده است.
- Ign: موردی نادیده گرفته شده که لزوما به معنی خطا نیست.
- Err: دریافت اطلاعات از مخزن با خطا مواجه شده است.
اگر در پایان با هشدارهای مربوط به امضای مخزن، نبود فایل Release، خطاهای اعتبارسنجی یا مشکل در کلیدهای مخزن روبهرو شدید، بهتر است بلافاصله سراغ ارتقا نروید. برای فهم فرق update و upgrade باید توجه داشت که اینجا فقط یک مشکل ساده شبکه مطرح نیست؛ لازم است مطمئن شوید منبع بستهها معتبر است و APT واقعا به اطلاعاتی تکیه میکند که از مخزن گرفته است.
بعد از update چطور ببینیم چه چیزهایی قابل ارتقا هستند؟
sudo apt update
apt list --upgradable
فرمان دوم نشان میدهد پس از تازهشدن فهرستها، کدام بستههای نصبشده نسخه جدیدتری دارند. این شیوه وقتی مفید است که بخواهید پیش از هر تغییری فقط وضعیت را بررسی کنید؛ در بحث فرق update و upgrade این مرحله برای مشاهده است، نه اعمال تغییر.
در محیطهای حساس، همین مرحله بهتنهایی هم میتواند کافی باشد؛ مثلا وقتی میخواهید بدانید چه چیزهایی در صف ارتقا هستند، اما هنوز زمان نگهداری یا بازبینی تغییرات نرسیده است. در چنین وضعی، فرق update و upgrade به این معنی است که فقط وضعیت را ببینید و هنوز چیزی را تغییر ندهید.
دستور apt upgrade دقیقا چه کاری انجام میدهد؟
apt upgrade از اطلاعاتی که در مرحله قبل با apt update تازه شدهاند استفاده میکند تا بستههای نصبشده را به نسخههای جدیدتر ارتقا دهد. اما این دستور یک رفتار محافظهکارانه دارد. یعنی تا زمانی که ارتقا بدون حذف بستههای دیگر و بدون تغییرات مشکلساز در وابستگیها ممکن باشد، جلو میرود؛ در غیر این صورت از ارتقای آن بسته صرفنظر میکند.
به همین علت است که گاهی بعد از اجرای apt upgrade هنوز میبینید بعضی بستهها ارتقا پیدا نکردهاند یا در خروجی بهصورت بستههای ارتقانشده باقی ماندهاند. این وضعیت لزوما نشانه خرابی سیستم نیست. فقط یعنی ارتقای آن بستهها به تغییرات بیشتری نیاز دارد که از محدوده رفتار معمول upgrade خارج است.
این ویژگی در بسیاری از سناریوها مزیت مهمی به شمار میآید. روی سرورها و سیستمهای حساس، همین رویکرد محافظهکارانه باعث میشود ارتقاها کمریسکتر باشند و تغییرات ناگهانی در مجموعه بستهها کمتر رخ دهد؛ این هم بخشی از فرق update و upgrade است.
نمونه اجرای معمول
sudo apt upgrade
پیش از اعمال تغییرات، APT فهرست بستههایی را که قرار است ارتقا پیدا کنند نمایش میدهد و حجم دادهای را که باید دریافت شود نشان میدهد. این مرحله برای بازبینی بسیار مهم است، مخصوصا وقتی روی سیستمی کار میکنید که سرویسهای مهم روی آن در حال اجرا هستند؛ فرق update و upgrade در اینجا به تصمیمگیری آگاهانه کمک میکند.
چرا بعضی بستهها با upgrade ارتقا پیدا نمیکنند؟
دلایل رایج برای این اتفاق شامل موارد زیر است:
- نسخه جدید بسته به وابستگی تازهای نیاز دارد که هنوز روی سیستم نصب نیست.
- نسخه جدید با بسته دیگری تعارض دارد.
- برای بسته موردنظر سیاست نگهداشتن یا pinning اعمال شده است.
- مخازن تعریفشده ناسازگار یا ناقص هستند.
- ارتقا نیازمند حذف یا جایگزینی بستهای دیگر است و
apt upgradeاز انجام آن خودداری میکند.
بنابراین وقتی بستهای قابل ارتقا دیده میشود اما با upgrade جلو نمیرود، بهتر است بهجای نتیجهگیری عجولانه، وابستگیها، منبع بسته و سیاستهای ارتقا را بررسی کنید.
چرا معمولا apt update قبل از apt upgrade اجرا میشود؟
یکی از رایجترین پرسشها درباره فرق update و upgrade این است که چرا تقریبا همیشه apt update قبل از apt upgrade میآید. پاسخ ساده است: چون upgrade برای تصمیمگیری به فهرست بستهها نیاز دارد، و اگر این فهرست قدیمی باشد، تصمیم هم بر اساس اطلاعات قدیمی گرفته میشود.
فرض کنید مدتی است فهرست مخازن را تازه نکردهاید. اگر مستقیم apt upgrade را اجرا کنید، APT ممکن است از نسخههای جدیدی که بهتازگی در مخزن منتشر شدهاند خبر نداشته باشد. در نتیجه یا بعضی ارتقاها را از دست میدهد یا تصویری ناقص از وضعیت واقعی مخازن خواهد داشت.
sudo apt update && sudo apt upgrade
عملگر && باعث میشود فرمان دوم فقط زمانی اجرا شود که فرمان اول با موفقیت تمام شده باشد. این کار در اسکریپتها و روالهای مدیریتی مفید است، چون اگر مرحله همگامسازی مخازن مشکل داشته باشد، ارتقا بر پایه اطلاعات ناقص انجام نمیشود.
البته این به آن معنا نیست که همیشه باید هر دو را با هم اجرا کنید. اگر فقط میخواهید وضعیت مخازن را بررسی کنید، apt update بهتنهایی کافی است. همچنین اگر بعد از update تصمیم بگیرید فعلا هیچ تغییری روی بستهها اعمال نکنید، اشکالی ندارد.
فرق update و upgrade در توالی درست استفاده
از نظر عملی، بهترین راه برای فهم فرق update و upgrade این است که به توالی استفاده از آنها نگاه کنیم. update مرحله آگاهی است و upgrade مرحله اقدام. اولی به شما میگوید «چه چیزی در مخزن وجود دارد» و دومی تلاش میکند «آنچه نصب شده» را با اطلاعات تازه هماهنگ کند.
به همین دلیل، اجرای upgrade بدون update معمولا از نظر فنی ممکن است، اما از نظر مدیریتی انتخاب ایدهآلی نیست؛ چون دارید بر مبنای اطلاعاتی کار میکنید که شاید دیگر تازه نباشند. از آن طرف، اجرای update بدون upgrade کاملا منطقی است وقتی فقط قصد بررسی وضعیت را دارید.
این تفاوت بهخصوص در عیبیابی اهمیت پیدا میکند. اگر کاربری بگوید «سیستم را آپدیت کردم» باید روشن شود منظورش فقط apt update بوده یا بعد از آن apt upgrade هم انجام شده است. این دو از نظر اثر واقعی روی سیستم یکسان نیستند.
تفاوت apt upgrade با apt full-upgrade
برای درک کامل رفتار APT، خوب است apt full-upgrade را هم بشناسیم. این دستور نسبت به apt upgrade انعطاف بیشتری دارد و میتواند برای کاملکردن ارتقاها، بستههایی را نصب، جایگزین یا در بعضی موارد حذف کند. به همین دلیل در سناریوهایی که تغییر وابستگیها اجتنابناپذیر است، full-upgrade میتواند بستههایی را ارتقا دهد که upgrade از آنها صرفنظر کرده است.
در ابزارهای قدیمیتر، این رفتار را معمولا نزدیک به dist-upgrade میدانند. تفاوت مفهومی مهم این است:
apt upgradeمحافظهکارتر است.apt full-upgradeبرای حل تغییرات وابستگی، دست بازتری دارد.
اگر روی لپتاپ شخصی یا محیط آزمایشی کار میکنید، استفاده از full-upgrade در بعضی شرایط منطقی است. اما روی سرور تولید، بهتر است قبل از تایید، فهرست تغییرات را با دقت بررسی کنید؛ چون حذف یا جایگزینی یک بسته ممکن است روی سرویسها اثر بگذارد.
sudo apt update
sudo apt full-upgrade
وقتی مخازن ثالث هم فعال هستند، بازبینی خروجی این دستور اهمیت بیشتری پیدا میکند؛ چون احتمال ورود نسخهها یا وابستگیهای غیرمنتظره بیشتر میشود. درک فرق update و upgrade در چنین شرایطی کمک میکند تغییرات احتمالی را دقیقتر ارزیابی کنید.
نمونههای عملی برای فهم بهتر تفاوت apt update و apt upgrade
سناریوی اول: فقط فهرست تازه میشود
فرض کنید روی سیستم شما بستهای مثل curl نصب است و نسخه جدید آن در مخزن منتشر شده. اگر فقط این دستور را اجرا کنید:
sudo apt update
سیستم شما حالا میداند نسخه جدیدی وجود دارد، اما خود بسته curl روی سیستم همچنان همان نسخه قبلی است. در این مرحله فقط اطلاعات تغییر کرده، نه نرمافزار نصبشده.
سناریوی دوم: بستههای نصبشده ارتقا پیدا میکنند
sudo apt update
sudo apt upgrade
در این حالت، اگر نسخه جدید curl با سیاست معمول ارتقا سازگار باشد، APT آن را دریافت و جایگزین میکند. اما اگر نسخه جدید به وابستگی تازهای نیاز داشته باشد که خارج از محدوده رفتار محافظهکارانه upgrade است، ممکن است ارتقا به تعویق بیفتد.
سناریوی سوم: بررسی بدون اعمال تغییر
اگر میخواهید پیش از هر تغییری ببینید APT چه تصمیمی میگیرد، از حالت شبیهسازی استفاده کنید؛ این کار برای بررسی فرق update و upgrade پیش از اعمال واقعی تغییرات مفید است.
apt -s upgrade
apt -s full-upgrade
گزینه -s باعث میشود تغییری اعمال نشود، اما نتیجه احتمالی عملیات به شما نشان داده شود. این روش برای بازبینی قبل از زمان نگهداری یا قبل از اعمال تغییر روی سرور بسیار مفید است.
سناریوی چهارم: بستهای در فهرست هست اما ارتقا نمییابد
گاهی بعد از apt update و حتی apt list --upgradable میبینید بستهای نسخه جدید دارد، اما apt upgrade آن را جلو نمیبرد. در این وضعیت، نخستین احتمال این است که نسخه جدید به تغییر در وابستگیها نیاز دارد. در چنین حالتی معمولا باید بررسی کنید آیا واقعا به full-upgrade نیاز دارید یا باید منبع بسته و سیاستهای نصب را بازبینی کنید.
این وضعیت روی سیستمهایی که از مخازن اضافی استفاده میکنند رایجتر است، چون تداخل نسخهها و اولویت مخازن میتواند تصمیم APT را پیچیدهتر کند. در چنین سناریویی، فهم فرق update و upgrade اهمیت بیشتری پیدا میکند.
نکات امنیتی و مدیریتی هنگام بهروزرسانی با APT
بهروزرسانی بستهها فقط یک کار روزمره نیست؛ بخشی از نگهداری امن سیستم است. اما خود فرایند بهروزرسانی هم اگر با دقت انجام نشود، میتواند دردسرساز باشد. بنابراین دانستن فرق update و upgrade کافی نیست و باید چند نکته تکمیلی را هم رعایت کنید.
به هشدارهای اعتبارسنجی بیتوجه نباشید
اگر apt update با خطاهای مربوط به امضا، کلید، یا فایل Release روبهرو شد، ابتدا منشا مشکل را روشن کنید. اجرای ارتقا روی مخزنی که اعتبارش مشخص نیست، تصمیم درستی نیست. آدرس مخزن، معتبر بودن منبع و بهروز بودن پیکربندی را بررسی کنید.
مخازن ثالث را با احتیاط مدیریت کنید
هرچه تعداد مخازن غیراستاندارد بیشتر شود، احتمال تعارض نسخهها و ورود بستههای غیرمنتظره بیشتر میشود. اگر مجبور به استفاده از چنین مخازنی هستید، بهتر است نقش هر مخزن روشن باشد و برای بستههای حساس، منبع و اولویت نسخهها را بررسی کنید.
apt policy
apt policy openssl
این دستور نشان میدهد هر نسخه از چه منبعی قابل دریافت است و کدام نسخه نامزد نصب محسوب میشود.
از شبیهسازی قبل از ارتقای مهم استفاده کنید
روی سیستمهای حساس، مخصوصا وقتی احتمال میدهید تغییر وابستگی رخ دهد، اجرای حالت شبیهسازی میتواند از غافلگیری جلوگیری کند. این کار خصوصا پیش از full-upgrade ارزش زیادی دارد.
بعد از ارتقا، سرویسهای مهم را بررسی کنید
ارتقای بعضی بستهها ممکن است به راهاندازی دوباره سرویسها نیاز داشته باشد یا رفتار آنها را تغییر دهد. بنابراین بعد از ارتقا، فقط به موفق بودن خود APT اکتفا نکنید و وضعیت سرویسهای کلیدی را هم بررسی کنید؛ این هم از نکات عملی فرق update و upgrade است.
systemctl status nginx
systemctl status ssh
systemctl status postgresql
قبل از تغییرات مهم، مسیر بازگشت داشته باشید
اگر روی سرور یا ماشین کاری مهم کار میکنید، قبل از ارتقای بستههای حساس از تنظیمات و دادهها نسخه پشتیبان بگیرید. APT ابزار مدیریت بسته است، نه ابزار بازیابی؛ هنگام بررسی فرق update و upgrade داشتن برنامه بازگشت بخشی از نگهداری حرفهای سیستم است.
سوءبرداشتهای رایج درباره update و upgrade
«update یعنی سیستم آپدیت شد»
این برداشت اشتباه است. apt update فقط فهرست اطلاعات را تازه میکند. تا وقتی upgrade یا دستور مشابهی اجرا نشده، بستههای نصبشده تغییر نکردهاند.
«upgrade همیشه همه چیز را ارتقا میدهد»
خیر. apt upgrade محدودیت دارد و در برابر تغییرات وابستگی محافظهکارانه عمل میکند. بنابراین ممکن است بعضی بستهها را نگه دارد.
«اگر update خطا داد، شاید upgrade مشکل را حل کند»
در بیشتر موارد چنین نیست. چون upgrade به همان اطلاعات محلی متکی است. اگر مرحله همگامسازی مخزن مشکل داشته باشد، باید اول همان مشکل برطرف شود.
«استفاده از -y همیشه بهتر است»
گزینه -y تایید را خودکار میکند، اما روی سیستمهای حساس همیشه انتخاب خوبی نیست. وقتی قرار است بستههای مهم ارتقا پیدا کنند، بهتر است فهرست تغییرات را ببینید و بعد تایید کنید.
sudo apt upgrade -y
این روش برای خودکارسازی مفید است، اما بهتر است فقط در سناریوهایی به کار برود که اثر آنها را از قبل میشناسید.
چه زمانی از هر دستور استفاده کنیم؟
- فقط میخواهید ببینید چه نسخههایی در مخازن موجود است:
apt update - میخواهید بستههای نصبشده را بهصورت معمول ارتقا دهید:
apt updateسپسapt upgrade - بعضی بستهها با upgrade جلو نمیروند و تغییر وابستگی لازم است: پس از بررسی،
apt full-upgrade - میخواهید قبل از هر تغییری نتیجه را ببینید:
apt -s upgradeیاapt -s full-upgrade
در استفاده روزمره روی یک سیستم شخصی، ترکیب update و upgrade معمولا کافی است. اما در محیط سرور، علاوه بر این دو، باید به اثر ارتقا روی سرویسها، وابستگیها، زمان نگهداری و امکان بازگشت هم توجه کنید.
چند دستور مکمل در کنار update و upgrade
نمایش بستههای قابل ارتقا
apt list --upgradable
برای زمانی مفید است که میخواهید قبل از ارتقا، وضعیت بستههای منتظر بهروزرسانی را ببینید.
نمایش منبع و اولویت نسخهها
apt policy package-name
اگر درباره منبع نصب یا دلیل انتخاب یک نسخه خاص تردید دارید، این دستور برای عیبیابی بسیار مفید است.
ارتقای یک بسته خاص
sudo apt install package-name
در APT، نصب دوباره یک بسته با نسخه جدید موجود، عملا میتواند همان ارتقای آن بسته را انجام دهد. این روش وقتی مفید است که نخواهید همه بستهها را یکجا ارتقا دهید.
پاکسازی بستههای بلااستفاده و کش
sudo apt autoremove
sudo apt clean
autoremove وابستگیهایی را که دیگر لازم نیستند حذف میکند و clean کش بستههای دانلودشده را پاک میکند. این دستورها مفیدند، اما بهتر است با دقت اجرا شوند.
یک روال پیشنهادی برای بهروزرسانی امنتر
- اجرای
apt updateبرای تازهکردن فهرستها. - بررسی خطاهای مخزن و هشدارهای اعتبارسنجی.
- دیدن بستههای قابل ارتقا با
apt list --upgradable. - در محیط حساس، شبیهسازی با
apt -s upgrade. - اجرای
apt upgradeو بازبینی خروجی. - بررسی سرویسهای مهم پس از ارتقا.
- اگر برخی بستهها باقی ماندند، بررسی اینکه آیا واقعا به
full-upgradeنیاز دارید یا نه.
این روال ساده است، اما در بسیاری از محیطها تعادل خوبی بین احتیاط و کارایی ایجاد میکند.
جمعبندی
اگر بخواهیم روشن و کوتاه بگوییم، فرق update و upgrade این است که اولی اطلاعات بستهها را تازه میکند و دومی بستههای نصبشده را بر اساس همان اطلاعات ارتقا میدهد. پس apt update بهتنهایی چیزی را روی سیستم شما تغییر نمیدهد، اما apt upgrade میتواند نسخه بستههای نصبشده را جلو ببرد؛ البته با رویکردی محافظهکارانه و بدون ورود به تغییرات پیچیده وابستگی، مگر اینکه سراغ full-upgrade بروید.
در نتیجه، فهم درست تفاوت این دستورها فقط یک نکته تئوری نیست. این شناخت کمک میکند خروجی APT را بهتر بخوانید، دلیل ارتقا نشدن بعضی بستهها را بفهمید، خطاهای مخزن را جدیتر بگیرید و روی سیستم شخصی یا سرور با اطمینان بیشتری تصمیم بگیرید. اگر این منطق ساده را به خاطر بسپارید، فرق update و upgrade روشنتر میشود: اول وضعیت مخازن را تازه کنید، بعد درباره اعمال تغییر روی بستههای نصبشده تصمیم بگیرید.
برای مشاهده این خدمت در ماهان کلود، صفحه سرور ابری و سرور مجازی VPS را ببینید.




دیدگاهها