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

#1 2016-06-25 21:43:58

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

کمک در ساختن pkgbuild کانکی کاربران آرچ ایران

دوستان من میخوام واسه کانکی کاربران آرچ ایران یه pkgbuild بنویسم.پس از خوندن صفحات مربوطه در آرچ، دست پخت من این شده:

# Maintainer: LinArcX <LinArcX@gmail.com>

pkgname=IAUC
pkgver=3
pkgrel=1
pkgdesc="Collection Of Conkies On Your Desktop!"
arch=('any')
url="https://github.com/LinArcX/I.AUC"
license=('MIT')
depends=('fribidi','conky-manager','conky-lua','redis')
source=("https://github.com/LinArcX/I.AUC.git")
md5sums=('')

package() {
  cd "$pkgname-$pkgver"

  make PREFIX=~/.conky DESTDIR="$pkgdir" install
}

که البته نمیدونم چقدش درسته. sad
سه تا سوال اساسی دارم.
سوال اول:تو snapshot های aur که گشت و گذار میکردم تا ایده بگیرم واسه نوشتن پکیج بیلد، هر چی به چشمم میخورد تو آرایه سورس شون آدرس یه فایل زیپ شده رو داده بودن(tar.gz)در حالی که سورس من صرفا یه آدرس گیت هابه که نمیدونم چجوری باید زیپش کنم بذارم تو گیت.اصلا لازمه سورس حتما زیپ شده باشه؟
سوال دوم:اون آرایه Integrity رو چجوری پر کنم.منظورم اینه الان md5sums مربوط به https://github.com/LinArcX/I.AUC.git چی میشه؟
سوال سوم:من میخوام بسته م تو مسیر .conky/~ کاربر نصب بشه.اینو چجوری تو متد package بگنجونم؟آیا کاری که من کردم و یه پریفیکس تعریف کردم درسته؟

آخرین ویرایش توسط LinArcX (2016-06-25 21:49:46)


"Enough!!!Don't Use "DEFAULTS" Any More..."make it simple stupid

آفلاین

#2 2016-06-25 22:28:35

robo
عضو
ثبت شده: 2016-06-19
ارسال ها: 13

پاسخ: کمک در ساختن pkgbuild کانکی کاربران آرچ ایران

برای تست فایل PKGBUILD
می زنی

 makepkg PKGBUILD

اما این کد مسلما خطا می ده چرا ؟
چون MD5 فایل سورس توش نیست خب باید چه کار کرد ؟
بار اول به این شکل می زنیم

 makepkg -g PKGBUILD >> PKGBUILD

یه خطی مثل این اضاف می شه به آخر فایل PKGBUILD

 md5sums=('13575c05adfdec3e96408776067f41eb')

حالا اگر

 makepkg PKGBUILD

بزنی و ساختار فایلت هم درست باشه شروع می کنه با ساختن بسته

به هیچ وجه هم لازم نیست سورس یه فایل فشرده باشه
سورس می تونه اینطورم باشه

 source=("git+https://github.com/hanwen/go-mtpfs.git")

توصیه می کنم این PKGBUILD رو به عنوان نمونه نگاهی بندازید

 # Contributor: Whitney Marshall <whitney.marshall@gmail.com>
# Maintainer: McNoggins <Gagnon88 (at) gmail (dot) com>

pkgname=go-mtpfs-git
pkgver=20150917
pkgrel=1
pkgdesc="Simple tool for viewing MTP devices as FUSE filesystems"
arch=('x86_64' 'i686')
url="http://github.com/hanwen/go-mtpfs"
license=('BSD')
depends=('libusb' 'fuse')
makedepends=('go>=1.3.0' 'git')
options=('!strip' '!emptydirs')
source=("git+https://github.com/hanwen/go-mtpfs.git")
md5sums=("SKIP")
_gourl=github.com/hanwen/go-mtpfs

