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

#1 2018-04-08 14:19:57

LinArcX
عضو
ثبت شده: 2015-09-18
ارسال ها: 809

PKGBUILD های ایرانیان در AUR

درود بیکران خدمت دوستان گلم.
به نظرم هنوز که هنوزه بحث ساخت بسته بین کاربران آرچ لینوکس و در نگاه کلی تر بین گنو/لینوکسی ها بخوبی جا نیفتاده. مشاهده میشه که هنوز افرادی بسته ها رو دستی دانلود و میک میکنن و فایل های desktop. و تصاویر و .. رو تو دایرکتوری های استاندارد کپی میکنن و کارهایی از این قبیل. این کار علاوه بر اینکه مستعد خطاست ما رو از مزیت هایی که مدیربسته ها برامون فراهم میکنند محروم میکنه. در واقع مدیر بسته ها اومدن که این فرآیند رو اتوماتیک کنن و بهش نظمی ببخشن.
چه خوبه حتی اگر اسکریپت های کوچیکی رو می نویسیم، به صورت یه پکیج درش بیاریم و اونو توی مخازن توزیع مون قرار بدیم(در آرچ=AUR). این کار چند مزیت بزرگ داره:
۱. حذف و نصب و به روزرسانی بسته ها خیلی ساده تر صورت میگیره و دیگه لازم نیست نگران باشید آیا بسته من میک شد(؟)/ لایسنس فایل ها رو تو مکان مناسب شون ریختم(؟) یا دغدغه هایی از این جنس.
2. این یه عمل جهانی محسوب میشه. aur در دسترس هزاران نفر قرار داره. پس خیلی خوبه یه کاری کنیم که هم خودمون در نصب بسته ها راحت باشیم هم جماعت بزرگی رو به این هدف برسونیم.
3. بعد از مدتی این کار ملکه ذهن تون میشه و خود به خود به ایجاد یه سیستم شفاف/تمیز کمک میکنید. فایل های پراکنده ای در سیستم تون وجود نخواهند داشت. و "تقریبا" همه چیز در کنترل شماست.
تو این تاپیک هدفم اینه که pkgbuild هایی رو برای بسته های که موردعلاقه مون هست و هنوز در aur منتشر نشدن بسازیم و کارمونو نه تنها به ایران، که به دنیا عرضه کنیم. smile

آخرین ویرایش توسط LinArcX (2018-07-18 01:21:23)

آفلاین

#2 2018-04-08 14:23:33

LinArcX
عضو
ثبت شده: 2015-09-18
ارسال ها: 809

پاسخ: PKGBUILD های ایرانیان در AUR

خوب اولین pkgbuild ای که امروز ساختم رو معرفی میکنم خدمت تون.
terrariumapp یه نرم افزاره که بهتون اجازه میده با qml به صورت لایو کار کنید و نتایج رو به صورت بصری ببینید. واسه کسانی که میخوان qt quick کار کنن و دنبال یه ابزار prototyping میگردن خیلی خوبه. بعدش میتونید وارد qt creator بشید و پروژه های واقعی رو باهاش استارت بزنید.لینک گیت هاب پروژه شون رو اگه نگاه کنید هنوز بسته ای رو واسه آرچ نساختن. پس آستین ها رو زدم بالا و این کارو کردم.
آدرس AUR بسته:
https://aur.archlinux.org/packages/terrarium-git/

آخرین ویرایش توسط LinArcX (2018-07-18 01:21:53)

آفلاین

#3 2018-06-22 22:10:37

LinArcX
عضو
ثبت شده: 2015-09-18
ارسال ها: 809

پاسخ: PKGBUILD های ایرانیان در AUR

فایل منیجر سیستم من نمو هست. با اینکه گهگاهی کرش میکنه و بسته میشه اما به لحاظ امکانات، خیلی بهتر از هم ردیفان گرافیکی خودشه. برای اینکه فایل ها رو داخل خود نمو، زیپ/آنزیپ کنم قبلا از nemo-fileroller استفاده میکردم که  خوب خیلی زشت و البته ساده بود. تا اینکه سوییچ کردم به peazip . ولی مشکلی که وجود داشت این بود که این آرشیو-منیجر هیچ درکی از نمو نداره و خبری از عملیات مربوط به زیپ/آنزیپ کردن با کمک این نرم افزار در نمو نیست. از طرفی نمو یه قابلیتی داره به نام اکشن که میشه به منوی کلیک راستش، آیتم هایی رو اضافه کرد. با درکِ این قابلیت، یه ایشو زدم تو ریپوی مربوط به اکستنشن های نمو و درخواست کردم یکی این کارو انجام بده. یه بنده خدایی گفت من قبلا همچین کاری کردم. منم فرصت رو غنیمت شمردم و برای اینکه دستی کپی پیست نکنم چیزی تو سیستم، اومدم یه PKGBUILD براش نوشتم:
https://aur.archlinux.org/packages/nemo-peazip/

