نصب اوبونتو. کامپایل و نصب برنامه ها از منبع. من وقت ندارم با این کار کنم، بهتر است دوباره نصب کنم، همه چیز ساده و واضح است

نکته اصلی این است که این دستور به شکل "make install" یا "sudo make install" در توزیع های مدرن قابل استفاده نیست.

اما نویسندگان برنامه ها در دفترچه راهنمای نصب می نویسند که شما باید از این دستور استفاده کنید. بله می نویسند. اما این فقط به این معنی است که آنها نمی‌دانند شما چه توزیعی دارید یا اصلاً توزیع است یا نه، شاید شما به یک فرقه پیوستید و از خواندن LFS سیگار کشیدید و اکنون تصمیم گرفته‌اید که خلقت آنها را برای سیستم chthonic خود جمع‌آوری کنید. و make install یک راه جهانی، هرچند اغلب نادرست، برای انجام این کار است.

انحراف غزلی

همانطور که می دانید برای عملکرد عادی، اکثر نرم افزارها نه تنها باید کامپایل شوند، بلکه باید به درستی روی سیستم نصب شوند. برنامه‌ها انتظار دارند فایل‌های مورد نیاز خود را در مکان‌های خاصی پیدا کنند و این مکان‌ها در اکثر سیستم‌های *nix در زمان کامپایل به صورت سخت کدگذاری می‌شوند. علاوه بر این جنبه، تفاوت اصلی بین فرآیند نصب در linux/freebsd/whatever با ویندوز و MacOS این است که برنامه فقط یک دسته از فایل ها را در یک فهرست جداگانه در Program Files یا /Applications قرار نمی دهد، بلکه " خود را در سراسر گسترش می دهد سیستم فایل. کتابخانه ها به lib، فایل های اجرایی به bin، تنظیمات به غیره، انواع مختلف داده ها به var و غیره می روند. اگر به طور ناگهانی نیاز به آپدیت آن دارید، ابتدا باید همه اینها به نحوی پاک شود، زیرا ... استفاده كردن نسخه جدیدبقایای پرونده های قدیمی می تواند منجر به عواقب کاملاً غیرقابل پیش بینی شود، اغلب خوب نیست. احتمال این اتفاق زیاد نیست، اما آیا شما به آن در سرور تولید نیاز دارید؟

پس چی؟

بنابراین، اگر نصب را مستقیماً از طریق make install انجام داده اید، حذف یا به روز رسانی نرم افزار طبیعی است، به احتمال زیاد شما نمی توانید. علاوه بر این، نصب یک نسخه جدید بر روی نسخه قدیمی به احتمال زیاد انجام خواهد شد تغییرات شما را در تنظیمات بازنویسی می کند. make install دقیقاً همان کاری را انجام می دهد که به او گفته شده است - فایل ها را در مکان های مناسب نصب می کند، بدون توجه به این واقعیت که چیزی از قبل وجود دارد. پس از این فرآیند، کاملاً غیرممکن است که اطلاعاتی در مورد آنچه در کجا و به شکل قابل هضم قرار گرفته است به دست آورید. البته گاهی اوقات، Makefile از عمل حذف پشتیبانی می کند، اما این امر چندان رایج نیست و این واقعیتی نیست که به درستی کار می کند. علاوه بر این، ذخیره درخت منبع بدون بسته بندی و قوانین ساخت برای حذف به نوعی عجیب است.

چگونه مبارزه کنیم؟

از آنجایی که بسته‌ها در توزیع‌ها گاهی اوقات به روز می‌شوند، برای حل این مشکل چیزی به عنوان مثال ارائه کردند مدیر بسته. هنگام استفاده از آن، نصب چیزی شبیه به این است:
  1. یک آرشیو که به روشی خاص تشکیل شده است گرفته می شود
  2. اطلاعاتی در مورد اینکه چه چیزی است، چه نسخه ای است، به چه چیزی بستگی دارد، با چه چیزی در تضاد است، نیاز به اجرای هر اسکریپتی برای نصب/حذف/پیکربندی و غیره از آن استخراج می شود.
  3. مراحل نصب مستقیم در حال انجام است
  4. تمام داده های مربوط به مکان و آنچه که تحویل داده شده است به پایگاه داده مدیر بسته اضافه می شود.

در این حالت، هنگام به روز رسانی، می توانید بدون دردسر چیزهای غیر ضروری را حذف کنید و در عین حال مشاهده کنید که آیا فایل های علامت گذاری شده به عنوان پیکربندی در سیستم تغییر کرده اند یا خیر و بپرسید که اگر محتوای آنها در نسخه جدید متفاوت است، چه کاری انجام دهید. علاوه بر این، مدیر بسته به شما اجازه نمی دهد فایل های یک بسته را هنگام نصب بسته دیگر بازنویسی کنید. به طور کلی می تواند کارهای مفید زیادی انجام دهد.