pkgver() {
  # Use date of latest commit for pkgver
  cd "$srcdir/go-mtpfs"
  git log -1 --format="%cd" --date=short | sed 's|-||g'
}

build() {
  cd "$srcdir"
  # Build using go
  GOPATH="$srcdir" go get -v -x ${_gourl}
}

package() {

  # Package license (if available)
  for f in LICENSE COPYING; do
    if [ -e "$srcdir/src/$_gourl/$f" ]; then
      install -Dm644 "$srcdir/src/$_gourl/$f" "$pkgdir/usr/share/licenses/$pkgname/$f"
    fi
  done
  
  # Package executables
  if [ -e "$srcdir/bin/go-mtpfs" ]; then
    install -Dm755 "$srcdir/bin/go-mtpfs" \
      "$pkgdir/usr/bin/go-mtpfs"
  fi
}

آخرین ویرایش توسط robo (2016-06-25 22:34:26)


گر چه متن باز بودن خوب است ولی این دلیلی بر بد بودن متن بسته ها نیست. smile

آفلاین

#3 2016-06-25 23:06:30

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

پاسخ: کمک در ساختن pkgbuild کانکی کاربران آرچ ایران

ممنونم از توضیحاتتون.کاری که گفتین رو کردم.اینم تغیرات:

# Maintainer: LinArcX <LinArcX@gmail.com>

pkgname=IAUC
pkgver=3
pkgrel=1
pkgdesc="Collection Of Conkies On Your Desktop!"
arch=('any')
url="https://github.com/LinArcX/I.AUC"
license=('MIT')
#'fribidi','conky-manager','conky-lua',
depends=('redis')
source=("https://github.com/LinArcX/I.AUC.git")
md5sums=('97e7ebe1d8b64fe7b3f1ac377c709ba9')

package() {
  cd "$pkgname-$pkgver"

  make DESTDIR="$pkgdir" install
}

اینم نتیجه اجرای دستور makepkg PKGBUILD:

 ✘  saeed@saeed  ~/package_name   master  makepkg PKGBUILD               
==> Making package: IAUC 3-1 (Sat Jun 25 23:06:18 IRDT 2016)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
  -> Found I.AUC.git
==> Validating source files with md5sums...
    I.AUC.git ... Passed
==> Extracting sources...
==> Removing existing $pkgdir/ directory...
==> Entering fakeroot environment...
==> Starting package()...
/home/saeed/package_name/PKGBUILD: line 16: cd: IAUC-3: No such file or directory
==> ERROR: A failure occurred in package().
    Aborting...

به این گیر داده:cd "$pkgname-$pkgver"
چرا؟

آخرین ویرایش توسط LinArcX (2016-06-25 23:07:30)


"Enough!!!Don't Use "DEFAULTS" Any More..."make it simple stupid

آفلاین

#4 2016-06-25 23:22:25

Arcush
Moderator
ثبت شده: 2015-09-15
ارسال ها: 1,285

پاسخ: کمک در ساختن pkgbuild کانکی کاربران آرچ ایران

عالی. میتونیم مساله رو حل کنیم. من تا اینجا اصلاحش کردم:

# Maintainer: LinArcX <LinArcX@gmail.com>

pkgname=IAUC
pkgver=3
pkgrel=1
pkgdesc="Collection Of Conkies On Your Desktop!"
arch=('any')
url="https://github.com/LinArcX/I.AUC"
license=('MIT')
depends=('fribidi' 'conky-manager' 'conky-lua' 'redis')
#source=("https://github.com/LinArcX/I.AUC.git")
source=("${pkgname%-git}::git+https://github.com/LinArcX/I.AUC.git")
md5sums=('SKIP')

