اختاپوس خسته

یادداشت‌هایی پیرامون کد، زندگی و دوستان

نصب آسان نرم‌افزار از طریق Qt Creator

روند کلی توسعهٔ نرم‌افزار با استفاده از ساختارهای کیوت خیلی سرراست و ساده هست. با این وجود ممکنه گاهی اوقات بعضی کارهای تکراری کسل‌کننده به‌نظر برسه. همگی می‌دونیم که کسل‌کنندگی بزرگترین دشمن گیک‌ها (و البته گیگتوپوس‌ها) هست. خوشبختانه توسعه‌دهنده‌های کیوت‌کریتور همگی گیک هستند و راه‌حل‌های مؤثری برای این کارها درنظر گرفته شده.

اگر بخوایم یه کتابخانهٔ جدید رو با استفاده از کیوت بنویسیم، مسلماً بعد از یه مدتی دلمون می‌خواد که تست‌ش کنیم. خوب بهترین راه تست کردن یه کتابخونه اینه که اونو روی سیستم نصب کنیم و سوئیت تست رو اجرا کنیم. (البته اگر سوئیت تست براش نوشته باشیم!) روال کلی نصب به این شکله که شما اول دستور make رو اجرا می‌کنید، اگر برنامه درست کامپایل شد و همه‌چیز به‌خوبی پیش رفت، دستور sudo make install رو وارد می‌کنید. با این دستور کتابخونهٔ شما در مسیرهای پیش‌فرض (که qmake به make گفته و make از سیستم یاد گرفته) نصب میشه.

مشکل از جایی شروع میشه که یکی بخواد از متدولوژی TDD برای توسعهٔ نرم‌افزارش استفاده کنه. در این صورت کوچک‌ترین تغییری که توی کدها ایجاد کنه باید تست بشه؛ و برای تست کل کارهای کسل‌کنندهٔ بالا باید تکرار بشه. خوب ما می‌خوایم راهی داشته باشیم که دیگه ترمینال رو باز نکنیم و هی دستورات تکراری توش ننویسیم. توی این پست راه‌حلی رو معرفی می‌کنم که مستقیماً از طریق کریتور و بدون باز کردن ترمینال بتونیم برنامه‌مون رو روی سیستم (با دسترسی روت) نصب کنیم :)

برای این کار از روش Deployment استفاده می‌کنیم. برای این کار از نوار کناری برگهٔ Project رو انتخاب کنید. (و یا کلید Ctrl+5 رو بزنید) از صفحهٔ از قسمت‌کیت‌ها Run رو انتخاب کنید. (بغل‌دست Build) (موتعسفانه کلید میان‌بر نداره) خوب از قسمت Run Settings می‌تونیم بخش Deployment رو ببینیم. این‌جا به‌طور پیش‌فرض یک پیکربندی خالی وجود داره که هیچ دستوری رو اجرا نمی‌کنه و طبیعتاً هیچ کاری هم انجام نمیده:

۱. روی دکمهٔ Rename کلیک می‌کنیم و یه اسم درست و حسابی برای کانفیگ‌مون انتخاب می‌کنیم. مثلاً Local Installation.
۲. از قسمت Add Deploy Step گزینهٔ Custom Process Step رو انتخاب می‌کنیم.
توی جعبهٔ ایجاد شده سه تا پارامتر هست. اولی (Command) دستوری رو که می‌خوایم اجرا بشه مشخص می‌کنه. دومی (Arguments) همون‌طور که از اسمش تابلوئه، آرگومان‌های اون دستور رو مشخص می‌کنه. اما سومی (Working Directory) مکانی رو که می‌خوایم دستورمون توش اجرا بشه رو مشخص می‌کنه. می‌تونیم یه آدرس صریح بهش بدیم، و یا اینکه از متغیرهای تعریف شده استفاده کنیم. متغیرها خیلی بهترن.
۳. خوب دستوری که می‌خوایم اجرا کنیم sudo هست با آرگومان‌های make install اون هم در مسیری که کتابخونه‌مون رو توش build کردیم. مشکلی که داریم اینه که sudo رابط کاربری نیست و پسورد روت رو توی ترمینال (stdin) می‌گیره. خوب ما هم که می‌خواستیم کلاً ترمینال باز نکنیم! پس از رابط‌های سودو که DE مون مهیا می‌کنه استفاده می‌کنیم. دسکتاپ من KDE هست پس به‌جای sudo می‌نویسم kdesuo. اگر محیط کاری شما گنوم هست از gksu استفاده کنید. در آخر یه همچین چیزی میشه:

