Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 30 Dec 2021 18:50:03 -0800
From:      "Ronald F. Guilmette" <rfg@tristatelogic.com>
To:        freebsd-questions@freebsd.org
Subject:   Package naming conventions (?)
Message-ID:  <34017.1640919003@segfault.tristatelogic.com>

next in thread | raw e-mail | index | archive | help
I don't know if I should file a bug report on this or not.  Feedback would
be appreciated.

There is a small problem with what appears to be the "standard" naming
convention(s) for package names.  Specifically, something less than 100%
of all packages seem to follow the obvious naming convention(s), and this
has caused me some minor grief.

In general, full package names end with a version number which consists
exclusively of digits, periods, commas, and underscores.  Thus the
*generalized* (non-version-specific) package names for all currently
installed packages may, generally speaking, be derived thusly:

    pkg info | awk '{print $1}' | sed -E 's/-([0-9]|,|_|\.)+$//' =


(I am not aware of any easier way to generate such a list of the base name=
s
of all currently installed packages.  If I have just missed how to do that
more easily, please let me know.)

Anyway, the above command pipeline yields a list of the base names of all
installed packages with the exception of a small number of packages that
do not conform to the "standard" (lexical structure) naming conventions
for full package names, specifically, these ones:

        fstrcmp-0.7.D001
        drm-kmod-g20190710_1
        drm-fbsd13-kmod-5.4.144.g20211013

(This is only a list of the full packages names that I am aware of that fa=
il
to follow the standard naming conventions.  There may be others.)

Why is this an issue?  Here's why...

I just did a fresh install of 13.0-STABLE.  After that I did:

    pkg install `cat my.desired.pkgs`

where my.desired.pkgs is the name of a file containing the base names of a=
ll
of the packages that I routinely use and want installed, e.g.:

	firefox
	gimp
	gthumb
	...
	etc.

After allowing the "pkg install" command to run to completion (while I had
dinner) I wanted to verify that, in fact, all of the packages that I had
asked to have installed did in fact get installed.

If it were not for the occasional goofy/non-normal full package names
mentioned above, this would have been a simple matter of just doing the
following:

    pkg info | awk '{print $1}' | sed -E 's/-([0-9]|,|_|\.)+$//' > my.inst=
.pkgs
    comm -23 my.desired.pkgs my.inst.pkgs

That would have / should have yielded a list of just those packages that
I had wanted to get installed, but that for some reason did not in fact
get installed.

Unfortunately, due to the problem with there being less than 100% of all
full package names following the "standard" lexical structure of the vast
majority of all package names, the above pair of commands yielded a list
of not just the packages that failed to install successfully, but also
the goofy/non-normal package names mentioned above.

So, what say you all?  Is this a bug or a feature?

Maybe I just have a fetish for adherence to obvious conventions, but this
does annoy me.  And it clearly doesn't have to be this way.


Regards,
rfg



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?34017.1640919003>