package() {
user=$HOME
program_path="$user/.conky"
install_path=`pwd`
mkdir -p $program_path >/dev/null 2>&1
cp -R -f "$srcdir"/IAUC/* $program_path

cd "$srcdir"/$pkgname/Scripts

  chmod +x Scripts.sh
  chmod +x I.AUC.sh
  install -Dm0755 I.AUC.sh "$pkgdir"/usr/bin/I.AUC.sh
}

یه ویرایش دیگه big_smile : برای uninstall کردن، پیشنهادم اینه که یه فایل IAUC.install بسازید و فرآیند رو به عهده کاربر بذارید. البته در اینمورد ممکنه دوستان نظر بهتری داشته باشن.

آخرین ویرایش توسط Arcush (2016-06-25 23:53:10)

آفلاین

#5 2016-06-26 00:11:44

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

پاسخ: کمک در ساختن pkgbuild کانکی کاربران آرچ ایران

مرسی عیسی..حلش کردی که کلا نامرد smile خخخ
سوال دارم ازت:
این چرا اینجوری تعریف شده:
source=("${pkgname%-git}::git+https://github.com/LinArcX/I.AUC.git")
سوال دوم:-Dm0755 یعنی چی؟
سوال سوم:چرا md5sums رو اسکیپ کردی؟کلا یعنی میشه یه بسته رو بدون چک سام ساخت؟

آخرین ویرایش توسط LinArcX (2016-06-26 00:13:12)


"Enough!!!Don't Use "DEFAULTS" Any More..."make it simple stupid

آفلاین

#6 2016-06-26 00:27:14

Arcush
Moderator
ثبت شده: 2015-09-15
ارسال ها: 1,285

پاسخ: کمک در ساختن pkgbuild کانکی کاربران آرچ ایران

نه سعید جان. بذار فعلا بمونه تا بچه های دیگه هم ببینن. مطمئنم modify خواهد شد. راجع به اون مجوز ۷۵۵ معمولا برای فایلای توی  usr(/local)/bin لحاظش می کنن(rwxr-xr-x). آرایه سورس رو هم از یکی از pkgbuildهایی که مثل حالت خودت از git برمیداره، استفاده کردم (من هنوز متاسفانه با git و پروسه اون آشنایی بیشتری ندارم).  بسته رو هم میشه ببدون چک سام ساخت. اما معمولا برای بسته هائی که زودزود آپدیت میشن اسکیپ نمی کنن ( حداقل من ندیدم). فرآیند کپی کردن رو توی دایرکتوری هوم از فرآیند نصب pdmt برداشتم که تقریبا مشابه هم هستن این دوتا. منتها ترسم فقط درمورد uninstall کردنه. قطعا یادته که علیرضای عزیز (@silver) دچار مشکل شد و من هنوز نمیدونم چرا اون اتفاق افتاد( گرچه یه چیزایی تو اینترنت پیدا کردم ولی جواب های قانع کننده ای نبودن).

ویرایش: البته اون مشکل به خود PKGBUILD ارتباطی نداشت و از ایینجا ناشی میشد که "فرآیند حذف یه دایرکتوری مخفی توی دایرکتوری هوم کاربر از طریق یه اسکریپت درمجموع پیشنهاد نمیشه" و خب PKGBUILD هم یه اسکریپته. چه اینکه بهروز عزیز هم گفت توی فدورا این اتفاق براش افتاد. بنابراین شما باید برای حذف یه تصمیم پیشرفته تر بگیرین (چیزایی که توی دایرکتوری هوم دارید ذخیره می کنید، بیشتر از فایل های شخصی سازی هستن).

آخرین ویرایش توسط Arcush (2016-06-26 00:42:55)

آفلاین

#7 2016-06-26 00:34:46

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

پاسخ: کمک در ساختن pkgbuild کانکی کاربران آرچ ایران

یعنی اگه الان از طریق pacman بسته رو حذف کنم ممکنه به سرنوشت علیرضا دچار بشم؟
حالا این مشکل که ایشاله حل میشه. اما به نظرت کار درستیه فرایند حذف رو بدیم دست کاربر و از زیر نظر پکمن خارج ش کنیم؟
یکپارچگی مدیر بسته رو زیر سوال نمی بره این حرکت به نظرت؟


"Enough!!!Don't Use "DEFAULTS" Any More..."make it simple stupid

آفلاین

#8 2016-06-26 00:40:11

Arcush
Moderator
ثبت شده: 2015-09-15
ارسال ها: 1,285

پاسخ: کمک در ساختن pkgbuild کانکی کاربران آرچ ایران

سعیدجان ما باهم فرستادیم. لطفا ویرایش ارسال قبلی من رو بخون. به نظر من که زیر سؤال میبره این ییکپارچگی رو. اما من شخصا راه حل دیگه ای ندارم (دلیلم هم اینه که هنوز نمیدونم چرا اون اتفاق برای علیرضا افتاد) و البته ما نباید فراموش کنیم که چون *من نوعی* راه حل ندارم به این معنی نیست که راه حلی وجود نداره. این، اتفاقا بهانه خوبی شد تا دوباره بریم دنبال دلیل اون اتفاق.

آفلاین

#9 2016-06-26 00:41:56

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

پاسخ: کمک در ساختن pkgbuild کانکی کاربران آرچ ایران

اوه.. قضیه جالب شد. یعنی هر اسکریپتی که داخل دایرکتوری هوم بره یه دایرکتوری مخفی   نصب کنه ممکنه خطرناک باشه؟
اما چرا؟ مگه دات فایل ها چه خطری دارن که تو شون نباید بسته ای نصب کرد؟و اینکه فقط تو هوم این قضیه صادقه یا جاهای دیگه هم ممکنه پیش بیاد.؟

آخرین ویرایش توسط LinArcX (2016-06-26 00:45:06)


"Enough!!!Don't Use "DEFAULTS" Any More..."make it simple stupid

آفلاین

#10 2016-06-26 00:45:00

Arcush
Moderator
ثبت شده: 2015-09-15
ارسال ها: 1,285

پاسخ: کمک در ساختن pkgbuild کانکی کاربران آرچ ایران

شاید من این موضوع رو خیلی بزرگ کردم. اما بهرحال تا وقتی که دلیل اون اتفاق رو ندونم، *برای من خطرناکه و شخصا بدون دخالت اسکریپت این کار رو انجام میدم.* راستی، من فقط دارم راجع به حذف دایرکتوری مخفی با اسکریپت این بزرگنمایی رو انجام میدم.

آخرین ویرایش توسط Arcush (2016-06-26 00:46:23)

آفلاین

#11 2016-06-26 00:49:12

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

پاسخ: کمک در ساختن pkgbuild کانکی کاربران آرچ ایران

نه اتفاقا بحث خیلی جالبی بود. به نظر م باید یه فکری درباره مکان نصب بکنم. اونجوری میشه رو گزینه حذف از طریق پکمن هم با آسودگی خاطر بیشتری فکر کرد.
در کل ممنونم ازت عیسی. خیلی گلی:)


"Enough!!!Don't Use "DEFAULTS" Any More..."make it simple stupid

آفلاین

#12 2016-06-26 01:06:26

Arcush
Moderator
ثبت شده: 2015-09-15
ارسال ها: 1,285

پاسخ: کمک در ساختن pkgbuild کانکی کاربران آرچ ایران

خودت بیشتر. cool

اگه بخوای جای پرونده ها رو تغییر بدی که مساله از ریشه حل میشه. فقط فایل های شخصی سازی رو توی دایرکتوری هوم نگه دار (که همه نرم افزارها دارن و بعد از حذف هم پاک نمیشن و خود کاربر میره پاکشون میکنه).

ویرایش: راستی بقیه اسکریپت ها رو یادم رفت پرمیژن بدم و نصبشون کنم. اما خب مشابه هستن.

آخرین ویرایش توسط Arcush (2016-06-26 01:14:05)

آفلاین

#13 2016-06-26 08:12:02

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

پاسخ: کمک در ساختن pkgbuild کانکی کاربران آرچ ایران

سعید جان یه چندتا نکته میگم شاید بدردت خورد.
اول اینکه هرگز سعی نکن چیزی رو در دایرکتوری خانه کاربر نصب یا ایجاد کنی. برای بسته هایی مثل بسته شما که نیاز داره برا اجرا چیزی داخل دایرکتوری خانه کاربر نصب یا ساخته بشه معمولا روال به این صورته که از طریق فایل install بسته بعد از نصب برنامه به کاربر پیغامی داده میشه و تو اون پیغام گفته میشه که مثلا برای استفاده از برنامه باید فلان فایل رو تو دایرکتوری خانه کپی کنی و هر کار دیگه ای که کاربر باید انجام بده. معمولا بسته هایی مثل برنامه تو میان فایل هاشون رو با توجه به نوع بسته در یک مسیری قرار میدن و کاربر باید خودش فایلهای لازم رو از اون مسیر کپی کنه داخل دایرکتوری خانه خودش و از اونا استفاده کنه. من در مورد کانکی اطلاع چندانی ندارم نمیدونم آیا میشه فایلهای تو رو داخل دایرکتوری های زیر مجموعه ریشه جایی قرار داد که کانکی بتونه ازشون اتوماتیک بدون تنظیم خاصی استفاده کنه یا نه ولی شاید بشه اینکار رو کرد!!
نکته بعدی اینکه برای دانلود فایلهای نصب علاوه بر روش معمول که در اون  دانلود فایل به صورت zip شده یا غیر zip انجام میشه، امکان دانلود با استفاده از برنامه هایی چون git و svn و غیره هم وجود داره.
نکته بعدی اینکه در مورد برنامه شما چون شما از GIT استفاده میکنی تو قسمت md5sum همونجور که عیسی عزیز گفت مقدار SKIP رو میگذاری و چک سام رو دیگه چک نمیکنی که این بدلیل اینه که فایلهای git معمولا از طرف توسعه دهنده برنامه زیاد تغییر میکنه و نیاز نباشه دائم چک سام رو تغییر بدی. البته برای گیت هاب به  دو شکل عمل میشه: بعضی مواقع توسعه دهنده از طریق گیتهاب یه فایل zip رو به عنوان نسخه stable برنامه قرار میده که اونوقت میشه مثل برنامه های دیگه و کافیه اون فایل دانلود بشه. ولی اکثر مواقع از snapshot فعلی مخزن استفاده میشه که اینجا باز باید به چندتا نکته توجه کنی.
برای تنظیم ورژن برنامه بر اساس کد git یه تابع pkgver به PKGBUILD اضافه میشه که کارش مشخص کردن ورژن برنامه از روی کد git هست. این صفحه خیلی میتونه کمکت کنه :
VCS_package_guidelines
نکته بعدی اینکه برای فونتها سعی کن اگر فونتها تو مخازن آرچ یا AUR وجود داره از اونا استفاده کنی اگر حتما نیازه که باشند و گرنه فکر کنم این یه مسئله شخصی و دلخواه. میتونی از طریق متغیر optdepends فونتهای مورد نظر رو پیشنهاد بدی به کاربر که اگر خواست از اونا استفاده کنه.
نکته بعد اینکه هر کدوم از توابعی که در PKGBUILD استفاده میشه هدف خاصی داره. مثلا تابع build برای مرحله کامپایل برنامه استفاده میشه در صورتیکه برنامه نیاز به کامپایل داشته باشه و یا تابع package که تابع اصلی برنامه است برای ایجاد بسته و نصب فایلهای مختلف برنامه تو مسیرهای مورد نظر در pkg استفاده میشه. حتما یه نگاه به این صفحه ها بیانداز:
Creating_packages , Arch_packaging_standards
نکته آخرهم اینکه برای بسته هایی که checksum میخواهد میتونی با استفاده از دستور updpkgsums چکسام رو وارد PKGBUILD بکنی.

آخرین ویرایش توسط morealaz (2016-06-27 07:08:27)

آنلاین

پانوشت انجمن

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