محدودیت دسترسی به Pub.dev میتواند فرایند توسعه، دریافت وابستگیها یا استفاده از ابزارهای مرتبط را مختل کند. در این راهنما تنظیم شکن، دامنههای لازم و روش آزمایش تحریم شکن برای Pub.dev را با نمونه عملی توضیح میدهیم.
اگر هنگام باز کردن سایت pub.dev یا دریافت کتابخانههای موردنیاز پروژههای Dart و Flutter با خطا مواجه میشوید، ممکن است مشکل از اتصال اینترنت، تنظیمات DNS، گواهی امنیتی یا محدودیت دسترسی شبکه باشد. در چنین شرایطی، بررسی تنظیمات DNS با سرویس شکن میتواند یکی از راههای آزمایش و عیبیابی اتصال باشد؛ البته نتیجه به نوع خطا و وضعیت شبکه بستگی دارد.
سایت pub.dev مخزن رسمی پکیجهای Dart و Flutter است. برنامهنویسان از این سایت برای جستوجو، بررسی مستندات و دریافت کتابخانههایی استفاده میکنند که قابلیتهای مختلفی به پروژه اضافه میکنند. برای مثال، هنگام توسعه اپلیکیشن Flutter ممکن است به پکیجهایی برای ارسال درخواستهای اینترنتی، مدیریت مسیرها، کار با پایگاه داده یا استفاده از امکانات دستگاه نیاز داشته باشید.
اگر دسترسی به pub.dev برقرار نباشد، ممکن است نصب وابستگیهای پروژه نیز با مشکل مواجه شود. در این راهنما با روش استفاده از DNS شکن، بررسی خطاهای رایج و نکاتی آشنا میشوید که هنگام اجرای دستورهای dart pub get و flutter pub get به شما کمک میکنند.