اگر از روی ناآگاهی/تنبلی، از دستورالعمل ها کپی و پیست کردید، نصب کنید، پس فایل هایی در سیستم ظاهر می شوند که مدیر بسته از آنها اطلاعی ندارد. با تمام آنچه که نشان می دهد، اگر آنچه قبلاً ذکر شد برای شما کافی نیست.

چه باید کرد؟

البته می‌توانید درخت منبع را طوری پیکربندی کنید که همه چیز در جایی در /opt/mycoolapp/ نصب شود، و سپس، در صورت لزوم، آن را به صورت دستی حذف کنید، اما بسیاری از چیزهای ناخوشایند می‌توانند در اینجا ظاهر شوند، با شروع برنامه انتظار دارد که بتواند کتابخانه های شما را بارگیری کند، و لودر هیچ چیزی در مورد دایرکتوری که در آن قرار دارد نمی داند، با این واقعیت تمام می شود که نویسنده برنامه می تواند انتظار داشته باشد که مثلاً اگر یک فایل را مثلاً در $prefix/share قرار دهد. /xsessions/، سپس مدیر نمایش آن را انتخاب می کند. ناگفته نماند مسیرهای pkgconfig و غیره.

بنابراین باید بسته را جمع آوری کنید.

من وقت ندارم با این کار کنم، بهتر است دوباره نصب کنم، همه چیز ساده و واضح است!

آرام باش، آرام باش او به پاهای ما بسته شده است. همه چیز آنقدرها که در نگاه اول به نظر می رسد ترسناک و پیچیده نیست.
چک نصب
این ابزار فوق العاده، هنگامی که به جای make install راه اندازی می شود، چندین سوال می پرسد، پس از آن بسته را ساخته و نصب می کند. همین است، هنگام به‌روزرسانی، با پاک کردن آشغال‌های قدیمی مشکلی نخواهید داشت.
ساخت بسته deb به صورت دستی
اگر تمایلی به اعتماد به چنین اتوماسیونی ندارید (که گاهی اوقات هنوز خراب می شود) یا می خواهید چند تغییر ایجاد کنید، اما هنوز برای مقابله با روند عادی ساخت بسته ها تنبل هستید، می توانید بسته را به صورت دستی مونتاژ کنید. من راهی برای ساخت آن برای سیستم‌های روی آن می‌دهم پایگاه داده دبیان، زیرا من با آنها بیشتر آشنا هستم. از نظر ایدئولوژیک درست نیست، اما خروجی یک بسته کاملاً صحیح بدون استفاده از موجودیت های اضافی است. این کار به صورت زیر انجام می شود.
ابتدا نرم افزار را با پارامترهای --prefix=/usr و --exec-prefix=/usr که از قبل برای configure یا autogen.sh مشخص شده اند مونتاژ می کنیم.
سپس آن را در یک پوشه موقت نصب می کنیم. ما نوشتیم:

Fakeroot را نصب کنید DESTDIR=`pwd`/tempinstall
پس از آن ما کل مجموعه فایل ها را در پوشه تازه ایجاد شده دریافت می کنیم. به هر حال، ما اکنون در یک محیط fakeroot هستیم، یعنی شما می توانید بدون هیچ محدودیتی مالک و حقوق دسترسی فایل ها را تغییر دهید، اما از نظر فیزیکی مالک سیستم باقی خواهید ماند. نرم افزار داخل جلسه fakeroot اطلاعات تغییر یافته را دریافت می کند که به فایل هایی با حقوق صحیح اجازه می دهد تا بایگانی شوند.
در مرحله بعد، یک دایرکتوری DEBIAN در "package root" ایجاد کنید و لیستی از تمام فایل هایی که باید به /etc در DEBIAN/conffiles بروند اضافه کنید:

سی دی موقت mkdir DEBIAN find etc | sed "s/^/\//" > DEBIAN/conffiles
سپس یک فایل DEBIAN/control با محتوای زیر ایجاد می کنیم:

در صورت لزوم، می توانید اسکریپت های preinst، postinst، prerm و postrm را نیز در آنجا ایجاد کنید.

تمام شد، ما dpkg -b tempinstall را انجام می دهیم و خروجی tempinstall.deb است که می توانید از dpkg -i برای نصب، به روز رسانی یا حذف صحیح آن استفاده کنید.

فرآیند "صحیح" ایجاد اولیه بسته کد منبع فراتر از محدوده این یادداشت است و بنابراین توضیح داده نخواهد شد، اما برای اهداف شما معمولاً ضروری نیست.

نتیجه

همانطور که می بینید، در اینجا مطلقاً هیچ چیز پیچیده ای وجود ندارد، اما پیروی از این مراحل شما را از تعداد زیادی از مشکلات در آینده نجات می دهد.

