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