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

#1 2016-03-13 16:09:21

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

تعداد بسته های انواع مخازن را چگونه به دست بیاورم؟

دوستان من نیاز دارم چند تا عدد رو در بیارم:
۱-تعداد کل بسته های مخزن core
2-تعداد بسته های نصب شده از core
3-تعداد کل بسته های مخزن extra
4-تعداد بسته های نصب شده از extra
5-تعداد کل بسته های مخزن community
6-تعداد بسته های نصب شده از community
7-تعداد کل بسته های مخزن multilib
8-تعداد بسته های نصب شده از multilib
9-تعداد کل بسته های مخزن ArchLinuxfr
10-تعداد بسته های نصب شده از ArchLinuxfr
11-تعداد کل بسته های مخزن blackArch
12-تعداد بسته های نصب شده از blackArch
۱۳-تعداد کل گروه بسته های blackArch


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

آفلاین

#2 2016-03-13 20:30:14

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

پاسخ: تعداد بسته های انواع مخازن را چگونه به دست بیاورم؟

*از زمانی که ریپوی مثلا extra توی کانف پکمن فعال بوده تعداد بسته های نصب شده از این ریپو رو از طریق زیر میشه بدست آورد:

$ paclist extra | wc -l

*اما اگه بخوایم ریپوی اکسترا چندتا بسته داره کار یه کمی پیچیده میشه. چون باید مشخص کنیم برای چه معماری ای قراره این تعداد رو بشماریم. مثلا

$ pacman -Ss | grep extra/ | wc -l

میتونه یک تقریب  برای معماری سیستم ما به اضافه معماری های مشترک  ارائه بده (همچنین از مشابهت اسم های گروه های احتمالی که توی این ریپو هم که ممکنه باشن غافل نشید). البته احتمالا بشه یه اسکریپت نوشت که اون اشتراکات رو غربال کنه. امیدوارم روش سرراست تری هم باشه البته.

اما یه روش کثیف big_smile که درسته کثیفه ولی مو لای درزش نمیره( عدد بدست اومده کاملا دقیق و به شدت مستنده):

اینجا رو ببینید:
https://www.archlinux.org/packages/?sor … =&flagged=
فقط کافیه اون عدد که داره میگه کل بسته هایی که شما توی سرچتون فیلتر کردید مثلا ۲۱۶۸تاست رو ازون صفحه بکشید بیرون. یعنی کل بسته های extra برای معماری  ۶۴ رو. یا مثلا اینجا درمورد آرچ سیاه:
https://blackarch.org/tools.html
یا اینجا درمورد گروه ها:
https://www.archlinux.org/groups/
که البته باید کار بیشتری درمورد شمارششون انجام بدین.

اینجا هم تمام ریپوهای غیررسمی رو لیست کرده. مثلا ریپوی فرانسه رو پیدا کنید و برید توی صفحه اش.
https://wiki.archlinux.org/index.php/un … rchlinuxfr

الان مساله تبدیل شده به خوندن یه سری عدد توی صفحه html. امیدوارم منظورم رو واضح رسونده باشم.

آفلاین

#3 2016-03-14 01:25:52

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

پاسخ: تعداد بسته های انواع مخازن را چگونه به دست بیاورم؟

مرسی عیسی جان ..میدونید این ایده از دیدن برنامه pkgb-rowser به ذهنم خطور کرد که امار کلی بسته ها رو ریز به ریز در میاره..به نظرت سازنده این اپلیکشن رفته اعدادشو از صفحات html در اورده یا نه از روش دیگه ای استفاده کرد/؟


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

آفلاین

#4 2016-03-14 01:31:37

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

پاسخ: تعداد بسته های انواع مخازن را چگونه به دست بیاورم؟

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

 [arcush@arcush ~]$ paclist
paclist (pacman) v5.0.0

List all packages installed from a given repository

Usage: paclist <repository>

Example: paclist testing
[arcush@arcush ~]$

ضمنا تا اونجائی که من میدونم pkgbrowser آمار بسته های موجود در ریپوها رو نمیده. بلکه تعداد بسته های نصب شده از ریپوهای مختلف روی سیستم رو بدست میده و این کاملا متفاوته با قسمت دوّم بحث ما.

آفلاین

#5 2016-03-14 01:53:19

ehsan_faal
عضو
از : تهران
ثبت شده: 2015-10-02
ارسال ها: 270

پاسخ: تعداد بسته های انواع مخازن را چگونه به دست بیاورم؟

من الان نه مانجارو دارم نه آرچ، ولی یه نظر دارم شاید شدنی باشه.
نمیشه با pacman دنبال اسم یه بسته گشت که همه اسامی رو شامل بشه؟
(چون فکر میکنم وقتی از Ss- استفاده میکنم رجکس هم قبول کنه.)
اگه جوابتون مثبته و میشه یه رجکسی مثله اینو بهش داد:

pacman -Ss ".*"

با این حساب خیلی راحت باید بتونیم تعداد بسته های متعلق به هر ریپو رو با مثلا AWK در بیاریم.


Mahatma Gandhi - The weak can never forgive. Forgiveness is the attribute of the strong

آفلاین

#6 2016-03-14 02:03:00

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

پاسخ: تعداد بسته های انواع مخازن را چگونه به دست بیاورم؟

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

