-
-
Notifications
You must be signed in to change notification settings - Fork 386
Refactor installation instructions and update paths #4370
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
duantihua
commented
Jan 18, 2026
- In a Linux environment, libraries are installed by default to /usr/local/lib64
- Fix the inconsistency between /usr/local/include in the documentation and /usr/include in the scripts
- Fixed the copy error in the include library
1. In a Linux environment, libraries are installed by default to /usr/local/lib64 2. Fix the inconsistency between /usr/local/include in the documentation and /usr/include in the scripts 3. Fixed the copy error in the include library
|
Thanks for your pull request and interest in making D better, @duantihua! We are looking forward to reviewing it, and you should be hearing from a maintainer soon.
Please see CONTRIBUTING.md for more information. If you have addressed all reviews or aren't sure how to proceed, don't hesitate to ping us with a simple comment. Bugzilla referencesYour PR doesn't reference any Bugzilla issue. If your PR contains non-trivial changes, please reference a Bugzilla issue or create a manual changelog. |
|
I have no |
|
Part of the problem is that which set of lib folders a distro has is distro-specific. AFAIK, there is no standard that they all follow. They could have lib and lib64, or they could have lib, lib32, and lib64, or they could potentially have just lib. If they're there, lib32 is going to have 32-bit libraries, and lib64 is going to have 64-bit binaries, but lib could have either depending on the distro - though at this point, the odds are much more likely that lib will contain 64-bit binaries, since 32-bit is dying off. On my Debian 12 system, /lib, /lib32, and /lib64 are all present, and they're links to /usr/lib, /usr/lib32, and /usr/lib64 respectively. However, /usr/lib64 seems to only be there because of a single symlink to a library in /usr/lib. So, debian seems to really be set up to use /usr/lib and /usr/lib32 and not /usr/lib64. On my Arch system, /lib and /lib64 are present, and they're both symlinks to /usr/lib. There's then /usr/lib, /usr/lib32, and /usr/lib64, and /usr/lib64 is just a symlink to /usr/lib. So, Arch also seems to be set up with the idea that lib is for 64-bit libraries and lib64 is probably just for compatibility. So, based on both of those distros, it would seem that the correct thing to do would be to treat /lib and /usr/lib as being for 64-bit libraries and not use /lib64 or /usr/lib64 at all. But other distros may do things differently. Either way, if we're dealing with /usr/local, things get even murkier, because Linux distros don't normally use /usr/local for anything. Third parties may install stuff there when the files aren't being installed by a package, but because the distros don't have any files in there, they arguably don't define what should be done there either. So, it's debatable as to what the "standard" way to lay the files out is with regards to /usr/local/lib or /usr/local/lib64, but it seems like the way that things are going in general is to move towards treating lib as 64-bit and to not use lib64, because 32-bit is dying out. So, I'm not sure that making stuff that currently uses /usr/local/lib use /usr/local/lib64 instead makes much sense. |
I'm not a fan of littering system directories with third-party packages (unless packaging is done up to distro standards). |
|
opend instructs users to keep the downloaded package together and just put a forwarder in path. Everything else then works relative to the thisExePath. Advantages include:
Disadvantages include:
I have never "installed" a D compiler in all the time i used it. The advantages are compelling to me. (Actually fun fact, that's why I used Digital Mars C++ back in the day too: I could install it without admin access on the computer. I burned it to a CD-ROM and used it right off that disc, a truly portable install lol.) |
Considering adapting to a wider range of Linux distributions, I changed /usr/local/lib64 to /usr/local/lib.
There is indeed no such directory on Ubuntu 22, I encountered it during installation on CentOS. I have looked up some information, considering the wide distribution of Linux,/usr/local/lib seems more suitable.And submitted a restoration for repair. @jmdavis Thank you for your explanation regarding the role and considerations of lib on different Linux systems. |