ROS/ROS 2 on non-ubuntu platforms [closed] - fedora

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 months ago.
Improve this question
I was thinking to learn ROS and I realized that officially ROS only supports ubuntu. I am habitual with another Linux distribution, i.e. Fedora.
So I was wanting to know, that if I install ROS on fedora(which is listed as experimental by the community). Will it work as smoothly and with all available resources/packages/options or not?
Also, the ROS 2 Foxy Fitzro is available on windows, is it fine to use that? or I might some lack of support?
I read somewhere that ROS on other platforms doesn't have all packages and similar problems

Some packages used in ROS are not currently available in the Fedora RPM repositories. Most of the other packages are available in RPM Fusion.Please see RPM Fusion Command Line Setup.
the ROS 2 Foxy Fitzro is available on windows, is it fine to use that?
Yes, ROS 2 Foxy Fitzro is available on windows, but the pre-built binary does not include all ROS 2 packages. All packages in the ROS base variant are included, and only a subset of packages in the ROS desktop variant are included.

This answer concerns only the Fedora section. It works on Fedora 33.
I am not a ROS expert so I can't answer this question:
Will it work as smoothly and with all available resources/packages/options or not?
But I prefer not to be too optimist. If you only want to test ROS it might be fine. But if you are looking for a production development, you should better use Ubuntu instead of losing time to tweak ROS for Fedora compatibility.
However, it is possible to run ROS on Fedora. I was able to run the demo_nodes_py in talker and listener mode. This is the ROS hello world.
Build the source
There is no package to install ROS in one simple command nor I was able to run the CentOS "fat archive". I got errors, I didn't invest more than 15 minutes to solve them. Information on the internet was poor.
The only solution I found so far is to build ROS from the source. The operation was not complex as it is fully documented: https://index.ros.org/doc/ros2/Installation/Foxy/Fedora-Development-Setup/
Note that it took around 2 hours to compile.
Be aware that the compilation might require lots of skills especially when it fails.
Virtualization
Those solutions should even work with other Linux distributions.
Use Docker
You can download this image: https://hub.docker.com/_/ros
If you have already installed Docker and you are familiar with it, it seems a fair solution. It works out of the box and the image webpage is fully documented.
Thanks to the docker volumes, it is possible to develop the code and read the logs from withing your Fedora environment and to run the ROS application within the debian container.
Also, you can connect the containers to your system localhost (on Fedora). It allows to send and receive messages. As an example, I was able to interact in those 2 contexts:
talker (Docker) <-> Listener (Fedora from source)
talker (Fedora from source) <-> Listener (Docker).
Use a Virtual Machine on Ubuntu
This sounds the safer way to use the full potential of ROS. But a VM will require more disk space, more computation and you should learn the Ubuntu style to work within the VM.

You can use it for simple level operations without any problems, but when it comes to more specific issues you are very likely to run into weird problems. The solutions to these problems can be very complex. So it would be much safer to download it to ubuntu somehow.

Related

How to run BIOS from 386 motherboard in qemu? [closed]

Closed. This question is not about programming or software development. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 14 days ago.
Improve this question
I'm trying to start a dd-wired hard drive with the following command:
qemu-system-i386 -drive format=raw,file=dos.img
And it works great:
However, if you try to load an external BIOS, none of the BIOS images in any way wants to start. The emulation system tells me the following message:
Guest has not initialized the display (yet)
And Tried various ways to start, so far the command is this:
qemu-system-i386 -machine pc -bios SER386AD3.BIN -vga cirrus
What am I doing wrong and what are the solutions?
I tried to run the old BIOS in the qemu emulation system.
You shouldn't expect to be able to run a real hardware BIOS image on QEMU. Generally speaking, BIOS binaries are tightly tied to the specific hardware that they are running on (eg which specific motherboard chipset is used on the motherboards they were built for). Even if the BIOS is intended to work with the i440fx or q35 chipsets that QEMU emulates, it may also try to exercise hardware features which QEMU doesn't emulate (because no higher-than-BIOS-level code needs to touch them), or touch motherboard-specific hardware. It's likely that the BIOS has crashed before it was able to get to the point of enabling the display.
The intended BIOS for QEMU is one which is aware of QEMU, such as SeaBIOS (which is the default).

