جادوی دلربا پیکربندی، ساخت و نصب. نصب برنامه ها بر روی لینوکس (.tar، .gz، .bz، RPM و DEB) نرم افزار مورد نیاز

اغلب بسته‌های لازم را فقط می‌توان به صورت منبع یافت؛ این مقاله روشی را برای نصب بسته از روی کد منبع توضیح می‌دهد.

جعبه گشایی

برنامه ها معمولاً در آرشیوهای بسته بندی شده توزیع می شوند، اینها فایل هایی با پسوند هستند

tar.gz (گاهی اوقات .tgz) .tar.bz2

شما باید تفاوت بین بایگانی کننده و بسته بندی را درک کنید.

این برنامه برای آرشیو فهرست ها و فایل ها استفاده می شود تار; نتیجه کار آن یک فایل با پسوند است تار. به طور کلی، این یک کپی از سیستم فایل است - دایرکتوری ها و فایل ها با ویژگی ها و حقوق دسترسی آنها، در یک فایل قرار داده شده است.

اندازه این فایل کمی بزرگتر از حجم کل فایل هایی است که بایگانی شده اند. بنابراین (یا شاید به دلیل دیگری) از بسته‌کننده‌ها استفاده می‌کنند - برنامه‌هایی که به شما امکان می‌دهند اندازه فایل را بدون از دست دادن داده‌ها کاهش دهید.

برنامه تارمی تواند بسته را باز کند، بنابراین نیازی به تماس نیست گان زیپ، یا می توانید به سادگی برنامه را بگویید تارکه ابتدا فایل باید باز شود. مثلا دستور

tar -xvf< some_app_name>.tar.gz

بلافاصله بسته بندی و از حالت فشرده خارج می شود. تفاوت بین فایل ها و پسوندها

.tar.gz

.tar.bz2

فقط بسته‌کننده‌های مختلف، برنامه مورد استفاده قرار گرفت تارروش فشرده سازی را به صورت خودکار تعیین می کند و گزینه های اضافیدر این مورد لازم نیست

پس از باز کردن بسته بندی، باید به دایرکتوری به دست آمده بروید؛ تمام دستورات توضیح داده شده در زیر در دایرکتوری با کد منبع بسته اجرا می شوند.

سی دی< имя_пакета>*

ساخت پکیج

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

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

بنابراین، برای ساختن چیزی از منبع، ابتدا باید یک پیکربندی بسازید. نحوه ساخت configurator در فایل configure.in توضیح داده شده است. برای ساختن پیکربندی باید اجرا کنید

./ bootstrap ./ autogen.sh

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

aclocal autoheader automake --gnu --add-missing --copy --foreign autoconf -f -Wall

همه این دستورات از فایل استفاده می کنند configure.in. پس از اجرای این دستورات یک فایل ایجاد می شود پیکربندی کنید. پس از این، باید پیکربندی را اجرا کنید تا وجود تمام وابستگی ها را بررسی کنید، همچنین گزینه های ساخت اضافی را نصب کنید (در صورت امکان) و نتیجه نصب را مشاهده کنید (اختیاری - ممکن است وجود نداشته باشد)

./ پیکربندی

پیکربندی کننده یک Makefile را بر اساس دانش به دست آمده و فایل می سازد makefile.am. می‌توانید گزینه‌های ارائه‌شده در منابع برنامه را به پیکربندی منتقل کنید، که به شما امکان می‌دهد برخی از ویژگی‌های برنامه را فعال/غیرفعال کنید؛ معمولاً می‌توانید با دستور در مورد آنها اطلاعات کسب کنید.

./ پیکربندی --help

همچنین مجموعه ای از گزینه های استاندارد وجود دارد، مانند

پیشوند=

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

--پیشوند =/ usr -- پیشوند =/ usr/ محلی

بدونبریده بریده در پایان! حالا با دستور می توانید فرآیند ساخت خود برنامه را شروع کنید

