NI Linux Real-Time Discussions

cancel
Showing results for 
Search instead for 
Did you mean: 

Alternate Package Managers and JRE

So I'm still sorta looking into getting Wine running on an x64 based controller, and it seems the path to make this work hits many road blocks when it comes to the choice in package management.  Other Linux distros aren't as open with their package manageers, but there is more of an eco system with them.  Others like apt-get, yum, deb, and dnf just to name a few.  So I started looking into how to install some of these other package managers and I figured I'd try apt-get since it seems to be popular.

APT has a pretty useful download and install page here.  But running the sh files seems to require the Java runtime engine.  So I tried installing the RPM.  First I had to install RPM using OPKG then install the RPM but I needed to use the --nodeps because it believed dependencies were missing when it seemed they were already installed.  The paths it complained about had files with the exact names.  After that the APT installer still wouldn't run with an error:

./jre/bin/java: No such file or directory

But doing Java -version returns what looks like a good install.  Instead of running the sh where it was I could extract it using a different Linux machine, then try to run the Jar file itself.  This resulted in several exception, and failed dependency errors.  Is there other options with package managers?  Is there other options with Java?  Thanks.

java.awt.HeadlessException:

No X11 DISPLAY variable was set, but this program performed an operation which requires it.

        at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:204)

        at java.awt.Window.<init>(Window.java:536)

        at java.awt.Frame.<init>(Frame.java:420)

        at java.awt.Frame.<init>(Frame.java:385)

        at javax.swing.JFrame.<init>(JFrame.java:189)

        at com.izforge.izpack.installer.GUIInstaller.loadLangPack(Unknown Source)

        at com.izforge.izpack.installer.GUIInstaller.access$000(Unknown Source)

        at com.izforge.izpack.installer.GUIInstaller$1.run(Unknown Source)

        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:301)

        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)

        at java.awt.EventQueue.access$500(EventQueue.java:97)

        at java.awt.EventQueue$3.run(EventQueue.java:709)

        at java.awt.EventQueue$3.run(EventQueue.java:703)

        at java.security.AccessController.doPrivileged(Native Method)

        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)

        at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)

        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)

        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

        at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Can not find optional resource conditions.xml

No specification for conditions found.

RulesEngine.init()

Initializing builtin conditions for packs.

Pack.getCondition(): null for pack APT

No custom langpack available.

java.lang.NullPointerException

        at com.izforge.izpack.installer.GUIInstaller.loadGUI(Unknown Source)

        at com.izforge.izpack.installer.GUIInstaller.access$100(Unknown Source)

        at com.izforge.izpack.installer.GUIInstaller$2.run(Unknown Source)

        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)

        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)

        at java.awt.EventQueue.access$500(EventQueue.java:97)

        at java.awt.EventQueue$3.run(EventQueue.java:709)

        at java.awt.EventQueue$3.run(EventQueue.java:703)

        at java.security.AccessController.doPrivileged(Native Method)

        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)

        at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)

        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)

        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

        at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)


0 Kudos
Message 1 of 10
(4,043 Views)

Since the ipk package format is essentially a stripped-down version of the deb package format (dpkg/apt/aptitude/synaptic), you can usually install the .deb directly from opkg. One thing, however, to be aware of is that package names between the .deb and .ipk may differ, so there's a little detective work and playing the part of the package manager involved

0 Kudos
Message 2 of 10
(3,536 Views)

"... there's a little detective work..."

Specifically checking the listed dependencies and whether or not they're already installed.

0 Kudos
Message 3 of 10
(3,536 Views)

Oh I have been doing some detective work for sure.  Installing a package will complain about all kinds of missing dependencies.  Several times it will state missing dependencies for things that are already installed.  For things that aren't already installed I'll track down the dependency, and it will claim it has a missing dependency...which is already installed.  I've had some success with using the --nodeps to force and install if it thinks dependencies are missing that aren't.  Then there are times when I know a dependency is missing, it is not installed, and I can't find it in a compatibile opkg format.

I'm not done trying to track it down, but I did get yum installed.  It throws errors with some kind of missing python dependency (which are installed) but I was able to make and make install yum from source.

After installing a whole bunch of stuff:

opkg install packagegroup-core-buildessential

opkg install packagegroup-core-buildessential-dev

opkg install packagegroup-core-python

opkg install packagegroup-core-full-cmdline

opkg install packagegroup-core-perl

I downloaded the tar ball from here.  I uncompressed it with "tar zxf file.tar.gz" performed a make, then make install in the directory.  Then running yum from bash I get the following, which may indicate a version compatibility issue with python.

