علی کنگرانی
علی کنگرانی
خواندن ۳ دقیقه·۳ سال پیش

Installing A package From source

نصب برنامه از کد منبع:

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

۱. دانلود کد منبع (source code) برنامه

۲. دانلود و نصب ابزارای مورد نیاز برای ویرایش و کامپایل کردن کد برنامه. با توجه به توزیعی از لینوکس که استفاده می کنیم و کدی که برنامه با آن نوشته شده، ابزار های مختلفی نیاز هستش. برای مثال نمی تونیم برای کامپایل کردن یک برنامه که با زبان پایتون نوشته شده از کامپایلر gcc که برای زبان برنامه نویسی c هستش، استفاده کنیم.

۳. اگر لازم هستش، یک کاربر جدید برای این برنامه ایجاد می کنیم.

۴. تنظیماتی رو که دوست داریم در کد برنامه اعملا می کنیم. یا به اصطلاح config می کنیم.

۵. کد رو کامپایل می کنیم و نصب رو انجام می دیم.

۶. برنامه رو به عنوان یک سرویس روی سیستم تعریف می کنیم.

۷. با استفاده از نرم افزاری که باهاش سرویس ها رو مدیریت می کنیم‌ (systemd مثلا!) این سرویس رو اجرا می کنیم.

۸. از برنامه استفاده می کنیم.

در این مقاله ما وب سرور Nginx رو از کد منبع نصب می کنیم که بتونیم تمام مراحل بالا رو با هم ببینیم.

۱. بر روی سیستم تست ما که ubuntu 20.04 LTS هستش، ما به پکیج های زیر نیاز داریم که باید نصبشون کنیم.

# apt install build-essential libpcre3-dev zlib1g-dev libssl-dev libatomic-ops-dev libxml2-dev libxslt1-dev libgeoip1 libgeoip-dev libgd-dev google-perftools libgoogle-perftools-dev libperl-dev



۲. کد منبع وب سرور رو از روی سایتش دانلود می کنیم.

# wget -c http://nginx.org/download/nginx-1.15.8.tar.gz



همونطور که می بینید فایلی که دانلود کردیم آرشیو شده. لازمه به شکل زیر از این حالت خارجش کنیم که باهاش کار کنیم.

# tar xf nginx-1.15.8.tar.gz



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

# cd nginx-1.15.8



۳. قبل از اینکه کار های پیکربندی برنامه رو شروع کنیم، یک کاربر برای این برنامه ایجاد می کنیم به نام nginx.

نکته: توجه کنید که این کاربر فقط برای این برنامه ایجاد شده و امکان لاگین نداره.

# sudo useradd -s /sbin/nologin nginx



۴. اینجا بخش حساس قضیس. باید پیکربندی برنامه رو انجام بدیم. اینکه چه ماژول هایی رو لود کنیم و برنامه با چه ویژگی هایی نصب بشه. این بخش به دانش خیلی زیادی نیاز داره که از بحث این مقاله خارجه.

# sudo ./configure --user=nginx --group=nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --with-select_module --with-poll_module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_xslt_module=dynamic --with-http_image_filter_module --with-http_image_filter_module=dynamic --with-http_geoip_module --with-http_geoip_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-http_perl_module --with-http_perl_module=dynamic --with-mail --with-mail=dynamic --with-mail_ssl_module --with-stream --with-stream=dynamic --with-stream_ssl_module --with-stream_realip_module --with-stream_geoip_module --with stream_geoip_module=dynamic --with-stream_ssl_preread_module --with-google_perftools_module --with-cpp_test_module --with-compat --with-pcre --with-pcre-jit --with-zlib-asm=CPU --with-libatomic --with-debug --with-ld-opt=&quot-Wl,-E&quot



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

۵. تو این مرحله باید کد برنامه رو با توجه به پیکربندی که تو مرحله قبل مشخص کردیم کامپایل و نصب کنیم.

# make && sudo make install



در آخر با یه صحنه ای مثل شکل زیر باید برخورد کنید. اگر به خطا خوردید، بررسی کنیم تا حل بشه.

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

# vi /lib/systemd/system/nginx.service



متن زیر رو وارد این فایل می کنیم.

[Unit] Description=The Nginx 1.15.8 service After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/usr/local/nginx/logs/nginx.pid ExecStartPre=/usr/sbin/nginx -t ExecStart=/usr/sbin/nginx ExecReload=/usr/sbin/nginx -s reload ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target



در ادامه Systemctl رو یک بار reload می کنیم که این سرویس جدید رو بشناسه و تغییراتی که ایجاد کردیم اعمال بشه.

# systemctl daemon-reload



۷. برنامه رو با استفاده از Systemctl روشن می کنیم.

# systemctl start nginx


به شکل زیر می تونمی ببینیم که این برنامه ایجاد شده و در حال اجراست.

# systemctl status nginx





linuxinstalling from sourcesource packagesourceinstalling package on linux
شاید از این پست‌ها خوشتان بیاید