ساختن

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

نصب و راه اندازی

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

نصب صحیح (گزینه شماره 1)

نصب با استفاده از ابزار چک نصب. برای نصب:

sudo apt-get install checkinstall

منهای این روش: چک نصبهمه منابع را درک نمی کند، زیرا نویسنده برنامه می تواند اسکریپت های نصب ویژه و چک نصبآنها را درک نخواهد کرد

برای ایجاد و نصب بسته deb باید اجرا کنید

sudo checkinstall

نصب صحیح (گزینه شماره 2)

به سرعت یک بسته deb را به صورت دستی ایجاد کنید.

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

    ما در یک پوشه موقت نصب می کنیم، جایی که کل مجموعه فایل های نصب شده را دریافت می کنیم:

fakeroot را نصب کنید DESTDIR=`pwd`/tempinstall

    بیایید یک دایرکتوری DEBIAN در "ریت بسته" ایجاد کنیم و لیستی از تمام فایل هایی که باید به /etc در DEBIAN/conffiles بروند اضافه کنیم:

سی دی موقت نصب mkdir DEBIAN find etc | sed "s/^/\//" > DEBIAN/ conffiles

    سپس یک فایل DEBIAN/control با محتوای زیر ایجاد می کنیم:

Package: package_name نسخه: 1.2.3 معماری: amd64/i386/armel/all Maintainer: می‌توانید نام خود را وارد کنید، می‌توانید زباله‌ها را وارد کنید، اما اگر آن را خالی بگذارید، dpkg قسم می‌خورد بستگی دارد: در اینجا می‌توانید لیست بسته‌ها را وارد کنید با کاما از هم جدا می شوند. اولویت: اختیاری توضیحات: شما همچنین باید چیزی را وارد کنید تا هیچ اخطاری وجود نداشته باشد

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

    ما یک بسته deb ایجاد می کنیم که برای آن اجرا می کنیم:

dpkg -b نصب موقت

    خروجی tempinstall.deb است که ما آن را نصب می کنیم

sudo dpkg -i tempinstall.deb

نصب (گزینه شماره 3)

نصب نادرست

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

برای نصب باید انجام دهید

sudo make install

برای حذف بسته ای که با استفاده از این روش نصب شده است، باید آن را در دایرکتوری اصلی منابع برنامه (جایی که اجرا کردید، make install) اجرا کنید.

sudo make uninstall

خطاها

اغلب در مرحله پیکربندی، پیکربندی گزارش می دهد که یک کتابخانه خاص وجود ندارد. نام کتابخانه ای که گزارش می کند همیشه با نام بسته در اوبونتو مطابقت ندارد. با توجه به تجربه خودم، می توانم به شما توصیه کنم که بسته مورد نیاز را به جز پیشوند lib در Synaptic جستجو کنید. اگر چندین بسته را پیدا کردید که با پیشوند -dev در نام تفاوت داشتند، باید بسته -dev را نصب کنید (معمولاً این همچنین مستلزم یک بسته غیر توسعه دهنده است). همچنین می توانید با استفاده از http://packages.ubuntu.com/ با وارد کردن نام کتابخانه در جستجوی محتویات بسته، جستجو کنید، به طور مشابه، اگر توسعه دهنده و غیر توسعه دهنده را پیدا کردید، به هر دو نیاز دارید. خوب، یا فقط در گوگل جستجو کنید.

ضروری است نرم افزار

بسته‌هایی که در انتهای توضیحات دارای mm هستند، بسته‌هایی برای برنامه‌های ++C هستند. لیستی برای bmpx، اما تقریباً برای هر برنامه GTK2/Gnome مناسب است. بنابراین اگر نمی توانید آن را مونتاژ کنید، به این لیست نگاه کنید و آن را با آنچه نصب کرده اید مقایسه کنید.

