How to install applications on a windows docker container? - windows

I'm trying to create a Docker container based on the abrarov/msvc-2019 (windows based) image and I need to install additional programs such as Conan.
In the Dockerfile, what do I need to write in it to be able to install Conan? I can't just use something like "apt install" since Windows doesn't support anything of the sort. I can't find anything online about this.
I tried downloading the .exe installer locally and copy it inside the container, and then run the .exe during the building of the image. Something like this :
COPY conan-win-32_1_33_0.exe C:\\
RUN conan-win-32_1_33_0.exe;
But the image doesn't finish building and it's just stuck in the RUN part.

The most recommended way is using pip:
pip install conan
Another official ways are listed on download page. But as you listed, Windows installer is the another way.
For Windows you still can try Chocolatey, but it's not maintained by Conan team.
In the past we tried something similar and worked, a MSVC 15 Docker image with Conan. However, due Visual Studio license, we can't build images for distribution. You could fork the project and use it for your own propose.

Related

How can I run Go code with Bazel on Windows platform on my Mac?

I have to test Go code using Bazel on Windows Platform to make sure the tests pass on Windows too. However, I have a Mac machine. I have tried VirtualBox/Vagrant setup and shared the directory. I can get Go to work there too. Bazel gives some version conflict with Visual Studio, but I have a workaround with go test.
Is there a known Windows image for Mac that has Golang, Bazel, etc all setup already that I can simply docker run or something?
I would use an image like filipesilva/bazel-windows-docker-container, made to include bazel.
You can modify its Dockerfile to include a Golang binary archive (like go1.15.7.windows-amd64.zip) you simply unzip under %USERNAME\go
You should end up with a Windows image, to run on your Mac through VirtulaBox, or using a vagrant environment, as described in StefanScherer/docker-windows-box/.

How to release/publish a .Net Core console application?

I have a console application that I want to publish for Windows and Ubuntu so end user can install and use it easily. The intended user is not a developer but able to use a CLI.
I can generate a release build with dotnet publish and zip it.
What is the release channel then?
Should I build a --self-contained release?
How is my tool placed into the $PATH on the users machine?
Should I provide an installer for Windows and a PPA for Ubuntu?
In general, a command for publishing console app is dotnet publish -c Release -r win10-x64
You should change win10-x64 by correct rid which belongs to OS such as linux-x64, osx.10.14-x64
What is the release channel then?
It depends, if it is running on Window or Linux, it will be .exe file
Should I build a --self-contained release?
--self-contained makes you to isolate any 3rd libraries and a release package. If you aren't sure the host doesn't install any 3rd libraries, so --self-contained will help you. Thus a build will be larger than.
How is my tool placed into the $PATH on the users machine?
Once again, it depends on your target OS. Each OS has a different way to set $PATH. And if you want to custom a cli as dotnet or npm, check in the link Custom commands in windows Command Prompt
Should I provide an installer for Windows and a PPA for Ubuntu?
If you are DevOps Engineer, so you don't want it because it isn't friendly with CLI. You want only release package.

Running qtcreator 4.0.1 on a lxc-container

Using this link I created a container and after getting some packages, I want to start a qtcreator 4.0.1 on it. I use a ssh connection to connect to the container. After launching qtcreator I get an error such as this:
This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".
Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, xcb.
Reinstalling the application may fix this problem.
I installed all prerequisites packages as listed here but still the problem is remained.
I must mention that I am using a privileged container in opposite of the link.
xcb listed as available plug-ins but it does not run. Is there any suggestion to get around this bug?
This answer has the main solution. In my case I find the libqxcb.so in path /path_to_qt/plugins/platforms/ and after running ldd command on it I found that it has not one of its dependency libEGL.so after install this package using sudo apt install libegl-mesa0-dev I could run qtcreator.

How do I manually install an old cygwin package?

A project I am working on requires an old version of SLAPD (the LDAP
server) and must run on Windows, hence I am using cygwin packages:
I've found a binary package of slapd version I need 2.2.x here:
http://www.mirrorservice.org/sites/sourceware.org/pub/cygwin/release/...
How do I manually install it in cygwin? It does not seem to be a package-manager file format (like an RPM or a Deb), but is there a tool to install it for me?
FYI, I'm operating behind a corporate firewall that prevents me from viewing the main cygwin site (including the documentation), so please nobody tell me to RTFM - I wish I could!
Thanks
If you need an older version, the Cygwin time machine might help. To use it, I had to invoke setup.exe from the command line, giving it the --no-verify/-X option and it still wouldn't let me downgrade the "cygwin" package itself but at least it is, albeit very slowly, allowing me to install the version I wanted to test as a parallel installation.
If you are using the cygwin package installer to install this package, usually if you select to view the full info and scroll to the package you need you will see some info about the version.
Now if you click on the version number you will see that it changes from the oldest in the repository to the current. If your repository has the version you need then just finish the wizard.
Some cygwin mirrors keep old package files, for example, http://mirror.isoc.org.il/pub/cygwin/
You can use Sonatype nexus to mirror an existing cygwin repository, but provide your own setup.ini .
Copy the already downloaded repo content to c:\progs\nexus\sonatype-work\nexus\storage\mirror.isoc.org.il-pub-cygwin\
Put your own setup.ini and setup.bz2 there.
Start setup.exe with --no-verify
Paste
http://localhost:8081/nexus/content/repositories/mirror.isoc.org.il-pub-cygwin/
into the mirror selection box and click "Add"

How can I create Debian install packages in Windows for a Visual Studio project?

I'm developing some cross platform software targeting Mono under Visual Studio and would like to be able to build the installers for Windows and Linux (Ubuntu specifically) with a single button click. I figure I could do it by calling cygwin from a post-build event, but I was hoping for at best a Visual Studio plugin or at worst a more Windows-native way of doing it. It seems like the package format is fairly simple and this must be a common need.
edit: Re-asked question under other account due to duplicate login issue.
Debian's .deb packages are just "ar" archives containing tarballs. You can manipulate both types of files using cygwin or msys quite easily:
$ ar xv asciidoc_8.2.1-2_all.deb
x - debian-binary
x - control.tar.gz
x - data.tar.gz
$ tar -tzf control.tar.gz
./
./conffiles
./md5sums
./control
Or you can install all the "standard" Debian stuff using cygwin, I suppose, but most of that stuff won't benefit you much if you're building a .Net app anyway.
If you use the .NET Core SDK, you can use dotnet-packaging tools to create a Debian installer package from any platform that runs .NET Core.
For example, running dotnet deb -c Release -f netcoreapp2.1 -r ubuntu.16.04-x64 would then create a .deb file which you can use to install your app on Ubuntu 16.04.
The project repository has more details.
I am not aware of any plugin that does it natively, especially since Mono users seem to prefer MonoDevelop.
However, it should be possible to use Cygwin and a custom MSBuild Task or Batch file in order to achieve that by using the native .deb creation tools.
this must be a common need.
Some small percentage of software developers develop for .NET
Some very small percentage of that group develop for mono
Some small percentage of that group wants to provide .debs instead of just a zip
Some very small percentage of that group wants to build their linux apps on windows instead of natively on linux
It's just you :-)
If you don't mind using Java tools it's possible to build Debian packages with jdeb in an Ant script. That's probably lighter than relying on Cygwin.

Resources