آفلاین

#7 2016-03-14 02:03:50

ehsan_faal
عضو
از : تهران
ثبت شده: 2015-10-02
ارسال ها: 270

پاسخ: تعداد بسته های انواع مخازن را چگونه به دست بیاورم؟

خب یه خروجی از اون لیست بهم بدید اسکریپتش رو بنویسم lol


Mahatma Gandhi - The weak can never forgive. Forgiveness is the attribute of the strong

آفلاین

#8 2016-03-14 02:07:40

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

پاسخ: تعداد بسته های انواع مخازن را چگونه به دست بیاورم؟

اینم خدمت شما:
https://ptpb.pw/PTVB

آفلاین

#9 2016-03-14 02:37:14

ehsan_faal
عضو
از : تهران
ثبت شده: 2015-10-02
ارسال ها: 270

پاسخ: تعداد بسته های انواع مخازن را چگونه به دست بیاورم؟

با تشکر از آرکوش عزیز، اینم نتایج:

#!/bin/bash
awk -O -vFS='/' '
$0 !~ /^[[:blank:]]/ {
        ++repo[$1]
}
END {
        for(i in repo)
        {
                print i ,repo[i]
        }
}
' "$1" | column -t

خروجی:

ehsan@ehsan-SVF152190X:~/Desktop/scripting/tmp/stack$ ./stack data 
core       244
multilib   280
community  5451
extra      3436

پایتون:

#!/usr/bin/env python3.5

import sys
import prettytable

def main(path):
		with open(path) as file:
			detail = {}
			out = prettytable.PrettyTable(['Repository', 'Number Of Package'])
			for line in (currentLine for currentLine in file if not currentLine.startswith(' ')):
				key = line.split(sep='/',maxsplit=1)[0]
				detail[key] = detail.get(key, 0) + 1
			
			for item in detail:
				out.add_row([item,detail[item]])

			print(out)
		

if __name__ == '__main__':
	if len(sys.argv) !=2:
		print('You must pass to this script file contains repo details.')
		sys.exit(1)
	main(sys.argv[1])

نتایج:

ehsan@ehsan-SVF152190X:~/Desktop/scripting/tmp/stack$ ./count.py data 
+------------+-------------------+
| Repository | Number Of Package |
+------------+-------------------+
|  multilib  |        280        |
|   extra    |        3436       |
| community  |        5451       |
|    core    |        244        |
+------------+-------------------+

آخرین ویرایش توسط ehsan_faal (2016-03-15 16:00:31)


Mahatma Gandhi - The weak can never forgive. Forgiveness is the attribute of the strong

آفلاین

#10 2016-03-17 23:35:11

Риал Краесис
عضو
از : تهران
ثبت شده: 2015-09-16
ارسال ها: 309

پاسخ: تعداد بسته های انواع مخازن را چگونه به دست بیاورم؟

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

با تشکر از آرکوش عزیز، اینم نتایج:

#!/bin/bash
awk -O -vFS='/' '
$0 !~ /^[[:blank:]]/ {
        ++repo[$1]
}
END {
        for(i in repo)
        {
                print i ,repo[i]
        }
}
' "$1" | column -t

خروجی:

ehsan@ehsan-SVF152190X:~/Desktop/scripting/tmp/stack$ ./stack data 
core       244
multilib   280
community  5451
extra      3436

پایتون:

#!/usr/bin/env python3.5

import sys
import prettytable

def main(path):
		with open(path) as file:
			detail = {}
			out = prettytable.PrettyTable(['Repository', 'Number Of Package'])
			for line in (currentLine for currentLine in file if not currentLine.startswith(' ')):
				key = line.split(sep='/',maxsplit=1)[0]
				detail[key] = detail.get(key, 0) + 1
			
			for item in detail:
				out.add_row([item,detail[item]])

			print(out)
		

if __name__ == '__main__':
	if len(sys.argv) !=2:
		print('You must pass to this script file contains repo details.')
		sys.exit(1)
	main(sys.argv[1])

نتایج:

ehsan@ehsan-SVF152190X:~/Desktop/scripting/tmp/stack$ ./count.py data 
+------------+-------------------+
| Repository | Number Of Package |
+------------+-------------------+
|  multilib  |        280        |
|   extra    |        3436       |
| community  |        5451       |
|    core    |        244        |
+------------+-------------------+


اسکریپت بش برا من جواب نمیده!
میمونه و هیچ کاری نمیکنه!
هی داره فک میکنه!

آخرین ویرایش توسط Риал Краесис (2016-03-17 23:35:47)


*** I FIGHT FOR USERS ***

آفلاین

#11 2016-03-18 01:35:48

ehsan_faal
عضو
از : تهران
ثبت شده: 2015-10-02
ارسال ها: 270

پاسخ: تعداد بسته های انواع مخازن را چگونه به دست بیاورم؟

۱۰۰٪ همینطوره.
آرگومان اول این اسکریپت همون فایلیه که آرکوش آپ کرده، شما میتونی فقط همون قسمت awk و column رو توی یه اسکریپت بذاری و خروجیه pacman رو پایپ کنی بهش.


Mahatma Gandhi - The weak can never forgive. Forgiveness is the attribute of the strong

آفلاین

پانوشت انجمن

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