گردآوری:زمان اجرا:
ایکسlibx11-devlibx11-6
GlibMMlibglibmm-2.4-devlibglibmm-2.4-1c2a
GTK+libgtk2.0-dev,gtk-doc-toolslibgtk2.0-0
GTKMMlibgtkmm-2.4-devlibgtkmm-2.4-1c2a
گلیدlibglade2-devlibglade2-0
GladeMMlibglademm-2.4-devlibglademm-2.4-1c2a
XMLlibxml2-devlibxml2
XML++libxml++2.6-devlibxml++2.6c2a
DBuslibdbus-1-dev,libdbus-glib-1-devlibdbus-1-2,libdbus-glib-1-2
آلساlibasound2-devlibasound2
HALlibhal-dev,libhal-storage-devlibhal1,libhal-storage1
گامینlibgamin-devlibgamin0
نئونlibneon25-devlibneon25
TagLiblibtagc0-devlibtagc0
راه اندازی - اطلاع رسانیlibstartup-notification0-devlibstartup-notification0
تقویت کنیدlibboost-dev,libboost-filesystem-devlibboost-filesystem1.33.1
MusicBrainzlibmusicbrainz4-devlibmusicbrainz4c2a
GStreamerlibgstreamer0.10-dev,libgstreamer-plugins-base0.10-devlibgstreamer0.10-0,libgstreamer-plugins-base0.10-0

تمایل به آشنایی با توسعه اندروید وجود داشت. من اندروید استودیو را دانلود کردم و آن را باز کردم و پاک کردم. تصمیم گرفتم به دنبال گزینه های دیگر نصب باشم. در حین جستجو، با اوبونتو Make (معروف به Ubuntu Developer Tools Center در گذشته) برخورد کردم و در این یادداشت کوتاه می خواهم در مورد آن به شما بگویم.

مرکز ابزارهای توسعه‌دهنده اوبونتو همراه با اوبونتو 14.10 (Utopic Unicorn) در اخبار منتشر شد، اما به نظر من، توجه گسترده‌ای را به خود جلب نکرد. چندی بعد، این پروژه به نام اوبونتو Make تغییر نام داد، همانطور که تا به امروز نامیده می شود، و به نسخه 0.4 رسیده است. توسعه توسط دیدیه روش، مهندس نرم افزار Canonical انجام شده است. همچنین قابل توجه این واقعیت است که اوبونتو Make در پایتون 3.4 نوشته شده است.

هدف اصلی این پروژه نصب سریع و آسان نیازهای رایج توسعه دهندگان در اوبونتو است. و اگرچه هنوز با "نیازهای عمومی" فاصله زیادی دارد (لیست بسته های موجود برای نصب هنوز کوچک است)، با "سریع و ساده" همه چیز خوب است.

بر این لحظهبا استفاده از اوبونتو می‌توانید نصب کنید:

  • اندروید استودیو
  • کسوف
  • IntelliJ Idea Community Edition
  • PyCharm Community Edition
  • کامپایلر go-lang گوگل
  • IDE توسعه دهنده بازی Stencyl

نصب و راه اندازی

در ubuntu 15.04، ubuntu-make خارج از جعبه در دسترس است، از کاربران نسخه‌های 14.04 و 14.10 خواسته می‌شود که از ppa نصب کنند:

Sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make sudo apt-get update sudo apt-get install ubuntu-make

استفاده

نصب با ubuntu-make فوق العاده ساده است. برای نصب های اندرویداستودیو فقط در ترمینال اجرا شود:

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

آیکون در خط تیره و openjdk (اگر جاوا در سیستم نبود) گنجانده شده است. پس از راه اندازی، "استودیو" sdk را برداشت و به نسخه 1.0.2 به روز کرد. "Hello world" روی تلفن راه اندازی شد و تست عملکرد کامل شد.

Golang به طور مشابه نصب شده است:

