pkgsrc-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: proposal to make bootstrap on Linux prefer pkgsrc by default.



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.



Home | Main Index | Thread Index | Old Index