با سلامانگیزهی اینکه برم دنبال ساختن پکیج deb برای نرمافزارهایی که سورسشون فقط هست، نرمافزار
انوار بود.
این راهنما دو نوع از نرمافزار رو میتونه به deb تبدیل کنه:
۱- برنامههایی که با دستورات
./configure
make
sudo make install
میشه از سورس نصبشون کرد.
خیلی راحت میشه از این برنامه ها فایل deb تهیه کرد.
۲- برنامههایی که با دستور qmake ساخته شدهاند. اغلب این برنامهها با qt نوشته شدهاند.
روش اول-بستههای نوع اول:طبق روش معمول نصب اینگونه برنامهها ابتدا دو دستور زیر را اجرا میکنیم:
./configure
make
سپس بجای دستور
sudo make install
از دستور
sudo checkinstall
استفاده میکنیم. با دستور بالا هم برنامه نصب میشود و هم یک پکیج deb در همان پوشهی سورس برنامه ساخته میشود.
نکته: مطمئن نیستم اما فکر میکنم اگر در دستور آخر از sudo استفاده نکنید، فقط فایل deb ساخته میشود ولی برنامه نصب نمیشود.
روش اول - بستههای نوع دوم:این بستهها معمولا با دستورات زیر کانفیگ و کامپایل میشوند
qmake
OR
qmake-qt4
AND
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) عزیز که کاربر قدیم این انجمن بوده و الان مدیر عزیز انجمن دبیانکاران هست تشکر کنم.
پ.ن: برای روش دوم باید از هدایت وطنخواه عزیز تشکر کنم که وقتی به مشکل خورده بودم، مشکلم رو حل کرد(هدایت یک فدورا کار است
)
هر دوی دوستان بالا خیلی خیلی بران عزیزن و بابت همهی چیزهایی که ازشون یاد گرفتم، ازشون ممنونم
یا علی