Util-Linux Archive on lore.kernel.org
 help / Atom feed
* RFD: --enable-bindir-path ?
@ 2018-08-26 17:54 L A Walsh
  2018-08-30  8:45 ` Karel Zak
  0 siblings, 1 reply; 6+ messages in thread
From: L A Walsh @ 2018-08-26 17:54 UTC (permalink / raw)
  To: util-linux

Was wondering about the addition of an "enable-bindir-path" which would 
only use
paths with /bin instead of /usr/bin for setups where /usr/bin -> /bin 
(like cygwin who mounts /bin and /lib on /usr/bin and /usr/lib -- using 
mounts instead of symlinks).  The've had that since the beginning with 
nothing being
installed in /usr/bin or /usr/lib.

Was also wondering why that wasn't chosen as a default for merging, since
/bin and /lib are almost always on the root file system so they are always
there, versus /usr/{bin,lib{,64}} which may need to be mounted before it can
be used...if it can't be mounted, having things in /bin & /lib pointed
to /usr won't work so well.

Anyway, just thought the option would be easy enough apart from other 
issues(?).

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: RFD: --enable-bindir-path ?
  2018-08-26 17:54 RFD: --enable-bindir-path ? L A Walsh
@ 2018-08-30  8:45 ` Karel Zak
  2018-08-31 22:55   ` L A Walsh
  0 siblings, 1 reply; 6+ messages in thread
From: Karel Zak @ 2018-08-30  8:45 UTC (permalink / raw)
  To: L A Walsh; +Cc: util-linux

On Sun, Aug 26, 2018 at 10:54:49AM -0700, L A Walsh wrote:
> Was wondering about the addition of an "enable-bindir-path" which would only
> use
> paths with /bin instead of /usr/bin for setups where /usr/bin -> /bin (like
> cygwin who mounts /bin and /lib on /usr/bin and /usr/lib -- using mounts
> instead of symlinks).  The've had that since the beginning with nothing
> being
> installed in /usr/bin or /usr/lib.

So for this use-case /usr should be ignored at all, right? What about PATH
setting? Is it also without /usr? What about man pages, docs?

I have nothing against this feature, but question is if it's important
enough to implement and support it ;-)

> Was also wondering why that wasn't chosen as a default for merging, since
> /bin and /lib are almost always on the root file system so they are always
> there, versus /usr/{bin,lib{,64}} which may need to be mounted before it can
> be used...if it can't be mounted, having things in /bin & /lib pointed
> to /usr won't work so well.

I think originally /usr was also on the same FS as /{bin,lib,...}.

Anyway, now this no issue as we use initram images where is all
stuff that is necessary to assemble usable hierarchy of filesystems
(including RAIDs, NFS moutpoints, etc.)

    Karel

-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: RFD: --enable-bindir-path ?
  2018-08-30  8:45 ` Karel Zak
@ 2018-08-31 22:55   ` L A Walsh
  2018-09-03 10:17     ` Karel Zak
  0 siblings, 1 reply; 6+ messages in thread
From: L A Walsh @ 2018-08-31 22:55 UTC (permalink / raw)
  To: Karel Zak; +Cc: util-linux

Karel Zak wrote:
> On Sun, Aug 26, 2018 at 10:54:49AM -0700, L A Walsh wrote:
>   
>> Was wondering about the addition of an "enable-bindir-path" which would only
>> use
>> paths with /bin instead of /usr/bin for setups where /usr/bin -> /bin (like
>> cygwin who mounts /bin and /lib on /usr/bin and /usr/lib -- using mounts
>> instead of symlinks).  The've had that since the beginning with nothing
>> being
>> installed in /usr/bin or /usr/lib.
>>     
>
> So for this use-case /usr should be ignored at all, right? What about PATH
> setting? Is it also without /usr? What about man pages, docs?
>   
----
    The use case for enable-usrdir-path is for cases where /bin->/usr/bin
/lib->/usr/lib, /lib64->/usr/lib, sbin->/usr/sbin,

conversely, the opposite would be where bin are in /bin and /usr/bin is
a symlink to /bin, and same for the libdirs and sbin.

    There is nothing in switch description about /doc, or /man being mounted
on /usr/<equiv>, so why would one move those around? 
> I have nothing against this feature, but question is if it's important
> enough to implement and support it ;-)
>   
---
    Well the sbin dirs are separate in cygwin, but /usr/bin is copy /bin
same for the lib dir.  It's really not that much to implement.  Only thing
it means is that if /usr is a separate partition, then during boot,
all your files in /bin, lib, lib64/ sbin...will be on the root, while and
boot can continue.  While if all the libs+binaries are /usr, it's hard to
mount.  So the use case is ensuring the system will boot?
>   
>> Was also wondering why that wasn't chosen as a default for merging, since
>> /bin and /lib are almost always on the root file system so they are always
>> there, versus /usr/{bin,lib{,64}} which may need to be mounted before it can
>> be used...if it can't be mounted, having things in /bin & /lib pointed
>> to /usr won't work so well.
>>     
>
> I think originally /usr was also on the same FS as /{bin,lib,...}.
>   
----
    Depends on what you mean by "originally", but back before linux,