آخرین ویرایش توسط LinArcX (2018-06-22 22:15:57)

آفلاین

#4 2018-07-09 22:28:31

LinArcX
عضو
ثبت شده: 2015-09-18
ارسال ها: 809

پاسخ: PKGBUILD های ایرانیان در AUR

اکستنشنی برای پرش به میزکار در پنل گنوم:
https://aur.archlinux.org/packages/gnom … op-button/

آخرین ویرایش توسط LinArcX (2018-08-24 12:08:43)

آفلاین

#5 2018-07-14 01:27:25

LinArcX
عضو
ثبت شده: 2015-09-18
ارسال ها: 809

پاسخ: PKGBUILD های ایرانیان در AUR

وقتی بحث استفاده از orm تو برنامه نویسی پیش میاد بسته به اینکه از جه زبونی استفاده بکنید تکنیک ها و ابزار ها با هم فرق میکنن. qx orm این نیاز رو در زبان c++ و فریمورک کیوت به نحو خوبی برطرف میکنه. با جنریتور عالی ترش، کارهاتون سریع تر هم پیش خواهد رفت:
https://aur.archlinux.org/packages/qx-entity-editor/

آخرین ویرایش توسط LinArcX (2018-07-14 01:51:50)

آفلاین

#6 2018-07-18 00:11:10

LinArcX
عضو
ثبت شده: 2015-09-18
ارسال ها: 809

پاسخ: PKGBUILD های ایرانیان در AUR

این پست رو میخوام یکم برگردم عقب تر و تمام موارد رو برای ساخت یه PKGBUILD برای برنامه سلام دنیایی که به زبان c++ نوشته شده توضیح بدم.
اول برید تو یه دایرکتوری دلخواه رو سیستم تون و یه فایل با نام PKGBUILD بسازید .(بدون هیچ پسوند و پیشوندی و به همین شکل)
محتویات زیر رو داخلش کپی کنید:

# Maintainer: LinArcx <linarcx@gmail.com>

pkgname='hello-wolrd-c++-PKGBUILD'
pkgver=0
pkgrel=1
pkgdesc="Hello World C++ PKGBUILD"
arch=('any')
url="https://github.com/LinArcX/"
license=('GPL-3.0')

source=("./sources.tar.gz")
sha256sums=('SKIP')

build() {
  cd "${srcdir}"
  make # g++ -o helloworldcpp HelloWorld.cpp  # or make HelloWorld :)
}

package() {
  cd "${srcdir}"
  install -Dm644 ./hello-world-cpp-pkgbuild ${pkgdir}/usr/bin/hello-world-cpp-pkgbuild # what is install? see: man install
  chmod +x ${pkgdir}/usr/bin/hello-world-cpp-pkgbuild
}

خوب تا خط لایسنس فک نمیکنم نیاز به توضیح باشه. اسم بسته و معماری و ورژن و .. رو ست کردیم براش. برای اطلاعات جزیی تر در مورد هر کدوم از اون مواردبرید اینجا.
خطی که عنصر سورس داره مقداردهی میشه مهمه. ما اینجا یه آدرس لوکال تو کامپیوتر خودمون رو بهش دادیم . (نقطه ای که در ابتدای آدرسه یعنی مسیر جاری یا همون مقدار متغیر محیطی PWD$). در دنیای واقعی این آدرس به مخازن گیت هاب، گیت لب، سرور سایت ها و ... رو اشاره میکنه.
برای سادگی کار گفتم sha256 نمیخوام.(اگه هدف تون اینه بسته بره رو aur حتما این عنصر رو مقدار دهی کنید.)
فانکشن build() هم خیلی مهمه و باید خوب درک بشه. اگه بسته تون قراره یه سری سورس رو کامپایل کنه حتما باید این فانشکن رو داخل pkgbuild تون بذارید.  زبان های کامپایلری مثل سی، سی پلاس پلاس و .. در این دسته جا میگیرن.
خط اول این فانکشن گفتم به دایرکتوری srcdir سوییچ کن. اون $srcdir یه متغیر هست مخصوص خود makpkg که تو فرآیند نصب تون میتونید ازش استفاده کنید.
در واقع هر زمان شما تو ترمینال فرمان make  رو صادر میکنید مشاهده میکنید که براتون دوتا دایرکتوری ساخته میشه. src , pkg.
src تمام سورس فایل های شما رو شامل میشه که بالاتر تو عنصر سورس بهش گفتید بره از کجا بیارتشون و pkg هم ساختار درختی ای هست که فایل های نهایی بعد نصب رو سیستم تون به همون شکل کپی میشن. پس $srcdir و $pkgdir رو خوب به خاطر بسپارید و تفاوت شون رو متوجه بشید.
چون دارم برنامه سی پلاس پلاس رو پکیج میکنم، باید تمام سورس ها رو کامپایل کنم. ساده ترین راه اینه که با فرمان g++ بیام و دونه دونه تمام سورس ها رو بهش پاس بدم و برام کامپایل/لینک/تولید فایل باینری کنه. این طوری:

g++ -o helloworldcpp HelloWorld.cpp 

خب اینجا یه دونه فایل سورس بیشتر نداریم و کار راحته. ولی اگه هزاران فایل سورس داشته باشیم چی؟ مطمئنا کار سختیه دونه دونه همه رو به این شکل به g++ پاس بدیم. این نیاز باعث شده تو زبان هایی مثل سی و سی پلاس پلاس یه سری ابزار ها به نام بیلدتولز به وجود بیان. make, cmake, qmake,qbs از معروف ترین هاشون هستن. من اینجا از make استفاده کردم.(بسته به اینکه دارین واسه چه نرم افزاری بسته میسازید باید سعی کنید از بیلدتولز متناسب باهاش استفاده کنید. مثلا برنامه های کیوت اکثرا با qmake کار میکنن.) برای اینکه سورس ها رو با میک، بتونم بیلد کنم باید یه فایل Makefile بسازم که پایین تر بهتون توضیح میدم چجوری بسازیدش و کجا بذارینش. فقط تا همین حد بدونید که این دستورِ make میاد تمام سورس ها رو از مسیر جاری میخونه و یه فایل اجرایی به من میده.(که اسم شو تو فایل Makefile گذاشتم hello-world-cpp-pkgbuild )
خوب میرسیم به فانکشن بعدی: pakcage
اینجا جایی هست که کارمون با سورس ها تموم شده و قراره فایل های باینری رو تو فایل سیستمِ استاندارد لینوکس جا بدیم.
install  یه بسته ست که کار اصلی ش کپی کردن فایل هاست. برای اطلاعات بیشتر:

man install

بهش گفتم بیا این خروجی باینری منو که تو مرحله قبل تولید شده بگیرش و بریزش تو مسیر زیر:

${pkgdir}/usr/bin/hello-world-cpp-pkgbuild

&pkgdir رو یادتونه؟ همون دایرکتوری ای هست که هنگام صادر کردن فرمان makepkg بوجود میاد و در نهایت اگه بسته رو با سوییچ U پکمن نصب کنیم این $pkgdir میشه / در سیستم ما. یعنی میشه روت سیستم خودمون.(البته بعد نصب بسته با فلگ U)
و خط آخر هم قابلیت اجرایی بهش دادم. این از PKGBUILD. حالا بریم سورس هامونو برای این فایل آماده کنیم.
تو همون دایرکتوری ای که بودین یه فایل با نام HelloWorld.cpp بسازید و محتویات زیر رو توش قرار بدید:

#include <iostream>
using namespace std;

int main() 
{
    cout << "Hello, World!";
    return 0;
}

خوب از این ساده تر دیگه نداریم؟ مگه نه؟! D:
تو مرحله قبل یادتونه گفتم استفاده از g++ تو PKGBUILD یه کار غیر منطقی حساب میشه.(شدنیه ولی معمولا کسی سورس هاشو اینجوری بیلد نمیکنه) اومدیم و گفتیم یه سری بیلدتولز ها ایجاد شدن تا کار مارو راحت کنن و گفتیم تو این مثال قراره با میک کار کنیم. میک اینجوری کار میکنه که اگه دستورشو صادر کنی تو مسیر جاری دنبال یه فایل به نام Makefile میگرده.(بدون پسوند) و دستورات داخل شو خط به خط اجرا میکنه. پس بیاین این فایلو بسازیم:

hello-world-cpp-pkgbuild: HelloWorld.o
	g++ HelloWorld.o -o hello-world-cpp-pkgbuild

HelloWorld.o: HelloWorld.cpp
	g++ -c HelloWorld.cpp

clean:
	rm *.o

