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

#1 2017-03-22 18:34:41

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

Missing dependencies

عرض ادب و تبریک نوروز
دوستان دارم PKGBUILD می نویسم و به آرایه dependsرسیدم که باید پرشون کنم.برنامه ای که نوشتم با پایتون هست و فقط دو کتابخونه زیر رو بهش اضافه کردم:

import tvdb_api
from prettytable import PrettyTable

و آرایه depends من اینجوری هست:

 depends=('python' 'python-prettytable' 'python-tvdb_api')

و موقعی که makepkg رو میزنم این ارور رو می گیرم:

 ❯ makepkg -f                                                                                                                                                [18:30:47]
==> Making package: sirfiliams-git r5.d881b71-1 (Wed Mar 22 18:30:47 +0430 2017)
==> Checking runtime dependencies...
==> Missing dependencies:
  -> python-prettytable
  -> python-tvdb_api
==> Checking buildtime dependencies...
==> ERROR: Could not resolve all dependencies.

==> ERROR: An unknown error has occurred. Exiting...

چرا نمی تونه دیپندنسی ها رو نصب کنه؟


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

آفلاین

#2 2017-03-22 18:53:28

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

پاسخ: Missing dependencies

آیا همه دیپندنسی ها توی مخازن رسمی هستن؟ این رو حتما چک کنید.

سعیدجان، گرچه ایده های مختلفی در اینمورد وجود دارن. ولی قطعا این یک ایده عالی هست:
https://bbs.archlinux.org/viewtopic.php … 9#p1593069

من با این کتابخونه ها آشنائی ندارم. ولی سؤالی که برام مطرح شده اینه که اگه میشه با چیزی مثل pip اونها رو نصب کرد، در اونصورت این یک دو راهیه که شما نصب از طریق مخازن (رسمی/غیررسمی) آرچ رو ملزم می کنید  (درحالیکه غالبا مدیربسته خود پایتون بیشتر استفاده میشه). این موضوع با توجه به امکان آپدیت شدن زودتر مخازن خود پایتون باعث اتفاقات احیانا ناخوشایندی نمیشه؟

آخرین ویرایش توسط Arcush (2017-03-22 19:18:51)

آفلاین

#3 2017-03-22 19:38:55

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

پاسخ: Missing dependencies

Arcush نوشته است که:

آیا همه دیپندنسی ها توی مخازن رسمی هستن؟ این رو حتما چک کنید.

بسته prettytable تو مخازن رسمی هست.هم نسخه دو و هم نسخه 3ش:

python2-prettytable
python-prettytable

ولی بسته دوم در مخازن رسمی نبود بلکه در aur موجود هست:python-pytvdbapi.(البته این بسته رو هم اضافه کردم و باز همون ارور قبل رو بهم داد)

Arcush نوشته است که:

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

اتفاقا منم درگیر همین مسیله م.مثلا فرض کنید برنامه ای می نویسم که یه سری دیپندنسی هاش به مخازن خود آرچ هست.بعد یه سری دیپندنسی مثلا به لایبری های پایتون داره.تعدادی از وابستگی هاشو مثلا از node js ممکنه داشته باشه و....اون وقت ممکن هست اصلا بسته های معادل اون دیپندنسی ها، تو مخازن آرچ نباشن.این جور مواقع باید چکار کرد؟!


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

آفلاین

#4 2017-03-22 19:46:46

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

پاسخ: Missing dependencies

خب پس حالا که بسته دوم توی AUR هست، تقصیر رو میندازیم به گردن اون (بخاطر اینکه مسند makepkg فایل conf پکمنه که به صورت استاندارد حاوی ریپوهای رسمی هست).

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

آخرین ویرایش توسط Arcush (2017-03-22 19:48:01)

آفلاین

#5 2017-03-23 16:43:13

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

پاسخ: Missing dependencies

عیسی جان الان بسته tvdb_api که توی مخازن رسمی نیست رو هیچ راهی نداره به عنوان دیپندنسی به pkgbuild م معرفی کنمش؟
این مسند makepkg رو نمیشه طوری تنظیمش کرد که هم به مخازن رسمی و هم به aur اشاره کنه؟


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

آفلاین

#6 2017-03-23 17:06:06

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

پاسخ: Missing dependencies

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

آفلاین