There was a problem importing one of the Python modules

required to run yum. The error leading to this problem was:

   No module named yum

Please install a package which provides this module, or

verify that the module is installed correctly.

It's possible that the above module doesn't match the

current version of Python, which is:

2.7.9 (default, Jun  8 2016, 23:40:34)

[GCC 4.8.2]

If you cannot solve this problem yourself, please go to

the yum faq at:

  http://yum.baseurl.org/wiki/Faq

0 Kudos
Message 4 of 10
(3,536 Views)

I would certainly recommend avoiding attempting to use two package managers unless you know what you're getting yourself into and can dig yourself out. The niceties that some distros provide for mixing package managers is largely absent from NI LInux RT. That being said, again, if I was in your position I'd try to make opkg work for what you need for installing the .deb file. I would start from a clean format of the controller

0 Kudos
Message 5 of 10
(3,536 Views)

Thanks for the information.  I partially just thought of package managers as something similar to an app store, and didn't see any reason why I can't have multiple app stores on an android or iOS.  I certainly am not an expert, and I'll try to avoid getting into multiple package manager madness. 

Yes I see that opkg is supposed to support deb packages, and by adding "arch i386 28" and "arch amd64 29" to my /etc/opkg/arch.conf I am able to somewhat convince opkg to install deb packages.  But another issue I've seen with this is the majority of deb pacakges made today are using the zx compression level on the data.tar and opkg only supports gzip.  I'm still trying to work through this issue but at the moment I'm trying to download the source on a Debian machine and rebuild it using gzip compression in the hopes it can be installed with opkg.

0 Kudos
Message 6 of 10
(3,536 Views)

xz compression was just added to opkg a few days ago

Repo: http://git.yoctoproject.org/cgit/cgit.cgi/opkg/

Commit: http://git.yoctoproject.org/cgit/cgit.cgi/opkg/commit/?id=1053fbc7de095e53ed10a97e8c6d408f03767cd4

An option would be to build opkg from master and use that, if you are willing to take that on.

0 Kudos
Message 7 of 10
(3,536 Views)

Yeah that's what I'm in the process of doing right now.  Download source, build, extract the deb, extract the tar, rebuild the tar as a gz, rebuild the deb.  I tried commanding the build to make a gz instead of xz but it wasn't working.  Thanks for looking into the opkg and xz support, getting that to work sounds like an easier solution.  I still need to track down all the missing dependencies but at least I don't need to rebuild each of them multiple times.

0 Kudos
Message 8 of 10
(3,536 Views)

 Hi all, 

 

sorry for jumping back again on this thread. I was trying to upgrade opgk to version 0.3.4 since I need support for tar.gz archives, but I've some troubles.

 

Here's what I did:

  • I'm working on a cRIO 903x with LV 16 release SW (OS NI Linux Real-Time x64 4.1.15-rt17-4.0.0f0)
  • Installed the following components on the target to get source and compile code on the target itself:  opkg update && opkg install packagegroup-core-buildessential git
  • git clone git://git.yoctoproject.org/opkg -b master
  • opkg install libarchive-dev libcurl-dev openssl-dev gpgme-dev (since futher ./configure won't retun successfully)
  • cd opkg
  • ./autogen.sh
  • ./configure --prefix=/usr/
  • make && make install

All works fine 'til now, I can even check that opkg has been updated to a new version (0.3.5 SNAPSHOT). 

However, all commands I give return immediately without doing nothing. Return code seems ok (running echo $? return 0) but opkg doesn't do anything. What have I done wrong?

Thanks for helping.

 

 

Fabio M.
National Instruments
Principal Systems Engineer
0 Kudos
Message 9 of 10
(3,390 Views)

Hi Fabio,

 

What sub-commands have you tried? It seems like you've at least tried opkg or opkg --help. Have you updated the local feed listings (as the format may have changed, meaning the results from past opkg update calls may no longer be valid). You should try running a few commands with the -V4 flag (to turn up the verbosity).

 

Also, generally, it's not a good idea to make install a tool over an already-installed tool, I'd try to use opkg to remove opkg. Since that's a fairly meta operation, I don't know if that would actually work, and it shouldn't be required (but you may need to do some manual cleanup before the new tools work correctly).

 

The last resort would be to use tools like strace to figure out what the binary's actually doing during execution. It can give clues as to what's going wrong or what it's trying to do.

0 Kudos
Message 10 of 10
(3,371 Views)