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

اطلاعیه

#1 2016-05-15 22:07:42

حسین حیدری
Moderator
از : اصفهان
ثبت شده: 2015-09-16
ارسال ها: 413

آموزش: PKGfile چه میکند؟

سلام

توی این پست میخوام چندتا نکته ی کوچک درباره ی pkgfile بگم, قرار نیست خیلی طولانی بشه چون اگه بشه دیگه جاش توی ویکی هست smile آرچ یه ابزار قدرتمند داره به اسم pkgfile که باهاش کارهای مختلفی میشه کرد برای مثال میشه دیتابیس های مخازن را آپدیت کرد یا اگر برای اجرا یه برنامه ای خطا میگیرم که فلان کتابخونه نصب نیست بریم و ببینیم کدوم بسته را باید نصب کنیم که اون کتابخونه نصب بشه و همینطور به همون میگه که اون بسته توی کدوم مخزن قرار داره و ....

ابتدا با دستور زیر بسته ی pkgfile را نصب کنید:

sudo pacman -S pkgfile

بعد از نصب pkgfile یکبار دیتابیس های مخازن را با خود pkgfile آپدیت کنید:

sudo pkgfile --update

حالا مثلا میخوایم با دستور locate یه چیزی را پیدا کنیم و خطا میده که دستور locate نداریم, در این لحظه ما دستور نصب locate را میزنیم ولی بسته ای به اسم locate در مخازن نیست پس چیکار میکنیم؟! خب pkgfile اینجا به دردمون میخوره پس:

pkgfile locate

خروجی:

[[email protected] ~]$ pkgfile locate
core/mlocate

پس باید بسته ی mlocate را نصب کنیم smile اینکار را برای کتابخونه ها هم میشه کرد برای مثال من میخوام یه چیزی را اجرا کنم ولی ارور میده که libphp7.so را نصب نداری, منم نمیدونم باید کدوم بسته را نصب کنم که این کتابخونه نصب بشه پس دستور زیر را میزنم:

pkgfile libphp7.so

خروجی:

[[email protected] ~]$ pkgfile libphp7.so
extra/php-apache
extra/php-embed

حالا به قدرت آرچ ایمان میارید؟ big_smile و اکثرهم لا یعقلون big_smile

آخرین ویرایش توسط حسین حیدری (2016-05-15 22:09:43)


Just an anime fan

آفلاین

#2 2016-05-16 00:31:51

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

پاسخ: آموزش: PKGfile چه میکند؟

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

من هم اولین بار توسط سعید با این ابزار آشنا شدم:
http://bbs.archusers.ir/viewtopic.php?pid=624#p624

البته پکمن از ورژن ۵ به بعد این خاصیت pkgfile رو به خودش اضافه کرده (گرچه خواص دیگر pkgfile هنوز مخصوص به خودش هستن). بهرحال این رو هم با خود پکمن امتحان کنید:

 $ sudo pacman -Fy
 $ pacman -Fs libphp7.so

پ ن: همچنین برای توضیحات بیشتر راجع به فیچرهای جدید پکمن اینجا رو ببینید:
https://git.archlinux.org/pacman.git/tree/NEWS?h=v5.0.0
این لینک نشون میده چگونه پکمن یک سیر صعودی فوق العاده داره و با جرات آخر من پیجش این جملات رو نوشته:

BUGS
       Bugs? You must be kidding; there are no bugs in this software. But if we happen to be wrong, send us an email with as much
       detail as possible to [email protected].

آفلاین

#3 2016-06-30 13:54:18

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

پاسخ: آموزش: PKGfile چه میکند؟

توی مانجارو *ظاهرا* بخاطر اینکه file.ها موقع ساختن ریپوهای مخازن تشکیل نمیشن، بنابراین مستقیما نمیشه از pkgfile استفاده کرد. اما خب میشه یه ترفند کوچیک بکار برد. ایده اینه: برای استفاده از pkgfile، ما نیاز به file.های محتویات ریپوها داریم. پس برای یه لحظه یکی از مخازن آرچ رو اضافه می کنیم، حالا دیتابیس مخزن رو آپدیت می کنیم. بعد دیتابیس pkgfile رو آپدیت می کنیم. حالا مخزن آرچ رو حذف می کنیم و دیتابیس سیستم رو برمبنای مخزنهای خود مانجارو آپدیت می کنیم. اتفاقی که افتاد این بود که دیتابیس pkgfile (البته برمبنای مخزن آرچ) تشکیل شد (= دایرکتوری var/cache/pkgfile/ که pkgfile اطلاعاتش رو ازونجا برمیداره) و ما همین رو میخوایم (البته همین جا معلومه بسته های اختصاصی مخازن مانجارو جا جاموندن. اما بهرحال، باتوجه به اینکه معمولا بسته ها توی ریزفایلهاشون (علی الخصوص کتابخونه ها) بسیاری مواقع اشتراک دارن و همینطور یکسان بودن خیلی از بسته ها توی مانجارو و آرچ، pkgfile در همین روش با تقریب خیلی خوبی کار خواهد کرد).  فرض کنیم توی مانجارو هستیم:

۱- بسته pkgfile-git رو از aur نصب کنید.

۲- یکی از میرورهای آرچ رو انتخاب کنید (مثلا برید به https://www.archlinux.org/mirrorlist/ و یه لیست از میرورها رو جنریت کنید و یکیشون رو بردارید).  این میرور برای من همیشه خوب کار کرده:
Server = http://archlinux.de-labrusse.fr/$repo/os/$arch
۳- این ها رو به ترتیب بزنید:

 $ sudo sed -i -e '1iServer = http://archlinux.de-labrusse.fr/$repo/os/$arch\' /etc/pacman.d/mirrorlist
 $ sudo pacman -Syy
 $ sudo pkgfile --update
 $ sudo sed -i '1d' /etc/pacman.d/mirrorlist
 $ sudo pacman -Syy

پ.ن: البته من سعی کردم با repo-add از طریق ساختن یه مخزن محلی از ریپوهای اصلی مانجارو file.های لازم رو بسازم که موفق نشدم و مجبور شدم ازین روش کثیف استفاده کنم.

پ.ن۲: درمورد استفاده از pacman -Fs هم میشه در مرحله ۳ بجای sudo pkgfile --update از sudo pacman -Fy استفاده کرد.

آخرین ویرایش توسط Arcush (2016-06-30 16:38:02)

آفلاین

پانوشت انجمن

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