کی بازار- مدیران بسته لینوکس مانند Apt و DNF بسیار قدرتمند و شهودی هستند اما این بدانمعنا نیست که ازشان خطایی سر نمیزند. گاهاً پیش میآید که نصب بسته به مشکل میخورد و شما میمانید پکیج هزار تکه. مدیران بسته این قابلیت را دارند که پکیجهای خراب را درست کنند و آپدیتهای نصفهنیمه را رد کنند تا سیستم شما باری دیگر کار کند و بدینترتیب جلوی دردسرهای آتی هم گرفته شود. در ادامه با ما همراه شوید تا توضیح دهیم چطور میشود بستههای خراب را در لینوکس درست کرد.
توصیهها و ترفندهایی که در این مقاله به شما ارائه میشود به شما کمک میکند تا در خیلی از شرایطها خود را نجات دهید. این متودها جهانیاند اما شاید هر وضعیت با کمی تفاوت نیز همراه باشد پس یادتان باشد همیشه در پیروی از توصیههای ما وضعیت خاص خود را نیز در نظر بگیرید.
درست کردن بستههای خراب در اوبونتو/مینت/دبیان
Apt چندین فلگ دارد که میتوانید از آنها برای رفع تعلقات از دست رفته یا درست کردن پکیجهایی که به دلیلی در طول نصب خراب شدند استفاده کنید. یکی از کاربردهای رایج در اینجا نصب .deb طرفسوم و یافتن تعلقاتی است که شما از آنها اطلاعی ندارید. این وابستگیها احتمالاً به خودی خود برطرف نمیشوند و dpkg شکایت میکند که بسته در آنها وجود ندارد. در هر صورت میتوانید مراحل زیر را امتحان کنید.
ابتدا آپدیتی را اجرا کنید تا مطمئن شوید نسخههای جدیدتری برای پکیجها وجود ندارد.
sudo apt --fix-missing update
سپس میتوانید Apt را مجبور کنید تا هر گونه وابستگی از دست رفته یا بسته های خراب را هنگام تلاش برای نصب مجدد بسته معیوب جستجو و اصلاح کند. این در واقع هرگونه وابستگی از دست رفته را نصب میکند و نصب های موجود را نیز تعمیر.
sudo apt install –f
جای دیگری در نصب بسته که احتمال بروز خطا وجود دارد، فرآیند تنظیمات است. در پسزمینه، dpkg از این بخش مراقبت میکند و نه Apt، بنابراین منطقی است وقتی یک بسته در طول تنظیمات از کار میافتد، dpkg ابزاری است که برای رفع آن باید بدان مراجعه کنید.
Dpkg را مجبور کنید هر بستهی خراب یا نصفه تنظیمشده را از نو تنظیم کند.
sudo dpkg --configure –a
اگر این مشکل را حل نکرد، میتوانید رویکرد قویتری در پیش بگیرید. با فهرست کردن بسته هایی که dpkg علامت زد نیاز به نصب مجدد دارند شروع کنید.
sudo dpkg -l | grep ^..r
شما باید بسته(های) معیوب را در آنجا ببینید. مادامیکه چیزی وجود نداشته باشد که به نظر نرسد متعلق به آنجا باشد، میتوانید بسته های خراب را به زور حذف کنید.
sudo dpkg --remove --force-remove-reinstreq [package name]
وقتی کارتان با dpkg تمام شد سعی کنید تمیزکاری را با Apt. انجام دهید.
sudo apt clean
sudo apt update
با هر تلاشی شده به جایی که شروع کرده بودید بازگردانده خواهید شد. بستههای خرابی را که میخواهید نصب کنید به شما نمیرساند، اما حداقل Apt دوباره کاربردی خواهد شد و میتوانید برای نصب بسته و وابستگیهای آن استفادهاش کنید.
قفل دائمی DPKG
ایراد کمتر رایج در مورد قفل dpkg وجود دارد که شما را از انجام هر کاری باز میدارد. هر بار که سعی میکنید از Apt یا dpkg استفاده کنید، با این خطا مواجه میشوید که میگوید برنامه دیگری از قبل … است، در حالی که اینطور نیست. در واقع حذف فایل قفل که مانع از استفاده از Apt و بازگشت به انجام کارهای مورد نیاز شما می شود، آسان است. گاهی اوقات این فایلهای قفل پس از خطای نصب یا قطع برق در جای خود باقی میمانند و فرآیند را از مسیر خارج و از حذف خودکار فایل جلوگیری میکنند. در این مورد، شما باید خودتان این کار را انجام دهید.
sudo rm /var/lib/apt/lists/lock
cache را پاک کنید.
sudo rm /var/cache/apt/archives/lock
حل بستههای خراب در فدورا/ CentOS / RHEL
تعمیر بستههای خراب در Fedora/CentOS/RHEL کمتر رایج است، زیرا yum و dnf برای اطمینان از نصب صحیح بستهها نهایت تلاش خود را میکنند. با این حال، گاهی اوقات در استفاده از بستهبندی همهچیز با هم مخلوط میشود. دستور انجام این کار در سیستم های مبتنی بر rpm به صورت زیر است:
sudo rpm –Va
گزینه -V برای تایید است، به این معنا که اطلاعات فایلهای نصبشده را با اطلاعات ذخیره شده در پایگاه داده rpm مقایسه میکند که تا حدی میشود گفت کارا نیست؛ زیرا معمولاً فهرست بلندبالایی از فایلها را در اختیار شما قرار میدهد، اما اگر با یک برنامه خاص مشکل داشتید، میتواند بگذارد نهایتاً از جایی شروع کنید. میتوانید نصب مجدد dnf روی هر بستهای که در آن لیست میبینید اجرا کنید؛ بستهای را میگوییم که ممکن است برای شما مشکل ایجاد کرده باشد.
sudo dnf --refresh reinstall PACKAGE_NAME
با این کار تمام ابردادهها منقضی میشود، بنابراین در هر مخزنی که فعال کردهاید میخزد و به دنبال نسخه جدیدی از آن بسته میگردد. اگر متوجه شوید که متعلقات خرابی با آن بسته وجود دارد، DNF احتمالاً شکایت کند و به شما می گوید که از پرچم --skip-broken استفاده کنید. این همچنین میتواند به این معنی باشد که یک مخزن خاص فعال برای ایجاد وابستگی ندارید، بنابراین ممکن است مجبور شوید دست به کمی تحقیق و تفحص بزنید.
رفع پکیجهای خراب در Arch
اگرچه مدیر بستههای Arch شباهتهای زیادی به Debian دارد، اما ماهیتی کاملاً متفاوت دارد. اولین قدم در تشخیص مشکل شما این است که مطمئن شوید مخازن به روز هستند و سعی کنید به طور کامل ارتقا دهید:
sudo pacman –Syu
اگر تلاشهای شما برای نصب بسته خود یا انجام ارتقای سیستم همچنان با شکست مواجه شد، باید مورد را بر اساس آنچه ترمینال به شما گفته است ایزوله کنید.
پکیج نامعتبر یا خراب
اعمال تغییر در pacman.conf به هر شکلی میتواند باعث مشکلاتی شود که موجب گردد pacman به اشتباه بستهها را «خراب» تلقی کند. محتملترین مقصر در اینجا یک فایل جزئی part در حافظه پنهان بسته مدیر است و راهحل این است که حذفش کنید:
sudo find /var/cache/pacman/pkg/ -iname "*.part" –delete
همیشه این احتمال وجود دارد که بستهای که میخواهید نصب کنید واقعاً خراب باشد و ابرداده معتبری را در اختیار Arch قرار ندهد. در این صورت، باید منتظر بمانید تا نگهدارنده بسته آن را آپدیت کند. اگر بسته بر روی سیستم شما نصب شده باشد و در حین ارتقا مشکل ایجاد کند، آن را با استفاده از روش زیر حذف کنید:
sudo pacman -Rns [package name]
عدم توانایی در قفل کردن پایگاه داده
مانند apt Debian، مدیر بسته Arch یک فایل قفل در طول عملیات ایجاد میکند. اگر قطع برق را تجربه کردید یا Pacman یک وقفه سخت برایش پی آمد که نتوانست قفل را از آن جدا کند، به احتمال زیاد یک فایل قفل را باقی میگذارد.
ابتدا، بررسی کنید آیا برخی از فرآیندها در کامپیوتر شما هنوز از فایل استفاده میکند یا خیر:
sudo fuser /var/lib/pacman/db.lck
در تصویر بالا فرآیندی با شناسه 121497 از قفل فایل استفاده میکند. اگر در مورد فرآیند کنجکاو هستید و اطلاعات بیشتری می خواهید، از ps استفاده کنید:
ps -p [PID#]
در تجربه ما، نمونه دیگری از pacman مالک فایل قفل است. ایمنترین راه برای برداشتن قفل این است که ابتدا آن فرآیند را از بین ببرید:
sudo kill [PID#]
حال که پروسه از بین رفته است قفل فایل را از میان بردارید:
sudo rm /var/lib/pacman/db.lck
فایلهای متناقص/فایلهایی که در فایلسیستم وجود دارند
این در هنگام ارتقاء Pacman رخ میدهد که در آن تناقضی تشخیص داده میشود. قبل از رفع هر چیزی به مسیر فایلی که مدیر بسته از آن شکایت دارد توجه کنید. اولین چیزی که باید بدانیم این است که چه کسی مالک فایل است:
pacman -Qo [path to the file]
اگر مالکس کارری باشد و نه یک بسته دیگر، فقط آن را حذف کنید:
sudo rm [path to the file]
اگر متعلق به بسته دیگری باشد، امنترین کاری که میتوانید انجام دهید این است که منتظر بمانید تا نگهدارنده بسته خودش این تناقض را برطرف کند. با این حال، گاهی اوقات این فقط یک گزینه نیست، و شما میخواهید کارها را همین الان انجام دهید. سادهترین راه برای انجام این کار استفاده از پرچم --overwrite در pacman است. فقط بدانید که این به طور کلی ناامن است و میتواند منجر به عدم کارکرد صحیح برخی از برنامهها در سیستم شما شود. پیشنهاد میشود قبل از اجرای این نسخه از دادههای خود بکآپ بگیرید. پرچم --overwrite به مدیر بسته Arch این امکان را میدهد که قوانین مالکیت یک فایل خاص را نادیده بگیرد و فقط از طریق به روز رسانی steam شود. مثال:
pacman -Syu --overwrite [file name]
اگر فرمان بالا کار نکرد، نام فایل را با مسیر مطلق آن جایگزین کنید. برخی از کاربران گزارش دادهاند که حذف علامت اسلش (“/”) در جلوی مسیر باعث میشود فرمان موقع پافشاریاش کار کند:
پرسشهای پرتکرار
- آیا میتوانم فیکسهای Arch را روی AUR helper نیز پیاده کنم؟
به طور کلی، بله. در دستورات این راهنما، pacman را با کمک کننده AUR خود جایگزین کنید. مثال:
yay -Qo /path/to/file
- آیا این دستورالعملها امن هستند؟
در بیشتر موارد، هر دستورالعملی که در اینجا وجود دارد به قدر هر عملیات مدیریت بسته دیگری ایمن است. استثنای اصلی زمانی است که شما در حال حذف فایلهای قفل هستید. اگر راهی برای انجام این کار دارید، همیشه مهم است که هر فرآیندی را که احتمال دارد از آن فایلها استفاده کنند، قبل از حذف آنها حذف کنید. از آنچه سیستم شما انجام میدهد آگاه باشید. شما ممکن است یک نمونه از apt یا pacman را در جایی فراموش کرده باشید!
بهترین روش این است که همیشه قبل از هر گونه ارتقاء از سیستم خود نسخه پکآپ داشته باشید.
- در صورت قطعی آپدیت باید چه کار کنم؟
شکستن فرآیند بهروزرسانی یا با فشردن کلیدهای Ctrl + C، از بین بردن فرآیند مدیر بسته، یا بستن پیش از موعد ترمینال، منجر به سطحی از خرابیدر پایگاه داده بسته شما میشود که میتواند هنگام تلاش برای نصب چیز دیگری، شرایط را برای شما پیچیده کند. برای رفع این مشکل، کش را پاک کرده و به روزرسانی را تکرار کنید.
در Debian/Ubuntu/Mint/Pop!_OS/ و غیره:
sudo apt-get clean
در Fedora/CentOS/RHEL:
sudo dnf clean all
در Arch:
sudo pacman -Scc
منبع: کی بازار (فروشگاه آنلاین نرم افزارهای اورجینال)، با دریافت انواع لایسنسهای معتبر از تامینکنندگان جهانی این امکان را برای تمام کاربران فراهم آورده است تا در چند ثانیه، از خدماتی بینالمللی لذت ببرند. در کی بازار امکان خرید لایسنسهای اورجینال نرم افزارهای کاربردی و امنیتی(ویندوز اورجینال، آفیس اورجینال، آنتی ویروس اورجینال، آنتی ویروس کسپرسکی، آنتی ویروس پادویش و آنتی ویروس نود 32) بصورت ارسال آنی فراهم آمده است.