#7 2017-03-23 23:48:14

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

پاسخ: Missing dependencies

سعید جان وقتی بسته ای رو برای AUR میسازی، فرق نمیکنه که dependency هاش در AUR باشه یا در مخازن رسمی. منتها برنامه makepkg خودش فقط میتونه بسته هایی که در مخازن رسمی هست و به عنوان دپندنسی هست رو نصب کنه دلیلش هم اینه که چون از pacman استفاده میکنه و pacman هم از AUR پشتیبانی نمیکنه.
بسته python-tvdb_api در AUR وجود داره البته فعلا یه بسته به نام python-tvdb_api-git هست ولی این بسته python-tvdb_api رو هم که بنویسی به عنوان dependency مشکلی نداره نصب میشه.
میتونی اول این بسته رو نصب کنی بعدش بسته خودت رو امتحان کنی.

آفلاین

#8 2017-03-24 02:40:34

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

پاسخ: Missing dependencies

ممنونم از راهنمایی های هر دو بزرگوار.پس از کلنجارهای فراوان درست شد.
همونطور که تو لینکی که دادن گفته شده بود(و به نظر خودمم راه منطقی تری می اومد) اومدم تو تابع prepare عملیات دانلود و نصب دیپندنسی های مختص به aur رو قرار دادم.این بخشی از فایل PKGBUILDمنه:

prepare(){
	cd "${srcdir}/${pkgname}"

	# install tvdb_api (V2)
	wget https://aur.archlinux.org/cgit/aur.git/snapshot/tvdb_api-git.tar.gz
	tar xvzf tvdb_api-git.tar.gz
	cd tvdb_api-git
	makepkg -f
	echo "installing tvdb_api-git(V2) from Aur."
	tvdb_pkgver_2=$(grep -Po 'pkgver=\K[^ ]+' PKGBUILD)
	tvdb_pkgrel_2=$(grep -Po 'pkgrel=\K[^ ]+' PKGBUILD)
	tvdb_arch_2=$(grep -Po 'arch=\K[^ ]+' PKGBUILD | cut -d "(" -f2 | cut -d "'" -f2)
	sudo pacman -U tvdb_api-git-${tvdb_pkgver_2}-${tvdb_pkgrel_2}-${tvdb_arch_2}.pkg.tar.xz
}

و تابع package رو اینجوری نوشتم:

package() { 
	cd "${srcdir}/${pkgname}"
	python setup.py install --prefix=/usr --root="$pkgdir"
}

اون setup.py هم قضیه داره.بسته به خوبی پیش نیازهاشو نصب میکنه و کار هم میکنه.اما هنوز یه مشکلی هست.موقع حذف بسته، دیپندنسی هایی که جز مخازن اصلی بودن و تو آرایه depends ذکر شدن حذف میشن اما سورس هایی که دستی دارم میگیرم شون و نصب شون میکنم هم چنان هستن.واسه این راه حلی هست؟


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

آفلاین

#9 2017-03-24 14:30:14

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

پاسخ: Missing dependencies

سعیدجان همونجور که قبلا گفتم تمام dependency ها رو در آرایه depends باید قرار بدی که این شامل بسته های مخازن رسمی و AUR میشه. بخش prepare برای اینه که اگر قرار شد قبل از build یا package بسته کاری انجام بشه برای آماده سازی کد مثل patch کردن و ایجاد تغییراتی در کد، اونجا قرار بگیره. نصب یه بسته از داخل این قسمت اشتباهه!!! چون این بسته جدا گانه نصب میشه و نه به عنوان پیش نیاز بسته شما، و برای همین pacman اون بسته ها رو بعد از پاک کردن بسته اصلی اون حذف نمیکنه.
در مورد makepkg در پست قبلی بهت گفتم که چرا dependency های AUR رو نمیتونست نصب کنه. ولی چون اکثر کاربران از برنامه های کمکی برای نصب از AUR استفاده می کنند مثل yaourt و pacaur مشکلی برای نصب ندارند و اون برنامه خودشون برنامه های پیش نیاز AUR رو نصب میکنند.. روش درست اینه که تمام dependency برای اجرای برنامه در آرایه depends قرار بگیره.

آخرین ویرایش توسط morealaz (2017-03-24 14:32:19)

آفلاین

#10 2017-03-24 17:23:14

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

