انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: ساخت بسته‌های deb از source  (دفعات بازدید: 3601 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین یه انقلابی

  • Hero Member
  • *
  • ارسال: 951
  • جنسیت : پسر
    • یه‌انقلابی
ساخت بسته‌های deb از source
« : 24 فروردین 1391، 02:25 ب‌ظ »
با سلام

انگیزه‌ی اینکه برم دنبال ساختن پکیج deb برای نرم‌افزار‌هایی که سورسشون فقط هست، نرم‌افزار انوار بود.
این راهنما دو نوع از نرم‌افزار رو می‌تونه به deb تبدیل کنه:
۱- برنامه‌هایی که با دستورات
./configure
make
sudo make install

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

۲- برنامه‌هایی که با دستور qmake ساخته شده‌اند. اغلب این برنامه‌ها با qt نوشته شده‌اند.

روش اول-بسته‌های نوع اول:
طبق روش معمول نصب اینگونه برنامه‌ها ابتدا دو دستور زیر را اجرا می‌کنیم:
./configuremakeسپس بجای دستور
sudo make installاز دستور
sudo checkinstallاستفاده می‌کنیم. با دستور بالا هم برنامه نصب می‌شود و هم یک پکیج deb در همان پوشه‌ی سورس برنامه ساخته می‌شود.
نکته: مطمئن نیستم اما فکر می‌کنم اگر در دستور آخر از sudo استفاده نکنید، فقط فایل deb ساخته می‌شود ولی برنامه نصب نمی‌شود.

روش اول - بسته‌های نوع دوم:
این بسته‌ها معمولا با دستورات زیر کانفیگ و کامپایل می‌شوند
qmakeOR
qmake-qt4AND
makeدر اینجا برای نصب و ساخت بسته‌ی deb، از دستور سوم در بالا استفاده می‌کنیم یعنی:
sudo checkinstall

روش دوم:
sudo apt-get install build-essential devscripts ubuntu-dev-tools debhelper dh-make diff patch gnupg fakeroot lintianاز پوشه‌ی محتوی سورس برنامه یک فایل tar.gz تهیه می‌کنیم. به عنوان مثال اسم برنامه‌ی ما helloword است:
tar -xvf helloworld-1.0.tar.gzاگر در نام ساخته‌شده - وجود دارد، آن را به _ تغییر نام می‌دهیم و یک orig هم به انتهای نام اضافه می‌کنیم:(این رو خودم هم نمی‌دونم چرا)
cp helloworld-1.0.tar.gz helloworld_1.0.orig.tar.gzحال در ترمینال وارد پوشه‌ی سورس برنامه می‌شویم:
cd helloworld-1.0دستور زیر را اجرا می‌کنیم:(آدرس ایمیل خود را وارد کنید)
dh_make -e your@email.addressدستور بالا یک پوشه به نام debian در داخل پوشه‌ی سورس برنامه می‌سازد.
وارد پوشه debian می‌شویم:
cd debianو دستور بعد را اجرا می‌کنیم:
rm *.ex *.EXفایل‌های changelog'و 'copyright' و 'control را مطابق لینک تغییر می‌دهیم.
فایلی به نام rules را در داخل پوشه‌ی دبیان پیدا کرده و باز می‌کنیم و یکی از دو محتوای زیر را در آن ذخیره می‌کنیم:(تاکید می‌کنم یکی، نه هر دو)
#!/usr/bin/make -f
# Sample debian/rules that uses debhelper.
# This file is public domain software, originally written by Joey Hess.
#
# This version is for packages that are architecture dependent.

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

build: build-stamp
build-stamp:
        dh_testdir

        # Add here commands to compile the package.
        qmake-qt4 -config release
        make

        touch build-stamp

clean:
        dh_testdir
        dh_testroot
        rm -f build-stamp

        # Add here commands to clean up after the build process.
        #$(MAKE) clean
        #$(MAKE) distclean

        dh_clean

install: build
        dh_testdir
        dh_testroot
        dh_prep
        dh_installdirs

        # Add here commands to install the package into debian/<packagename>
        make INSTALL_ROOT=`pwd`/debian/package_name install

# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.

# Build architecture-dependent files here.
binary-arch: build install
        dh_testdir
        dh_testroot
        dh_installchangelogs
        dh_installdocs
        dh_installexamples
        dh_installman
        dh_link
        dh_strip
        dh_compress
        dh_fixperms
        dh_installdeb
        dh_shlibdeps
        dh_gencontrol
        dh_md5sums
        dh_builddeb

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install
OR
#!/usr/bin/make -f

include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/qmake.mk
نکته: برای استفاده از دومی که خیلی هم کم حجم و خوبه :) باید با دستور زیر Common Debian Building System  رو نصب کنید:
sudo aptitude install cdbs
قسمت مشکل:(در صورت لزوم این مرحله را اجرا کنید. اول از این قسمت عبور کنید اگر فایل deb به درستی ساخته نشد، آنوقت به سراغ این قسمت بیایید.
ممکن است برنامه‌ای که شما می خواهید نصب کنید، امکان make install نداشته باشد. برای این منظور خطوط زیر را به فایلی مشابه helloword.pro در پوشه‌ی سورس برنامه اضافه کنید.(helloword اسم برنامه‌ی مثال ما است. شما باید فایل با اسم برنامه‌ی اصلی را جستجو کنید)
TARGET = <application>
target.path = /usr/bin
INSTALLS += target
تذکر: اگر هر کدام از خطوط بالا وجود داشت، آن را تکرار نکنید.
مثالی از محتوای فایل نهایی:
######################################################################
# Automatically generated by qmake (2.01a) Mon Jun 27 15:23:09 2011
######################################################################
QT       += core gui phonon network xml
TARGET = al-anvar
TEMPLATE = app
CONFIG += qt \
          release \
          warn_off
#CONFIG += static
#DEFINES += STATIC
target.path = /usr/bin/
INSTALLS += target


HEADERS += anvar.h tools.h \
    sqlite3.h \
    database.h \
    searchwindow.h \
    dbsearch.h \
    quranwidget.h \
    setting.h \

اگر برنامه، قسمت‌های جداگانه ی دیگر هم داشت که می‌باید نصب شود، خطوط زیر را نیز مانند بالا به فایل اضافه کنید:(نقل قول از منبع اصلی)
نقل‌قول
optional: add supplementary files to the installation

data.path = /usr/share/<application>/data
data.files = data/*
INSTALLS += data

حال دیگر تنظیمات تمام شده‌است.

برای ساخت بسته‌ی deb کافی است یکی از دستورات زیر را بر حسب داشتن یا نداشتن GPG اجرا می‌کنیم:
debuildاگر GPG ندارید:
debuild -uc -usدستور آخر در صورتیکه تنظیمات قسمت مشکل را انجام داده باشید، یک خطا خواهد داد که دستور رفع مشکل را نیز در خود دارد. کافی است تغییرات خود را با همان دستور commit کنید و دوباره دستور آخر را اجرا کنید.(برای تغییرات خود patch بسازید)
منبع : https://wiki.ubuntu.com/PackagingGuide/QtApplication

روش سوم - استفاده از دستور pbuilder
این روش رو هنوز انجام ندادم.

این راهنما به‌مرور با انواع دیگر برنامه کامل خواهد شد.


پ.ن: برای روش اول باید از بهنام گلستانی(BehnamGold) عزیز که کاربر قدیم این انجمن بوده و الان مدیر عزیز انجمن دبیان‌کاران هست تشکر کنم.
پ.ن: برای روش دوم باید از هدایت وطن‌خواه عزیز تشکر کنم که وقتی به مشکل خورده بودم، مشکلم رو حل کرد(هدایت یک فدورا کار است ;D )
هر دوی دوستان بالا خیلی خیلی بران عزیزن و بابت همه‌ی چیزهایی که ازشون یاد گرفتم، ازشون ممنونم  \\:D/
یا علی
« آخرین ویرایش: 24 فروردین 1391، 08:27 ب‌ظ توسط یه انقلابی »
فعلا قصد ندارم اینجا بیام، شاید اصلا نیام.
انجمن‌های آزادتری هم خواهند بود برای آزاد بودن.
یا علی

آفلاین دانیال بهزادی

  • ناظر انجمن
  • *
  • ارسال: 19722
  • جنسیت : پسر
  • Urahara Kiesuke
    • وبلاگ
پاسخ : ساخت بسته‌های deb از source
« پاسخ #1 : 25 فروردین 1391، 02:06 ق‌ظ »
خیلی خوب و کاربردی بود. مرسی
اگه این ارسال بهت کمک کرد، دنبال دکمهٔ تشکر نگرد. به جاش تو هم به جامعهٔ آزادت کمک کن

آفلاین jafarzangeneh

  • Newbie
  • *
  • ارسال: 10
پاسخ : ساخت بسته‌های deb از source
« پاسخ #2 : 20 اردیبهشت 1391، 01:01 ب‌ظ »
سلام آیا امکان ندارد برای این همه کار پیچیده که یک کاربر معمولی را گیج و مایوس از لینوکس می کند نرم افزار کانورتری با رابط گرافیکی نوشت ؟ آیا چنین کاری تا حالا انجام شده ؟

آفلاین AliRezaiMi

  • High Hero Member
  • *
  • ارسال: 1073
  • جنسیت : پسر
پاسخ : ساخت بسته‌های deb از source
« پاسخ #3 : 20 اردیبهشت 1391، 08:28 ب‌ظ »
سلام آیا امکان ندارد برای این همه کار پیچیده که یک کاربر معمولی را گیج و مایوس از لینوکس می کند نرم افزار کانورتری با رابط گرافیکی نوشت ؟ آیا چنین کاری تا حالا انجام شده ؟
بهتره کاربرای جدید خودشون رو به یادگیری این راه‌ها عادت بدن تا پیدا کردن راه‌های آسون // چه بسا بهترین کیفیت کاری رو از خط فرمان میشه گرفت.

آفلاین دانیال بهزادی

  • ناظر انجمن
  • *
  • ارسال: 19722
  • جنسیت : پسر
  • Urahara Kiesuke
    • وبلاگ
پاسخ : ساخت بسته‌های deb از source
« پاسخ #4 : 20 اردیبهشت 1391، 11:43 ب‌ظ »
سلام آیا امکان ندارد برای این همه کار پیچیده که یک کاربر معمولی را گیج و مایوس از لینوکس می کند نرم افزار کانورتری با رابط گرافیکی نوشت ؟ آیا چنین کاری تا حالا انجام شده ؟
با محیط گرافیکی چه‌طوری می‌خوای پیکربندی کنی؟
اگه این ارسال بهت کمک کرد، دنبال دکمهٔ تشکر نگرد. به جاش تو هم به جامعهٔ آزادت کمک کن

آفلاین jafarzangeneh

  • Newbie
  • *
  • ارسال: 10
پاسخ : ساخت بسته‌های deb از source
« پاسخ #5 : 23 اردیبهشت 1391، 05:50 ب‌ظ »
ممنون من فقط سوال پرسیدم نه تخصصی دارم نه ادعایی بله یک کاربر تازه واردم و فقط دوست دارم با اوبونتو کار کنم و اصلاْ نمی دانم پیکربندی چه فرآیندی است و راستش رابخواهید برایم مهم هم نیست چون من فقط یک مصرف کننده ام و راحتی در مصرف برای من وامثال من مهم است فکر نمی کنم پیشرفت یک سیستم عامل به این باشد که همه کاربرانش استاد ترمینال شوند و خودشان را به کارهای غیر ضروری ( برای افراد عادی مثل خودم )عادت دهند به هر حال باید این سیستم عامل زیباحداقل همیشه یک قدم از ویندوز و...جلوتر باشد . الان اکثر کارهای معمولی با کامپیوتر را با اوبونتو انجام می دهم وخیلی خوشحال هم هستم ولی بعضی وقتها یک سری نرم افزار مورد نیاز می بینم و هوس می کنم از آن استفاده کنم ولی با مصیبت ترمینال مواجه می شوم با خودم فکر می کنم چرا باید یک کاربر معمولی این همه محتاج ترمینال و راهنمایی دیگران و ک‍پی و پیست کردن دستورات دیگران در ترمینال باشد ؟باز هم ممنون از محبت شما

آفلاین nixoeen

  • ناظر انجمن
  • *
  • ارسال: 4872
  • جنسیت : پسر
  • masoft قدیم
پاسخ : ساخت بسته‌های deb از source
« پاسخ #6 : 25 اردیبهشت 1391، 11:32 ب‌ظ »
سلام آیا امکان ندارد برای این همه کار پیچیده که یک کاربر معمولی را گیج و مایوس از لینوکس می کند نرم افزار کانورتری با رابط گرافیکی نوشت ؟ آیا چنین کاری تا حالا انجام شده ؟
برای بعضی از اونها انجام شده، برای بعضی هم انجام نشده. در هر صورت ساخت یک بسته DEB کار یک کاربر معمولی و ساده نیست.

آفلاین دانیال بهزادی

  • ناظر انجمن
  • *
  • ارسال: 19722
  • جنسیت : پسر
  • Urahara Kiesuke
    • وبلاگ
پاسخ : ساخت بسته‌های deb از source
« پاسخ #7 : 27 اردیبهشت 1391، 01:27 ق‌ظ »
با خودم فکر می کنم چرا باید یک کاربر معمولی این همه محتاج ترمینال و راهنمایی دیگران و ک‍پی و پیست کردن دستورات دیگران در ترمینال باشد؟

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

آفلاین identi

  • Sr. Member
  • *
  • ارسال: 417
پاسخ : ساخت بسته‌های deb از source
« پاسخ #8 : 27 اردیبهشت 1391، 11:52 ق‌ظ »
حرفت مثل اینه که بگی چرا یه راننده‌ی معمولی باید این همه محتاجپدال و دنده و گاز باشه
البته دنده و کلاچ خیلی وقته منسوخ شده!

آفلاین دانیال بهزادی

  • ناظر انجمن
  • *
  • ارسال: 19722
  • جنسیت : پسر
  • Urahara Kiesuke
    • وبلاگ
پاسخ : ساخت بسته‌های deb از source
« پاسخ #9 : 27 اردیبهشت 1391، 02:57 ب‌ظ »
نمی‌دونم دیگه. من راننده نیستم، گواهی‌نامه هم ندارم و نمی‌دونم چی به چیه! اینا رو هم اسمشون رو شنیده بودم فقط
اگه این ارسال بهت کمک کرد، دنبال دکمهٔ تشکر نگرد. به جاش تو هم به جامعهٔ آزادت کمک کن