انجمنهای فارسی اوبونتو
کمک و پشتیبانی => راهنماها، نکات و ترفندها => نویسنده: یه انقلابی در 24 فروردین 1391، 02:25 بظ
-
با سلام
انگیزهی اینکه برم دنبال ساختن پکیج deb برای نرمافزارهایی که سورسشون فقط هست، نرمافزار انوار (http://sourceforge.net/projects/al-anvar) بود.
این راهنما دو نوع از نرمافزار رو میتونه به 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 را مطابق لینک (https://wiki.ubuntu.com/PackagingGuide/PackagingOverview) تغییر میدهیم.
فایلی به نام 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/
یا علی
-
خیلی خوب و کاربردی بود. مرسی
-
سلام آیا امکان ندارد برای این همه کار پیچیده که یک کاربر معمولی را گیج و مایوس از لینوکس می کند نرم افزار کانورتری با رابط گرافیکی نوشت ؟ آیا چنین کاری تا حالا انجام شده ؟
-
سلام آیا امکان ندارد برای این همه کار پیچیده که یک کاربر معمولی را گیج و مایوس از لینوکس می کند نرم افزار کانورتری با رابط گرافیکی نوشت ؟ آیا چنین کاری تا حالا انجام شده ؟
بهتره کاربرای جدید خودشون رو به یادگیری این راهها عادت بدن تا پیدا کردن راههای آسون // چه بسا بهترین کیفیت کاری رو از خط فرمان میشه گرفت.
-
سلام آیا امکان ندارد برای این همه کار پیچیده که یک کاربر معمولی را گیج و مایوس از لینوکس می کند نرم افزار کانورتری با رابط گرافیکی نوشت ؟ آیا چنین کاری تا حالا انجام شده ؟
با محیط گرافیکی چهطوری میخوای پیکربندی کنی؟
-
ممنون من فقط سوال پرسیدم نه تخصصی دارم نه ادعایی بله یک کاربر تازه واردم و فقط دوست دارم با اوبونتو کار کنم و اصلاْ نمی دانم پیکربندی چه فرآیندی است و راستش رابخواهید برایم مهم هم نیست چون من فقط یک مصرف کننده ام و راحتی در مصرف برای من وامثال من مهم است فکر نمی کنم پیشرفت یک سیستم عامل به این باشد که همه کاربرانش استاد ترمینال شوند و خودشان را به کارهای غیر ضروری ( برای افراد عادی مثل خودم )عادت دهند به هر حال باید این سیستم عامل زیباحداقل همیشه یک قدم از ویندوز و...جلوتر باشد . الان اکثر کارهای معمولی با کامپیوتر را با اوبونتو انجام می دهم وخیلی خوشحال هم هستم ولی بعضی وقتها یک سری نرم افزار مورد نیاز می بینم و هوس می کنم از آن استفاده کنم ولی با مصیبت ترمینال مواجه می شوم با خودم فکر می کنم چرا باید یک کاربر معمولی این همه محتاج ترمینال و راهنمایی دیگران و کپی و پیست کردن دستورات دیگران در ترمینال باشد ؟باز هم ممنون از محبت شما
-
سلام آیا امکان ندارد برای این همه کار پیچیده که یک کاربر معمولی را گیج و مایوس از لینوکس می کند نرم افزار کانورتری با رابط گرافیکی نوشت ؟ آیا چنین کاری تا حالا انجام شده ؟
برای بعضی از اونها انجام شده، برای بعضی هم انجام نشده. در هر صورت ساخت یک بسته DEB کار یک کاربر معمولی و ساده نیست.
-
با خودم فکر می کنم چرا باید یک کاربر معمولی این همه محتاج ترمینال و راهنمایی دیگران و کپی و پیست کردن دستورات دیگران در ترمینال باشد؟
قانون ۱ ترمینال: کدهای دیگران رو تا به صورت کامل متوجه نشدی کپی و پیست نکن
حرفت مثل اینه که بگی چرا یه رانندهی معمولی باید این همه محتاجپدال و دنده و گاز باشه
-
حرفت مثل اینه که بگی چرا یه رانندهی معمولی باید این همه محتاجپدال و دنده و گاز باشه
البته دنده و کلاچ خیلی وقته منسوخ شده!
-
نمیدونم دیگه. من راننده نیستم، گواهینامه هم ندارم و نمیدونم چی به چیه! اینا رو هم اسمشون رو شنیده بودم فقط