و همچنین سیستم های دیگر باید نصب شوند برنامه های اضافی. در اتاق های عمل سیستم های ویندوزهمه چیز بسیار ساده است، به عنوان یک قاعده، یک نصب کننده setup.exe وجود دارد که به نصب نرم افزار کمک می کند. اما در لینوکس همه چیز کمی متفاوت است. چگونه برنامه ها را روی لینوکس نصب کنیم؟حالا بیایید به این سوال نگاه کنیم.

لینوکس انواع مختلفی از بسته های نصب دارد و هر توزیع قالب بسته خاص خود را دارد. توزیع‌های Fedora، Mandriva، Red Hat و Suse از نصب استاندارد لینوکس RPM توسعه یافته توسط Red Hat استفاده می‌کنند. فایل بسته RPM معمولاً نام دارد program_name-version.rpm.

یکی دیگر از فرمت های بسیار محبوب DEB است. در Debian، Ubuntu، Knoppix و Mepis استفاده می شود. نام دارد program_name-version.deb.

و به آرشیو نزدیک شدیم. معمولاً اینها پسوندهای .tar، .tar.gz، .tgz هستند. آنها باید بسته بندی شوند و سپس نصب/کامپایل شوند.

شما باید مراحل نصب برنامه را به عنوان یک ابرکاربر انجام دهید.

ناوبری سریع

نصب برنامه در دبیان، اوبونتو

ابزارهای زیادی برای کار با بسته های DEB وجود دارد، اما پرکاربردترین آنها apt-get است که در مجموعه استاندارد ابزارها گنجانده شده است. برای نصب اپلیکیشن دستور زیر را وارد کنید:

apt-get install package_name

برای حذف:

apt-get remove package_name

APT یک پایگاه داده محلی از تمام بسته های موجود برای نصب و پیوندهایی به محل دریافت آنها را ذخیره می کند. این پایگاه داده باید هر از چند گاهی با دستور زیر به روز شود:

آپدیت apt-get

برای به‌روزرسانی بسته‌های قدیمی (برنامه‌ها) در رایانه، دستورات زیر را تایپ کنید:

آپدیت apt-get ; آپدیت apt-get

نصب برنامه بر روی فدورا، ردهت

ابزاری مشابه APT yum است. برای دانلود و نصب بسته از مخزن پیکربندی شده، دستور را بنویسید:

yum install package_name

yum remove package_name

پایگاه داده محلی yum ذخیره نشده است، بنابراین نیازی به به روز رسانی نیست. برای نصب آپدیت ها از دستور زیر استفاده کنید:

به روز رسانی yum

مورد خاصی را برای به روز رسانی انتخاب کنید:

yum update package_name

نصب برنامه ها در Mandriva

Mandriva مجموعه ای از ابزارهای خاص خود را برای کار با بسته ها دارد که urpmi نامیده می شود. برای نصب:

urpmi package_name

برای حذف:

urpme package_name

پایگاه داده محلی را با لیست بسته ها به روز کنید:

urpmi. به روز رسانی -a

برای نصب به روز رسانی:

urpmi --انتخاب خودکار

نصب برنامه ها از آرشیو (tarballs)

برای آرشیوهای فشرده شده با استفاده از GZIP (gz، gz2 و غیره) این کار را انجام می دهیم:

نام فایل tar -xvz f

برای آرشیوهای فشرده شده با استفاده از BZIP (bz، bz2، و غیره) کمی متفاوت است:

نام فایل tar -xvjf

دستورات تار:

  • x - استخراج فایل ها از آرشیو.
  • v - نمایش دقیق اطلاعات روی صفحه نمایش؛
  • f – گزینه مورد نیاز. اگر مشخص نشده باشد، Tar سعی می کند از نوار به جای فایل استفاده کند.
  • z – آرشیو پردازش با استفاده از gzip فشرده شده است.
  • j - یک آرشیو فشرده شده با استفاده از bzip را پردازش کنید.

پس از اجرای دستور، پوشه ای با نامی شبیه به نام بسته ایجاد می شود. سپس باید این پوشه ایجاد شده را با دستور باز کنید:

cd folder_name

سپس، در آرشیو بدون بسته بندی، دستورالعمل های موجود در فایل README را در صورت وجود مطالعه کنید. در هر صورت اگر برنامه به صورت کامپایل شده باشد فایل اجرایی، سپس بسته حاوی یک فایل .sh است که معمولا install.sh نامیده می شود

سلام به همه!

این یک یادداشت کوتاه برای مبتدیان لینوکس در مورد این است که این سه دستور فوق العاده به چه معنا هستند و برای چه چیزی مورد نیاز هستند. بیایید همانطور که می گویند از ابتدا شروع کنیم. بیشتر برنامه‌ها باید قبل از استفاده کامپایل شوند، یعنی از متنی که فرد می‌تواند آن را بفهمد، به مجموعه‌ای از یک‌ها و صفرها تبدیل شود که کامپیوتر می‌تواند آن را بفهمد. این فرآیند به سه مرحله تقسیم می شود: پیکربندی، مونتاژ و نصب. جزئیات زیر برش :)

