Home  >  Article  >  System Tutorial  >  Detailed explanation of Linux package manager

Detailed explanation of Linux package manager

WBOY
WBOYforward
2024-02-11 17:12:121252browse

An important factor that distinguishes a Linux distribution is its package management system. In this article, you will learn about packaging and package managers in Linux. We'll introduce you to the concepts of "packages" and "package managers" and how they work, as well as some common package managers.

Detailed explanation of Linux package manager

What is a package manager?

Simply put, a "package manager" (or "package manager") is a tool that allows users to install, remove, upgrade, configure, and manage software packages on an operating system. A package manager can be a graphical application like Software Center or a command-line tool like apt-get or pacman.

You'll notice that I use the word "package" a lot in tutorials and articles. To understand package managers, you must understand what packages are.

What is a package?

A "package" (or "software package") usually refers to an application, which can be a GUI application, a command line tool, or a software library (required by other software programs). A package is essentially an archive file that contains a binary executable, configuration files, and sometimes dependency information.

In the old days, software used to be installed from its source code. You would refer to a file (usually named README) to see what software components it requires and where the binaries are. It usually includes a configuration script or Makefile. You must compile the software yourself or handle all dependencies yourself (some software requires other software to be installed).

To get rid of this complexity, Linux distributions have created their own packaging formats that provide end users with ready-to-use binaries (precompiled software) for installing the software, while also providing some metadata (version number, description) and dependencies.

It’s like baking a cake versus buying a cake.

Detailed explanation of Linux package manager

Around the mid-1990s, Debian created the DEB packaging format (.deb), and Red Hat Linux created the RPM (abbreviation for Red Hat Package Manager) packaging system (.rpm). The way to compile source code still exists, but is now optional.

To interact with or use the packaging system, you need a package manager.

How does the package manager work?

Please remember that a package manager is a general concept, it is not unique to Linux. You will often find package managers for various software or programming languages. There is a PIP package manager just for Python packages. Even the Atom editor has its own package manager.

Since the focus of this article is Linux, I will start from the Linux perspective. However, much of the explanation here can also be applied to package managers in general.

I created this diagram (based on the SUSE Wiki) so that you can easily understand how the package manager works.

Detailed explanation of Linux package manager

Almost all Linux distributions have a "software repository", which is basically a collection of software packages. Yes, there can be more than one software repository. Software libraries contain different kinds of software packages.

Software warehouses also have metadata files, which contain software package information, such as software package name, version number, software package description, and software warehouse name. This is what you see using the apt show command in Ubuntu/Debian.

The package manager on your system will first interact with the metadata. The package manager creates a local cache of metadata on your system. When you run your package manager's update option (such as apt update), it updates the local metadata cache by referencing the metadata in the repository.

When you run the package manager's installation command (such as apt install package_name), the package manager will reference this cache. If it finds the package information in the cache, it uses the Internet to connect to the appropriate repository and download the package before installing it on your system.

A package may have dependencies. Meaning, it may require additional packages to be installed. Package managers usually handle these dependencies and install them automatically along with the package you are installing.

Detailed explanation of Linux package manager

*The package manager in Linux will handle dependencies*

Similarly, when you use the package manager to delete a package, it will either automatically delete it or notify you that the system has unused packages that can be cleaned up.

In addition to the obvious tasks of installing and removing, you can also use the package manager to configure packages and manage them according to your needs. For example, you can prevent a certain package version from being upgraded during regular system updates. There's probably a lot more your package manager can do.

Different types of package managers

Package managers vary depending on the packaging system, but the same packaging system may have multiple package managers.

For example, RPM has Yum and DNF package managers. For DEB, you have command line based package managers like apt-get, aptitude, etc.

Detailed explanation of Linux package manager

Synaptic Package Manager

Package managers are not necessarily command line-based, there are also graphical package management tools, such as Synaptic. Your distribution's Software Center is also a package manager, even if it's running apt-get or DNF under the hood.

in conclusion

I don't want to go into further detail on this topic, although I could go on, but that would detract from the goal of this topic - which is to give you a basic understanding of package managers in Linux.

I'm ignoring the new universal packaging formats like Snap and Flatpak for now.

The above is the detailed content of Detailed explanation of Linux package manager. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:lxlinux.net. If there is any infringement, please contact admin@php.cn delete