سلام
اون یکی یکمی مشکل داشت این یکی بهتر شده
http://negarsoft.persiangig.com/makepkg2.shاینطوری استفاده ش کن
./makepkg2.sh nameofprogramme
زیاد پیچیده که نیست (یعنی سعی کردم که نباشه)
توضیحش!
خب خط اول که نوشته dep= یعنی یک متغیر به نام dep تعریف شده که برابر است با عبارت بعد از مساوی . بعد از مساوی تعدادی دستور بین دو علامت ` قرار داده شده این علامت کاری که می کنه اینکه خروجیه دستور بین دو علانت رو ذخیره می کنه این علامت توی php هم هست که توی php توابع سیستمی رو اجرا می کنه بعد از این علامت dpkg -s قرار داره که برای نمایش توضیحات مربوط به یک بسته به کار می ره علامت $1 به معنیه پارامتر شماره یک هست که به اسکریپت فرستاده می شه (اولین پارامتر نیست اولیش $0 هست که نام اسکریپت رو بر می گردونه)(در واقع $1 با مقدار پارامتر شماره یک عوض (replace )می شه) تا اینجا dpkg -s توضیحات مربوط به پارامتر اول رو بر می گردونه به طور پیش فرض خروجیه dpkg روی صفحه نمایش هست که با | این علامت به عنوان ورودیه نرم افزار بعداز | این علامت فرستاده می شه چون ما در این خط می خواهیم که پیش نیازهای برنامه را در بیاریم باید خروجیه dpkg -s رو بررسی و فیلتر کنیم یکی از ابزار های فیلترینگ ! grep هست grep -i depends خطوطی رو که در اون کلمه ی depends باشه رو برمی گردونه منتها به این صورت که به حروف کوچک و بزرگ حساس نباشه (-i) این خط دوباره توسط علامت | به sed فرستاده می شه در sed علامت : به \n تغییر می کنه \n به معنای کاراکتر انتهای خط هست(در واقع هم انتهای خط هم سرسطر )با این کار اون خطه تبدیل به دو خط می شه این دوخط دوباره وارد grep می شند ولی اینبار grep خطوطی رو که depends نداشته باشند نشون می ده (در واقع در اینجا خطیه که دپنسی ها توش هست رو بر می گردونه) این خطه دوباره وارد sed می شه و ", " به علامت \n تبدیل می شه در واقع هر دپنسی توی یک خط می ره این خطوط وارد tr میشن در tr هلامت پرانتز باز به \n تبدیل می شه (چون ممکنه که بسته ی مورد نیاز به ورژن خاصی از دپنسیها نیاز داشته باشه) وباز هم این خطوط به grep فرستاده می شن و grep اون خطوطی رو که دارای پرانتز بسته هستند رو نشون نمی ده ولی بقیه رو نشون می ده (نکته:خطوط دارای پرانتز باز نداریم!(رک :به مرحله قبل!)) در آخر هم جفت ! علامت ` هست که در واقع محصول نهایی از grep رو در متغیر dep ذخیره می کنه البته با ذخیره شدن خطوط کاراکتر انتهای خط \n به کاراکتر فاصله تبدیل می شه!
یک مدل توضیح دیگه هم اینکه :
برای اینکار ما اول پیشنیازهای یک بسته رو با dpkg -s در مییاریم بعد با dpkg -L فایلهای اون بسته رو ودپنسی هاش رو (توی این اسکریپت دومی هم یک اشکلی که داره اینکه خود بسته رو لیست نمی کنه!(الان فهمیدم!)) در می یاره بعد با tar توی یک فایل فشرده ذخریه می کنه (همه ی فایلهای پیشنیاز و بسته ها)