1

I'm a new linux user running Mint 17.3. I want to install a program I downloaded as a .tar file. I extracted the contents of the .tar. Now I see folders:

programname/lib
programname/bin
programname/include

There are files in those folders but nothing that looks like an install file. I'm not sure where to go from here to install this program. Any help would be great.

GAD3R
  • 66,769

3 Answers3

5

Short Answer

It looks like your download has a collection of precompiled files. In order to "install" them you'll just need to copy or move each file to an appropriate location.

In this case you'll probably just want to copy all of the files from each subdirectory of smartcash-1.0.0 to the corresponding subirectory of /usr/local, e.g.:

cp -i smartcash-1.0.0/bin/* /usr/local/bin
cp -i smartcash-1.0.0/include/* /usr/local/include
cp -i smartcash-1.0.0/lib/* /usr/local/lib

That's it. Once you do that you should be able to run four new commands:

smartcash-cli
smartcash-qt
smartcash-tx
smartcashd

Long Answer

Here is what I did to try to figure out what you're dealing with. First I downloaded the TAR archive:

wget 'https://smartcash.cc/wp-content/uploads/2017/11/smartcash-1.0.0-x86_64-linux-gnu.tar.gz'

Then I decompressed the archive:

tar xzf smartcash-1.0.0-x86_64-linux-gnu.tar.gz

Then I viewed the resulting directory:

tree smartcash-1.0.0

Here is the output from tree:

smartcash-1.0.0
|-- bin
|   |-- smartcash-cli
|   |-- smartcash-qt
|   |-- smartcash-tx
|   `-- smartcashd
|-- include
|   `-- bitcoinconsensus.h
`-- lib
    |-- libbitcoinconsensus.so -> libbitcoinconsensus.so.0.0.0
    |-- libbitcoinconsensus.so.0 -> libbitcoinconsensus.so.0.0.0
    `-- libbitcoinconsensus.so.0.0.0

It looks what we have are some precompiled executable programs (in the 'bin/' subdirectory), some shared libraries (in the lib/ subdirectory), and a header file (in the include subdirectory).

In general, you probably want to put executables into a directory that's in your path. To see the directories in your PATH you can run the following command:

(IFS=:; for path in ${PATH[@]}; do echo "${path}"; done)

Here is what the output might look like:

/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin

A typical place to put these would be /usr/local/bin. You could that with a command such as the following:

cp -i smartcash-1.0.0/bin/* /usr/local/bin

The shared library files should go in a directory that's in your shared-library search-path. To see what your shared-library search-path is you should check the /etc/ld.so.conf configuration file. Here's what's in mine:

include /etc/ld.so.conf.d/*.conf

So it's including configuration files from the /etc/ld.so.conf.d directory. Checking the contents of that directory (i.e. cat /etc/ld.so.conf.d/*) reveals the following list of directories:

/usr/lib/x86_64-linux-gnu/libfakeroot
/usr/local/lib
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu

So I would put the files in the /usr/local/lib directory, e.g.:

cp -i smartcash-1.0.0/lib/* /usr/local/lib

For further discussion on the subject of where to put shared libraries you might want to refer to the following posts:

Finally, you'll probably want to put the header file in /usr/local/include - for the sake of consistency, e.g.:

cp -i smartcash-1.0.0/include/* /usr/local/include
igal
  • 9,886
1
tar -C /usr/local --strip-components 1 -xf xxx.tar.xz
no7dw
  • 111
0

Packages not installed via your distro belong in /opt. So:

sudo bash  # or sudo each command
cd /tmp
tar xvf progname.tar
# use atool's aunpack to guard against tar-bombs
mkdir /opt
mv progname/ opt/

Then, symlink the executables:

ln -s /opt/progname/bin/* /usr/local/bin
ln -s /opt/progname/lib/* /usr/local/lib
ln -s /opt/progname/include/* /usr/local/include
usretc
  • 629