دلیل باز نشدن برنامه Visual Studio Code یا WhatsDesk در اوبونتو

امروز اومدم با VS Code کار کنم ولی هرچی میزدم برنامه باز نمیشد از دیروز هم whatsdesk اجرا نمیشد! خب این از چالش های Ubuntu هستش و وقتی میخوای اخت بگیری با یک سیستم عامل بهتره همه قلق هاشو یاد بگیری.

مدتی بود VS Code  بهم خطای  “System limit for number of file watchers reached” رو میداد و برطرفش نکردم. تا اینکه امروز کلا Visual Studio Code اجرا نشد نشد و فراموش کردم خطایی که نمایش میداد چی بود! اول فکر میکردم بخاطر فولدر vendor نوتیف میداد اما با سرچ vs code is not runnig ubuntu از اینجا Cannot open Visual Studio Code این نتیجه رسیدم که برای مشاهده لاگ اجرای VS Code از دستور زیر میشه استفاده کرد:

که با اجرای اون به خطای زیر رسیدم:
Error: ENOSPC: System limit for number of file watchers reached, watch '/snap/code'با جستجوی متن خطا “System limit for number of file watchers reached” به صفحه React Native Error: ENOSPC: System limit for number of file watchers reached رسیدم. گویا این خطا ربطی به vs code نداره و بخاطر inotify watch هست. اول بیاین خطا رو درست کنیم بعد بقیه رو توضیح میدم. برای اینکه ببینید تنظیم فعلی سیستمتون برای دنبال کردن فایل ها چقدر هست این دستور رو بزنین:

احتمالا عددی حدود ۸ هزار میده. خب وقتی شروع به نصب برنامه ها مثل whatsdesk (نسخه غیر رسمی whatsapp) یا vscode در اوبونتو میکنین این برنامه نیاز دارن بعضی فایل ها رو دنبال کنن اصطلاحا ترک کنن. اینکار توسط watch انجام میشه و محدودیت هایی براش وجود داره. برای رفع خطا کد زیر رو بزنین

این کد به انتهای فایل /etc/sysctl.conf مقدار fs.inotify.max_user_watches=524288 رو اضافه میکنه.

رفع مشکل باز نشدن برنامه ها در لینوکس اوبونتو

همین! الان برنامه هایی که باز نمیشدن راحت باز میشن!

حالا بریم سراغ اینکه inotify watch چی هست؟
اول از همه باید بدونیم خود inotify چی هست. inotify از ترکیب inode notify تشکیل شده و یک زیر سیستم (subsystem) هسته لینوکسه که تغییرات فایل های سیستم رو مشاهده میکنه و از طریق api اونها رو به برنامه های سطح بالاتر اطلاع میده. watch هم این وسط فایل ها رو برای تغییرات دنبال میکنه و هر تغییری رو ارسال میکنه به inotify.

برطرف کردن خطای Skipping acquire of configured file ‘contrib/binary-i386/Packages’

وقتی میخوایم VirtualBox 6 رو روی Ubuntu 18.04 نصب کنیم، با خطای زیر ممکنه مواجه بشیم:

دلیلشم اینه راهنمایی که از روی اون VirtualBox 6 رو نصب کردیم مناسب cpu ما نبوده و برای رفعش لازمه فایل
sudo nano /etc/apt/sources.list.d/virtualbox.list
رو ویرایش کنیم، داخل این فایل دنبال خطر زیر گردین:
deb https://download.virtualbox.org/virtualbox/debian bionic contrib
و اونو تغییر بدین به:
deb [arch=amd64] https://download.virtualbox.org/virtualbox/debian bionic contrib
که در اصل فقط اولش یه [arch=amd64]  اضافه کردیم.

من این راهنما رو از اینجا پیدا کردم و در اینجا یک بش اسکریپت برای نصب و راه اندازی راحت VirtualBox 6 وجود داره که میتونین استفاده کنین.

خطای file_put_contents storage\framework/sessions failed to open stream: No such file or directory

این خطا وقتی برای من رخ داد که از اوبونتو به ویندوز مهاجرت کردم. فولدر های اصلی پروژم رو دراپباکس بود بقیه رو با کومپوزر نصب کردم. فولدر های (tests vendor storage bootstrap) رو کپی نکرم. تصور بر این بود که توسط composer نصب بشن. تا یه حدی هم نصب شدن و من دائم خطای خطای file_put_contents storage\framework/sessions failed to open stream: No such file or directory رو میگرفتم. با جستجو هایی که انجام دادم اکثرا نوشته بودن با clear cache کارت درست میشه ولی مشکل من حل نشد. بعد کلی کلنجار رفتن دستور زیر رو تایپ کردم (در ویندوز)

 

این دستور همه دستورات مربوط به پاک کردن کش رو میاره که میشه این:

 

تک به تک همه کش ها رو پاک کردم تا رسیدم به آخری که خطای laravel RuntimeException : View path not found مواجه شدم و با یه جستجوی ساده و سریع به جواب درست رسیدم.

فولدر storage باید زیر مجموعه های app framework و logs رو داشته باشه که برای من فقط logs وجود داشت. چون فولدر storage فقط اطلاعات کش رو ذخیره میکنه و فایل خاصی توش نیست یه لاراول جدید تعریف کردم و فولدر های اونو کپی کردم اینجا و مشکل حل شد.

تو جستجو ها به یه حقه(تریک) باحال برخوردم که کار پاک کردن کش ها رو راحت میکنه. تو رَوت وبتون اینو اضافه کنین: