Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
best practices and new applications
#1
Question 
Hello all,

I'm brand new around these parts, though I've been watching Joe's videos for weeks now and I've finally got a question that I hope merits asking here.
I've got to install two applications that, according to their dev websites, mean downloading tarballs instead of the bash I've grown accustomed to (apt, apt-get).
So they give you these files in folders and suggest you unpack them where you've got permission to do so (our choice, of course). BUT what I've got is my home folder, full of desktop, downloads, music, etc!

Long story short: I don't want to clutter my home directory up with a folder just for openRefine and another one for Java which it depends on... where do I put these things to stay tidy?

One app is going to rely on the other and I can already imagine how much fun it's going to be to get them to work together but where the heck should I put apps that I get in this fashion?

I made an /apps folder inside of / and then gave myself write permissions to it... but I feel like this is probably not a great idea in the long run.
Nevermind I'm moving it into ~/ but I hate that. That's not a plan.

Where do you put these kinds of things? Huh

Cheers,

Eli
Reply
#2
(11-25-2018, 04:23 PM)pictory Wrote: Hello all,

I'm brand new around these parts, though I've been watching Joe's videos for weeks now and I've finally got a question that I hope merits asking here.
I've got to install two applications that, according to their dev websites, mean downloading tarballs instead of the bash I've grown accustomed to (apt, apt-get).
So they give you these files in folders and suggest you unpack them where you've got permission to do so (our choice, of course). BUT what I've got is my home folder, full of desktop, downloads, music, etc!

Long story short: I don't want to clutter my home directory up with a folder just for openRefine and another one for Java which it depends on... where do I put these things to stay tidy?

One app is going to rely on the other and I can already imagine how much fun it's going to be to get them to work together but where the heck should I put apps that I get in this fashion?

I made an /apps folder inside of / and then gave myself write permissions to it... but I feel like this is probably not a great idea in the long run.

Where do you put these kinds of things? Huh

Cheers,

Eli

Downloading an application as a tar-ball can mean many things.
For free open source applications, the tar-ball most often contains the source code and a 'Makefile', which is used to automate the compiling of the source code.
For proprietary software, the tar-ball can contain anything from a binary to an download-install-script.

After installing, the application (and everything that comes with it, meaning documentation like 'man' or 'info' pages or custom libraries) is no longer dependant on the tar-ball or the extracted directory, meaning you do not have to keep it.


Most importantly: Before installing software from unofficial sources (everything not contained in the official repositories of your distribution) you have to ask yourself, Do you trust the source / developer / software ?


And another thing: You said that one of the things you downloaded is for java. You do not have to install java from the the java website, as ubuntus official repositories should contain the 'open-jdk' java environment. you can search for it with 'apt search open jdk'.

Ok, so I looked at the application you want to install, OpenRefine.
Let me say: Those guys did a truely terrible job at packaging their software,
making it basically uninstallable...

In this case, you do actually have to keep the extracted directory.
The correct place for that is the '/opt' directory.
I tried linking their starter script into the '/usr/bin/' directory via a symlink,
but the script definetly does not like that...


If you have to use that application often, you should file a bug report,
because that is absolutely terrible design.
I have the strong feeling that the application is windows first, linux second,
because no developer targeting primarily linux would do such an embarrasing thing...
My git repos

"Things are only impossible until they’re not." - Captain Jean-Luc Picard
Reply
#3
(11-25-2018, 04:44 PM)leon.p Wrote:
(11-25-2018, 04:23 PM)pictory Wrote: Hello all,

I'm brand new around these parts, though I've been watching Joe's videos for weeks now and I've finally got a question that I hope merits asking here.
I've got to install two applications that, according to their dev websites, mean downloading tarballs instead of the bash I've grown accustomed to (apt, apt-get).
So they give you these files in folders and suggest you unpack them where you've got permission to do so (our choice, of course). BUT what I've got is my home folder, full of desktop, downloads, music, etc!

Long story short: I don't want to clutter my home directory up with a folder just for openRefine and another one for Java which it depends on... where do I put these things to stay tidy?

One app is going to rely on the other and I can already imagine how much fun it's going to be to get them to work together but where the heck should I put apps that I get in this fashion?

I made an /apps folder inside of / and then gave myself write permissions to it... but I feel like this is probably not a great idea in the long run.

Where do you put these kinds of things? Huh

Cheers,

Eli

Downloading an application as a tar-ball can mean many things.
For free open source applications, the tar-ball most often contains the source code and a 'Makefile', which is used to automate the compiling of the source code.
For proprietary software, the tar-ball can contain anything from a binary to an download-install-script.

After installing, the application (and everything that comes with it, meaning documentation like 'man' or 'info' pages or custom libraries) is no longer dependant on the tar-ball or the extracted directory, meaning you do not have to keep it.


Most importantly: Before installing software from unofficial sources (everything not contained in the official repositories of your distribution) you have to ask yourself, Do you trust the source / developer / software ?


And another thing: You said that one of the things you downloaded is for java. You do not have to install java from the the java website, as ubuntus official repositories should contain the 'open-jdk' java environment. you can search for it with 'apt search open jdk'.

Ok, so I looked at the application you want to install, OpenRefine.
Let me say: Those guys did a truely terrible job at packaging their software,
making it basically uninstallable...

In this case, you do actually have to keep the extracted directory.
The correct place for that is the '/opt' directory.
I tried linking their starter script into the '/usr/bin/' directory via a symlink,
but the script definetly does not like that...


If you have to use that application often, you should file a bug report,
because that is absolutely terrible design.
I have the strong feeling that the application is windows first, linux second,
because no developer targeting primarily linux would do such an embarrasing thing...

Hi! Thanks very much for your detailed reply and guidance. I'll try and see if I can use the open jdk um, software (the terminology is still not totally clear to me) with OpenRefine instead but I am worried it could affect the functioning of it. I have no idea though, that's pretty far over my head stuff: java vs open jdk.

It seems like OpenRefine isn't really "installed" at all!? You just extract it and run it. Seems unusual. I wouldn't know the first thing to say in a bug report for that though, I'd probably make a fool of myself. It does work well though! Really helpful software for cleaning messy data.

Thanks for telling me about the /opt folder, I didn't know about that guy. I appreciate all your adivce.

Cheers,

Eli
Reply
#4
(11-27-2018, 02:56 PM)pictory Wrote: Hi! Thanks very much for your detailed reply and guidance. I'll try and see if I can use the open jdk um, software (the terminology is still not totally clear to me) with OpenRefine instead but I am worried it could affect the functioning of it. I have no idea though, that's pretty far over my head stuff: java vs open jdk.

I personally made the experience that OpenJDK has a faster / better Java Runtime Environment (JRE) than the original Oracle one,
but that strongly depends on the software you are using.


(11-27-2018, 02:56 PM)pictory Wrote: It seems like OpenRefine isn't really "installed" at all!? You just extract it and run it. Seems unusual. I wouldn't know the first thing to say in a bug report for that though, I'd probably make a fool of myself. It does work well though! Really helpful software for cleaning messy data.

Well, technically any software you install is just extracted and placed somewhere.
The problem with OpenRefine is, that it depends on its directory structure staying the same.
This is because they compiled their libraries into java archives (.jar-files)
with a relative but static position to the programs binary.

Normally, a programs binary would be placed in a special directory for binaries (like '/usr/bin/')
and if it needs additional libraries, these are placed in their own special place.
The program does not have to know where the libraries are placed; That is handled by Linux running the binary
(Above is true for C programs. Other, interpeted, languages handle this within the interpreter or linker).

In the case of OpenRefine, the program demands "Give me the file library.jar in /this/that/directory/"
instead of "Give me the library java.libray".
This means it fails to work when the files are not exactly where the program expects them to be.


Speaking of OpenRefine, I am curious: What do you use it for?
Academic purposes?


(11-27-2018, 02:56 PM)pictory Wrote: Thanks for telling me about the /opt folder, I didn't know about that guy. I appreciate all your adivce.

Cheers,

Eli

The '/opt' directory is there for all programs which for some reason or another do not abide to the Linux file structure.
It is most often used for proprietary applications, whose developers simply do not understand the Linux file structure.

In a perfect world it should always be empty...
My git repos

"Things are only impossible until they’re not." - Captain Jean-Luc Picard
Reply
#5
(11-27-2018, 08:06 PM)leon.p Wrote: Speaking of OpenRefine, I am curious: What do you use it for?
Academic purposes?

Yeah, for now just academic use. It's incredibly powerful in a way I don't think I could convey to you here. You can use it on a variety of data sources (databases, csvs, spreadsheets, etc.) and it's often for cases where many people (or one lazy/careless person) enter a lot of information that has had no validation rules or lax validation rules or... worst of all "descriptions". It's a great way to clean data before you go data mining. I really recommend watching the short intro videos, they are information dense and well narrated.

By the way, when I search for openjdk I get pages of possibilities... it's too much for such a novice like me to parse! I'd love to shrug off Oracles Java software but my problem is there is too much choice in alternatives. Not to make this into more than it is but it's a constant drag on my switch to FOSS (which i very much am pushing myself to do).

Code:
~# apt search openjdk
>
Sorting...

Full Text Search...
default-jdk/xenial 2:1.8-56ubuntu2 amd64
 Standard Java or Java compatible Development Kit

default-jdk-doc/xenial 2:1.8-56ubuntu2 amd64
 Standard Java or Java compatible Development Kit (documentation)

default-jdk-headless/xenial 2:1.8-56ubuntu2 amd64
 Standard Java or Java compatible Development Kit (headless)

default-jre/xenial 2:1.8-56ubuntu2 amd64
 Standard Java or Java compatible Runtime

default-jre-headless/xenial 2:1.8-56ubuntu2 amd64
 Standard Java or Java compatible Runtime (headless)

icedtea-8-plugin/xenial 1.6.2-3ubuntu1 amd64
 web browser plugin based on OpenJDK and IcedTea to execute Java applets

java-package/xenial 0.61 all
 Utility for creating Java Debian packages

jtreg/xenial-updates 4.2-b03-1~16.04 all
 Regression Test Harness for the OpenJDK platform

libhsdis0-fcml/xenial 1.1.1-1 amd64
 HotSpot disassembler plugin using FCML

libreoffice/xenial-updates 1:5.1.6~rc2-0ubuntu1~xenial4 amd64
 office productivity suite (metapackage)

openjdk-8-dbg/xenial-updates,xenial-security 8u191-b12-0ubuntu0.16.04.1 amd64
 Java runtime based on OpenJDK (debugging symbols)

openjdk-8-demo/xenial-updates,xenial-security 8u191-b12-0ubuntu0.16.04.1 amd64
 Java runtime based on OpenJDK (demos and examples)

openjdk-8-doc/xenial-updates,xenial-security 8u191-b12-0ubuntu0.16.04.1 all
 OpenJDK Development Kit (JDK) documentation

openjdk-8-jdk/xenial-updates,xenial-security 8u191-b12-0ubuntu0.16.04.1 amd64
 OpenJDK Development Kit (JDK)

openjdk-8-jdk-headless/xenial-updates,xenial-security 8u191-b12-0ubuntu0.16.04.1 amd64
 OpenJDK Development Kit (JDK) (headless)

openjdk-8-jre/xenial-updates,xenial-security 8u191-b12-0ubuntu0.16.04.1 amd64
 OpenJDK Java runtime, using Hotspot JIT

openjdk-8-jre-dcevm/xenial 8u74-1 amd64
 Alternative VM for OpenJDK 8 with enhanced class redefinition

openjdk-8-jre-headless/xenial-updates,xenial-security 8u191-b12-0ubuntu0.16.04.1 amd64
 OpenJDK Java runtime, using Hotspot JIT (headless)

openjdk-8-jre-jamvm/xenial-updates,xenial-security 8u191-b12-0ubuntu0.16.04.1 amd64
 Transitional package for obsolete JamVM for OpenJDK

openjdk-8-jre-zero/xenial-updates,xenial-security 8u191-b12-0ubuntu0.16.04.1 amd64
 Alternative JVM for OpenJDK, using Zero/Shark

openjdk-8-source/xenial-updates,xenial-security 8u191-b12-0ubuntu0.16.04.1 all
 OpenJDK Development Kit (JDK) source files

openjdk-9-dbg/xenial 9~b114-0ubuntu1 amd64
 Java runtime based on OpenJDK (debugging symbols)

openjdk-9-demo/xenial 9~b114-0ubuntu1 amd64
 Java runtime based on OpenJDK (demos and examples)

openjdk-9-doc/xenial 9~b114-0ubuntu1 all
 OpenJDK Development Kit (JDK) documentation

openjdk-9-jdk/xenial 9~b114-0ubuntu1 amd64
 OpenJDK Development Kit (JDK)

openjdk-9-jdk-headless/xenial 9~b114-0ubuntu1 amd64
 OpenJDK Development Kit (JDK) (headless)

openjdk-9-jre/xenial 9~b114-0ubuntu1 amd64
 OpenJDK Java runtime, using Hotspot JIT

openjdk-9-jre-headless/xenial 9~b114-0ubuntu1 amd64
 OpenJDK Java runtime, using Hotspot JIT (headless)

openjdk-9-source/xenial 9~b114-0ubuntu1 all
 OpenJDK Development Kit (JDK) source files

uwsgi-app-integration-plugins/xenial-updates,xenial-security 2.0.12-5ubuntu3.2 amd64
 plugins for integration of uWSGI and application

uwsgi-plugin-jvm-openjdk-8/xenial-updates,xenial-security 2.0.12-5ubuntu3.2 amd64
 Java plugin for uWSGI (OpenJDK 7)

uwsgi-plugin-jwsgi-openjdk-8/xenial-updates,xenial-security 2.0.12-5ubuntu3.2 amd64
 JWSGI plugin for uWSGI (OpenJDK 7)

uwsgi-plugin-ring-openjdk-8/xenial-updates,xenial-security 2.0.12-5ubuntu3.2 amd64
 Closure/Ring plugin for uWSGI (OpenJDK 7)

uwsgi-plugin-servlet-openjdk-8/xenial-updates,xenial-security 2.0.12-5ubuntu3.2 amd64
 JWSGI plugin for uWSGI (OpenJDK 7)

How's a "regular guy" like me supposed to figure all that out? I have my actual work to do, LOL!
You don't have to answer, I just needed to rant.
Reply
#6
(11-28-2018, 03:56 PM)pictory Wrote: By the way, when I search for openjdk I get pages of possibilities... it's too much for such a novice like me to parse! I'd love to shrug off Oracles Java software but my problem is there is too much choice in alternatives. Not to make this into more than it is but it's a constant drag on my switch to FOSS (which i very much am pushing myself to do).

Code:
~# apt search openjdk
>
Sorting...

Full Text Search...
default-jdk/xenial 2:1.8-56ubuntu2 amd64
 Standard Java or Java compatible Development Kit

default-jdk-doc/xenial 2:1.8-56ubuntu2 amd64
 Standard Java or Java compatible Development Kit (documentation)

default-jdk-headless/xenial 2:1.8-56ubuntu2 amd64
 Standard Java or Java compatible Development Kit (headless)

default-jre/xenial 2:1.8-56ubuntu2 amd64
 Standard Java or Java compatible Runtime

default-jre-headless/xenial 2:1.8-56ubuntu2 amd64
 Standard Java or Java compatible Runtime (headless)

icedtea-8-plugin/xenial 1.6.2-3ubuntu1 amd64
 web browser plugin based on OpenJDK and IcedTea to execute Java applets

java-package/xenial 0.61 all
 Utility for creating Java Debian packages

jtreg/xenial-updates 4.2-b03-1~16.04 all
 Regression Test Harness for the OpenJDK platform

libhsdis0-fcml/xenial 1.1.1-1 amd64
 HotSpot disassembler plugin using FCML

libreoffice/xenial-updates 1:5.1.6~rc2-0ubuntu1~xenial4 amd64
 office productivity suite (metapackage)

openjdk-8-dbg/xenial-updates,xenial-security 8u191-b12-0ubuntu0.16.04.1 amd64
 Java runtime based on OpenJDK (debugging symbols)

openjdk-8-demo/xenial-updates,xenial-security 8u191-b12-0ubuntu0.16.04.1 amd64
 Java runtime based on OpenJDK (demos and examples)

openjdk-8-doc/xenial-updates,xenial-security 8u191-b12-0ubuntu0.16.04.1 all
 OpenJDK Development Kit (JDK) documentation

openjdk-8-jdk/xenial-updates,xenial-security 8u191-b12-0ubuntu0.16.04.1 amd64
 OpenJDK Development Kit (JDK)

openjdk-8-jdk-headless/xenial-updates,xenial-security 8u191-b12-0ubuntu0.16.04.1 amd64
 OpenJDK Development Kit (JDK) (headless)

openjdk-8-jre/xenial-updates,xenial-security 8u191-b12-0ubuntu0.16.04.1 amd64
 OpenJDK Java runtime, using Hotspot JIT

openjdk-8-jre-dcevm/xenial 8u74-1 amd64
 Alternative VM for OpenJDK 8 with enhanced class redefinition

openjdk-8-jre-headless/xenial-updates,xenial-security 8u191-b12-0ubuntu0.16.04.1 amd64
 OpenJDK Java runtime, using Hotspot JIT (headless)

openjdk-8-jre-jamvm/xenial-updates,xenial-security 8u191-b12-0ubuntu0.16.04.1 amd64
 Transitional package for obsolete JamVM for OpenJDK

openjdk-8-jre-zero/xenial-updates,xenial-security 8u191-b12-0ubuntu0.16.04.1 amd64
 Alternative JVM for OpenJDK, using Zero/Shark

openjdk-8-source/xenial-updates,xenial-security 8u191-b12-0ubuntu0.16.04.1 all
 OpenJDK Development Kit (JDK) source files

openjdk-9-dbg/xenial 9~b114-0ubuntu1 amd64
 Java runtime based on OpenJDK (debugging symbols)

openjdk-9-demo/xenial 9~b114-0ubuntu1 amd64
 Java runtime based on OpenJDK (demos and examples)

openjdk-9-doc/xenial 9~b114-0ubuntu1 all
 OpenJDK Development Kit (JDK) documentation

openjdk-9-jdk/xenial 9~b114-0ubuntu1 amd64
 OpenJDK Development Kit (JDK)

openjdk-9-jdk-headless/xenial 9~b114-0ubuntu1 amd64
 OpenJDK Development Kit (JDK) (headless)

openjdk-9-jre/xenial 9~b114-0ubuntu1 amd64
 OpenJDK Java runtime, using Hotspot JIT

openjdk-9-jre-headless/xenial 9~b114-0ubuntu1 amd64
 OpenJDK Java runtime, using Hotspot JIT (headless)

openjdk-9-source/xenial 9~b114-0ubuntu1 all
 OpenJDK Development Kit (JDK) source files

uwsgi-app-integration-plugins/xenial-updates,xenial-security 2.0.12-5ubuntu3.2 amd64
 plugins for integration of uWSGI and application

uwsgi-plugin-jvm-openjdk-8/xenial-updates,xenial-security 2.0.12-5ubuntu3.2 amd64
 Java plugin for uWSGI (OpenJDK 7)

uwsgi-plugin-jwsgi-openjdk-8/xenial-updates,xenial-security 2.0.12-5ubuntu3.2 amd64
 JWSGI plugin for uWSGI (OpenJDK 7)

uwsgi-plugin-ring-openjdk-8/xenial-updates,xenial-security 2.0.12-5ubuntu3.2 amd64
 Closure/Ring plugin for uWSGI (OpenJDK 7)

uwsgi-plugin-servlet-openjdk-8/xenial-updates,xenial-security 2.0.12-5ubuntu3.2 amd64
 JWSGI plugin for uWSGI (OpenJDK 7)

How's a "regular guy" like me supposed to figure all that out? I have my actual work to do, LOL!
You don't have to answer, I just needed to rant.

I currentely don't have anything with ubuntu on installed,
but I am pretty sure that 'openjdk-9-jdk' will pull everything you need to run java applications as dependency.
If not, try additionaly installing 'openjdk-9-jre'.
My git repos

"Things are only impossible until they’re not." - Captain Jean-Luc Picard
Reply
#7
Thanks for theses valuable answers













DafontMapQuestFileHippo
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)