برای PyCharm، Eclipse، Idea، یک آرگومان دیگر اضافه خواهد شد:

Umake ide pycharm

برای حذف یک بسته، فقط آرگومان "-r" را به همان خط اضافه کنید:

Umake ide pycharm -r

نظر

کسی خواهد گفت: "خیلی کارها برای انجام دادن وجود دارد. آرشیو را دانلود کنید، آن را باز کنید، نماد را در خط تیره چک کنید و آن را در جاوا بررسی کنید. آیا به ساخت ubuntu نیاز دارید؟ موافقم، ممکن است کارهای زیادی برای انجام دادن وجود نداشته باشد، اما من این بسته را برای خودم مفید یافتم. او در وقت من صرفه جویی کرد و از شر روتین خلاص شد. امیدوارم برای شما هم مفید باشد.

مطالب از گروه کاربران لینوکس Bryansk و www.rm.pp.ru

هر توزیع مشخصات خاص خود را برای مونتاژ هسته دارد و این مقاله به طور خاص بر روی نحوه انجام این کار در Debian Etch متمرکز شده است. همچنین این سؤال را آشکار می کند که چگونه می توان یک پچ خاص را در زمانی که پشتیبانی از عملکرد خاصی یا تجهیزات جدید در سیستم شما مورد نیاز است، روی هسته اعمال کرد. این مقاله در درجه اول برای کاربران آموزش دیده تر در نظر گرفته شده است و هیچ تضمینی وجود ندارد که این روش همانطور که باید کار کند و تمام اقدامات و مسئولیت های توصیف شده بر عهده شما است.

  1. توجه داشته باشید
  2. اعمال وصله ها
  3. پیکربندی هسته
  4. کامپایل کردن هسته
  5. نصب یک کرنل جدید
  6. چالش ها و مسائل
  7. پیوندها

توجه داشته باشید

دو روش مونتاژ هسته توضیح داده خواهد شد. اولین گزینه برای مونتاژ بسته های .deb که می توانند بر روی شما یا سیستم دیگری نصب شوند توضیح داده می شود. روش دوم، روش به اصطلاح «سنتی» است.

روش یک. ساختن هسته در بسته های .deb

نصب پکیج های لازم برای کامپایل کرنل

ابتدا، بیایید لیست های بسته را به روز کنیم:

# apt-get update

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

# apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential

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

به پوشه /usr/src بروید، به www.kernel.org بروید و نسخه هسته مورد نظر را انتخاب کنید. در این صورت نسخه linux-2.6.23.1.tar.bz2 در نظر گرفته می شود. دانلود:

# cd /usr/src # wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.1.tar.bz2

بیایید منابع را باز کنیم و یک پیوند نمادین ایجاد کنیم:

# tar xjf linux-2.6.23.1.tar.bz2 # rm linux (پیوند علامت قبلی را حذف کنید) # ln -s linux-2.6.23.1 linux # cd /usr/src/linux

اعمال وصله ها

این کار را اختیاری یا غیر ضروری انجام ندهید!

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

بنابراین، فرض کنید پچ مورد نیاز را دانلود کرده اید (به عنوان مثال، اجازه دهید آن را patch.bz2 بنامیم) در /usr/src. بیایید پچ دانلود شده را در منابع خود اعمال کنیم (شما هنوز باید در پوشه /usr/src/linux باشید):

# bzip2 -dc /usr/src/patch.bz2 | پچ -p1 --dry-run # bzip2 -dc /usr/src/patch.bz2 | پچ -p1

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

به این ترتیب می توانید وصله ها را در منابع هسته اعمال کنید. به عنوان مثال، برخی از ویژگی ها وجود دارد که فقط در هسته 2.6.23.8 موجود است و کد منبع دارای عملکرد لازم نیست، اما patch-2.6.23.8.bz2 منتشر شد. شما می توانید این پچ را روی منابع هسته 2.6.23 اعمال کنید، اما نه 2.6.23.1 یا 2.6.23.3 و غیره. می توانید در این مورد بیشتر بخوانید:

