Install4j: Unix Installer causes bin/unpack200: not found - linux

we use a setup, created with install4j (we still use 5.0.11). On a new local unix machine (Linux version 3.8.13-44.1.4.el6uek.x86_64) this setup failed, the log shows:
Unpacking JRE ...
micsetup.sh: 210: micsetup.sh: bin/unpack200: not found
Preparing JRE ...
Error unpacking jar files. The architecture or bitness (32/64) of the bundled JVM might not match your machine.
Searching for this error I found this:
the program tries to run the file /bin/unpack200 which does not exist. However, the file /usr/bin/unpack200 does exist. This is due to the fact that this file is in different places depending on the architecture of the machine used - if it is 32bits, it is in one place, if it is 64bits, it is in the other. I am having this problem because the file was made to run on a 32bit architecture but I am using a 64bits machine. Therefore to fix this problem one must install 32bits libraries.
After running
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
our setup works.
My question: is there a way to configure the "Unix installer" in install4j to build the setup, that it works on 64 bit Linux systems like the mentioned without installing additional libraries on this system? I think not all of our customers would allow this.
Thanks in advance!
Frank

No, there is no such functionality in install4j. Bundling JREs on Linux is generally problematic.
One strategy would be to offer installers with 32-bit JRE and installers with 64-bit JREs.

Related

E: Unable to locate package ea-utils | Ubuntu 18.04

I am following this tutorial. I already have .fastq files. I want to install ea-utils.
My setup is Ubuntu 18.04 bionic, via Oracle VM Virtual Box.
In terminal, I entered the command:
>>>sudo apt install ea-utils
E: Unable to locate package ea-utils
First, I installed latest Ubuntu updates via. Software Updater.
Then,
>>>sudo apt-get update
E: Some index files failed to download. They have been ignored, or old ones used instead.
Still throwing an error:
>>>sudo apt-get install ea-utils
Second command said: E: Unable to locate package ea-utils.
You cannot install it using Git-Bash. Git-Bash is not a Linux environment (apt-get is a Linux utility that can be used in a Linux environment). Git-Bash is a subset of the MSYS (or MSYS2, not sure) collection of open source tools compiled for Windows
What you can try is
build your own version of ea-utils for Windows. build guide - I will elaborate if required
check if there are any precompiled binaries for it
Expanding on building/compiling your own binaries of programs
Normally a program is written in a programming language (e.g C/C++, Java) that humans can read. These are plain text files.
That is compiled into something computers can read
This compiled file is executable on the platform which it is compiled for - ends in .exe for Windows
This executable file is distributed as a 'precompiled binary' that is copied into (usually) C:\Program Files by the installation procedure
But things change in the world of open source software
You are given the original files of code written in a programming language
You use a compiler combined with other libraries to compile it into an executable file
MinGW is a collection of tools, including the C/C++ compiler for Windows
GSL is a library that provides some other code that ea-utils depends on for the compilation of the binaries
General instructions for building
(Sorry I cannot test these. I do not use Windows any more)
Install MinGW - accepting the defaults should work fine
Install GSL - try the link that says Setup (again, accept defaults)
Unzip the file you downloaded earlier from ea-utils' GitHub
Open command prompt
cd into the unzipped folder
(based on instructions on their wiki) make
make test
Since your updated question is based on using Ubuntu 18.04 in a VM and you there is still an error, I suggest trying
sudo apt-get update
sudo apt-get install ea-utils
Commonly, software in the Linux word is distributed as "packages" - e.g ea-utils. The first command contacts Ubuntu's repositories (they serve the packages) and generates a list of all the available packages.
That should fix the error of ea-utils not being found.
Following the constant errors being thrown,
Download the .deb file 64-bit version or 32-bit version according to the virtual machine you are running. Open it inside the virtual machine, and follow the onscreen instructions.

make-kpkg not working in Fedora 20

