On Monday, August 10, 2020 03:32:36 PM Jason Bacon wrote:
> On 2020-08-10 11:44, Greg Troxel wrote:
> > Jason Bacon <outpaddling%yahoo.com@localhost> writes:
> >> On 2020-08-09 13:08, Greg Troxel wrote:
> >>> Jason Bacon <outpaddling%yahoo.com@localhost> writes:
> >>>
> >>> Do you intend to change it, or do you think there is some reason not to,
> >>> or that others object? As I said above, my only goal here is that we
> >>> adjust defaults to the consensus of best practice.
> >>
> >> My aim here was to recap and clarify my experience with this issue so
> >> we have a solid foundation on record for the argument. So yes, I
> >> think PREFER_PKGSRC should be the default.
> >
> > Sounds good to me, and you have definitely convinced me.
> >
> > I have changed the subject to reflect the proposed change of default.
> >
> >> Should it be changed just for Linux, or for other platforms as well?
> >
> > So far, we have had discussion that supports changing it on Linux.
> > Specific othesr, not so much, and "all others", not at all. So I'd
> > prefer to just change it on Linux where we have a good basis to believe
> > that's in the interest of someone who doesn't understand this issue and
> > runs bootstrap.
> >
> >> Are we simply talking about something like the following in the
> >> bootstrap script or is it more complicated?
> >>
> >> --- Pkgsrc/pkgsrc/bootstrap/bootstrap.orig 2020-08-10
> >> 09:31:25.512000000 +0000
> >> +++ Pkgsrc/pkgsrc/bootstrap/bootstrap 2020-08-10 09:36:00.236000000
> >> +0000 @@ -1103,6 +1103,14 @@
> >>
> >> echo "PKGMANDIR= $pkgmandir" >> ${TARGET_MKCONF}
> >> echo "" >> ${TARGET_MKCONF}
> >>
> >> +case $opsys in
> >> +Linux)
> >> + if [ -z "$prefer_pkgsrc" ]; then
> >> + prefer_pkgsrc="yes"
> >> + fi
> >> + ;;
> >> +esac
> >> +
> >>
> >> if [ -n "$prefer_pkgsrc" ]; then
> >> echo "PREFER_PKGSRC= $prefer_pkgsrc" >> ${TARGET_MKCONF}
> >> echo "" >> ${TARGET_MKCONF}
> >
> > I think there probably needs to be a doc change, and there needs to be a
> > prefer-native that causes this not to happen, etc. But basically, that
> > seems like it.
>
> And a draft patch for the guide...
>
> Index: files/buildlink.xml
>
===================================================================
> RCS file: /cvsroot/pkgsrc/doc/guide/files/buildlink.xml,v
> retrieving revision 1.43
> diff -u -r1.43 buildlink.xml
> --- files/buildlink.xml 20 Jun 2020 09:47:05 -0000 1.43
> +++ files/buildlink.xml 10 Aug 2020 20:28:19 -0000
> @@ -602,16 +602,40 @@
> file to be listed in <varname>PREFER_NATIVE</varname>,
> otherwise it is simply ignored in that list.</para>
>
> - <para>Setting <varname>PREFER_NATIVE</varname> should be performed
> - straight after bootstrap and <varname>PREFER_PKGSRC</varname> during
> - bootstrap.
> + <para><varname>PREFER_PKGSRC</varname> should be set during bootstrap
> + to ensure that the bootstrap process does not use native tools as
> + dependencies for core packages.
> + Setting <varname>PREFER_NATIVE</varname> should be performed
> + immediately after bootstrap at the latest, but can also be set
> + during bootstrap.
> Switching between settings globally at a later date can introduce
> complications with dependency resolution. This is caused by packages
> - built with the opposite preference being installed alongside each
> other.</para>
> -
> + built with the opposite preference being installed alongside each
> + other. Hence, it is advisable to rebuild all installed packages
> + following any changes to these variables.</para>
> +
> <screen>
> &rprompt; <userinput>./bootstrap --prefer-pkgsrc yes</userinput>
> +&rprompt; <userinput>./bootstrap --prefer-native openssl</userinput>
> </screen>
> +
> + <para>When using pkgsrc on Linux systems, there is high risk of
> + "leakage", where programs installed by pkgsrc may inadvertently use a
> + command or library not installed by pkgsrc, e.g. those installed by
> + yum or apt. Such foreign dependencies may be installed, removed, or
> + upgraded to a version incompatible with the pkgsrc package at any
> + time, causing pkgsrc packages to subsequently malfunction. Pkgsrc
> + cannot prevent this, as it has no control over other package
> managers.
> + Another potential problem is that under Redhat Enterprise and related
> + Linux systems, yum packages are only patched and never upgraded, so
> + eventually they may become too outdated for use by pkgsrc. Even
> + intentionally using foreign dependencies, not considered leakage,
> can + lead to these problems, so it is generally discouraged. In
> order to + minimize such problems, PREFER_PKGSRC defaults to "yes" on
> Linux systems.
> + This ensures that pkgsrc is aware of any changes to dependency
> packages
> + and can rebuild or upgrade the entire dependency tree as needed.
> This
> + default can be overridden by setting --prefer-pkgsrc to "no" or a
> list of
> + packages, or by setting --prefer-native to "yes".</para>
> </sect2>
> </sect1>
> </chapter>
I know this isn't a voting platform, but I'd like to voice support for this
proposal as a user of pkgsrc on both NetBSD and Linux.
The explanation as written here is good, the advantages are obvious, and the
guidance is clear.
Attachment:
signature.asc
Description: This is a digitally signed message part.