./پیکربندی

این دستور به جستجوی کتابخانه‌ها و فایل‌های هدر لازم برای کامپایل می‌پردازد (این برای برنامه‌هایی است که به طور جزئی یا کامل با C/C++ و زبان‌های مشابه نوشته شده‌اند)، و همچنین تنظیم پارامترهای خاص یا اتصال کتابخانه‌های خاص، در صورتی که ./پیکربندیهر چیزی را که نیاز دارد پیدا خواهد کرد، خلق خواهد کرد فایل های ایجاد شده- فایل مورد نیاز برای ساخت برنامه

می توانید پارامترهای پیکربندی را با استفاده از کلیدها و آرگومان های همین کلیدها پیکربندی کنید، به عنوان مثال:

./configure --prefix=/opt/my_program

با یک کلید --پیشوند= می توانید دایرکتوری را مشخص کنید که بعداً به عنوان پیشوند برنامه شما (یعنی دایرکتوری ریشه) عمل کند. این به این دلیل است که در دنیای لینوکس و نه تنها، سلسله مراتب خاصی از سیستم فایل (HFS) وجود دارد که طبق آن هر برنامه ای باید کامپایل و نصب شود تا بدون خطا کار کند.

سه پیشوند اصلی سیستم فایل وجود دارد که اکثر برنامه ها بر اساس آنها پیکربندی می شوند:

  • / - دایرکتوری ریشه سیستم عامل، به اصطلاح ROOT
  • /usr - دایرکتوری که برنامه های محیط کاربری در آن قرار دارند
  • /usr/local - یک دایرکتوری اضافی برای برنامه های کاربر که به صورت دستی کامپایل شده است، مخصوصا برای سیستم عاملبه زباله دانی تبدیل نشد

اگر هر یک از این دایرکتوری ها را باز کنید، می توانید ساختار بسیار مشابهی را ببینید، حداقل پوشه هایی وجود خواهد داشت: bin، و غیره، شامل، libs، sbin.

اگر بدوید ./پیکربندیبدون کلید، پس از آن پیشوند پیش فرض (دایرکتوری که برنامه کامپایل شده در آن نصب خواهد شد) خواهد بود /usr/local، این را به خاطر بسپارید، اگر نمی توانید برنامه خود را اجرا کنید، ممکن است مسیر آن را نداشته باشید مسیر.

به جز کلید -- پیشونددر پیکربندی، به عنوان یک قاعده، بسیاری از کلیدهای دیگر وجود دارد، اگر اجرا کنید می توانید همه آنها را ببینید:

./configure --help

ساختن

مهم ترین و ساده ترین دستور/برنامه، رویه کامپایل برنامه را از کد منبع راه اندازی می کند. برای کار شما این برنامهاز فایل های خاص استفاده می کند فایل های ایجاد شده، که فرآیند ساخت برنامه را با تمام پارامترهایی که برای پیکربندی تعیین کرده ایم به طور مفصل شرح می دهد. نتیجه یک دستور make موفق یک برنامه کامپایل شده در دایرکتوری فعلی خواهد بود.

را نصب کنید

این دستور مستقیماً برنامه را در دایرکتوری مشخص شده در مرحله پیکربندی نصب می کند؛ پس از اجرای دستور make install، می توانید برنامه تازه نصب شده را اجرا کنید.

پس گفتار

برای اینکه سه دستور را به ترتیب ننویسید، می توانید آنها را در یک خط بنویسید:

./configure && make && install

&& - این عملگر AND است که از زبان C/C++ آمده است، با این حال، از نظر پوسته، به این معنی است که دستور بعدی فقط در صورتی باید اجرا شود که دستور قبلی با موفقیت انجام شده باشد، این بسیار راحت است اگر یکی از مراحل با خطا به پایان می رسد.

در واقع، make install می‌تواند یک ساخت نیز انجام دهد، زیرا وظیفه نصب به تمام کار (یعنی ساخت مستقیم برنامه) بستگی دارد، به این معنی که مرحله make را می‌توان رد کرد و اگر آنها را بنویسید فقط دو دستور می‌توان اجرا کرد. در یک خط:

./پیکربندی && نصب کنید

موفق باشی! و با تشکر برای خواندن!

شرایطی وجود دارد که شما به آخرین نسخه یک برنامه نیاز دارید، اما در مخزن توزیع شما نیست. یا اصلا این برنامه بنا به دلایلی در آنجا اضافه نشده است. چندین گزینه برای دریافت این برنامه وجود دارد، یکی از آنها این است که برنامه را از کد منبع، به طور مستقیم برای توزیع خود بسازید. البته ما در مورد برنامه های متن باز صحبت می کنیم. کد منبع:)