حالا اگر از منوی Build گزینهٔ Deploy Project رو بزنیم، ازمون پسورد روت پرسیده میشه و کل کتابخونه‌ها (یا برنامه‌مون) توی سیستم نصب میشه:

و

با این حال میشه حد و مرزهای تنبلی رو فراتر هم برد مثلاً من به عنوان یک گیگتوپوس جوان حوصله نمی‌کنم گزینه‌ای رو از بین منوها پیدا کنیم و روش کلیک کنم. برای همین برای Deploy یک کلید میان‌بُر تعیین می‌کنم که با زدن اون کلید کتابخونه‌مو نصب کنم. برای این کار از منوی Tools آخرین آیتم یعنی Options رو انتخاب کنید، از پنجرهٔ باز شده، توی تب کناری، اولین آیتم (یعنی Environment) رو انتخاب کنید، از تب وسط صفحه، برگهٔ Keyboar رو باز کنید. حالا توی قسمت Filter بنویسید Deply که راحت‌تر پیدا کنید. از لیست فیلتر شده آیتم Deploy رو انتخاب کنید و توی قسمت Key Sequence کلید میان‌بری رو که می‌خواید براش انتصاب بشه، بزنید. مثلاً من زدم Ctrl+Shift+D :

خوب این تنظیمات برای نصب کتابخانهٔ نرم‌افزاری روی سیستم‌های مبتنی‌بر لینوکس بود. تقریباً همهٔ برنامه‌هایی که من می‌نویسم چندسکویی هستند بنابراین باید برای ویندوز هم بتونم روال مشابه رو تکرار کنم. برای این کار تمام مراحل قبلی رو با یک کانفیگ جدید به اسم MinGW Install انجام میدم. پارامترها این‌ها خواهند بود:

1
2
3
Command: mingw32-make
Arguments: install INSTALL_ROOT=c:/mingw64/
Working Directory:%{buildDir}

در واقع امکانات توزیع در کریتور برای توزیع نرم‌افزارها با روش‌های بومی پلتفرم‌ها درنظر گرفته شده. ولی چیزی نمی‌تونه باعث بشه که ازش به منظور دیگه‌ای استفاده نکنیم. مثلاً توزیع نرم‌افزار روی سیستم خودمون و یا حتا برای ساخت پکیج‌های نرم‌افزاری بومی به شکلی کاملاً اتوماتیک :) دقت داشته باشید که می‌تونید هر تعداد کانفیگ برای توزیع نرم‌افزارتون داشته باشید. مثلاً میشه با این کانفیگ از روی یک ریلیز خاص سورس، تاربال درست کرد:

من همیشه برنامه‌های متن‌بازم رو پکیج می‌کنم و روی یک رپوزیتوری دبین شخصی (PPA) روی اینترنت می‌ذارم. همین کار رو هم میشه مستقیم از طریق کریتور انجام داد! تعداد مراحلش خیلی بیشتره برای همین توضیح نمیدم. نتیجه‌ش این میشه که مستقیم از روی سور پکیج می‌سازم، اون پکیج رو مستقیم با کلید خصوصی‌م رمز می‌کنم، می‌ذارمش روی لانچپد! و همهٔ این کارها رو تنها با زدن کلید Ctrl+Shift+D انجام میدم :) این‌ها پکیج‌هایی هستند که با این روش ساختم و روی رپوزیتوری SOLAP (Soroush’s own Libraries and Programs) منتشر کردم:

دیدگاه‌ها