Pupperserver with Adopt-OpenJDK - puppet

We are in transition from Puppetmaster 3.8 to Puppet server(OpenSource) 5.3.
As a prerequisite for Puppetserver 5.3 installation requires Java 8 runtime packages. Can we install Adopt-OpenJDK with Pupperserver 5.3?

Puppetserver runs just fine on OpenJDK, but I strongly recommend that you run the server on an officially-supported platform (RHEL, CentOS, Debian, Ubuntu, or SLES), and use one of Puppet, Inc.'s official packages for that system. These each express a dependency on an appropriate Java 8 package, and they will configure Puppet properly to work in conjunction with that implementation. On the platforms for which I have knowledge of the details, it is the distro's OpenJDK build that is used.
It should be possible to [re]configure Puppetserver to use an Adopt-OpenJDK implementation of the Java 8 runtime, but this is swimming upstream.

Thanks John.Adding one more point here puppetserver has a dependency on openjdk-8-jre-headless:amd64.But adopt open jdk is not providing headless package.So we suspect this may cause issue as puppetserver will look for the headless package.

Related

JavaFX from RHEL

Previously I am developing applications with JavaFX in Oracle Java SE shipped by Red Hat but it seems it is no longer offered as in https://access.redhat.com/articles/3253281. However, it seems that the OpenJDK coming from rhel-7-server-rpms repository does not come with JavaFX.
Are there better ways instead of just installing packages from outside the repositories provided by Red Hat? I don't want to test each environment with self-compiled OpenJFX binary one by one.
Oracle provide RPMs you can download:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Those RPMs are not in a YUM repository that you could just point your red hat boxes to.
You can download the RPMs and create your own rum repository, then add your custom repository to the yum repository list for each of your target machines and after that use yum to install the rpms to your boxes. You would need to restrict this so that it isn't fully open to the public I think (to meet Oracle Java distribution requirements).
If you built your own version of the Java SE which included JavaFX from OpenJFX sources (or you can find a package for your target OS which somebody else has built), then you could host that in an unrestricted manner in your own repository (or any other public repository out there), or pull the package from a public repository if somebody else has already put it there.
If you don't need a repository, and can just scp the rpms to the relevant machines then you can directly install the rpms on the machines without setting up your own custom repository.
If you package your application as a self-contained application, then the application install bundle itself will include the JRE, so you don't need to worry about installing that separately on the machine (and also don't potentially run into situations where the user has installed a runtime version which is not compatible or tested with your code). Perhaps that is a preferred path for you.
I don't know RedHat's policy for OpenJDK releases and builds to their repositories. It would be nice if they included JavaFX in their OpenJDK distributions in their repositories or provided a separate package for OpenJFX, similar to what Ubuntu do. Perhaps they might include JavaFX in their OpenJDK 9 distributions. They have info on RHEL Support for OpenJDK 9, so maybe they say something there (I can't read it as I am not a RHEL subscriber). If you have a support contract with Redhat and the info isn't available on their site, then you could ping them and ask them about OpenJFX JavaFX distributions hosted in their repository (to see if they are there or not or if they have a plan to put them there).

Ruby error when deploying a module with Puppet on CentOS 6

I have installed both Puppet master and agent on machines running CentOS 6
Everything went well, until the moment I have tried to deploy a simple sample module: I got an error, explained on the picture.
Trying to edit the file didn't help and the file was actually updated each time from repository
I tried running a different module which resulted in the same error
The error is because the formatting for Ruby code will not work with older Ruby. The CentOS 6 upstream Ruby package is 1.8.7, which is a super old Ruby version, and has been EOL for 3 years since 2014.
To fix this problem, Puppet started packaging Ruby and other dependancies as part of an all-in-one package since Puppet 4. This means there's no dependancy hell when it comes to EOL Ruby, OpenSSL and any other dependancies: they're all bundled and supported as a single RPM, without affecting the system packages.
It also means that you don't break any applications that require a different system Ruby, and generally makes using Puppet a lot easier.
Adding to this, the version of Puppet in CentOS is 3.X, which is also EOL. You should upgrade to Puppet 4. Here's a handy script that will install the Puppet 4 agent package on CentOS 6: https://github.com/petems/puppet-install-shell
If you are limited to using Puppet 3 for whatever reason, there are a few less preferable solutions:
Download a new Ruby RPM for CentOS 6, (such as from this Github repo) or a CloudPackage.io repo (such as this one I made for CentOS 6 Ruby packages https://packagecloud.io/petems/ruby2/install)
Disadvantage: Those RPMs are not supported officially and might have unintentional issues
Fork the module to change the Ruby code
Disadvantage: This is a big maintenance cost, and you'll have to do this every time an update happens to the module upstream.

Compatibility Issue from centos 5.x to 6.x

I have an rpm compiled in centos 5.x which requires libnetsnmp.so.10 and other shared objects. I want to create an rpm of it which is to be run on centos 6.x but it fails to install as on installation it says :
error: Failed dependencies:
libnetsnmp.so.10()(64bit) is needed and so on...
But Centos 6.x contains libnetsnmp.so.20
So I created symbolic links of libnetsnmp.so.10 of libnetsnmp.so.20.
But problem is still the same.
So can you please help me to resolve this problem?
If recompiling for Centos 6 isn't an option, you can try two things, first, install the correct libnetsnmp in the Centos 6 server. If that's not an option, you can add the following to your RPM spec file:
Autoreq: no
This will cause it not to scan your binary for dependencies (such as dynamically linked libraries), and automatically build that into the RPM.
Of course, if that version of libnetsnmp is ACTUALLY required, your just hosing yourself down the road, but likely newer versions will work just fine.

Is it possible to build packages for multiple versions of Red hat Linux on a single server?

I have a set of programs for analyzing radiation data and I want to build packages for Red Hat Linux versions 4.x - 6.x. Is it possible to build these packages on a single build server running a single version of Red Hat Linux or do I need to build the version 4.x package on a server running version 4.x and the version 5.x package on a server running version 5.x?
If I can build packages for several versions on a single server, must that server be running the newest version or the oldest version of the OS?
You need to build toolchain for different OS environments (toolchain for Redhat 4.x and 5.x) and with in toolchain you can build packages for specific OS. toolchain is like a chroot environments.
You can create multiple Virtual machine using KVM and build many version of packages using single node..
You can use UML (User Mode Linux) which is quite interesting... Check out following Link
http://uml.devloop.org.uk/howto.html
You can build your packages in a chroot jail. You can use mach to do so.
Here's a tutorial on building packages with mach you could refer to, though it may be outdated.

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.

Resources