اسمبلی (کامپایل) یک برنامه تبدیل کد منبع آن است که به زبان برنامه نویسی کامپایل شده (مثلا C++) که برای برنامه نویس قابل درک است، به کد باینری (توالی صفر و یک) نوشته شده است که قابل درک است. پردازنده مرکزیکامپیوتر. همه زبان های برنامه نویسی کامپایل نمی شوند. به عنوان مثال، کد در پایتون را می توان بلافاصله اجرا کرد، بدون اینکه آن را به کد باینری ترجمه کند (اگرچه این امکان نیز وجود دارد). برای ساخت یک برنامه، داشتن یک پردازنده نسبتاً قدرتمند و ترجیحاً چند هسته ای توصیه می شود. هرگز برنامه ها را روی لپ تاپ کامپایل نکنید! این تأثیر بسیار منفی بر امید به زندگی آنها خواهد داشت (آنها برای چنین بارهایی طراحی نشده اند، مگر اینکه شما لپ تاپ بازی).

هیچ چیز پیچیده ای در مورد ساخت یک برنامه از کد منبع وجود ندارد. نکته اصلی که باید به خاطر بسپارید یک قانون است: در توزیع بسته، هرگز نباید از روش استفاده کنید را نصب کنید. در غیر این صورت، در آینده با انبوهی از مشکلات مواجه خواهید شد. وقتی متوجه شدید که می خواهید برنامه را حذف کنید (به این ترتیب نصب شده است)، اما مدیر بسته از آن اطلاعی ندارد. و خود برنامه از چند صد فایل پراکنده در دایرکتوری های مختلف تشکیل شده است. ترسناک؟ بنابراین، در توزیع های بسته بندی شده، برنامه باید در واقع در یک بسته مونتاژ شود. سپس می توان آن را بدون مشکل حذف کرد، اگر اتفاقی افتاد. من این را نوشتم زیرا بسیاری از راهنماهایی که در مورد نحوه کامپایل برنامه ها در لینوکس دیده ام دقیقاً توضیح می دهند را نصب کنید. فقط در دو مورد می توانید برنامه ای را که به این روش نصب شده است حذف کنید:

  • اگر هنوز یک آرشیو با کد آن دارید (پس می توانید اجرا کنید را حذف نصب کنید);
  • اگر کد منبع برنامه از آن پشتیبانی کند.
از make install استفاده نکنید!

توجه داشته باشم که همه برنامه ها را نمی توان به یک شکل مونتاژ کرد. بنابراین، همیشه باید دستورالعمل‌های اسمبلی را که با کد منبع در آرشیو موجود است، مطالعه کنید. این اتفاق می افتد که توسعه دهنده یک اسکریپت را در آنجا قرار می دهد که هنگام راه اندازی همه چیز را خودش انجام می دهد (کامپایل و نصب می کند ، اما ما در مورد make install به یاد داریم) یا ممکن است برای مونتاژ مناسب نباشد. ساختن، اما شما به یک سیستم مونتاژ متفاوت نیاز دارید. همچنین، برای ساختن یک برنامه، باید وابستگی های اسمبلی لازم برای آن را نصب کنید (اینها بسته هایی با پیشوند هستند -dev). به منظور جمع آوری سریع یک برنامه در یک بسته به منظور نصب یا حذف آن بدون مشکل، ابزاری به نام وجود دارد. چک نصب. این به شما امکان می دهد یک بسته بومی برای سیستم ایجاد کنید ( debیا دور در دقیقه) که به شما امکان می دهد از مدیر بسته استاندارد برای نصب/حذف آن استفاده کنید

برای ساختن برنامه ها در گنو/لینوکس، شما (بیشتر) از برنامه استفاده می کنید ساختن، که دستورالعمل ها را اجرا می کند Makefile، اما از آنجایی که توزیع های گنو/لینوکس زیادی وجود دارد و همه آنها متفاوت هستند، برای کامپایل برنامه، برای هر توزیع باید مسیرهایی را که کتابخانه ها و فایل های سرصفحه در آن قرار دارند به طور جداگانه مشخص کنید. برنامه نویسان نمی توانند هر توزیع را مطالعه کنند و برای هر کدام به طور جداگانه Makefiles ایجاد کنند. بنابراین، آنها به پیکربندی‌هایی رسیدند که سیستم را «مطالعه» می‌کنند و مطابق با دانش به‌دست‌آمده یک Makefile ایجاد می‌کنند. برای ساخت ما به کامپایلر نیاز داریم: آنها در وابستگی های بسته مشخص شده اند ساخت ضروری، پس کافی است آن را با تمام وابستگی ها نصب کنید. هنوز مورد نیاز است تنظیم خودکارو خودروسازی. اگر برنامه در نوشته شده باشد Qt، سپس معمولاً توسط یک تیم مونتاژ می شود qmake(البته باید نصب شود)، یا با باز کردن فایل پروژه در برخی IDE(معمولا خالق Qt) و مجامع در آن.

