PKGNG: ability to view pkg-plist?

Ken Moore ken at
Fri Oct 25 23:40:08 UTC 2013

On 10/25/2013 18:05, Matthew Seaman wrote:
> On 25/10/2013 18:24, Ken Moore wrote:
>> I have been looking around, but I am unable to find a way to easily read
>> the pkg-plist within a PKGNG package on the repository. Is this
>> functionality missing in pkg, or am I just missing something?
> If you've downloaded the package tarball, then like this:
> lucid-nonsense:...cache/pkg/All:% pkg info -l -F ./pkg-1.1.4_8.txz
> pkg-1.1.4_8:
> 	/usr/local/share/licenses/pkg-1.1.4_8/
> 	/usr/local/share/licenses/pkg-1.1.4_8/LICENSE
> 	/usr/local/share/licenses/pkg-1.1.4_8/BSD
> 	/usr/local/etc/pkg.conf.sample
> 	/usr/local/sbin/pkg
> 	/usr/local/sbin/pkg-static
> 	/usr/local/sbin/pkg2ng
> 	/usr/local/include/pkg.h
> 	/usr/local/lib/
> 	/usr/local/lib/
> 	/usr/local/lib/libpkg.a
> 	/usr/local/etc/periodic/daily/400.status-pkg
> 	/usr/local/etc/periodic/daily/411.pkg-backup
> 	/usr/local/etc/periodic/daily/490.status-pkg-changes
> 	/usr/local/etc/periodic/security/410.pkg-audit
> 	/usr/local/etc/periodic/security/460.pkg-checksum
> 	/usr/local/libdata/pkgconfig/pkg.pc
> 	/usr/local/man/man3/pkg_printf.3.gz
> 	/usr/local/man/man5/pkg-repository.5.gz
> 	/usr/local/man/man5/pkg.conf.5.gz
> 	/usr/local/man/man8/pkg-add.8.gz
> 	/usr/local/man/man8/pkg-annotate.8.gz
> 	/usr/local/man/man8/pkg-audit.8.gz
> 	/usr/local/man/man8/pkg-autoremove.8.gz
> 	/usr/local/man/man8/pkg-backup.8.gz
> 	/usr/local/man/man8/pkg-check.8.gz
> 	/usr/local/man/man8/pkg-clean.8.gz
> 	/usr/local/man/man8/pkg-convert.8.gz
> 	/usr/local/man/man8/pkg-create.8.gz
> 	/usr/local/man/man8/pkg-delete.8.gz
> 	/usr/local/man/man8/pkg-fetch.8.gz
> 	/usr/local/man/man8/pkg-info.8.gz
> 	/usr/local/man/man8/pkg-install.8.gz
> 	/usr/local/man/man8/pkg-lock.8.gz
> 	/usr/local/man/man8/pkg-query.8.gz
> 	/usr/local/man/man8/pkg-register.8.gz
> 	/usr/local/man/man8/pkg-remove.8.gz
> 	/usr/local/man/man8/pkg-repo.8.gz
> 	/usr/local/man/man8/pkg-rquery.8.gz
> 	/usr/local/man/man8/pkg-search.8.gz
> 	/usr/local/man/man8/pkg-set.8.gz
> 	/usr/local/man/man8/pkg-shell.8.gz
> 	/usr/local/man/man8/pkg-shlib.8.gz
> 	/usr/local/man/man8/pkg-static.8.gz
> 	/usr/local/man/man8/pkg-stats.8.gz
> 	/usr/local/man/man8/pkg-unlock.8.gz
> 	/usr/local/man/man8/pkg-update.8.gz
> 	/usr/local/man/man8/pkg-updating.8.gz
> 	/usr/local/man/man8/pkg-upgrade.8.gz
> 	/usr/local/man/man8/pkg-version.8.gz
> 	/usr/local/man/man8/pkg-which.8.gz
> 	/usr/local/man/man8/pkg.8.gz
> 	/usr/local/share/zsh/site-functions/_pkg
> 	/usr/local/etc/bash_completion.d/_pkg.bash
> Otherwise there is an optional '-l' flag to 'pkg repo' that creates a
> database of all of the files installable by all of the packages in the
> repo -- which should be downloadable as 'filesite.txz'.  Whether this
> exists or not depends on the choices of the repository maintainer.  It's
> not currently available from the official repos for
>> Just for a bit of context:
>> I am working on adding the functionality into EasyPBI to work *without*
>> a local copy of the ports tree available, so I am trying to grab all the
>> information about a given package from the remote repository (with user
>> privileges) to maintain the "Easy" part of EasyPBI in the new version.
>> Most of the information can be easily pulled using "pkg rquery", but the
>> only thing I am still missing is the ability to search through the
>> pkg-plist for binaries/icons/etc..
> Yeah -- the repository catalogue is a collection of selected package
> metadata for the packages in the repo.  Unfortunately the lists of files
> and directories from each package aren't part of that selection.  Mostly
> because of the space they'd take up.
> Whether it would be desirable to publish a 'filesite.txz' index of all
> the files in the packages on the official repos is a matter for debate.
> It would probably mean some changes to poudriere too -- I can't see any
> obvious way of telling it to run 'pkg repo -l' instead of plain 'pkg repo'.
> 	Cheers,
> 	Matthew

Thanks for the confirmation. The only way I am seeing that it can be 
done at the moment is to download and/or install the package first, and 
then there are a couple of pkg command for getting the pkg-plist ("pkg 
info -l -F" if not installed, "pkg query %Fp" if it is installed). 
Unfortunately, this generally requires root/admin permissions to fetch 
the package (unless I change the package cache dir, but I am hesitant to 
do that for a simple application like this), so that is out of the 
question for my use case.

I will look into the "pkg repo -l" option and see if that will work. If 
so, we might be able to use that on the PC-BSD package repo, and I can 
just tell people that the simplifications for generating XDG 
desktop/menu entries are only available if you are using a repository 
with that option enabled.

Is a general way to list the files in a package that important for 
others, or is my case very specialized? I can think of a few situations 
where it might be a nice option to search for package(s) on the repo 
that contains a particular binary name, but I might be in a very small 
group of people that would actually use it.


~~ Ken Moore ~~

More information about the freebsd-ports mailing list