originally there was no /usr, it came later for /usr files and home
dirs.  On it were application binaries for users, but binaries that were
not required for boot.


> Anyway, now this no issue as we use initram images where is all
> stuff that is necessary to assemble usable hierarchy of filesystems
> (including RAIDs, NFS moutpoints, etc.)
>
>     Karel
>   
----
    Who is this 'we' kimosami? ;^)

    Not me, nor anyone following the systemd recommendations for boot
speed.  My kernel is on a disk partition named 'boot' and it transfers
control to the 'root' partition that brings up HW, disks and network.
After that the rest of the system is brought up.

    Everything worked well until libs needed for 'mount' started appearing
on /usr.  If you had everything on a ram disk that was needed for boot,
but then the libs for some of the programs were out on the hard disk,
the ram disk would have a hard time proceeding as well. 

I don't have a different or separate /usr/{{s,}bin,lib{,64}} on a ram 
disk as
exists on my my hard disk, and /usr is usually too large for a
ram disk image.  So now how would one know when another part
of some boot program had been split off and put out on the disk /usr/lib?
Hopefully not by waiting until  it fails because at that point
it's a bit too late.

Does that answer your questions?

Cheers!
-Linda

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: RFD: --enable-bindir-path ?
  2018-08-31 22:55   ` L A Walsh
@ 2018-09-03 10:17     ` Karel Zak
  2018-09-04  9:41       ` Karel Zak
  0 siblings, 1 reply; 6+ messages in thread
From: Karel Zak @ 2018-09-03 10:17 UTC (permalink / raw)
  To: L A Walsh; +Cc: util-linux

On Fri, Aug 31, 2018 at 03:55:09PM -0700, L A Walsh wrote:
> conversely, the opposite would be where bin are in /bin and /usr/bin is
> a symlink to /bin, and same for the libdirs and sbin.
> 
>    There is nothing in switch description about /doc, or /man being mounted
> on /usr/<equiv>, so why would one move those around?

just asking to be sure

> > I have nothing against this feature, but question is if it's important
> > enough to implement and support it ;-)
> ---
>    Well the sbin dirs are separate in cygwin, but /usr/bin is copy /bin
> same for the lib dir.  It's really not that much to implement.  Only thing
> it means is that if /usr is a separate partition, then during boot,
> all your files in /bin, lib, lib64/ sbin...will be on the root, while and
> boot can continue.  While if all the libs+binaries are /usr, it's hard to
> mount.  So the use case is ensuring the system will boot?

There is so many ways how to keep different groups of users happy... ;-)

I don't care which is the best and I really don't making such decisions.
The defaults are usually about mainstream distros, but we don't ignore
another use-cases. If you have good use-case then I'm ready to support
it (well, if the change has not bad impact to the current behavior).

> > Anyway, now this no issue as we use initram images where is all
> > stuff that is necessary to assemble usable hierarchy of filesystems
> > (including RAIDs, NFS moutpoints, etc.)
> > 
> >     Karel
> ----
>    Who is this 'we' kimosami? ;^)
> 
>    Not me, nor anyone following the systemd recommendations for boot
> speed.

Blame systemd is good sport ;-), but in this case... we have had
ramdisks with usable mount(8) and another stuff for complicated setups
many years before systemd...

> Everything worked well until libs needed for 'mount' started appearing
> on /usr.  If you had everything on a ram disk that was needed for boot,
> but then the libs for some of the programs were out on the hard disk,
> the ram disk would have a hard time proceeding as well.

The current util-linux upstream default is to install mount(8)
to $bindir and --enable-usrdir-path is not enabled by default. The
default is to install libmount also to /lib if $libdir is a different to
$usrlib_execdir.

All you need is to specify --libdir=/lib

 $ ./configure --disable-makeinstall-chown --disable-makeinstall-setuid --libdir=/lib
 $ make install DESTDIR=/home/projects/util-linux/util-linux/xxx

 $ find /home/projects/util-linux/util-linux/xxx/lib
 /home/projects/util-linux/util-linux/xxx/lib
 /home/projects/util-linux/util-linux/xxx/lib/libmount.so.1
 /home/projects/util-linux/util-linux/xxx/lib/libblkid.so.1.1.0
 /home/projects/util-linux/util-linux/xxx/lib/libsmartcols.so.1.1.0
 /home/projects/util-linux/util-linux/xxx/lib/libuuid.so.1.3.0
 /home/projects/util-linux/util-linux/xxx/lib/libfdisk.so.1
 /home/projects/util-linux/util-linux/xxx/lib/libmount.so.1.1.0
 /home/projects/util-linux/util-linux/xxx/lib/libfdisk.so.1.1.0
 /home/projects/util-linux/util-linux/xxx/lib/libuuid.so.1
 /home/projects/util-linux/util-linux/xxx/lib/libsmartcols.so.1
 /home/projects/util-linux/util-linux/xxx/lib/libblkid.so.1

So, technically your use-case is already supported, although I agree
that it is not user-friendly and maybe explicit "enable-bindir-path"
would be better.

[The default install to $usrlib in Makefiles is autotools-ism around
 $prefix and we respect this woodoo ;-) I'd like to not change it
 because it always introduces new issues and the current solution seems
 well tested and it seems stable for years. I guess all we need is to
 make it more usable by ./configue.

 Maybe from long term point of view the answer is "meson" :-) ]

  Karel

-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: RFD: --enable-bindir-path ?
  2018-09-03 10:17     ` Karel Zak
