updated file

This commit is contained in:
Jason S. Evans 2016-02-22 12:45:39 +01:00
parent e316f5374c
commit 7202ca972d
1 changed files with 136 additions and 2 deletions

View File

@ -51,8 +51,142 @@ This guide covers Debian, Ubuntu, CentOS, Fedora, SuSE, and FreeBSD and will req
NOTE: All of the commands in this guide assume that the user is running the commands as root or with `sudo`.
Package Management Systems: A Brief Overview
--------------------------------------------
=== Package Management Systems: A Brief Overview
In a Windows environment, programs are packaged in .exe or .msi installers which will then install most of the files needed to run the program. If your computer doesn't have some dependant applications, then the program that you are trying to run will either not install or not run properly. You will then have to scour the internet in order to find the missing required applications or libraries. For example in CentOS 7, in order to install the VIM text editor, I need to add the following packages:
gpm-libs x86_64 1.20.7-5.el7 base 32 k
groff-base x86_64 1.22.2-8.el7 base 942 k
perl x86_64 4:5.16.3-286.el7 base 8.0 M
perl-Carp noarch 1.26-244.el7 base 19 k
perl-Encode x86_64 2.51-7.el7 base 1.5 M
perl-Exporter noarch 5.68-3.el7 base 28 k
perl-File-Path noarch 2.09-2.el7 base 26 k
perl-File-Temp noarch 0.23.01-3.el7 base 56 k
perl-Filter x86_64 1.49-3.el7 base 76 k
perl-Getopt-Long noarch 2.40-2.el7 base 56 k
perl-HTTP-Tiny noarch 0.033-3.el7 base 38 k
perl-PathTools x86_64 3.40-5.el7 base 82 k
perl-Pod-Escapes noarch 1:1.04-286.el7 base 50 k
perl-Pod-Perldoc noarch 3.20-4.el7 base 87 k
perl-Pod-Simple noarch 1:3.28-4.el7 base 216 k
perl-Pod-Usage noarch 1.63-3.el7 base 27 k
perl-Scalar-List-Utils x86_64 1.27-248.el7 base 36 k
perl-Socket x86_64 2.010-3.el7 base 49 k
perl-Storable x86_64 2.45-3.el7 base 77 k
perl-Text-ParseWords noarch 3.29-4.el7 base 14 k
perl-Time-HiRes x86_64 4:1.9725-3.el7 base 45 k
perl-Time-Local noarch 1.2300-2.el7 base 24 k
perl-constant noarch 1.27-2.el7 base 19 k
perl-libs x86_64 4:5.16.3-286.el7 base 687 k
perl-macros x86_64 4:5.16.3-286.el7 base 43 k
perl-parent noarch 1:0.225-244.el7 base 12 k
perl-podlators noarch 2.5.1-3.el7 base 112 k
perl-threads x86_64 1.87-4.el7 base 49 k
perl-threads-shared x86_64 1.43-6.el7 base 39 k
vim-common x86_64 2:7.4.160-1.el7 base 5.9 M
vim-filesystem x86_64 2:7.4.160-1.el7 base 9.6 k
which x86_64 2.20-7.el7 base 41 k
Imagine trying to manually install all of these programs one at a time just to be able to install a text editor! In the early days of Linux, we faced these kinds of problems, however this problem is fixed with package management systems such as apt, yum, and others. In order to install VIM in CentOS 7 today, I simple have to run `yum install vim`. Individaual binary programs, other resources making up the software, along with installation scripts (which tell the package management systems what other packages are required) makeup what we call packages.
From the list above, you can see gpm-libs. The following files are required before this one package can even be installed:
/sbin/ldconfig
libc.so.6(GLIBC_2.15)
rtld(GNU_HASH)
/sbin/ldconfig
libc.so.6(GLIBC_2.15)(64bit)
libncurses.so.5()(64bit)
libtinfo.so.5()(64bit)
rtld(GNU_HASH)
Package managers simplify all of that. They look at the package that you want to install such as VIM, LibreOffice, etc., then look at what other package it depends on, the dependancies of those packages, and so on; then it downloads them all and installs them.
This is what it looks like when I install the Midnight Commander package in Ubuntu:
root@51fa0970b940:/# apt-get install mc
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
libglib2.0-0 libglib2.0-data libgpm2 libssh2-1 libxml2 mc-data sgml-base
shared-mime-info unzip xml-core
Suggested packages:
gpm arj catdvi texlive-binaries dbview djvulibre-bin genisoimage gv
imagemagick links w3m lynx odt2txt poppler-utils python python-boto
python-tz xpdf pdf-viewer zip sgml-base-doc debhelper
The following NEW packages will be installed:
libglib2.0-0 libglib2.0-data libgpm2 libssh2-1 libxml2 mc mc-data sgml-base
shared-mime-info unzip xml-core
0 upgraded, 11 newly installed, 0 to remove and 0 not upgraded.
Need to get 4022 kB of archives.
After this operation, 18.5 MB of additional disk space will be used.
Do you want to continue? [Y/n]
Get:1 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libglib2.0-0 amd64 2.40.2-0ubuntu1 [1058 kB]
Get:2 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libxml2 amd64 2.9.1+dfsg1-3ubuntu4.7 [571 kB]
Get:3 http://archive.ubuntu.com/ubuntu/ trusty/main sgml-base all 1.26+nmu4ubuntu1 [12.5 kB]
Get:4 http://archive.ubuntu.com/ubuntu/ trusty/main libgpm2 amd64 1.20.4-6.1 [16.5 kB]
Get:5 http://archive.ubuntu.com/ubuntu/ trusty/universe libssh2-1 amd64 1.4.3-2 [66.3 kB]
Get:6 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libglib2.0-data all 2.40.2-0ubuntu1 [116 kB]
Get:7 http://archive.ubuntu.com/ubuntu/ trusty/main shared-mime-info amd64 1.2-0ubuntu3 [415 kB]
Get:8 http://archive.ubuntu.com/ubuntu/ trusty/main xml-core all 0.13+nmu2 [23.3 kB]
Get:9 http://archive.ubuntu.com/ubuntu/ trusty/universe mc-data all 3:4.8.11-1 [1134 kB]
Get:10 http://archive.ubuntu.com/ubuntu/ trusty/universe mc amd64 3:4.8.11-1 [453 kB]
Get:11 http://archive.ubuntu.com/ubuntu/ trusty-updates/main unzip amd64 6.0-9ubuntu1.5 [157 kB]
Fetched 4022 kB in 7s (533 kB/s)
Selecting previously unselected package libglib2.0-0:amd64.
(Reading database ... 11542 files and directories currently installed.)
Preparing to unpack .../libglib2.0-0_2.40.2-0ubuntu1_amd64.deb ...
Unpacking libglib2.0-0:amd64 (2.40.2-0ubuntu1) ...
Selecting previously unselected package libxml2:amd64.
Preparing to unpack .../libxml2_2.9.1+dfsg1-3ubuntu4.7_amd64.deb ...
Unpacking libxml2:amd64 (2.9.1+dfsg1-3ubuntu4.7) ...
Selecting previously unselected package sgml-base.
Preparing to unpack .../sgml-base_1.26+nmu4ubuntu1_all.deb ...
Unpacking sgml-base (1.26+nmu4ubuntu1) ...
Selecting previously unselected package libgpm2:amd64.
Preparing to unpack .../libgpm2_1.20.4-6.1_amd64.deb ...
Unpacking libgpm2:amd64 (1.20.4-6.1) ...
Selecting previously unselected package libssh2-1:amd64.
Preparing to unpack .../libssh2-1_1.4.3-2_amd64.deb ...
Unpacking libssh2-1:amd64 (1.4.3-2) ...
Selecting previously unselected package libglib2.0-data.
Preparing to unpack .../libglib2.0-data_2.40.2-0ubuntu1_all.deb ...
Unpacking libglib2.0-data (2.40.2-0ubuntu1) ...
Selecting previously unselected package shared-mime-info.
Preparing to unpack .../shared-mime-info_1.2-0ubuntu3_amd64.deb ...
Unpacking shared-mime-info (1.2-0ubuntu3) ...
Selecting previously unselected package xml-core.
Preparing to unpack .../xml-core_0.13+nmu2_all.deb ...
Unpacking xml-core (0.13+nmu2) ...
Selecting previously unselected package mc-data.
Preparing to unpack .../mc-data_3%3a4.8.11-1_all.deb ...
Unpacking mc-data (3:4.8.11-1) ...
Selecting previously unselected package mc.
Preparing to unpack .../mc_3%3a4.8.11-1_amd64.deb ...
Unpacking mc (3:4.8.11-1) ...
Selecting previously unselected package unzip.
Preparing to unpack .../unzip_6.0-9ubuntu1.5_amd64.deb ...
Unpacking unzip (6.0-9ubuntu1.5) ...
Processing triggers for mime-support (3.54ubuntu1.1) ...
Setting up libglib2.0-0:amd64 (2.40.2-0ubuntu1) ...
No schema files found: doing nothing.
Setting up libxml2:amd64 (2.9.1+dfsg1-3ubuntu4.7) ...
Setting up sgml-base (1.26+nmu4ubuntu1) ...
Setting up libgpm2:amd64 (1.20.4-6.1) ...
Setting up libssh2-1:amd64 (1.4.3-2) ...
Setting up libglib2.0-data (2.40.2-0ubuntu1) ...
Setting up shared-mime-info (1.2-0ubuntu3) ...
Setting up xml-core (0.13+nmu2) ...
Setting up mc-data (3:4.8.11-1) ...
Setting up mc (3:4.8.11-1) ...
update-alternatives: using /usr/bin/mcview to provide /usr/bin/view (view) in auto mode
update-alternatives: using /usr/bin/mcedit to provide /usr/bin/editor (editor) in auto mode
Setting up unzip (6.0-9ubuntu1.5) ...
Processing triggers for libc-bin (2.19-0ubuntu6.7) ...
Processing triggers for sgml-base (1.26+nmu4ubuntu1) ...
Most package systems are built around collections of package files. A package file is usually an archive which contains compiled binaries and other resources making up the software, along with installation scripts. Packages also contain valuable metadata, including their dependencies, a list of other packages required to install and run them.