پاسخ: Missing dependencies

همون طور که گفتید بخش prepare رو کلا حذف کردم و فایل کنونی من اینجوری شد:

# Maintainer: LinArcX <LinArcX at gmail dot com>

pkgname=tvdoon-git
pkgver=r3.69640c1
pkgrel=1
pkgdesc="Show Information About Tv Show's, Ratings And So Many Cool Fatures!"
arch=('any')
url="http://www.stack.blog.ir"
license=('GPL3')
depends=('python' 'python2-prettytable' 'python-prettytable' 'python-pyfiglet' 'tvdb_api-git' 'python-tvdb_api-git')
makedepends=('git' 'python-setuptools')
provides=("${pkgname}")
conflicts=("${pkgname}")
source=("${pkgname}::git+https://github.com/LinArcX/tvdoon")
md5sums=('SKIP')

pkgver() {
	cd "$srcdir/${pkgname}"
		( set -o pipefail
			git describe --long 2>/dev/null | sed 's/\([^-]*-g\)/r\1/;s/-/./g' ||
			printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
		)
}

package() { 
	cd "${srcdir}/${pkgname}"
	python setup.py install --prefix=/usr --root="$pkgdir"
}

اما یه نکته داره بخش depends.اونم اینه که 'python-tvdb_api-git' خودش یه آرایه دیپندنسی به این شکل داره:

depends=('python-requests-cache')

که میره بسته ذکر شده رو میگیره.اون بسته هم داخل خودش نسخه های 2 و 3 مربوط به پایتونشو نصب میکنه.من فایل نهایی مو آپلود کردم تو Aur.اما موقع گرفتنش با ارور مواجه میشم:

Copying tvdb_api.egg-info to /tmp/packerbuild-1000/python-tvdb_api-git/python-tvdb_api-git/pkg/python-tvdb_api-git/usr/lib/python3.6/site-packages/tvdb_api-1.10-py3.6.egg-info
running install_scripts
==> Tidying install...
  -> Removing libtool files...
  -> Purging unwanted files...
  -> Removing static library files...
  -> Stripping unneeded symbols from binaries and libraries...
  -> Compressing man and info pages...
==> Checking for packaging issue...
==> Creating package "python-tvdb_api-git"...
  -> Generating .PKGINFO file...
  -> Generating .BUILDINFO file...
  -> Generating .MTREE file...
  -> Compressing package...
