[pacman-dev] List packages from a given repo
Dan McGee
dpmcgee at gmail.com
Thu May 8 20:13:00 EDT 2008
On Thu, May 8, 2008 at 6:47 PM, Allan McRae <mcrae_allan at hotmail.com> wrote:
> R. Dale Thomas wrote:
>> [snip]
>>
>> Well, I made the following changes to speed it up by 40%:
>>
>> 39c39
>> < pacman -Sl > $pkglist
>> ---
>> > pacman -Sl | grep "^$1" > $pkglist
>> 42c42
>> < match=$(grep -m1 " $pkg " $pkglist | grep "^$1")
>> ---
>> > match=$(grep -m1 " $pkg " $pkglist)
>>
>>
>
> The problem with those changes is if a package is in [testing] and
> [core] you only want to match it to the first repo in your pacman.conf
> (i.e. [testing] in this case). Your change would match it in both repos.
>
> Allan
I used wc to shorten the output; the package list is the same in both
cases, except my version also shows and matches version numbers.
dmcgee at dublin /tmp
$ time ./repopkg.orig testing | wc -l
28
real 0m13.195s
user 0m9.166s
sys 0m3.343s
dmcgee at dublin /tmp
$ time ./repopkg testing | wc -l
28
real 0m6.445s
user 0m4.523s
sys 0m1.203s
The magic:
pkglist=$(mktemp)
pacman -Sl $1 > $pkglist
pacman -Q | while read pkg; do
ret=0
grep -q "$pkg" $pkglist || ret=$?
if [ $ret -eq 0 ]; then
echo $pkg
fi
done
rm $pkglist
And sample output:
$ ./repopkg testing
bzip2 1.0.5-2
exiv2 0.16-2
inputproto 1.4.3-1
kernel26 2.6.25-1
kismet 2007_10_R1-1
kqemu 1.3.0pre11-19
libldap 2.3.40-1
libtool 2.2.2-1
libx11 1.1.4-1
libxkbfile 1.0.5-1
libxv 1.0.4-1
licenses 2.4-1
links 2.1pre35-1
mesa 7.0.3rc3-1
nasm 2.01-1
ntfs-3g 1.2412-1
nvidia-96xx 96.43.05-3
openssh 5.0p1-1
patch 2.5.9-1
pinentry 0.7.3-2
postgresql 8.3.0-1
postgresql-libs 8.3.0-1
printproto 1.0.4-1
qt 4.3.4-1
sudo 1.6.9p15-1
xf86-video-nv 2.1.8-1
xorg-server 1.4.0.90-10
xproto 7.0.12-1
-Dan
More information about the pacman-dev
mailing list