اگه میخواین درباره میک فایل بیشتر بخونید اینجا رو بخونید:
https://www.tutorialspoint.com/makefile/index.htm
یه توضیح کلی بدم فقط. دو خط اول گفتم یه فایل میخوام ازت به نام: hello-world-cpp-pkgbuild که این قراره همون باینری خروجی مون باشه و در ازاش یه فایل بهت پاس میدم.(HelloWorld.o)
تو خط پایینش میگم برو با g++ از روی این آبجکت فایل اون فایل باینری نهایی رو بساز. ولی خود HelloWorld.o چجوری ساخته میشه؟ خط سوم و چهارم دستورات ساخت این فایل رو برامون مهیا میکنن.
خط آخر هم یه دستور کلین ساده هست که البته به کار ما نمیاد فعلا و بیخیالش میشیم.(خواستم ایده بدم بهتون Makefile چیه. دیگه پر و بال دادن بهش با خودتون:))
خوب برای اینکه عنصر سورس مون بتونه Makefile و HelloWorld.cpp رو یه جا در کنار هم داشته باشه میایم و این دو تا رو فشرده میکنیم تو یه فایل و اسم شو میذاریم:sources.tar.gz

tar -czvf source.tar.gz HelloWorld.cpp Makefile 

الان دیگه همه چی آماده ست. ترمینال رو باز کنید و به مسیر جاری سوییچ کنید و دستور زیر رو صادر کنید:

makepkg

اگه به اروری برنخورین باید یه فایل با نام hello-wolrd-c++-PKGBUILD-0-1-any.pkg.tar.xz  و دو تا دایرکتوری به نام های src , pkg ساخت بشن(همونایی که بالاتر بهشون اشاره کردیم و البته تو این مرحله به درد ما نمیخورن دیگه. فقط اون فایلی که به tar.xz منتهی میشه برامون مهمه.)
حالا بسته رو با سوییچ U پکمن نصب کنید:

sudo pacman -U hello-wolrd-c++-PKGBUILD-0-1-any.pkg.tar.xz

و اجراش کنید:

/usr/bin/hello-world-cpp-pkgbuild 

پ.ن.1: میخواید تو aur بسته تونو بذارید؟ اینجا رو بخونید.
پ.ن.2: سورس ها رو گذاشتم تو گیت لب:
https://gitlab.com/LinArcX/hello_wolrd_cpp_pkgbuild
پ.ن.3: و بسته همین آموزش رو تو aur آپلود کردم:
https://aur.archlinux.org/packages/hell … _pkgbuild/

آخرین ویرایش توسط LinArcX (2018-07-18 01:01:33)

آفلاین

#7 2018-08-24 12:07:31

LinArcX
عضو
ثبت شده: 2015-09-18
ارسال ها: 809

پاسخ: PKGBUILD های ایرانیان در AUR

امروز رفتم تو gnome-look و دیدم که تم aqua ترند شده و البته هنوز کسی واسش PKGBUILD ننوشته بود. پس دست به کار شدم smile
لینک گیت هاب:
https://github.com/EliverLara/Aqua
لینک AUR:
https://aur.archlinux.org/packages/aqua-git/
پ.ن: تمرینی مناسب جهت ساخت PKBUILD برای تم ها.

آفلاین

#8 2018-09-05 22:27:21

morealaz
عضو
از : کرمان
ثبت شده: 2016-03-19
ارسال ها: 320

پاسخ: PKGBUILD های ایرانیان در AUR

سلام به سعید عزیز و همه دوستان. منم سعی میکنم در این تاپیک بعضی از بسته هایی که در AUR ساختم رو معرفی کنم.
من بسته های مختلفی برای فونتهای فارسی مورد نیاز کاربران ایرانی دارم که در این تاپیک اونها رو معرفی کردم. ولی در اینجا می خواهم بسته ttf-emojione رو معرفی کنم که برای نصب فونت emojione میتونید از اون استفاده کنید و از اموجی های زیبای اون لذت ببرید. بعد از نصب برای تست اموجی ها میتونید به این صفحه برید و در صورتیکه فونت درست نصب شده اموجی های رنگی رو ببینید. پشتیبانی از اموجی رنگی مدتی هست که به بسته fontconfig و همینجور به GTK اضافه شده است و کاربران دسکتاپهای مبتنی بر GTK مثل گنوم می توانند از اموجی های رنگی در برنامه های مختلف مبتنی بر GTK استفاده کنند.

آخرین ویرایش توسط morealaz (2018-09-05 22:28:13)

آفلاین

پانوشت انجمن

پشتیبانی توسط تیم آرچ لینوکس ایران و نیرو گرفته با FluxBB