==> Leaving fakeroot environment.
==> Finished making: python-tvdb_api-git 1.9.r25.g8f34a0d-1 (Fri Mar 24 17:12:54 +0430 2017)
loading packages...
error: 'python2-requests-cache-*.pkg.tar.xz': could not find or read package
Dependencies for `tvdoon-git' are not met, not building...
>>> elapsed time 2m14s

اینا خطوط انتهایی لاگ نصب بودن.اینم بگم که python2-requests-cache- رو به طور مستقیم از aur میگیرم همه چی اوکی هست.اما نمیدونم چرا الان ارور میده بهم.همه چی زیر سر این خطه:

error: 'python2-requests-cache-*.pkg.tar.xz': could not find or read package

آخرین ویرایش توسط LinArcX (2017-03-24 17:26:13)


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

آفلاین

#11 2017-03-24 19:43:58

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

پاسخ: Missing dependencies

درست شد.
مراحل "سردردآور" پیدا کردن مشکل و رفع اون رو خدمت تون بگم.بعدا کسی خواست PKGBUILD بنویسه، زجر نکشه D:
اگه به آرایه depends قبلی من نگاه کنید می بینید که به دو بسته 'tvdb_api-git' 'python-tvdb_api-git' وابستگی ایجاد کردم.با بررسی ای که انجام دادم متوجه شدم به نسخه 3 پایتون نیاز دارم چون وقتی tvdb_api-git' رو بعنوان تنها وابستگی می آوردم بهم خطا می داد.پس فقط 'python-tvdb_api-git رو نگه داشتم.اما داستان تازه از اینجا شروع میشه.اگه به صفحه گیتش در Aur مراجعه کنید ملاحظه می کنید که :

depends=('python-requests-cache')

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

tvdoon-git-->python-tvdb_api-git-->python-requests-cache

جالبی کار در شاهکار نوشتن pkgbuild مربوط به python-requests-cache هست.آرایه سورسشو ببینید:

source=("${_pyname}-${pkgver}.tar.gz::https://github.com/reclosedev/${_pyname}/archive/v${pkgver}.tar.gz")

خوب بریم از اول مرور کنیم.من تو ترمینال میخوام tvdoonرو نصب کنم.makepkg میاد فایل PKGBUILD شو میخونه و متوجه میشه به python-tvdb_api-git وابسته هست.خود این بسته هم به python-requests-cache وابسته هست.پس میره از سورسی که آقای Christian Rebischke گرامی تدارک دیدن بسته رو دانلود و سعی میکنه ازش قابل نصبی بسازه که تو اون مرحله بهم ارور میداد:

error: 'python2-requests-cache-*.pkg.tar.xz': could not find or read package

واقعا نمیدونم روشِ سورس دادنش درست هست یانه.(اون .tar.gz ها چی میخوان اون وسط؟!)اما خوب چون maintener اون PKGBUILD نیستم نمی تونم توش تغییری ایجاد کنم.پس اومدم و یه PKGBUILD جدید با نام python-requests-cache-git ساختم.اما خوب بازم به مشکل بر میخورم.چون python-tvdb_api-git وابستگی منو نمی شناسه.پس اومدم یه PKGBUILD هم واسه اون نوشتم و اسم شو گذاشتم tvdb3_api-git و در نهایت آرایه وابستگی من در PKBUILG مربوط به tvdoon اینجوری شد:

depends=('python' 'python2-prettytable' 'python-prettytable' 'python-pyfiglet' 'tvdb3_api-git')

درسته الان همه چی اوکی هست و بدون مشکل،بسته نصب و قابل استفاده اس.اما واقعا نمیدونم کاری که کردم درسته.
فرض کنید این چرخه به جای سه حلقه دارای 10 حلقه وابستگی بود و اون وابستگی آخر دچار مشکل باشه.آیا باید دومینو وار pkgbuild های جدید ساخت؟
نمیشه به مینیترن اون بسته گفت که بره pkgbuild شو اصلاح کنه؟

آخرین ویرایش توسط LinArcX (2017-03-24 19:47:05)


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

آفلاین

#12 2017-03-24 22:04:15

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

پاسخ: Missing dependencies

LinArcX نوشته است که:

واقعا نمیدونم روشِ سورس دادنش درست هست یانه.(اون .tar.gz ها چی میخوان اون وسط؟!)

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

source=("${_pyname}-${pkgver}.tar.gz::https://github.com/reclosedev/${_pyname}/archive/v${pkgver}.tar.gz")

اون تیکه اول قبل از :: برای این هست که اسم فایل دانلود شده رو تغییر بده و به این صورت که میخواد قرار بده. در واقع اینجوری میشه نام فایل دانلودی رو تغییر داد.
نکته بعدی اینکه این فایل PKGBUILD یه فایل split هست که برای ساخت چند بسته از یک فایل PKGBUILD استفاده میشه. اینجا به عنوان نمونه دو بسته با یک فایل ساخته میشه. یکی برای پایتون ۲ و دیگری برای پایتون ۳. البته این به این معنی نیست که هر دو بسته باید نصب بشه. بلکه کاربر هر کدوم رو که خواست نصب میکنه ولی جفتشون یه فایل PKGBUILD دارند.
نکته بعدی اینکه شما در فایل PKGBUILD خودت python2-prettytable رو دیگه نمیخواد به عنوان depend قرار بدی چون برنامه رو با پایتون ۳ نوشتی و ازش استفاده نمیکنی. همچنین بسته های git و python-setuptools رو به درستی در آرایه makedepends قرار دادی چونکه برای ساخت بسته مورد نیاز هستند نه برای اجرای برنامه.
نکته بعد در مورد بسته python-tvdb_api اینکه شما کافیه نام این بسته رو به عنوان depends قرار بدی. اگر چه در aur فقط بسته python-tvdb_api-git در aur وجود داره، ولی چون در فایل PKGBUILD بسته python-tvdb_api-git نام python-tvdb_api در آرایه provides قرار گرفته این بسته برای نصب انتخاب میشه و اگر احیانا چند بسته دیگه وجود داشته باشه که نام python-tvdb_api در آرایه provides آنها قرار گرفته باشه، کاربر میتونه از بین آنها انتخاب کنه که کدوم نصب بشه، پس نیازی به ساخت بسته جدید نیست.
نکته بعد در مورد متغیر url هست که بهتره برای اون آدرس github پروژه قرار داده بشه.
برای ورژن برنامه هم اگر در گیتهاب release بدی و tag بزنی که بهتر و گرنه میتونی از شماره revision و یا تاریخ استفاده کنی. بسته به روش مورد استفاده تابع pkgver فرق میکنه.

LinArcX نوشته است که:

اومدم و یه PKGBUILD جدید با نام python-requests-cache-git ساختم.اما خوب بازم به مشکل بر میخورم.چون python-tvdb_api-git وابستگی منو نمی شناسه.

برای اینکه مشخص کنی بسته شما یه برنامه رو ارائه میده باید در آرایه provides اسم اون بسته رو وارد کنی و برای اینکه با بسته های مشابه تداخل نداشته باشه باید در آرايه conflicts هم اسم اون بسته رو وارد کنی یعنی برای بسته شما اینجوری باید باشه:

provides=("${pkgname}" 'python-requests-cache')
conflicts=("${pkgname}" 'python-requests-cache')

آفلاین

#13 2017-03-25 01:50:40

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

پاسخ: Missing dependencies

morealaz نوشته است که:

نکته بعد در مورد بسته python-tvdb_api اینکه شما کافیه نام این بسته رو به عنوان depends قرار بدی. اگر چه در aur فقط بسته python-tvdb_api-git در aur وجود داره، ولی چون در فایل PKGBUILD بسته python-tvdb_api-git نام python-tvdb_api در آرایه provides قرار گرفته این بسته برای نصب انتخاب میشه.

نتیجه:

 ❯ packer tvdoon                                                     [01:45:19]

0 aur/tvdoon-git 0.1-1 (0)
    Show Information About Tv Show's, Ratings And So Many Cool Fatures!

Type numbers to install. Separate each number with a space.
Numbers: 0
Dependency `python-tvdb_api' of `tvdoon-git' does not exist.
morealaz نوشته است که:

برای ورژن برنامه هم اگر در گیتهاب release بدی و tag بزنی که بهتر و گرنه میتونی از شماره revision و یا تاریخ استفاده کنی. بسته به روش مورد استفاده تابع pkgver فرق میکنه.

چطوری تشخیص بدم تو چه شرایطی باید چجوری تابع pkgver رو بنویسم؟

morealaz نوشته است که:

برای اینکه مشخص کنی بسته شما یه برنامه رو ارائه میده باید در آرایه provides اسم اون بسته رو وارد کنی و برای اینکه با بسته های مشابه تداخل نداشته باشه باید در آرايه conflicts هم اسم اون بسته رو وارد کنی یعنی برای بسته شما اینجوری باید باشه:

provides=("${pkgname}" 'python-requests-cache')
conflicts=("${pkgname}" 'python-requests-cache')

این یه تیکه رو نفهمیدم.بسته من به requests-cache پیش نیاز داره.چرا باید اونو تو آرایه کانفلیکت بیارمش؟

آخرین ویرایش توسط LinArcX (2017-03-25 01:51:14)


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

آفلاین

#14 2017-03-25 01:59:29

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

پاسخ: Missing dependencies

من تمام کارهایی که گفتین رو کردم.(بجز تغییر python-tvdb_api-git به python-tvdb_api که خوب ارور میداد بهم و تو پست بالا بهش اشاره کردم)و سعی کردم دوباره برنامه رو نصب کنم.اما باز هم به همون ارور قبلی خوردم:

