I am using devcontainer vscode extension to run my development environment under windows using WSL.
For some reason, this works great on my MacOS, but on my Windows machine (under WSL) using the same .devcontainer file, the /workspaces folder (which is mounted automatically by the extension) is being mounted as read only.
$ mount | grep workspaces
/dev/sdd on /workspaces/projectname type ext4 (ro,relatime,discard,errors=remount-ro,data=ordered)
This prevents me from creating or changing files giving this output:
$ touch a
touch: cannot touch 'a': Read-only file system
Any ideas on what is the cause of this issue and how it may be fixed?
Related
I recently moved my code repo from a One drive folder to my C: drive, trying to escape sync issues wiping files (thats another issue). Before doing so both my dev and prod compose files worked as expected (under source control).
Moving the files across (cloning from the repo and checking out to the branch) I ran my dev compose file which worked again as expected however my prod started complaining about "no such file or directory", "not found". I decided to snapshot the filesystem and check and could see the files and could cat the contents. So why is docker complaining?
My compose file does not use any hardcoded file paths, all relative and its evident the files are being copied across.
Compose errors:
exec docker/deployment/folder/scripts/run.sh: no such file or directory
Snapshot:
/app$ cat docker/deployment/folder/scripts/run.sh
#!/bin/sh
As previously mentioned this worked running from a diffirent local dir location. I can't imaging how that would make any diffirence.
Thanks in advance for any support.
Found the issue, vs code had updated the end-of-line sequence to crlf instead of lf.
I cloned a laravel-8 sail project via gitlab but everywhere in every folder which containing files there is a file which ends in .Identifier
I don't know where they come from. There may be 1000 files like this in the project.
My question is:
How can I get rid of those files which endr with .Identifier?
Is there some kind of Ubuntu or docker command that searches the entire project for such file which ends in .Identifier and then deletes them?
Maybe phpStorm has such a function?
If you are on Linux machine, then open terminal in you project folder and run rm *.Identifier. And if you are on Windows machine then open command prompt in your project folder and run del *.Identifier. This will do the trick for you.
When I start my development rails server I get this following message first. To my knowledge WSL2 is a virtual environment.
I would have expected it to now reference a Java directory that resides on my Windows host. Is this likely something I carried over in the project from when I was using WSL1? How would I safely correct this?
/home/daveomcd/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/railties-6.0.3.2/lib/rails/app_loader.rb:53:
warning: Insecure world writable dir /mnt/c/Program Files (x86)/Common Files/Oracle/Java/javapath
in PATH, mode 040777
I experienced the same problem when trying to fix the slowness of WSL2. The recommended solution was to move the files from the mounted NTFS drive to the root ext4 filesystem (using \\$wsl\<distroname>), so I did that.
I set up /etc/wsl.conf as below:
# Enable extra metadata options by default
[automount]
enabled = true
root = /mnt/
options = "metadata,umask=0033"
mountFsTab = false
[interop]
enabled = true
appendWindowsPath = true
And ran rails bundle to update dependencies.
Also make sure that your file permissions and owner settings are updated. Hope it helps.
Sorry, I'd love to make this more of a comment to see if I'm on the right track before committing to an answer. However, since there's too much info here for that, I'll make an attempt at getting you an answer here.
While it is a virtual environment, by default WSL provides several "Windows Interop" features that allow it to:
automatically mount Windows drives in /mnt/{c,d,...}
append the Windows path to the Linux path
run Windows executables inside Linux
share Windows environment variables with Linux (although this is not something that happens by default)
I can't be sure (long, long time since I've used Rails), but it looks like something in the app_loader.rb is checking permissions on Java directories in the path. It may be using some logic like "check each path entry and look for a java or java.exe there. If found, check permissions." Or something like that. That means that (2) and (3) above may be confusing it.
You can see this in action with which java.exe, which will likely return a Windows path. Or run notepad.exe, which will launch the Windows Notepad executable from within Linux/WSL (magic! 😉).
These are both very useful features, so I hate to disable them completely, but it's the easiest way to figure out if that's the problem. Create a /etc/wsl.conf with the following contents:
[interop]
enabled=false
appendWindowsPath=false
Exit your WSL instance and then:
(from PowerShell, CMD, or Windows Start) Run wsl --list --verbose to see the name of your distribution (most likely Ubuntu)
Likewise, run wsl --terminate <distro> to terminate that distribution.
Restart your WSL instance
Try running /mnt/c/Windows/system32/notepad.exe (assuming a normal C:\Windows installation) (should fail, since interop is disabled)
Try which notepad.exe (should fail, since the Windows path should no longer be appended to the Linux path)
Try to start your Rails dev server again - Might work (might not, I could easily be wrong about the root-cause here)
If it does work, then you can try to correct the situation with several less invasive methods than disabling those features entirely:
If you plan on only using WSL for your development, then you could remove the Windows JDK.
Or at least remove the Windows JDK from the PATH in Windows.
Or, if you want to keep it installed and in the Windows path, you could have a shell startup file (e.g. .bashrc) that removes it from the path only in WSL. I'll point you to this question which contains multiple techniques for doing so.
Or you could keep the appendWindowsPath=false in your /etc/wsl.conf but then add back in the paths you want manually in your startup config.
This is a two part question.
1) In windows, can a folder form any drive apart from C drive be shared? While surfing the internet, I found that by default only C drive can be mounted in docker containers. (Users folder of C drive)
2) Now coming to the main part - I am working on a camel project where I am using a config file. In this config file, I am using two parameters for Servicemix keystore files. Now previously the keystores are located at path - D:\sandboxes\apache-servicemix-7.0.0.M3\apache-servicemix-7.0.0.M3\etc\keystores.
I tried giving this path and it resulted in error -
File not found
I copied the keystores folder to C:\Users and then gave the path C:\Users\keystores but the error remained the same.
Now while running the docker run command, I am already mapping the volume where my camel project is - docker run -v //C/Users/camelproject:/app ...
So, is it possible to mount different folders from two drives using -v option? Also what shall I do to use these keystore files in my project?
Edit 1 -
Okay, so I did the following things -
Copied the keystores folder to my camel project in C drive. The path is now - C:/Users/camelproject/src/main/resources/keystores
Used this path in the config file as keyStore=C:/Users/camelproject/src/main/resources/keystores/client.ks
I am using this file in my camelcontext.xml as - <property name="keystore" value="${keyStore}" />
I mounted the folders as docker run -v //C/Users/camelproject:/app -v //C/Users/camelproject/src/main/resources:/app/config ... and then in the config file alternatively gave both, Windows and container path, as the value but for both it gave the same error.
So basically the file should be found but the error is coming.
So, is it possible to mount two drives using -v option?
No this is not possible you need to use multiple -v option for different directories.
Docker with windows volume mounting has some issues it will not allow " - " option in path. ( for example C:/camel-project )
And always use / slash not .
More related discussion is been done here.
https://forums.docker.com/t/volume-mounts-in-windows-does-not-work/10693/7
I am trying installing Delphi 5 on my computer. As soon as the installation starts I get:
Error copying File
followed by:
Setup has detected a -113 error while attempting to copy files. This
indicates that setup could not find a file in the "RunImage" directory.
Now the setup file does includes "RunImage" directory. The File is located in the D drive on another computer which I have mapped to my computer as Drive Z and I am running it from the Mapped Drive Z.
I searched online for this Error. Some recommend that if I am installing from a network location then the location has to mapped to my computer as a Driver with a name to solve the issue. I did map the location but still getting the same error.
As J.. already suggested in his comment: Windows >= Vista automatically runs programs containing the string "setup" in the name in elevated mode. In that mode, you don't have the same mapped drives as in your normal user mode. So, the program starts (which is actually inconsistent with security model, because in elevated mode, the executable itself should not be available) and then cannot find any additional files because the drive mapping does not exist.
Solution: Copy the whole installation directory to a local drive. You can delete it after the installation has finished.
Note: While I think this will solve that particular problem, it does not mean, that the rest of the installation will work.
i had same problem and i solved it by this method:
After unpacking the archive(the delphi5 zip file that you downloaded), make the root directory with the command Subst X: "path to installer". Run the standard Borland installer, the Install.exe program, there.