Proper directory for storing arch-independent data (bytecode)

Miloslav Trmač mitr at redhat.com
Tue Sep 16 15:49:43 UTC 2014


Hello,
----- Original Message -----
> Imagine a virtual machine, %VMNAME%, which executes a arch-independent
> bytecode. Where packager should store it? Most notable candidates are
> /usr/share/%VMNAME%, /usr/lib/%VMNAME%.
> 
> So far Java has /usr/share/java/, Perl uses %{perl_vendorlib}
> (/usr/share/perl5/vendor_perl), PHP uses /usr/share/php, R uses
> /usr/share/R/library, Ruby uses /usr/share/ruby/vendor_ruby,
> Javascripts are installed into %{_datadir}/javascript, Lisp is using
> %{_datadir}/common-lisp, etc
> 
> But
> 
> Python stores its arch-independent bytecode into
> /usr/lib/python?.?/site-packages/, Node.js prefers
> %{_prefix}/lib/node_modules, Mono is using /usr/lib/mono.
> 
> It seems that there is no consensus on this matter. I personally tend
> to agree with those who use /usr/share, but for example systemd stores
> everything in /usr/lib including arch-independent stuff.

/usr/share is appropriate per FHS.  Python is limited by the need for arch-dependent extensions: it is not possible to write a module which has arch-independent parts in /usr/share and arch-dependents extensions in /usr/lib*.  I don’t know about node.js and Mono.

systemd is not a good example: /usr/lib/systemd is really /opt/systemd and violating the FHS, and allowed in Fedora only because fixing it would be too difficult by now.
    Mirek


More information about the devel mailing list