پیشوندها (پیش وصله ها) - معادل نسخه های آلفا. وصله ها باید روی منابع نسخه کامل قبلی با نسخه 3 رقمی اعمال شوند (برای مثال، پچ 2.6.12-rc4 را می توان برای منابع نسخه 2.6.11 اعمال کرد، اما برای نسخه 2.6.11.10 قابل اعمال نیست.)

یعنی اگر بخواهیم هسته 2.6.23.8 را بسازیم، باید منابع نسخه 2.6.23 (http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23) را دانلود کنیم. .tar.gz) به روش دوم "سنتی" اعمال می شود!

Patch-2.6.23.8.bz2 را روی هسته 2.6.23 اعمال کنید:

# cd /usr/src # wget http://www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.22.8.bz2 # cd /usr/src/linux # bzip2 -dc /usr/ src/patch-2.6.23.8.bz2 | پچ -p1 --dry-run # bzip2 -dc /usr/src/patch-2.6.23.8.bz2 | پچ -p1

پیکربندی هسته

استفاده از یک موجود ایده خوبی است فایل پیکربندیهسته کار و برای هسته جدید. بنابراین، پیکربندی موجود را در /usr/src/linux کپی می کنیم:

# پاک کردن && ساخت mrproper # cp /boot/config-`uname -r` ./.config # make menuconfig

پس از آن منوی پیکربندی هسته گرافیکی بارگیری می شود. مورد «بارگیری فایل پیکربندی جایگزین» را در منوی پیکربندی انتخاب کنید و روی «تأیید» کلیک کنید. سپس (در صورت نیاز) با پیمایش در منو، تغییرات لازم را در پیکربندی هسته اعمال کنید (جزئیات پیکربندی هسته را می‌توانید در www.google.com بیابید). وقتی کار را تمام کردید و روی «خروج» کلیک کردید، سؤال «آیا می‌خواهید پیکربندی هسته جدید خود را ذخیره کنید؟» پرسیده می‌شود، پاسخ مثبت «بله» است.

کامپایل کردن هسته

ساخت هسته فقط با دو دستور انجام می شود:

# make-kpkg clean # fakeroot make-kpkg --initrd --append-to-version=-cybermind kernel_image kernel_headers

بعد از --append-to-version=، می توانید هر نامی را که دوست دارید بنویسید، اما باید با علامت منفی (-) شروع شود و هیچ فاصله ای نداشته باشد.

فرآیند کامپایل و ساخت بسته‌های .deb می‌تواند زمان زیادی طول بکشد. همه چیز به پیکربندی هسته و قابلیت های پردازنده شما بستگی دارد.

حل مشکل با ایجاد initrd.img

اخیراً یک باگ در دبیان ظاهر شده است که در آن پس از نصب بسته‌هایی با هسته‌های مونتاژ شده با استفاده از روش توضیح داده شده در اینجا، فایل /boot/initrd.img مربوطه ایجاد نمی‌شود. برای رفع آن برای یک هسته از قبل نصب شده، باید initrd.img را به صورت دستی ایجاد کنید:

update-initramfs -c -k<полная-версия-ядра>

برای حل مشکل "برای آینده"، همانطور که نشان داده شده است، دومین خط نقل شده در زیر در فایل /etc/kernel/postinst.d/initramfs-tools را نظر دهید:

# kernel-package یک arg اضافی را ارسال می کند. هک کنید تا تحت بسته هسته #[ -z "$2" ] || اجرا نشود خروج 0

نصب یک کرنل جدید

هنگامی که ساخت هسته با موفقیت تکمیل شد، دو بسته .deb در پوشه /usr/src ایجاد می شود:

# cd /usr/src # ls -l