==> Finished making: python-tvdb_api-git 1.9.r25.g8f34a0d-1 (Sat Mar 25 01:55:05 +0430 2017)
loading packages...
error: 'python2-requests-cache-*.pkg.tar.xz': could not find or read package
Dependencies for `tvdoon-git' are not met, not building...
>>> elapsed time 1m20s

این هم آخرین ویرایش PKGBUILD:

# Maintainer: LinArcX <LinArcX at gmail dot com>

pkgname=tvdoon-git
pkgver=r3.69640c1
pkgrel=1
pkgdesc="Show Information About Tv Show's, Ratings And So Many Cool Fatures!"
arch=('any')
url="https://github.com/LinArcX/tvdoon"
license=('GPL3')
depends=('python' 'python-prettytable' 'python-pyfiglet' ' python-tvdb_api-git')
makedepends=('git' 'python-setuptools')
provides=("${pkgname}" 'python-requests-cache')
conflicts=("${pkgname}" 'python-requests-cache')
source=("${pkgname}::git+https://github.com/LinArcX/tvdoon")
md5sums=('SKIP')

pkgver() {
	cd "$srcdir/${pkgname}"
		( set -o pipefail
			git describe --long 2>/dev/null | sed 's/\([^-]*-g\)/r\1/;s/-/./g' ||
			printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
		)
}

package() { 
	cd "${srcdir}/${pkgname}"
	python setup.py install --prefix=/usr --root="$pkgdir"
}

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

آفلاین

#15 2017-03-25 09:05:51

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

پاسخ: Missing dependencies

LinArcX نوشته است که:

نتیجه:

 ❯ packer tvdoon                                                     [01:45:19]

0 aur/tvdoon-git 0.1-1 (0)
    Show Information About Tv Show's, Ratings And So Many Cool Fatures!

Type numbers to install. Separate each number with a space.
Numbers: 0
Dependency `python-tvdb_api' of `tvdoon-git' does not exist.

آرایه provides برای این هست که ممکنه چندین بسته همگی یک برنامه رو ارائه کنند و از این طریق مشخص میشه که این بسته ها چه برنامه ای رو ارائه میدهند تا کاربر بتونه از بین بسته های مختلف یکی رو نصب کنه. به همین ترتیب آرایه conflicts هم برای مشخص کردن اینکه این بسته با چه بسته هایی به دلیل شباهت فایلهای نصب شده دارای تضاد هست که pacman موقع نصب به کاربر اخطار بده در این مورد. به عنوان نمونه اگر بعضی بسته ها رو نگاه کنی میبینی که در مقابل dependency های اونها در AUR مثلا اگر نوشته باشه jdk میاد نسخه های مختلف موجود jdk در AUR و مخازن رسمی رو نمایش میده. کافیه کاربر یکی از این نسخه ها رو نصب کرده باشه تا پیش نیاز برنامه رفع بشه.

LinArcX نوشته است که:

چطوری تشخیص بدم تو چه شرایطی باید چجوری تابع pkgver رو بنویسم؟

این بستگی به خودت داره. یه موقع هست که شما میخواهی هر چند وقت یه بار یه نسخه جدید از برنامه ارائه بدی اونوقت میایی release میدی. یه دفعه هم هست که شما به صورت مداوم رو بهبود برنامه کار می کنی و نسخه جدید نمیدی و همون کد قبلی رو ویرایش و آپدیت میکنی.

LinArcX نوشته است که:

این یه تیکه رو نفهمیدم.بسته من به requests-cache پیش نیاز داره.چرا باید اونو تو آرایه کانفلیکت بیارمش؟

اینجا رو اشتباه فهمیدی. منظور من برای اون بسته جدیدی بود که شما برای requests-cache ساخته بودی!!! گفتم اونجا در فایل PKGBUILD اون برنامه اینجوری بنویس نه در برنامه خودت.

این جوری باشه فایل PKGBUILD:

# Maintainer: LinArcX <LinArcX at gmail dot com>

pkgname=tvdoon-git
pkgver=r3.69640c1
pkgrel=1
pkgdesc="Show Information About Tv Show's, Ratings And So Many Cool Fatures!"
arch=('any')
url="https://github.com/LinArcX/tvdoon"
license=('GPL3')
depends=('python' 'python-prettytable' 'python-pyfiglet' 'python-tvdb_api-git')
makedepends=('git' 'python-setuptools')
provides=("${pkgname}" 'tvdoon')
conflicts=("${pkgname}" 'tvdoon')
source=("${pkgname}::git+https://github.com/LinArcX/tvdoon")
md5sums=('SKIP')

pkgver() {
	cd "$srcdir/${pkgname}"
		( set -o pipefail
			git describe --long 2>/dev/null | sed 's/\([^-]*-g\)/r\1/;s/-/./g' ||
			printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
		)
}

package() { 
	cd "${srcdir}/${pkgname}"
	python setup.py install --prefix=/usr --root="$pkgdir"
}

آفلاین

پانوشت انجمن

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