Архив на категория: Linux

Linux: installing global npm packages without using sudo (a.k.a. resolving EACCES permissions errors when installing packages globally)

1. Create a directory where global packages will be deployed:

mkdir ~/.npm-global

2. Set the newly created directory as default global directory for npm:

npm config set prefix '~/.npm-global'

3. Update the $PATH environment variable by adding this to your .profile file (in your user home directory) so that the terminal knows where to find the global packages:

export PATH=~/.npm-global/bin:$PATH

4. Reload environment in current shell by running (or just open a new one):

source ~/.profile

5. Test if the setup was successful by installing a package (without using sudo):

npm i -g jshint

6. And running it (should print out jshint version):

jshint --version

Stay healthy!

Git: Sample SSH config for multiple repos

Using multiple repos with Git (which relies on OpenSSH) terminal/CLI while keeping security a priority with separate keys requires an initial config. Here is a must-know „trick“ if you need similar setup. You will need to create a file called „config“ (yes, no file extension) in you .ssh/ folder. The sample file below provides more details.

# Alias
Host <host-name>

# Host domain or IP
HostName <host-ip/domain>

# (Optional) Username - when using SSH
User <host-username>

# Path to file identity file (i.e. private key)
IdentityFile <path-to-private-key>

In a scenario where we need access to both Gitlab and Github, an actual example would be:

# Github
Host github.com
HostName github.com
IdentityFile ~/.ssh/github_rsa

# Gitlab
Host gitlab.com
HostName gitlab.com
IdentityFile ~/.ssh/gitlab_rsa

This way when you try to execute a git pull from either GitLab or GitHub you will be using the appropriate key for the corresponding repo.

Cheers!