pub.dev چیست و چرا دسترسی به آن برای برنامهنویسان اهمیت دارد؟
pub.dev مخزن عمومی پکیجهای زبان Dart و فریمورک Flutter است. توسعهدهندگان میتوانند در آن کتابخانههای موردنیاز خود را جستوجو کنند، نسخههای مختلف یک پکیج را ببینند، مستندات و نمونهکدها را بررسی کنند و اطلاعات مربوط به سازگاری پکیج با پلتفرمها را بخوانند.
در پروژههای Dart و Flutter، بسیاری از قابلیتها از طریق پکیجهای آماده به پروژه اضافه میشوند. به همین دلیل، دسترسی به مخزن پکیجها تنها برای مشاهده یک سایت نیست؛ ابزارهای خط فرمان نیز هنگام دریافت وابستگیها به ارتباط شبکه نیاز دارند.
برای نمونه، پس از اضافه کردن یک پکیج به فایل pubspec.yaml، معمولاً دستور زیر برای دریافت وابستگیها اجرا میشود:
flutter pub get
در پروژههای Dart که از Flutter استفاده نمیکنند نیز میتوان از دستور زیر بهره برد:
dart pub get
این دستورها وابستگیهای تعریفشده در پروژه را بررسی و نسخههای سازگار را دریافت میکنند. در پروژههای Flutter، اطلاعات نسخههای حلشده معمولاً در فایل pubspec.lock ثبت میشود تا محیط توسعه بتواند از نسخههای مشخصشده استفاده کند.
اگر ارتباط با مخزن برقرار نشود، فرایند دریافت پکیجها ممکن است متوقف شود و ادامه توسعه یا آمادهسازی پروژه به تأخیر بیفتد. برای آشنایی بیشتر با نحوه استفاده از پکیجها میتوانید مستندات رسمی Using packages در Flutter را مطالعه کنید.
تحریم شکن برای pub.dev چه کاربردی دارد؟
اگر دسترسی به pub.dev از شبکه شما با مشکل روبهرو شده باشد، بررسی DNS یکی از اقداماتی است که میتوانید انجام دهید. DNS وظیفه دارد نام دامنههایی مانند pub.dev را به آدرس IP متناظر تبدیل کند. اختلال در این فرایند ممکن است باعث شود مرورگر یا ابزارهای توسعه نتوانند سرور موردنظر را پیدا کنند.
شکن یک سرویس DNS است که میتوانید تنظیمات آن را روی دستگاه خود آزمایش کنید. با این حال، باید توجه داشته باشید که DNS شکن VPN نیست و تمام ترافیک اینترنت را از یک تونل عبور نمیدهد. بنابراین، اگر مشکل از گواهی TLS، پروکسی، فایروال، اختلال اینترنت یا سرور مقصد باشد، تغییر DNS لزوماً آن را برطرف نمیکند.
پیش از تغییر تنظیمات، بهتر است مشخص کنید مشکل دقیقاً در کدام مرحله رخ میدهد:
-
سایت pub.dev در مرورگر باز نمیشود.
-
سایت باز میشود، اما دستور
dart pub getخطا میدهد. -
دستور
flutter pub getهنگام دریافت یک پکیج متوقف میشود. -
بعضی وابستگیها دریافت میشوند، اما دریافت یک پکیج خاص با خطا مواجه میشود.
-
دریافت پکیجها در یک شبکه انجام میشود، اما در شبکه دیگری با مشکل روبهرو است.
شناخت این تفاوتها کمک میکند بهجای تغییر بیهدف تنظیمات، راهکار متناسب با خطا را انتخاب کنید.
آدرس DNS شکن برای دسترسی به pub.dev
برای آزمایش سرویس شکن، میتوانید DNSهای زیر را در تنظیمات شبکه دستگاه خود وارد کنید.
| نوع سرویس | DNS اول | DNS دوم |
|---|---|---|
| شکن رایگان | 178.22.122.100 |
185.51.200.2 |
| شکن حرفهای | 178.22.122.101 |
185.51.200.1 |
این مقادیر را در بخش تنظیمات DNS شبکه وارد کنید. محل دقیق تنظیمات به سیستمعامل، نوع اتصال و مدل دستگاه بستگی دارد.
نکته: تغییر DNS به معنی تضمین دسترسی به تمام پکیجهای pub.dev نیست. پس از اعمال تنظیمات، اتصال را دوباره آزمایش کنید. اگر مشکل ادامه داشت، پیام خطا را بررسی کنید تا مشخص شود آیا مسئله به DNS مربوط است یا به بخش دیگری از ارتباط شبکه.
چگونه از شکن برای pub.dev استفاده کنیم؟
برای استفاده از شکن هنگام توسعه پروژههای Dart و Flutter، لازم نیست از همان ابتدا تنظیمات پروژه را تغییر دهید. ابتدا اتصال شبکه را بررسی کنید و در صورت نیاز DNS دستگاه را تغییر دهید.
مرحله اول: تنظیم DNS دستگاه
ابتدا DNS شکن را مطابق سیستمعامل خود تنظیم کنید. اگر روی رایانه برنامهنویسی میکنید، بهتر است تنظیمات را روی همان رایانهای انجام دهید که ابزارهای Dart و Flutter روی آن اجرا میشوند.
برای راهنمای نصب و تنظیم شکن در سیستمعاملهای مختلف، از صفحات زیر استفاده کنید:
اگر از اینترنت مودم یا روتر استفاده میکنید و میخواهید تنظیمات DNS را در سطح شبکه بررسی کنید، میتوانید راهنمای تحریم شکن برای مودم و روتر را ببینید. برای مودمهای TD-LTE نیز راهنمای تحریم شکن برای مودم TD-LTE در دسترس است.
مرحله دوم: بررسی باز شدن سایت pub.dev
پس از اعمال تنظیمات، آدرس pub.dev را در مرورگر باز کنید. اگر صفحه بارگذاری شد، به مرحله بعد بروید و دریافت پکیجها را از طریق ابزار توسعه آزمایش کنید.
اگر سایت همچنان باز نمیشود، فقط به مرورگر اکتفا نکنید. ممکن است ارتباط DNS برقرار باشد، اما اتصال HTTPS یا دسترسی به سرور مقصد با مشکل مواجه شود. در این حالت، بررسی پیام خطا و آزمایش اتصال به دامنههای موردنیاز میتواند اطلاعات دقیقتری در اختیارتان قرار دهد.
مرحله سوم: اجرای دستور دریافت وابستگیها
ترمینال را در پوشه اصلی پروژه باز کنید؛ همان پوشهای که فایل pubspec.yaml در آن قرار دارد. سپس متناسب با نوع پروژه یکی از دستورهای زیر را اجرا کنید.
برای پروژه Flutter:
flutter pub get
برای پروژه Dart:
dart pub get
اگر دستور با موفقیت اجرا شود، ابزار مربوطه وابستگیهای تعریفشده را دریافت یا بررسی میکند. اگر خطایی نمایش داده شد، متن کامل آن را بخوانید. پیام خطا معمولاً سرنخهایی درباره مشکل اتصال، ناسازگاری نسخهها یا گواهی امنیتی ارائه میدهد.
مرحله چهارم: بررسی نسخهها و وابستگیهای پروژه
اگر سایت باز میشود اما دریافت پکیجها با خطا روبهرو است، احتمال دارد مشکل به تنظیمات یا وابستگیهای پروژه مربوط باشد. فایل pubspec.yaml را بررسی کنید تا نام پکیجها و محدودیت نسخهها بهدرستی تعریف شده باشند.
در پروژههای Flutter میتوانید برای بررسی وضعیت نسخههای وابستگی از دستور زیر نیز استفاده کنید:
flutter pub outdated
این دستور به بررسی نسخههای فعلی و نسخههای جدیدتر قابل استفاده کمک میکند؛ اما برای رفع خطاهای شبکه، بهتنهایی کافی نیست.
رفع خطاهای رایج pub.dev هنگام دریافت پکیجها
خطاهای مربوط به pub.dev همیشه یک علت ندارند. برای انتخاب راهکار درست، باید متن خطا و مرحلهای را که فرایند در آن متوقف شده است بررسی کنید.
| خطا یا نشانه | علت احتمالی | اقدام پیشنهادی |
|---|---|---|
| سایت pub.dev باز نمیشود | مشکل DNS، اتصال اینترنت یا محدودیت دسترسی شبکه | اتصال اینترنت، تنظیمات DNS و دسترسی به دامنه pub.dev را بررسی کنید. |
Failed host lookup |
نام دامنه به آدرس مقصد تبدیل نشده است. | تنظیمات DNS و اتصال شبکه را بررسی کنید و دوباره درخواست را اجرا کنید. |
| خطای TLS یا گواهی امنیتی | مشکل گواهی، ساعت سیستم یا ارتباط HTTPS | تاریخ و ساعت سیستم، گواهیهای معتبر و تنظیمات اتصال امن را بررسی کنید. |
دستور flutter pub get متوقف میشود |
اختلال شبکه یا مشکل در دریافت و حل وابستگیهای پروژه | متن کامل خطا، نام پکیج مشکلدار و خروجی ترمینال را بررسی کنید. |
| خطای ناسازگاری نسخهها | محدودیتهای تعریفشده برای وابستگیها با یکدیگر سازگار نیستند. | نسخههای تعریفشده در pubspec.yaml و گزارش حل وابستگیها را بررسی کنید. |
| فقط یک پکیج دریافت نمیشود | نام اشتباه، نسخه ناموجود یا مشکل مربوط به همان پکیج | نام پکیج، نسخه درخواستی و صفحه آن در pub.dev را بررسی کنید. |
| دانلود در شبکه دیگری موفق است | تفاوت در مسیر اتصال، DNS، پراکسی یا محدودیتهای شبکه | تنظیمات DNS، پراکسی و محدودیتهای دو شبکه را با یکدیگر مقایسه کنید. |
اگر خطای DNS دریافت میکنید
خطاهایی مانند Failed host lookup معمولاً نشان میدهند که ابزار نتوانسته نام میزبان را به مقصد مناسب تبدیل کند. در این شرایط، ابتدا بررسی کنید اینترنت برقرار است و تنظیمات DNS دستگاه بهدرستی اعمال شدهاند.
همچنین میتوانید با ابزارهای سیستمعامل، دامنه pub.dev را آزمایش کنید.
در ویندوز، Command Prompt را باز کنید و دستور زیر را اجرا کنید:
nslookup pub.dev
در لینوکس یا مک نیز میتوانید از دستور زیر استفاده کنید:
nslookup pub.dev
اگر پاسخ DNS دریافت نشد، تنظیمات DNS و ارتباط شبکه را بررسی کنید. اگر پاسخ دریافت شد، این نتیجه فقط نشان میدهد نام دامنه resolve شده است؛ موفقیت اتصال HTTPS یا امکان دریافت پکیجها را بهتنهایی ثابت نمیکند.
اگر خطای TLS یا SSL دریافت میکنید
خطاهای TLS یا SSL با خطاهای معمول DNS یکسان نیستند. DNS نام دامنه را به آدرس مقصد تبدیل میکند، اما TLS برای برقراری ارتباط امن و اعتبارسنجی گواهی سرور استفاده میشود.
اگر با وجود باز شدن سایت، هنگام اجرای flutter pub get خطای گواهی دریافت میکنید، تاریخ و ساعت سیستم، بهروز بودن ابزارهای توسعه و تنظیمات گواهیهای امنیتی را بررسی کنید. در محیطهای سازمانی نیز ممکن است پروکسی یا سامانه بازرسی ترافیک HTTPS بر اتصال تأثیر بگذارد.
برای رفع این خطاها، اعتبارسنجی گواهیهای امنیتی را غیرفعال نکنید و از گزینههای ناامن برای نادیده گرفتن خطای گواهی استفاده نکنید. این کار میتواند امنیت ارتباط و دریافت وابستگیهای پروژه را کاهش دهد.
اگر خطا به ناسازگاری نسخه پکیج مربوط است
گاهی اتصال به pub.dev برقرار است، اما ابزار نمیتواند نسخهای سازگار از وابستگیهای پروژه پیدا کند. این مشکل ممکن است به محدودیت نسخههای تعریفشده در pubspec.yaml یا ناسازگاری میان وابستگیهای مستقیم و غیرمستقیم مربوط باشد.
در چنین شرایطی، تغییر DNS لزوماً کمکی نمیکند. ابتدا پیام خطا را بخوانید و نسخههای موردنیاز پکیجها را بررسی کنید. مستندات رسمی مدیریت وابستگیهای Flutter درباره نحوه حل وابستگیها و مدیریت تعارض نسخهها توضیح میدهد.
تفاوت دسترسی به pub.dev و دریافت وابستگیهای Flutter
ممکن است بتوانید سایت pub.dev را در مرورگر باز کنید، اما دستور flutter pub get همچنان با خطا مواجه شود. این دو فرایند کاملاً یکسان نیستند.
مرورگر برای نمایش صفحات وب درخواست میفرستد؛ در مقابل، ابزارهای Dart و Flutter علاوه بر ارتباط با مخزن، وابستگیهای پروژه را بررسی و دریافت میکنند. در این فرایند ممکن است خطا به یک پکیج مشخص، نسخه درخواستی، گواهی امنیتی یا ارتباط شبکه مربوط باشد.
برای مثال، اگر یک پکیج در فایل pubspec.yaml تعریف شده باشد، ابزار باید نسخهای سازگار با محدودیتهای پروژه پیدا کند. سپس وابستگیهای لازم را دریافت کند. اگر یکی از این مراحل با مشکل مواجه شود، ممکن است کل دستور با خطا پایان یابد.
بنابراین، برای عیبیابی بهتر است این سه مورد را جداگانه بررسی کنید:
-
آیا سایت pub.dev در مرورگر باز میشود؟
-
آیا دستور
dart pub getیاflutter pub getمیتواند وابستگیهای پروژه را دریافت کند؟ -
آیا خطا مربوط به همه پکیجهاست یا فقط یک وابستگی خاص؟
این روش کمک میکند مشکل شبکه را از مشکلات تعریف وابستگیها جدا کنید.
آیا استفاده از DNS شکن برای تمام ابزارهای Flutter کافی است؟
خیر. تغییر DNS فقط یکی از بخشهای احتمالی عیبیابی است و نمیتواند همه مشکلات ابزارهای توسعه را برطرف کند.
برای مثال، ممکن است دریافت پکیجها از pub.dev با موفقیت انجام شود، اما دریافت یک وابستگی دیگر از مخزن جداگانه با خطا مواجه شود. بعضی پروژهها علاوه بر پکیجهای pub.dev، از وابستگیهای Git یا منابع خصوصی نیز استفاده میکنند. در این حالت، هر منبع ممکن است شرایط اتصال و احراز هویت جداگانهای داشته باشد.
همچنین اگر خطا به ناسازگاری نسخه Dart یا Flutter مربوط باشد، باید نسخه ابزارها و محدودیتهای پروژه را بررسی کنید. در صورتی که مشکل از پراکسی، فایروال یا گواهی امنیتی باشد، تغییر DNS بهتنهایی راهکار کامل محسوب نمیشود.
به همین دلیل، پس از تغییر DNS، دستور دریافت وابستگیها را دوباره اجرا کنید و نتیجه را بر اساس متن خطا ارزیابی کنید.
راهنماهای مرتبط برای برنامهنویسان
اگر علاوه بر pub.dev با مخازن دیگری هم کار میکنید، بهتر است راهنمای اختصاصی هر سرویس را بررسی کنید. هر مخزن ساختار و ابزار متفاوتی دارد و راهکار مناسب برای یکی ممکن است برای دیگری کاربرد نداشته باشد.
-
تحریم شکن برای PyPI؛ برای بررسی مشکلات دسترسی به مخزن پکیجهای Python و دریافت وابستگیها با
pip. -
تحریم شکن برای npm؛ برای مشکلات دسترسی به مخزن پکیجهای JavaScript و ابزار npm.
-
تحریم شکن برای GitHub؛ برای بررسی دسترسی به مخزنهای کد و پروژههای میزبانیشده در GitHub.
-
تحریم شکن برای Docker؛ برای بررسی مشکلات دسترسی مرتبط با سرویسها و مخزنهای Docker.
برای راهنمای نصب و تنظیم DNS در دستگاههای مختلف نیز میتوانید به صفحات مربوط به اندروید، گوشی سامسونگ، گوشی شیائومی، گوشی هواوی و آیفون مراجعه کنید. با این حال، برای توسعه پروژههای Dart و Flutter، راهنماهای ویندوز، مک و لینوکس معمولاً ارتباط مستقیمتری با محیط اجرای ابزارهای توسعه دارند.
سؤالات متداول درباره تحریم شکن برای pub.dev
چرا pub.dev در مرورگر باز میشود، اما flutter pub get خطا میدهد؟
باز شدن سایت در مرورگر به معنی موفقیت تمام مراحل دریافت وابستگیها نیست. ابزار Flutter باید وابستگیهای تعریفشده در پروژه را بررسی کند و نسخههای سازگار را دریافت کند. خطا ممکن است به اتصال شبکه، گواهی TLS، نسخه پکیج یا تعارض وابستگیها مربوط باشد. متن کامل خطا را بررسی کنید تا علت دقیقتر مشخص شود.
آیا برای اجرای dart pub get باید DNS پروژه را جداگانه تغییر دهم؟
در حالت معمول، تنظیم DNS در سطح سیستمعامل یا شبکه انجام میشود و لازم نیست برای هر پروژه یک DNS جداگانه تعریف کنید. با این حال، تنظیمات پراکسی، محیط اجرا یا شبکه سازمانی میتوانند بر اتصال ابزارهای توسعه تأثیر بگذارند. اگر فقط یک پروژه با مشکل مواجه است، فایلهای تنظیمات و وابستگیهای همان پروژه را نیز بررسی کنید.
آیا تغییر DNS باعث رفع خطای ناسازگاری نسخه پکیجها میشود؟
خیر، نه لزوماً. اگر ابزار به مخزن دسترسی دارد اما نسخههای تعریفشده در pubspec.yaml با یکدیگر سازگار نیستند، باید محدودیت نسخهها و وابستگیهای پروژه بررسی شوند. تغییر DNS برای خطاهای مربوط به حل وابستگیها راهکار مستقیمی نیست.
چرا دریافت یک پکیج از pub.dev انجام نمیشود، اما بقیه پکیجها نصب میشوند؟
ممکن است نسخه انتخابشده وجود نداشته باشد، نام پکیج یا محدودیت نسخه اشتباه باشد یا وابستگی موردنظر به منبع دیگری نیاز داشته باشد. ابتدا صفحه همان پکیج را در pub.dev بررسی کنید و سپس پیام کامل ابزار را بخوانید. اگر خطا به اتصال مربوط باشد، تنظیمات شبکه و DNS را نیز بررسی کنید.
آیا با تنظیم DNS شکن، تمام وابستگیهای یک پروژه Flutter دریافت میشوند؟
تضمینی برای این موضوع وجود ندارد. DNS شکن ممکن است در برخی مشکلات مربوط به نام دامنه کمک کند، اما وابستگیهای پروژه میتوانند از منابع مختلفی دریافت شوند. خطاهای مربوط به پروکسی، TLS، احراز هویت، فایروال یا ناسازگاری نسخهها نیز به بررسی جداگانه نیاز دارند.
اگر pub.dev روی یک اینترنت باز شود و روی اینترنت دیگر نه، چه کاری انجام دهم؟
در این حالت، تنظیمات و شرایط دو شبکه را مقایسه کنید. DNS، محدودیتهای شبکه، پروکسی و وضعیت اتصال HTTPS میتوانند متفاوت باشند. ابتدا با nslookup pub.dev وضعیت حل نام دامنه را بررسی کنید و سپس سایت و دستور دریافت وابستگیها را دوباره آزمایش کنید.
آیا برای استفاده از pub.dev باید Flutter نصب باشد؟
برای مشاهده و جستوجوی پکیجها در سایت pub.dev نیازی به نصب Flutter ندارید. اما برای اجرای دستورهایی مانند flutter pub get باید ابزار Flutter در محیط توسعه نصب و بهدرستی تنظیم شده باشد. اگر پروژه شما فقط با Dart کار میکند، میتوانید از ابزار Dart و دستور dart pub get استفاده کنید.
جمعبندی
pub.dev مخزن رسمی پکیجهای Dart و Flutter است و دسترسی به آن برای دریافت کتابخانهها و وابستگیهای پروژه اهمیت دارد. اگر هنگام باز کردن این سایت یا اجرای دستورهای dart pub get و flutter pub get با خطا مواجه میشوید، ابتدا وضعیت اینترنت و DNS را بررسی کنید. در صورت نیاز میتوانید DNS شکن را تنظیم و اتصال را دوباره آزمایش کنید.
با این حال، همه خطاهای دریافت پکیج به DNS مربوط نیستند. مشکلات TLS، تنظیمات پراکسی، ناسازگاری نسخهها و اختلال در منابع دیگر نیز ممکن است باعث توقف فرایند شوند. بررسی دقیق متن خطا و اجرای آزمایشهای مرحلهبهمرحله کمک میکند علت مشکل را بهتر تشخیص دهید و راهکار مناسبتری انتخاب کنید.