linux-image-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb - خود هسته واقعی و linux-headers-2.6.23.1-cybermind_2.6.23.1-cybermind_2.6.23.1-cybermind3.8.8.1. هسته های مورد نیاز برای ساخت ماژول های دیگر (به عنوان مثال، هنگام ساخت ماژول ها درایورهای nVidia). آنها را نصب کنید:

# dpkg -i linux-image-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb # dpkg -i linux-headers-2.6.23.1-cybermind_2.6.23.1-cybermind_2.6.20.10.10.1.1.

(این بسته ها اکنون می توانند روی سیستم دیگری نصب شوند و دیگر نیازی به ساخت آنها نخواهد بود.)

تمام شد، نصب تمام شد، منوی بوت لودر، نصب دیسک رم و کرنل جدید به طور خودکار انجام می شود. تنها چیزی که باقی می ماند راه اندازی مجدد است:

# راه اندازی مجدد

روش دو روش "سنتی"

ما تمام نکاتی را که در بالا توضیح داده شد، قبل از نقطه "تدوین هسته" انجام می دهیم.

# make all # make modules_install # make install

طبق معمول، بسته به پیکربندی هسته و قابلیت های پردازنده، ساخت ممکن است زمان زیادی طول بکشد.

عیب اصلی این روش این است که اگر اغلب کرنل ها را به روز می کنید، پس از مدتی تعداد زیادی از آنها جمع می شوند و می خواهید هسته های استفاده نشده را حذف کنید. برای آسان‌تر کردن این کار، می‌توانید هسته و سایر فایل‌هایی را که در سیستم نصب شده‌اند با استفاده از دستورات «make modules_install» و «make install» در یک بسته deb (یا بهتر است بگوییم، دو فایل از هسته 2.6.27) شبیه به روش اول، اما ما از این اسکریپت های خود هسته استفاده خواهیم کرد:

# make all # make deb-pkg

دو فایل .deb در دایرکتوری یک سطح بالاتر از دایرکتوری منبع ظاهر می شوند. من هسته را در پوشه /usr/src/linux-2.6.27.10 مونتاژ کردم و فایل ها در پوشه /usr/src/ ظاهر شدند.

# linux-2.6.27.10_2.6.27.10-1_amd64.deb # linux-firmware-image_2.6.27.10-1_all.deb

هسته با دستور نصب می شود

# dpkg -i linux-2.6.27.10_2.6.27.10-1_amd64.deb

هسته های قدیمی را می توان به عنوان مثال از سیناپسی"a حذف کرد

مراحل بعدی

هسته کامپایل و نصب شده است، اما اکنون باید یک دیسک RAM ایجاد کنید (بدون آن، هسته به سادگی بوت نمی شود) و باید بوت لودر GRUB را به روز کنید. برای این کار موارد زیر را انجام دهید:

# depmod 2.6.23.1 # apt-get install yaird

دیسک رم را نصب کنید:

# mkinitrd.yaird -o /boot/initrd.img-2.6.23.1 2.6.23.1

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

# به روز رسانی-گراب

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

# راه اندازی مجدد

چالش ها و مسائل

اگر پس از راه‌اندازی مجدد، هسته جدیدی که انتخاب کرده‌اید بارگذاری نشد، مجدداً راه‌اندازی کنید و هسته قبلی خود را انتخاب کنید و می‌توانید دوباره کل فرآیند را انجام دهید تا یک هسته فعال بسازید. در این مورد، فراموش نکنید که خطوط هسته غیر کار را در /boot/grub/menu.lst حذف کنید.

و همچنین سیستم های دیگر باید نصب شوند برنامه های اضافی. که در سیستم های عاملدر ویندوز همه چیز بسیار ساده است، به طور معمول یک نصب کننده به نام 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 نامیده می شود.

نکته اصلی این است که این دستور به شکل "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 برای نصب، به روز رسانی یا حذف صحیح آن استفاده کنید.

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

نتیجه

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