Skip to content
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

Use temporary directories #29

Closed
spelunk opened this issue Sep 2, 2018 · 14 comments
Closed

Use temporary directories #29

spelunk opened this issue Sep 2, 2018 · 14 comments
Labels
bug Something isn't working enhancement New feature or request
Milestone

Comments

@spelunk
Copy link

spelunk commented Sep 2, 2018

$ terminalizer render foobar
Error: 
  EACCES: permission denied, mkdir '/usr/local/lib/node_modules/terminalizer/render/frames'

Skimming the code, places hardcode the relative render/frames/ directory. These probably should be stored in a temporary directory using a module like tempfile

@faressoft
Copy link
Owner

@spelunk I will consider storing the files in the temporary directory

For now you can solve the issue by fixing the npm permissions

chown -R faressoft /usr/local/lib/node_modules
chown -R faressoft /usr/local/bin
chown -R faressoft /usr/local/share

Change faressoft to your username.

@faressoft faressoft added the enhancement New feature or request label Jan 26, 2019
@faressoft faressoft added this to the v0.7.0 milestone Jan 26, 2019
@David-OConnor
Copy link

Fix doesn't work for me.

@paralllax
Copy link

If anyone still needs a work around, this worked for me.

sudo chown -R <user> /usr/lib/node_modules/terminalizer/render/
sudo chmod 4775 /usr/lib/node_modules/terminalizer/node_modules/electron/dist/chrome-sandbox

@rsalmei
Copy link

rsalmei commented Aug 14, 2020

This is very bad. Using 0.7.2 and still doesn't work.

@volcan01010
Copy link

Using Ubuntu 18.04, I got Terminalizer to work as follows:

# Install npm (requires dependencies)
sudo apt install npm node-gyp nodejs-dev libssl1.0-dev

# Install terminalizer globally
sudo npm install -g terminalizer

# Remove the electron that comes with terminalizer
sudo rm -rf /usr/local/lib/node_modules/terminalizer/node_modules/electron/

# Add electron globally - based on this SO answer https://stackoverflow.com/a/52033822/3508733
sudo npm install -g electron --unsafe-perm=true --allow-root

# By this point, I could record and play sessions, but got the error in this issue when I tried to render them.
# Symlink the hardcoded rendering path to where terminalizer is actually installed on Ubuntu
sudo mkdir -p /usr/lib/node_modules/
sudo ln -s /usr/local/lib/node_modules/terminalizer/ /usr/lib/node_modules/terminalizer

# Do the workaround above
sudo chown -R <user> /usr/lib/node_modules/terminalizer/render
sudo chmod 4775 /usr/local/lib/node_modules/electron/dist/chrome-sandbox 

Thanks @faressoft and @paralllax!

@volcan01010
Copy link

I've created a Gist with these instructions and also instructions for Ubuntu 20.04.

https://gist.github.com/volcan01010/6fcf7ae1f4975474ba9aac27efe17b84

I gave a thumbs down to the workaround above (chown /usr/local...). These files are owned by root for security. This would be an especially bad idea on a shared system.

@rsalmei
Copy link

rsalmei commented Aug 22, 2020

Hey @volcan01010 ,

Using your exact steps in ubuntu 20.04, I got:

Error:
  Error: /usr/local/lib/node_modules/terminalizer/node_modules/electron/dist/electron: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directory

I obviously tried to sudo apt install libnss3, which even having worked, has led me to:

Error:
  Error: /usr/local/lib/node_modules/terminalizer/node_modules/electron/dist/electron: error while loading shared libraries: libgdk_pixbuf-2.0.so.0: cannot open shared object file: No such file or directory

Which I resolved with sudo apt install librust-gdk-pixbuf-sys-dev, but then led me to:

Error:
  Error: /usr/local/lib/node_modules/terminalizer/node_modules/electron/dist/electron: error while loading shared libraries: libgtk-3.so.0: cannot open shared object file: No such file or directory

And then I've given up. Are you sure you had a clean machine? I've just started this one on aws, and those instructions don't work.
Thanks anyway.

@spelunk
Copy link
Author

spelunk commented Aug 22, 2020

Messing with system folder permissions is not a great approach. @faressoft is there a specific reason why you have to write to a potential system folder rather than a temp folder or the current directory?

@rsalmei
Copy link

rsalmei commented Aug 22, 2020

I've just found out this also makes it impossible to open two shells and start two render processes simultaneously!
I was at a very slow rendering, with more than 3000s still to go when I tried to speed things up and render another one in another shell... Bad mistake, to my astonishment it not only didn't work but also broke the first one!! 😞

@Licenser
Copy link

Licenser commented Oct 8, 2020

+1 to fixing this, it sadly makes it super hard to use terminalizer on a linux system

@nick4fake
Copy link

@faressoft are you serious? Everyone, never do something like that.

As for this issue tools should not try to write anything to library paths. chmod solutions is something temporary before there is a real temp directory fix.

As another temporary solution we could symlink /usr/lib/node_modules/terminalizer/render/ to /tmp or some user folder (once again, this still is not something npm users should really do).

@xsebek
Copy link

xsebek commented Oct 1, 2022

@faressoft could you please at least handle the issue gracefully with a message like:

Error:
  Missing access to global installation folder ('/usr/local/lib/node_modules/terminalizer/render/frames').
  Please see https://github.com/faressoft/terminalizer/issues/29 for a workaround.

I would like to use terminalizer globally, so local installation where permissions are correct (?) does not work for me.

The GIF rendering is the main reason I want to use terminalizer and this makes it needlessly harder. 😞

@festum
Copy link

festum commented Mar 13, 2023

Why I'm still facing this issue it's 2023!

@faressoft faressoft modified the milestones: v0.7.0, v1.0.0 May 26, 2023
@faressoft faressoft added the bug Something isn't working label May 26, 2023
@faressoft
Copy link
Owner

Fixed in #226

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working enhancement New feature or request
Projects
None yet
Development

When branches are created from issues, their pull requests are automatically linked.

10 participants