From b068d6aec8d308faeb33e328ed6f609790f98bd2 Mon Sep 17 00:00:00 2001 From: Hedy Li Date: Wed, 29 Sep 2021 11:36:27 +0800 Subject: [PATCH] envs: Add LD_LIBRARY_PATH and PKG_CONFIG_PATH I use ~/local for compiling packages without root. It emulates /usr/local, basically. So sometimes it might have .pc files etc in corresponding pkgconfig/ in there or .so files in corresponding lib/. I do this because I almost always don't have root, because I work on tildes primarily (tilde.cafe to be specific) so yeah. If a package is written in go or similar where building would be easy, the basic workflow is this: cd ~/local/src git clone git@example.com:user/repo cd repo make PREFIX="$HOME/local" install If all goes well the binary would be available at ~/local/bin. For apt packages there is a higher chance of build failing and most of them need other dependencies (plus some other historical reasons idk) so I don't use ~/local/src[1], here's the general workflow: cd ~/Downloads apt source pkgname cd pkgname ls -A less INSTALL ./configure --prefix=~/local make PREFIX=~/local make install PREFIX=~/local And most likely it would complain about some package not found in the configure step, in which case I woukd repeat the steps for that package. Eventually (if I hadn't given up yet), the binary would be sitting in ~/local/bin nicely. Sometimes the package needs a lot of dependencies, in that case it may take up a shit ton of disk space, so I would pack it in a .tar.gz so it can be saved for future use. For meson projects: cd ~/local/src git clone git@example.com:user/repo ls -A meson setup build meson compile -C build meson install -C build --destdir ~/local rsync ~/local/usr/local/ ~/local/ -avr rsync ~/local/usr/ ~/local/ -avr && rm -rf ~/local/usr I don't use meson often so I'm unaware of a way to easily specify PREFIX, if any. So that's my life of getting stuff installed without root. Thanks for coming to my ted talk. One day I'll probably copy this entire commit msg and make it into a blog post. --- .exportenvs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.exportenvs b/.exportenvs index c837020..dd7a013 100644 --- a/.exportenvs +++ b/.exportenvs @@ -27,3 +27,8 @@ export XDG_CONFIG_HOME="$HOME/.config" export XDG_DATA_HOME="$HOME/.local/share" export XDG_CACHE_HOME="$HOME/.cache" export XDG_USER_CONFIG_DIR="$XDG_CONFIG_HOME" + +# Paths +export LD_LIBRARY_PATH="$HOME/local/lib/x86_64-linux-gnu/:$HOME/local/lib" +export PKG_CONFIG_PATH="$HOME/local/lib/x86_64-linux-gnu/pkgconfig:$HOME/local/lib/pkgconfig" +