ابتدا باید سیستم را آماده کنید. برای انجام این کار، بیایید تنظیم کنیم مجموعه لازمابزار:

اس udo apt install build-essential gcc devscripts git fakeroot automake autoconf

می توانید کد منبع را دریافت کنید راه های مختلف. دانلود از اینترنت (به عنوان مثال، از وب سایت توسعه دهنده)، شبیه سازی یک مخزن با کد منبع، و غیره. در مورد اول، به طور کلی، همه چیز روشن است. در مورد دوم: فرض کنید که برنامه در مخزن git (روشن GitHub، مثلا). می توانیم به این مخزن برویم و آرشیو را با کد از آنجا دانلود کنیم

بنابراین کل مخزن را برای خود کپی کنید (همانطور که توسعه دهندگان انجام می دهند). به عنوان مثال، برنامه را در نظر بگیرید mgba. این یک شبیه ساز است کنسول بازی Nintendo GameBoy. آدرس مخزن بیایید آن را برای خودمان کپی کنیم:

کلون git https://github.com/mgba-emu/mgba.git

در فهرست اصلی خود یک فهرست با کد منبع آن خواهید داشت. در همان صفحه برنامه، دستورالعمل اسمبلی وجود دارد.

با دقت می خوانیم. یک ترمینال را باز کنید و به دایرکتوری با کد منبع بروید:

cd ~/mgba

و ما برنامه را مونتاژ می کنیم:

ساخت mkdir
ساخت سی دی
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ..
ساختن
sudo checkinstall -D

اطلاعاتی از شما خواسته می شود (نام بسته، نسخه، و غیره. توصیه می شود تمام فیلدها را پر کنید). پس از اسمبلی، در دایرکتوری بالا (یعنی در mgba)، یک بسته deb با برنامه ظاهر می شود. اکنون می توانید آن را با دوبار کلیک کردن یا استفاده از دستور نصب کنید sudo dpkg -i packagename.deb. اگر در حین مونتاژ شروع به دریافت پیام های خطا کردید، آنها را با دقت بخوانید. ممکن است برخی از وابستگی های اسمبلی وجود نداشته باشد.

بیایید یک مثال کمی متفاوت بگیریم که از یک پیکربندی استفاده می کند. در این مورد، در دایرکتوری با کد منبع، اسکریپت ها قرار دارند: autogen.sh, پیکربندی کنیدو مانند آن Autogen.shیک اسکریپت تولید می کند پیکربندی کنید، که با آن می توانید قبل از مونتاژ برنامه را پیکربندی کنید (بله، بله، پیکربندی کننده پیکربندی). مثل همیشه، فراموش نکنید که دستورالعمل های مونتاژ یک برنامه خاص را بخوانید. بیایید فرض کنیم که آرشیو حاوی اسکریپت autogen.sh است. بیایید آن را اجرا کنیم:

./autogen.sh

پس از اجرا، فایل پیکربندی باید ظاهر شود. برای اینکه ببینید با چه پارامترهایی می توانید برنامه را بسازید، وارد کنید:

./configure --help

همه گزینه های موجود را مرور کنید. به طور معمول، این می تواند پشتیبانی از پلاگین های مختلف، مونتاژ با یک رابط جایگزین، حتی اسمبلی برای یک معماری پردازنده متفاوت باشد. فرض کنید یک برنامه از یک رابط نوشته شده در آن استفاده می کند GTK+ 2، اما یک جایگزین دارد GTK+ 3. سپس پیکربندی برنامه به شکل زیر خواهد بود:

./configure --with-gtk3

./configure --enable-gtk3

همه چیز با جزئیات در دستورالعمل توضیح داده خواهد شد. مجموعه خاصی از گزینه های استاندارد وجود دارد (پس از وارد کردن ./configure --help، ابتدا نوشته می شوند)، مانند تعیین مسیر نصب:

پیشوند=/usr

پس از اجرای configure و پیکربندی موفقیت آمیز کد، می توانید بیلد را اجرا کنید:

sudo checkinstall

همین. همانطور که می بینید، هیچ چیز پیچیده ای در اینجا وجود ندارد. اگرچه، من پنهان نمی کنم، اتفاق می افتد که توسعه دهنده با دستورالعمل های مونتاژ با کیفیت بالا زحمتی را به خود نداده است. اما این به ندرت اتفاق می افتد. همچنین توجه شما را به موارد زیر جلب می کنم: به ساختن یک برنامه از کد منبع فقط به عنوان آخرین راه حل متوسل شوید. اگر استفاده می کنید اوبونتو LTS، سپس (با استفاده از Google) نگاه کنید تا ببینید آیا برنامه مورد نیاز شما (یا نسخه جدیدتر) در نسخه جدیدتر اوبونتو موجود است یا خیر. یا شاید وجود دارد

