- Let's talk about software managers.
Now, what are software managers?
Software managers are the solution
to the dependency problem,
and they're really cool.
Software managers fix the dependency problem
by working with the repositories.
A repository is an online resource
where packages are stored.
And the nice thing about a repository is that
as long as you make sure that all packages
that may ever be required
as a dependency are available,
the software manager is taking care
of the rest.
Before installing a package,
the software manager analyzes the dependencies
and it'll try to fetch the dependencies
from the repositories.
So you will never see
the missing dependencies messages anymore.
Now, software repositories are provided
by the Linux distributions.
Typically, when you install a Linux distribution,
you get access to the standard software repositories
and every distribution makes sure that you have access
to thousands of packages in the software repositories.
Alternatively, you can work
with software repositories that are provided
by software vendors
and you can even create your own.
Software managers that are common,
in the Reddit and family,
we use YUM and DNF.
In Ubuntu, it's APT,
and we will explore what they look like in the next video.
But first, I want to make a drawing to show you
how software managers relate to the repositories.
In order to understand software managers,
you should understand the dependencies
because it's all about dealing with dependencies.
So in a software manager,
the central point is the repository.
Now what is the repository?
Well, the repository is an online and onsite resource
that contains packages.
Many packages.
You can have one repository, that sounds really common.
Most of the cases, you will have multiple repositories.
And then you are going to use your software manager
to install packages from these repositories.
So let's imagine that DNF is your software manager.
Then DNF is going to be configured to fetch the packages
from these repositories.
And if it finds any dependencies,
it'll automatically resolve these dependencies.
And the result of the work of the software manager
is that it keeps track of installed packages
in a local database.
And having this local database is a good thing,
because if you have this local database,
then you can see which version, for instance,
of a software package you are using.
Now, why is that good?
Well, that is good
because your software manager can fetch an index
from the repository.
In this index, it can compare the index.
It can compare the versions
of the packages in the software repository,
to the versions
of the packages that you have installed locally.
And then you can even do update accents to
make it easy to update packages.
And all of these are benefits of software managers.
I have used DNF in my example,
of course, this works
for other software managers, such as APT and YUM as well.