I have been working with Linux kernel, compiling and inserting modules, in my custom kernels. Previously I had Ubuntu where I had been working with my custom kernel and all the commands for compiling and installing kernel worked like a charm once I had installed all the required libraries.
Now I have switched over to Fedora 20, here I want to install my custom kernel and for that I downloaded all possible kernel tools, namely, Kernel Development Kernel Tools these are group installs and other libraries that I downloaded were ia32 libraries (as I am working on 64-bit OS), kernel-devel package. Still I am not able to work with make-kpkg command. It says bash: make-kpkg: command not found....
I googled out and did everything I could.
Can anyone get me out of this trouble?
make-kpkg is a Debian kernel packaging tool. It does not exist on RHEL family distributions, such as Fedora.
Please refer to the Fedora documentation page "Building a custom kernel" for the correct procedure. (I have not reproduced it here as it is rather long, and I'm not sure how far you may have gotten.)
The make-kpkg tool is part of the 'kernel-package' package on Debian systems. It is a Debian tool to produce debian package files. Ubuntu is based on Debian and has this tool. However, Fedora uses a different system to manage packages. So, make-kpkg would not be available on Fedora.

Linux standalone 'installation' of Postgresql

For easy deployment, I'd like to ship an installation of Postgres as part of the application. Is it possible to include an already compiled and runnable version of Postgres that can be launched as process? I was able to do such thing with a Windows and MacOS version, but haven't found anything about Linux on that matter yet. Perhaps someone has tried this before and can share some insights...
You haven't stated what linux OS you're using.
Assuming it's a Redhat variant why not package your application as an RPM package? You could then declare a dependency on the standard Postgres package which would be automatically installed yum. Same principle applies if you're using Debian based systems, just a different packaging format.
From the user's perspective the OS's native packaging format is always the easiest way to install your application. Just requires effort to package it properly.
You can find cross-platform binaries from these pages on PostgreSQL official website:
For easy GUI .run installers, use links provided at http://www.enterprisedb.com/products-services-training/pgdownload.
If your target machine has no X installed on it, or you want to automate installation process with shell scripts, then you can download RPM or Deb packages from http://community.openscg.com/se/postgresql/packages.jsp
I found these links on http://www.postgresql.org/download/linux/ubuntu/, under "Cross distribution packages" and "Graphical installer".
I quote from those pages:
Note: The cross distribution packages do not fully integrate with the platform-specific packaging systems.
You must have root priviliges to install these packages, however, none of your systems library files will be altered. The supporting libraries that these binaries require are included locally as part of the install. This is the "special sauce" that allows identical binaries to run on different linux distro's.

Port a debian package to YUM for CentOS

I have a project that runs on Debian and uses many packages provided from the Debian repositories.
Because of demand, I've looked into porting the project to CentOS, but found that many of the packages I require are completely missing - at least 10 dependencies would have to be compiled manually at install time on the users machine.
My question is, what is the best way to create an installer for the user's machine? Should I use automake tools (with the standard ./configure, make, make install), to compile the required libraries, or is this a non-standard approach. Note that my app doesn't actually need to be compiled since it is written in Python, so is it weird to do a "make", when you're not compiling your own app?
Should the configure script just warn the user that package X is missing, and let them handle the rest?
Should I roll my own dependency checker by runng pkg-config manually a few times for each library required, and exit if something is missing?
I'm quite new to this, so any tips to get me moving in the right direction are appreciated.
Edit: I am familiar with RPM and yum for red hat base distros, but CentOS is missing many multimedia packages that I require. An example of one of my package dependencies is "liquidsoap" which is a programmable audio engine: http://savonet.sourceforge.net/
This is available on Debian, but not Redhat/Centos
See this link on CentOS package management.
http://wiki.centos.org/PackageManagement/Yum
CentOS is redhat based and does not use .deb packages by default. However apt package management has been ported to tons of platforms, you may be able to use a port for centOS
If you use YUM whatever packages you need will be there for your application as redhat distros need all the same things that any other distro does.
EDIT: To get the details out of comments
Packages not available on the target platform either have to be built (possibly as a port) on the target platform and then shipped in the ported package (in this case YUM), or code needs to be modified and forked to use packages which already are available on the target platform. The choice depends on which is worse, or which is even possible given your constraints.

Cannot run 32-bit apps on 64-bit Linux

I have a very minimal install of Ubuntu 8.04 64-bit.
When I try to run some 32-bit programs, such as my jhead program, I get the message No such file or directory.
I figured it may be a library problem, but when I do:
ldd jhead
instead of a list of libraries it needs, I just get the message not a dynamic application. Same for another old 32-bit app I use.
So it would appear some very important components for running 32 bit apps are not installed. But how do I even determine what these are?
You will need to install the 32bit library package
ia32-libs - ia32 shared libraries for use on amd64 and ia64 systems
go and execute
sudo aptitude install ia32-libs
Doing ldd ./ might help to see which library dependancies are succesfully resolved.

Resources