رفع خطای «برنامه آسیب دیده است» در macOS
فهرست مطلب
- چرا macOS میگوید برنامه آسیب دیده است؟
- روش اول: اجازه دادن از تنظیمات امنیتی
- روش دوم: حذف ویژگی quarantine در Terminal
- روش سوم: باز کردن با کلیک راست
- اگر باز هم اجرا نشد
- سؤالات متداول
- حذف ویژگی quarantine امن است؟
- بعد از هر بهروزرسانی دوباره همین پیام را میبینم؟
- چرا اپل به برنامههای متنباز اعتماد نمیکند؟
Clash Verge Rev را دانلود میکنید، آن را به پوشه Applications میکشید، دوبار کلیک میکنید و macOS اعلام میکند برنامه «آسیب دیده است و نمیتوان آن را باز کرد» و پیشنهاد میدهد آن را به سطل زباله بیندازید. متن پیام ترسناک است اما تقریباً همیشه نادرست: فایل شما سالم است.
چیزی که میبینید واکنش Gatekeeper است؛ لایه بررسی برنامههای اپل که به نرمافزارهای توزیعشده خارج از App Store و بدون گواهی notarization اعتماد نمیکند. پروژههای متنباز دائماً به این سد میخورند و عبور از آن کمتر از یک دقیقه طول میکشد. در ادامه سه روش کارآمد را به همراه ملاحظات امنیتی که باید بدانید مرور میکنیم.
چرا macOS میگوید برنامه آسیب دیده است؟
هر فایلی که از طریق مرورگر دانلود میشود، برچسبی به نام com.apple.quarantine میگیرد. در اولین اجرا، Gatekeeper برنامههای دارای این برچسب را بررسی میکند: اگر امضا و گواهی اپل را داشته باشند عادی باز میشوند، وگرنه یکی از دو پیام «توسعهدهنده ناشناس» یا پیام تندتر «آسیب دیده» ظاهر میشود. کدام پیام را ببینید به نسخه macOS و نحوه بستهبندی برنامه بستگی دارد.
پس این پیام درباره نبود گواهی است، نه خرابی فایل. نرمافزارهایی که جامعه کاربری میسازد — از جمله Clash Verge Rev — دقیقاً همان دستهای هستند که این بررسی را فعال میکنند.
پیش از دور زدن این هشدار: فقط برای نرمافزارهایی این کار را انجام دهید که به منبع آنها اطمینان دارید. نسخهها را از مرکز دانلود یا صفحه رسمی Releases پروژه در GitHub بگیرید و از فایلهای بازبستهبندیشده با منبع نامشخص کاملاً پرهیز کنید.
روش اول: اجازه دادن از تنظیمات امنیتی
- یک بار روی برنامه دوبار کلیک کنید تا macOS مسدود شدن آن را ثبت کند، سپس پیام را ببندید.
- وارد System Settings → Privacy & Security شوید و تا بخش Security پایین بروید.
- سطری را پیدا کنید که میگوید اجرای این برنامه مسدود شده است و روی Open Anyway بزنید.
- در پنجره تأییدی که باز میشود رمز عبور یا Touch ID خود را وارد کنید.
عبارتهای دقیق بین نسخههای macOS کمی فرق دارد، اما منطق کار سالهاست ثابت مانده: اول تلاش برای اجرا، بعد تأیید در تنظیمات. این تأیید ذخیره میشود و برای هر نسخه از برنامه فقط یک بار لازم است.
روش دوم: حذف ویژگی quarantine در Terminal
راه مستقیمتر، پاک کردن خود برچسب قرنطینه است. Terminal را باز کنید و این دستور را اجرا کنید:
xattr -dr com.apple.quarantine "/Applications/Clash Verge.app"
در این دستور -d یعنی حذف ویژگی و -r یعنی اعمال بازگشتی روی همه محتویات بسته برنامه. مسیر را متناسب با برنامه خودتان تغییر دهید؛ همین دستور برای فایل اجرایی دانلودشده هسته mihomo هم کار میکند. پس از اجرا، برنامه بدون هیچ پیامی باز میشود. اگر Terminal پاسخ داد که چنین ویژگیای وجود ندارد، یعنی برچسب از قبل حذف شده و مشکل جای دیگری است.
روش سوم: باز کردن با کلیک راست
در برخی نسخههای macOS اگر در Finder با نگه داشتن کلید Control روی برنامه کلیک کنید و گزینه Open را بزنید، پنجرهای ظاهر میشود که دکمه اضافه Open دارد؛ دکمهای که در دوبار کلیک ساده نشان داده نمیشود. این روش بیشتر برای پیام «توسعهدهنده ناشناس» جواب میدهد تا پیام «آسیب دیده»، اما ده ثانیه وقت شما را میگیرد و ارزش امتحان کردن دارد.
اگر باز هم اجرا نشد
وقتی برنامه اجرا میشود و بلافاصله بسته میشود، یا پیام بعد از یک بار عبور موفق دوباره برمیگردد، دیگر مسئله quarantine نیست. دو علت باقی میماند: بسته نصبی با معماری اشتباه — یعنی روی Mac با تراشه Apple Silicon نسخه Intel یا برعکس، که در راهنمای انتخاب نسخه Intel و Apple Silicon توضیح دادهایم — یا دانلود واقعاً ناقص که با دانلود مجدد حل میشود.
مسیر کامل نصب و اولین اجرا در راهنمای نصب Clash Verge Rev روی macOS آمده است؛ برای خطاهای بعد از اجرای موفق هم راهنمای خطاهای رایج نقطه شروع بهتری است.
سؤالات متداول
حذف ویژگی quarantine امن است؟
این دستور فقط نشانه «از اینترنت دانلود شده» را از همان یک برنامه برمیدارد و بررسی اولین اجرای آن را رد میکند؛ حفاظت کلی سیستم را ضعیف نمیکند. تصمیم امنیتی واقعی زودتر گرفته میشود: جایی که انتخاب میکنید فایل را از کجا دانلود کنید. منبع معتبر یعنی ریسک پایین، منبع ناشناس یعنی اصلاً این کار را نکنید.
بعد از هر بهروزرسانی دوباره همین پیام را میبینم؟
معمولاً بله. نسخه تازه دانلودشده یک فایل جدید و قرنطینهشده است، پس اگر بهروزرسانی را دستی انجام دهید باید روش اول یا دوم را تکرار کنید. بهروزرسانی از داخل خود برنامه معمولاً این پیام را دوباره فعال نمیکند.
چرا اپل به برنامههای متنباز اعتماد نمیکند؟
گرفتن گواهی notarization نیازمند حساب توسعهدهنده پولی و عبور از فرایند امضای اپل است. بسیاری از پروژههای داوطلبانه این هزینه و روند را نمیپذیرند، بنابراین Gatekeeper بستههای آنها را ناشناس در نظر میگیرد. این یک انتخاب سیاستگذاری است، نه قضاوتی درباره کیفیت نرمافزار.