ترمینال و دستورات

آیا اغلب با این واقعیت مواجه شده اید که نسخه مورد نیاز یک برنامه کاربردی برای معماری شما به سادگی در توزیع اوبونتو موجود نیست، اما این برنامه در وب سایت توسعه دهندگان به صورت کد منبع در آرشیو tar.gz موجود است. من فکر می کنم بسیاری از مردم آن را می دانند این موقعیت، اما همه به دنبال راه هایی برای حل این مشکل نبودند و به سادگی به دنبال آنالوگ دیگری از برنامه یا نسخه کمی قدیمی تر بودند و به کار خود ادامه دادند.

من بلافاصله می خواهم چند کلمه برای تازه واردان به لینوکس اضافه کنم؛ قبل از انجام هر کاری از این مقاله، ترمینال و دستوراتی که برای کار با آن استفاده می شود را به طور کامل مطالعه کنید، mana یا مواد موجود در نت را بخوانید.

  • برای برنامه های کاربردیما البته به ابزارهای توسعه دهنده نیاز خواهیم داشت، در مورد ما این یک کامپایلر و سایر برنامه های همراه است، شغل اصلیالبته ما توسط برنامه make utility و خط فرمان(ترمینال) مانند آشپزخانه ما خواهد بود که در آن خواهیم بود آماده کردن / مونتاژ / نصببرنامه ما از منبع که در ترمینال لینوکسبه طور پیش فرض در دسترس است، برای راحتی شما می توانید هر برنامه کاربردی تری را که به آن عادت دارید نصب کنید، به عنوان مثال من از Guake استفاده می کنم، در مقایسه با استاندارد، امکانات زیادی وجود دارد، که در آن به راحتی می توان هم کپی و هم کپی کردن را پیکربندی کرد. چسباندن دستورات یا هر متنی با استفاده از CTRL + C، CTRL + V و موارد دیگر، که کار با کنسول را راحت‌تر می‌کند.
  • 1. از کجا شروع کنیم هنگام ساخت برنامه ها از منبع، البته، برنامه را در بایگانی tar.gz یا tar.bz2 دانلود کنیم، در مورد من، برای مثال، برنامه Gimp 2.9.2 است، اگرچه در مورد ما بایگانی با فرمت tar.gz نیست و tar.bz2 فرقی نمی کند، آن را دانلود کنید، سپس روی آرشیو کلیک راست کنید - اینجا استخراج کنید.

این احتمالاً اولین مرحله است، بعد چه کنیم؟ و سپس ترمینال را راه اندازی می کنیم و به پوشه بدون بسته خود با فایل ها می رویم:

سی دی /home/linux/Downloads/gimp-2.9.2/ ls

  • 2. قبل از شروع به آماده سازی سورس ها برای مونتاژ، به شما توصیه می کنم ابتدا فایل INSTALL را باز کرده و با آن آشنا شوید، چیزهای زیادی پیدا خواهید کرد. اطلاعات مفید، V این فایلنحوه نصب برنامه، دستورات لازم برای اجرا و چیزهای بسیار جالب تر را شرح می دهد. حالا من به شما توصیه می کنم نصب کنید بسته اضافیبه نام auto-apt، کارهای معمول زیادی را برای شما انجام می دهد.
sudo apt-get install auto-apt

شما بپرسید که انجام دادن کارهای روزمره برای من به چه معناست؟ پیکربندی منبع برنامه را اجرا کنیدبا پیشوند این بسته، به عنوان مثال به شکل:

Auto-apt -y اجرا ./configure

البته می توانید بدون کمک این بسته پیکربندی را انجام دهید و به سادگی دستور زیر را اجرا کنید:

./پیکربندی

اگر پیکربندی را با پیشوند - auto-apt -y اجرا کنید، پس آماده سازی منابع برای مونتاژدر برگزار خواهد شد حالت خودکاریعنی این دستور می تواند به طور خودکار تمامی فایل ها و کتابخانه های لازم را برای شما دانلود و نصب کند و همه چیز را راضی کند وابستگی هاکه مورد نیاز خواهد بود.

  • 3. وقتی کار واقعیهمه چیز خیلی هموار نیست، شاید در یک مورد همه چیز خوب پیش برود و مرحله آماده سازی سورس کد برای اسمبلیبدون خطا می گذرد، اما در موارد دیگر، و احتمالاً این اکثریت هستند، با انواع مختلفی از خطاها مواجه خواهید شد، به عنوان مثال، بسته به اندازه کافی برای آماده سازی بیشتر کد منبع وجود ندارد. در بیشتر موارد، نام بسته ای که گم شده نوشته می شود.

سعی می کنیم بسته گم شده را با دستور نصب کنیم:

Sudo apt-get install package_name