Is it possible to run "mysqld" without installation in Linux? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 7 years ago.
Improve this question
I have run mysqld.exe in Windows to run the server without installation. I am able to connect to it via a client and everything works fine.
Is it possible to do the same in Linux? Can we run mysqld without complete installation of the whole MySQL package. I tried several ways but failed.
Q: Is it possible to run “mysqld” without installation in Linux?
A: Short answer: no.
The mysqld executable depends on shared libraries, and on runtime configuration of several different files in several different locations.
Q: Is it possible to create an embedded mySQL configuration, in lieu of the standard install?
A: Depending on your requirements, this might be something you wish to investigate:
https://www.mysql.com/oem/
The Bitnami stack provides what you need.
https://bitnami.com/tag/mysql
Basically, they provide self-contained packages for the different services that are normally available through apt, yum or any other packages manager. I use it for example to install Redmnine (BUG tracking system) and the installation was straightforward.
The good thing is that the installation process doesn't affect your current system (packages, shared libraries etc) since all the dependencies: packages, shared libraries, etc are installed in a single directory. Thus, it's very easy to install, test and delete the whole thing easily if you would like to.
Depending on what you mean by "without complete installation of the whole MySQL package"... the answer is yes.
As a DBA, I don't trust package management to manipulate my MySQL installations, so I never install MySQL Server from package management.
I manage everything myself, and essentially everything is stored under /usr/local/mysql from the Linux Generic binary tarball. There is nothing really "installed" in the sense of mystery files added who-knows-where on the system. Upgrades involve extracting a new tarball and creating a new symlink for the datadir.
The only external dependency is easily resolved with $ sudo apt-get install libaio1.

Running another MSI through visual studio installer

I want to install MySQL installer msi with my setup.(MySQL installer has to install silently. I am using batch file in custom action to do this.)
However, the problem is that MySQL's msi cannot be run from within main setup.msi it gives out 1618 error(Another installation needs to be completed.) I would like to know an easy way around this.
Background info: MySQL installer unpacks the manifest which contains MySQLInstallerConsole.exe it is then called through another cmd command to install MySQL.
So all I am looking to do is to execute MySQL installer so that it unpacks the manifest. Later I would call the MySQLInstallerConsole.exe to install MySQL through custom action.
Just to mention even more possibilities- some my colleagues mentioned (VS bootstrapper, burn):
Just start writing a batch or script for calling the two MSIs after each other.
Always a good starting point maybe, if you have no experience with MSI.
Write your own mini setup.exe bootstrapper with 5 lines of code to do the above.
(To be more concrete in "Third party tools":) Buy InstallShield or Advanced Installer or InstallAware, this are the tools with ready GUIs to do such easy bootstrapping.
I would recommend the second out of them. Starting another MSI are only two clicks. Similar with the other. But there are BIG differences between the three, especially InstallAware is special.
! Mentioned "mini bootstrappers" of those tools are not as powerful as Burn or the others followed:
Buy the ready setup suite SetupFactory which can be used as a bootstrapper for MSIs.
Use the InstallShield "Suite" project type, if you buy the Premium Edition of InstallShield. Costs big bucks, but has a friendly user interface. I was successful using it before some years, but I had to work around a handful of bugs as always with IS (but I guess you will discover bugs with most tools. Way it is.)
There (again) Burn would come in handy, you could fix potential bugs or behaviours on your own here ...
Only it could take you more time in the beginning.
... Of course there may be more.
There isn't an easy work around. Windows Installer enforces a 1 installation at a time rule through the use of a mutex. You need to create a bootstrapper / chainer to serialize the installation of your packages. Visual Studio Deployment Projects don't support this. I'd suggest looking at Windows Installer XML (WiX) and it's Burn boostrapper / chainer engine.
The documentation is a bit sparse, but in the Visual Studio world the customized bootstrap is the Bootstrap Manifest Generator. The docs start here:
https://msdn.microsoft.com/en-us/library/ms165429.aspx
and there is an old article here:
https://msdn.microsoft.com/en-us/magazine/cc163899.aspx
but it's not clear how much info and support is available since setup projects were removed from setup projects and then restored.

Open Source Application Server Solution