@ 2018-09-04  9:41       ` Karel Zak
  2018-09-07  2:52         ` L A Walsh
  0 siblings, 1 reply; 6+ messages in thread
From: Karel Zak @ 2018-09-04  9:41 UTC (permalink / raw)
  To: L A Walsh; +Cc: util-linux

On Mon, Sep 03, 2018 at 12:17:25PM +0200, Karel Zak wrote:
>  $ ./configure --disable-makeinstall-chown --disable-makeinstall-setuid --libdir=/lib

I did a small improvement for systems where the default is /lib64, so
now --libdir=/lib should be unnecessary to install to /bin and /lib if
you follow the default settings.

Note that if you set --prefix or change any default setting than is
probably better to explicitly specify all the directories. For example
on Fedora we use

  ./configure --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu \
              --program-prefix= --disable-dependency-tracking --prefix=/usr \
              --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin \
              --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include \
              --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var \
              --sharedstatedir=/var/lib --mandir=/usr/share/man \
              --infodir=/usr/share/info --disable-assert \
              --with-systemdsystemunitdir=/usr/lib/systemd/system \
              --disable-silent-rules --disable-bfs --disable-pg --enable-chfn-chsh \
              --enable-usrdir-path --enable-write --enable-raw --with-python=3 \
              --with-systemd --with-udev --with-selinux --with-audit --with-utempter \
              --disable-makeinstall-chown

to get full control.

The option --enable-usrdir-path has been introduced to get proper $PATH.

    Karel

-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: RFD: --enable-bindir-path ?
  2018-09-04  9:41       ` Karel Zak
@ 2018-09-07  2:52         ` L A Walsh
  0 siblings, 0 replies; 6+ messages in thread
From: L A Walsh @ 2018-09-07  2:52 UTC (permalink / raw)
  To: Karel Zak; +Cc: util-linux

On 9/4/2018 2:41 AM, Karel Zak wrote:

Yeah, configure can be so tedious to use sometimes.
I set basic locations and the call common scripts to propagate settings
as defined in configure.  So specific tools will get some
specific paths, and I try to ensure the rest are set
accordingly. 
I try to default a bunch but based on previous settings, like (very
truncated list):

: ${exec_prefix:=${eprefix}}
: ${bits:=64}
: ${bindir=${eprefix}bin}
...
: ${localstatedir:=${prefix}var}
: ${includedir:=${exec_prefix}include}


Finally..I expand all the path stuff if the
associated var is set

declare -a path_ops=(
        ${prefix:+--prefix=$prefix}
        ${exec_prefix:+--exec-prefix=$exec_prefix}
        ${sharedstatedir:+--sharedstatedir=$sharedstatedir}
        ${sysconfdir:+--sysconfdir=$sysconfdir}
    )

Result is almost all of the paths being set...
I keep all the above in a common location.

For all the option toggling, I use 4 arrays:
    enable, disable, with and without, like:

declare -a enable=( readline select single-help-strings )
declare -a disable=(nls  )
declare -a with=( gnu-ld )
declare -a without=()

then below (config_ops already has path_ops rolled in):

for action in enable disable with without; do
  for op in $(eval echo "\${$action[@]}") ; do
    config_ops+=( $(echo "--$action-$op") )
  done
done

anyway -- some Q's on the versioning, but separate email...

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, back to index

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-08-26 17:54 RFD: --enable-bindir-path ? L A Walsh
2018-08-30  8:45 ` Karel Zak
2018-08-31 22:55   ` L A Walsh
2018-09-03 10:17     ` Karel Zak
2018-09-04  9:41       ` Karel Zak
2018-09-07  2:52         ` L A Walsh

Util-Linux Archive on lore.kernel.org

Archives are clonable: git clone --mirror https://lore.kernel.org/util-linux/0 util-linux/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 util-linux util-linux/ https://lore.kernel.org/util-linux \
		util-linux@vger.kernel.org util-linux@archiver.kernel.org
	public-inbox-index util-linux


Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.util-linux


AGPL code for this site: git clone https://public-inbox.org/ public-inbox