در صورتی که هنگام اجرای دستور بالا بسته ای شناسایی نشود، ترکیب زیر اغلب به من کمک می کند؛ ما به دنبال بسته هایی می گردیم که در حافظه پنهان گم شده اند:

Apt-cache search pakage_name

  • پس از اجرای این دستور ممکن است یک بسته مناسب پیدا کنید، اغلب اتفاق می افتد که بسته مناسب را پیدا نمی کنید، اما می توانید یک کپی دقیق از بسته را پیدا کنید اما با پیشوند devیعنی یک بسته مانند package_name-devو می توانید از آن برای ارضای وابستگی ها استفاده کنید.
  • 4. پس از تکمیل موفقیت آمیز پیکربندی منابع برای ساخت، توصیه می شود بسته را نصب کنید. چک نصبکه مونتاژ یک بسته برنامه کاربردی را برای توزیع شما آسان تر می کند.
sudo apt-get install checkinstall

بسته را نصب کنید، سپس می توانید دستور را اجرا کنید:

Checkinstall -D

  • صفت -دییک بسته deb، ویژگی ایجاد می کند یک بسته rpm ایجاد می کند که در توزیع های Fedora، RHEL، ASP Linux، ALT Linux، Mandriva، openSUSE استفاده می شود، همچنین یک ویژگی اضافی وجود دارد. که یک بسته مورد استفاده در Slackware ایجاد می کند.

در مورد من، من روی اوبونتو اجرا می کنم و دستور را با آن اجرا می کنم نسبت داده، در مرحله بعد برنامه را در یک بسته فرمت Deb آماده جمع می کنیم، به برخی از داده های شفاف کننده نیاز خواهیم داشت، به عنوان مثال، مانند افزودن توضیحات به بسته، زیرا شما در حال مونتاژ آن هستید و بر این اساس، توضیحات کاملاً تمیز است و از شما خواسته می شود اطلاعات مختصراین اپلیکیشن برای چیست؟ در مورد من، همانطور که بررسی کردم، فیلدهای زیر نیز به طور خودکار پر می شوند:

1 - خلاصه: [ EOF ] 2 - نام: [ gimp ] 3 - نسخه: [ 2.9.2 ] 4 - انتشار: [ 1 ] 5 - مجوز: [ GPL ] 6 - گروه: [ چک نصب ] 7 - معماری: [ i386 ] 8 - مکان منبع: [ gimp-2.9.2 ] 9 - مکان منبع جایگزین: 10 - مورد نیاز: 11 - ارائه می دهد: [ gimp ] 12 - تضادها: 13 - جایگزین ها:

  • همانطور که می بینید، قبل از ساخت، بررسی می شود که آیا پیکربندی با موفقیت انجام شده است، آیا وابستگی های ارضا نشده یا درگیری های دیگر وجود دارد یا خیر؛ اگر همه چیز خوب باشد، بسته بدون مشکل ساخته می شود.

من قبلاً آن را بدون ساختن بسته نصب کردم و دستورات زیر را اجرا کردم:

ساختن را نصب کنید

اگر می خواهید حذف کنید برنامه نصب شده، باید دستور را اجرا کنید:

حذف نصب کنید

دستور بالا به طور خودکار موارد مربوط به برنامه ای را که نصب کرده اید حذف می کند و بر هیچ چیز شخص ثالث تأثیر نمی گذارد، توصیه می شود از طریق دایرکتوری ها اجرا نکنید و آن را از همان دایرکتوری برنامه ای که در آن کار می کردید اجرا کنید، یعنی پیکربندی را آماده کرده اید. ، و غیره.

با وجود اینکه همه چیز بدون خطا پیش رفت، کل فرآیند خیلی طول کشید، حدود 20 دقیقه تا زمانی که Gimp را از روی سورس کد نصب کردم، موفق شدم بروم قهوه درست کنم و همچنین مراحل نصب را تماشا کنم، با توجه به این واقعیت، همه چیز برای مدت طولانی اتفاق می افتد. که تعداد زیادی از آنها وجود دارد پوشه های مختلفپراکنده کردن فایل های منبع برنامه، هر فایل هدف خاص خود را دارد و باید در یک فهرست خاص قرار گیرد، بنابراین پس از اجرای make install، فرآیند نصب هزاران فایل منبع در دایرکتوری های مورد نیاز رخ می دهد.

نصب یک برنامه از منبع اینگونه اتفاق می افتد، بله، همه چیز در نگاه اول به این سادگی نیست، من نگفتم که آسان است، اما اگر تلاش کنید، به خوبی تفکر و راه حل های شما را توسعه می دهد. یک موقعیت خاص، که حتی بسیار خوب است.

این احتمالاً تمام است، اگر در مورد مطالب بالا سؤالی دارید، یا سعی کردید نصب کنید و با خطاهایی مواجه شدید، در نظرات مطالب بپرسید، ما با هم به دنبال راه حل خواهیم بود.