Linux - NewbieThis Linux forum is for members that are new to Linux.
Just starting out and have a question?
If it is not in the man pages or the how-to's this is the place!
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
As in android, we can download the app from playstore, & if want we can share the app using shareit. It means the installable software must be present somewhere on the system.
Can we do the same in Linux distros as well ?
If I download a software like
Code:
apt-get install vlc
This command will directly download & install the vlc software. But if I want to give this software to someone else, then where does the vlc installable file i.e. .deb gets stored ?
Last edited by Harshit_24; 10-28-2015 at 04:18 AM.
There is a major difference between Android's APKs and the RPMs and DEBs of Linux systems: APKs do not only contain the software you want to install, but also all of the dependencies that are not present on a standard Android system. This is not the case with RPMs or DEBs, they only store the information which dependencies are needed. For example, if I want to install VLC on the Arch system I post this from the package manager also wants to install a bunch of other packages as dependencies:
Code:
>>> sudo pacman -S vlc demon 11:07:11 ~ [INS]
[sudo] password for tobi:
resolving dependencies...
looking for conflicting packages...
Packages (9) libdvbpsi-1:1.3.0-1 libebml-1.3.1-1 libkate-0.4.1-5 libmatroska-1.4.2-1 libtar-1.2.20-2
libtiger-0.3.4-4 libupnp-1.6.19-1 zvbi-0.2.35-1 vlc-2.2.1-8
Total Download Size: 10.52 MiB
Total Installed Size: 54.67 MiB
:: Proceed with installation? [Y/n] n
So, if you want to share packages with other systems you not only will need to make sure that the other systems also run the same distro (not even Ubuntu and Debian are close enough that there is a guarantee that packages from one run flawlessly on the other) in a somewhat comparable version (you might run into problems when trying to run software compiled for Ubuntu 14.04 on older versions, for example), you also have to make sure to share all the dependencies with the software.
This is a know problem and there are different approaches to solve it:
- Use a universal runtime. This is the approach that for example Steam uses, all games should be compiled against Steam's runtime environment, this way they are distribution independent and run on any distribution that can run Steam.
- Use container technology, like Docker or the upcoming Ubuntu Snappy. This way you can deploy all the dependencies together with the software without touching the base system.
Both approaches make it possible to share software across different systems, even with different distributions in different versions.
There is a major difference between Android's APKs and the RPMs and DEBs of Linux systems: APKs do not only contain the software you want to install, but also all of the dependencies that are not present on a standard Android system. This is not the case with RPMs or DEBs, they only store the information which dependencies are needed. For example, if I want to install VLC on the Arch system I post this from the package manager also wants to install a bunch of other packages as dependencies:
Code:
>>> sudo pacman -S vlc demon 11:07:11 ~ [INS]
[sudo] password for tobi:
resolving dependencies...
looking for conflicting packages...
Packages (9) libdvbpsi-1:1.3.0-1 libebml-1.3.1-1 libkate-0.4.1-5 libmatroska-1.4.2-1 libtar-1.2.20-2
libtiger-0.3.4-4 libupnp-1.6.19-1 zvbi-0.2.35-1 vlc-2.2.1-8
Total Download Size: 10.52 MiB
Total Installed Size: 54.67 MiB
:: Proceed with installation? [Y/n] n
So, if you want to share packages with other systems you not only will need to make sure that the other systems also run the same distro (not even Ubuntu and Debian are close enough that there is a guarantee that packages from one run flawlessly on the other) in a somewhat comparable version (you might run into problems when trying to run software compiled for Ubuntu 14.04 on older versions, for example), you also have to make sure to share all the dependencies with the software.
This is a know problem and there are different approaches to solve it:
- Use a universal runtime. This is the approach that for example Steam uses, all games should be compiled against Steam's runtime environment, this way they are distribution independent and run on any distribution that can run Steam.
- Use container technology, like Docker or the upcoming Ubuntu Snappy. This way you can deploy all the dependencies together with the software without touching the base system.
Both approaches make it possible to share software across different systems, even with different distributions in different versions.
Is it not possible to download the software like vlc with all its dependencies & put it in a particular location to be moved & installed in other linux system where internet is not accessible?
As in windows System, we can download the software & can install that software in any number of windows systems. Is it not possible with Linux OS?
Is it not possible to download the software like vlc with all its dependencies & put it in a particular location to be moved & installed in other linux system where internet is not accessible?
As in windows System, we can download the software & can install that software in any number of windows systems. Is it not possible with Linux OS?
Yes. The problem with that is simple, though....there is no 'Linux' that is like Windows. Windows 10 base, unpatched, unfixed, will STILL allow software to be installed. Whether it actually functions or not is a different matter. Installing a package for Debian on Red Hat won't work....a RHEL package on openSUSE won't work.
A program for Ubuntu 14.04 *MAY* work for Ubuntu 16.04 and have the same dependencies...and may NOT. And the dependencies have their OWN dependencies....do you know which ones are missing beforehand? Unless you can download ALL of them, then things aren't going to work. If you want to do that, then feel free....but it's fairly pointless, in my opinion. Putting it on the Internet for a few minutes and typing in "apt-get install vlc" or "yum install vlc" is far easier.
Is it not possible to download the software like vlc with all its dependencies & put it in a particular location to be moved & installed in other linux system where internet is not accessible?
It is possible to cache it. You can use apt-cacher or apt-cacher-ng and then just carry the cache with you over to the system that is without Internet access.
Yes. The problem with that is simple, though....there is no 'Linux' that is like Windows. Windows 10 base, unpatched, unfixed, will STILL allow software to be installed. Whether it actually functions or not is a different matter. Installing a package for Debian on Red Hat won't work....a RHEL package on openSUSE won't work.
A program for Ubuntu 14.04 *MAY* work for Ubuntu 16.04 and have the same dependencies...and may NOT. And the dependencies have their OWN dependencies....do you know which ones are missing beforehand? Unless you can download ALL of them, then things aren't going to work. If you want to do that, then feel free....but it's fairly pointless, in my opinion. Putting it on the Internet for a few minutes and typing in "apt-get install vlc" or "yum install vlc" is far easier.
I got your point. But I just wanted to know if I have a System with any Linux distro suppose Ubuntu 16 where I can download & keep the software. Now I have another system with the same linux distro i.e. Ubuntu 16 where I want to install that downloaded software which dont have internet connection. Then it should be possible by some way to install the software since the environment of the OSs are same.
Quote:
Originally Posted by Turbocapitalist
It is possible to cache it. You can use apt-cacher or apt-cacher-ng and then just carry the cache with you over to the system that is without Internet access.
Thanks for your reply. I didn't know about it. Thanks for the information. I could try that by keeping in my local system to be installed somewhere else.
Quote:
Originally Posted by BW-userx
you can download them here 32bit or 64bit
Dependencies too are needed for VLC
I got your point. But I just wanted to know if I have a System with any Linux distro suppose Ubuntu 16 where I can download & keep the software. Now I have another system with the same linux distro i.e. Ubuntu 16 where I want to install that downloaded software which dont have internet connection. Then it should be possible by some way to install the software since the environment of the OSs are same.
Yes...AGAIN, you would have to download ALL THE DEPENDENCIES, and all of THEIR DEPENDENCIES TOO. You CAN do it, but it's time consuming and pointless. Assume you get the current version of VLC...great. And in six months when it's updated? Or any of the dependencies updated?? Going to KEEP updating everything, all the time???
It is a HUGE waste of time and effort. Even if internet access is problematic at your company, you can easily create a central repository server that DOES have Internet (or is updated from Internet), and update all your other machines from it: https://help.ubuntu.com/community/AptGet/Offline
I got your point. But I just wanted to know if I have a System with any Linux distro suppose Ubuntu 16 where I can download & keep the software. Now I have another system with the same linux distro i.e. Ubuntu 16 where I want to install that downloaded software which dont have internet connection. Then it should be possible by some way to install the software since the environment of the OSs are same.
Each vendor has differing requirements and IMO an "Internet Connection" is recommended on just about (dare I say it?) all of them?
a bit of a MAJOR problem
you are using a Debian based system ( apt-get )
BUT
rpm's are REDHAT packages
Debian uses "deb " packages
Debian based systems use "apt" to install deb packages
RedHat based systems use yum ( or dnf and zypper) to install rpm packages
If you really want to install a rpm package on Debian or a Debian based distro - you can!
Install the alien deb package into Debian,
This will allow you to install rpm packages.
I believe there is a degree of finger crossing involved though.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.