05.1 (Conspect) Packages. Repository. Community
Distribution
- Distribution: something from which you can put some software, usually multi-component. Something for downloading, installing, further using and maintaining a few multi-component software. This includes not only the medium that we get (download). This is used in such a way that you can deploy the download, install and maintain some software on your computer.
Examples of Distribution are LibreOfiice, Linux, TechLive and so on.
Distribution is not only a product, but also the community that stands behind this distribution and their resources;
Questions about training
(internal communication):
- Problem 1: Provide comfortable, reproducible, reliable development and assembly of these binary products. Our task is to make the end product as successful as possible;
- Problem 2: Integrating all of this software is a check that all of this together forms a really real system: it has everything you need, it's what you need for each other, it doesn't prevent you from fixing bugs if it prevents you;
(external communication): Problem 1: This distribution must somehow be delivered to the computer on which we install it; Problem 2: installation; Problem 3: Maintenance (update, error message, corruption check);
History of development
- There used to be no concept of distribution, there was no clear concept that there were some programs that ran on computers. That is, there was an idea: there is a computer and its hardware and all this hardware is recycled by some software, that is, a computer = software + hard. Then two ideas came up: cross-platform (portability) or that there is software written in C and this software can be built and run on different platforms in principle. There was a delivery problem - how can we get it across? That is to transfer knowledge about delivery and installation.
Free Licensing
- Legal distribution, installation, involvement in development, use.
To support such a repository you need infrastructure and organizational work - figures, human efforts, technical things. Definition :: people who receive a copy of the free software have the following four freedoms
- The freedom to run the program for any purpose.
- The freedom to study how the program works, and change it.
- The freedom to redistribute and make copies.
- The freedom to improve the program, and redistribute improved versions.
!The modern trend: the more standard (invariable) your environment in which our software gets, the less need to do extensive testing of the software product.
Communities around distribution
Structure: Kernel(active developers) It's just the developers Users
- All our free software is stored in some storage or Repository. It's more convenient to do something in the distribution than outside it. There is a division of roles - the guys who make some blowing and the maintainer - the one who design as a package and stack in the repository.
Defines distribution workflow conventions
- What is package;
- What is formal repository;
- How to download/install/upgrade packages from repo;
- How to check integrity of packages installed;
A range of tasks within the Repository:
- Maintain repository;
- Maintain individual packages in the repository;
- Improve community-wide technology;
- Maintain social/informational network;
Package
- The unit of software within a single distribution is the package. A package is NOT an application, it is NOT a program, it is not one thing at all that we can take away on disk. It is standing out of multiple files. If it's a software package, then it contains a program, and if it's a library, then it may not be a program, but a library. The idea of the package is that you can put it in and remove it. It's just a system component.
In different communities with different distribution - different concepts of packages. There are 3 big concepts and many, many different For example, Alt Liniux uses a package installer that also removes rpm - a big thing with tasks to install, remove, update, make related actions. The original idea of packages in Linux is very simple: a package is just an archive where we pack the files we need and after installing the package we unpack them.
== Practical part ==
1. Before you do any hard experiments with your installed system - do snapshots. If we suddenly break everything, we always mod on these snapshots to roll back.
Look for different packages on the site and try to install
In the Virtual and/or on your machine, you are logged in from user root:
# rpm -i nameofpackege
We're waiting for the installation. Checking that the package is an archive:
# file nameofpackege
# rpm2cpio nameofpackege > o.cpio
(copy from archive somewhere)
# cpio -itv -I o.cpio
And we see the contents of the nameofpackege package. We can look at the contents and the manual:
# man nameofpackege
Removing:
# rpm -e nameofpackege
We can check the integrity of the contents of all the files in this package, if anything! However, the team will report quite a few breaches of integrity, as many packages are modified during the installation of the
# rpm --verify --all
When we install a package, if it's tricky enough to deploy the archive inside the file system, sometimes you need to run additional actions. Example,
# rpm --query --scripts avahi -daemon
*To announce system services: creates a user, an alias user before installing the package. Because it requires a package to be installed.
Triggers
Suppose we install the nameofpackege package, it is among other things a desktop program, this program comes with desktop files. A desktop file is a descriptor of our software in different languages, its icon, from where it is launched. The presence of this desktop file should lead to its appearance in our menu. If there is a file - we should launch menu update. If there is a man - we should launch the system of updating documentation pages. These are all triggers.
Update the system:
# apt-get dist-upgrade
Bringing the system to a state where it contains only the freshest packages that are in repositories
For some packages, there are exceptions, for example, you cannot update the kernel in Alt Linux.