A project with the following technologies and components has surfaced: to up a Web stack solution initially composed with Ubuntu, JDK, JBoss, Spring MVC 3.0+, and MySQL.
In planning this project, I have been struggling to find answers to the following questions for first steps, best practices, and sequence:
1) Does the JDK (and JBoss) need to be installed as ‘root’? (I have seen articles that mention it is not a good idea to operate in root unless absolutely necessary due to the fatal consequences.)
2) Does Ubuntu need to be installed as a Server in order to accomplish all this, or can it also be installed as a Desktop? I have not been able to determine if having a JBoss and MySQL need to be installed on top of Linux as a server.
3) Does Maven need to be used within Spring STS in order to get JBoss, and MySQL (and in the future Hibernate) to work successfully together?
4) My intent is to install in this order: a) Ubuntu -> b) Java -> c) JBoss -> d) Spring STS -> and e) MySQL. Are there any blatant conflicts in this sequence?
JBoss will require Java (recommend Java 7) before it will do anything. I don't think it really "installs" per-say, but rather just unpacks to some directory (even if you install from the package manager, it just really extracts itself). I question your need for Spring since JBoss and Java EE in general really does everything Spring does, and better now-a-days. Unless you have a specific requirement for Spring, I'd question this extra dependency.
For linux - in a high level, any OS can be a "server", all it needs is to be capable of serving things (web pages, ssh connections, etc). In M$ world, different "levels" of the OS have been specially designed based on anticipated task/workload. So for example, while Windows 7 can indeed run as a server, it was not designed for it and therefore may not be optimized or include helper utilities and tools to make life easier as a sys admin of the system. Windows Server on the other hand does include all the "normal" server tools and lots of goodies to make maintaining and setting the server up easier.
In linux land, this is no such thing. Linux is the kernel that talks back and forth with the bare metal, etc... and Distro makers will take that and build an OS around the kernel, basically just attaching any packages they feel their distro needs... such as wget, or cat, or any other standard userland apps, plus some non-standard such as mysql or java or whatever they want.
Now, some distributions of linux will tailor themselves at being "server" ready, while others will tailor themselves at being a desktop OS. The difference? It's really just whatever default packages the distribution maker decides to include or not. For example, the overwhelming majority of linux servers are run completely headless, and therefore there is absolutely no reason to have X11 and a huge bloated GUI environment installed and/or running on that system... it's pointless. Also, an "average joe" user does not need MySQL installed by default on his desktop system since it would only bloat his system and he likely won't ever use it.
So basically it comes down to default installed packages.
Some linux server distros take this further and exercise extreme caution when making updates, patches, or new releases in the name of stability and security, while on the other hand most desktop distros are more haphazard with their updates since if it breaks a home users web browser, it's probably not a huge deal... but if a server update breaks the webserver application stack, now that's a serious problem.
So you'll find server OS's like CentOS (based on upstream RHEL) are extremely slow to bring in the "latest and greatest" features that desktop OS's get early on. Their goal is high security and long term stability.
Now, for Ubuntu. While I certainty know a lot of folks run Ubuntu as their server OS choice (partly due to Amazon choosing Ubuntu as the default linux VM for their ECS cloud), but I'd really question this. Ubuntu is not focused on being a server. It's focused on being a great all-around desktop oriented OS. Yes the LTS version is meant for long term stability, but it's based out of a desktop OS, so it's still not the focus.
IMHO, I'd go with CentOS because it's free and completely binary compatible version of RHEL - and RHEL is the de-facto standard for enterprise-grade linux servers. Be aware though, the RHEL way of doing things is a bit different than the debian way -- so there is no apt-get, you must use yum install instead. Startup scripts are different and some ways of doing things are different, but really, once you know linux, you know linux.
EDIT: Also check into Jenkins - its a free opensource continuous integration system that runs on JBoss or Tomcat or any other container, and can automagically pull your code from a repo (github, git, svn, etc) and compile/package it then push it to live deployment. You setup your ANT or Maven build scripts, and it can kick off on a schedule or however you configure it.
EDIT EDIT: I'd also recommend using OpenJDK -- as it's likely included in your package manager (for just about every disto) and will be more updated than the oracle version if it's in your package manager too. I've found most "server" distros will have OpenJDK 7 while only having Oracle java 6 in their package managers. Also, installing it via the package manager will enable you to keep it updated a ton easier.
Installed as root, why not? Run as root, probably not a good idea.
If you want a desktop, install a desktop distrib. If you want a server, install a server distrib. This doesn't change what can and can't be run in the OS. It only changes what is installed by default.
Maven is a build tool. JBoss doesn't care how you build your app. All it cares about is if the application you deploy is a valid Java EE application.
No. You need an OS, so Ubuntu must come first. JBoss and (AFAIK) Spring STS need a JRE to run, as they're Java applications, so Java should be installed before them. MySQL is independent of JBoss, STS and Java, so you can install it whenever you want.
Note that if you're struggling just with this installation part, be prepared to suffer with the rest. Building a Java EE webapp is not a piece of cake, and you should probably find some experienced developer to help you, as it seems you're only beginning with Java.

installing mysql on cygwin [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
I am trying to install mysql using cygwin. This guide seemed to be exactly what I wanted. I downloaded the bottom item on this page. Then I followed all the instructions however there is no configure file in the mysql directory. There is a cmake directory inside of which there is a configure.pl file. I'm not sure if I'm supposed to run make to compile this .pl file. Given that there are no make files I'm a little confused on how to proceed. Any insights would be awesome.
Why would you install MySQL under Cygwin when there is a perfectly fine Windows version available? Also the version you said you downloaded is for OS X, while Cygwin emulates Linux.
I advice you to use the Windows version because it will probably be far more stable, fast, etc, etc, due to the fact that you don't need to emulate nothing. Further if there is some reason you need to run it under Cygwin use the Linux binaries.
Cygwin lets you choose some binaries to be installed for you at install time, and maybe MySQL is amongst them, so if you rerun the Cygwin installer you might get lucky and avoid the trouble of compiling / configuring MySQL yourself.
Also; This question probably belongs on https://serverfault.com/ or https://superuser.com/ =)