Задание 1: Распаковка дистрибутива
В этом разделе мы изучим процесс работы с дистрибутивом, поставляемым в виде zip-архива. Мы освоим проверку содержимого архива, распаковку основных пакетов и работу с дополнительным программным обеспечением, входящим в его состав.
Проверка содержимого zip-архива
Получите подробную информацию о содержимом zip-файла с дистрибутивом:
[student@srv1 ~]$ zipinfo PSQ-6.7.0-redos8.0-distrib.zip
Archive: PSQ-6.7.0-redos8.0-distrib.zip
Zip file size: 718277738 bytes, number of entries: 9
-rw-r--r-- 3.0 unx 31855796 bx stor 26-Mar-20 19:21 documentation-distrib.zip
-rw-r--r-- 3.0 unx 28150149 bx stor 26-Mar-20 19:21 installer-distrib.zip
-rw-r--r-- 3.0 unx 210215846 bx stor 26-Mar-20 19:21 owned-distrib.zip
-rw-r--r-- 3.0 unx 447298251 bx stor 26-Mar-20 19:21 party-distrib.zip
-rw-r--r-- 3.0 unx 745726 bx stor 26-Mar-20 19:21 untrusted-distrib.zip
-rwxr-xr-x 3.0 unx 2061 tx defN 26-Mar-20 19:09 unpacker-distrib.sh
-rw-r--r-- 3.0 unx 8938 tx defN 26-Mar-20 19:22 regid.2021-12.ru.sbertech_psq-6.7.0.swidtag
-rw-r--r-- 3.0 unx 107320 tx defN 26-Mar-20 19:22 cyclonedx-distrib.json
-rw-r--r-- 3.0 unx 33 tx defN 26-Mar-20 19:22 requirements.txt
9 files, 718384120 bytes uncompressed, 718276162 bytes compressed: 0.0%
Такую же информацию можно получить и утилитой unzip. Самостоятельно изучите, как это сделать.
Как это сделать?
Для получения технической информации о файлах внутри zip-архива с помощью утилиты unzip в командной строке Linux используется опция -Z:
[student@srv1 ~]$ unzip -Z PSQ-6.7.0-redos8.0-distrib.zip
Получите информацию только о тех файлах zip-архива с дистрибутивом, которые сами представляют собой zip-файлы. Информация должна включать в себя оценку степени сжатия файла в архиве:
[student@srv1 ~]$ zipinfo -m PSQ-6.7.0-redos8.0-distrib.zip '*.zip'
-rw-r--r-- 3.0 unx 31855796 bx 0% stor 26-Mar-20 19:21 documentation-distrib.zip
-rw-r--r-- 3.0 unx 28150149 bx 0% stor 26-Mar-20 19:21 installer-distrib.zip
-rw-r--r-- 3.0 unx 210215846 bx 0% stor 26-Mar-20 19:21 owned-distrib.zip
-rw-r--r-- 3.0 unx 447298251 bx 0% stor 26-Mar-20 19:21 party-distrib.zip
-rw-r--r-- 3.0 unx 745726 bx 0% stor 26-Mar-20 19:21 untrusted-distrib.zip
Распаковка основных пакетов
Распаковка уже была выполнена в задании второго уровня этой темы. Здесь необходимо обеспечить возможность запуска установочного скрипта без явного вызова оболочки.
Проверим содержимое первой строки установочного скрипта:
[student@srv1 Distr]$ head -1 unpacker-distrib.sh
#!/bin/bash
Эта строка сообщает, что файл скрипта может быть запущен без явного указания оболочки, поскольку неявно указана оболочка /bin/bash.
Работа с дополнительным ПО в zip-архиве
В zip-архиве с дистрибутивом поставляется программное обеспечение, которое устанавливается при необходимости вручную.
Решим следующие задачи:
- Найти в zip-архиве rpm-пакет
copywala. - Получить информацию об этом пакете.
Проверим, установлен ли такой пакет:
[student@srv1 ~]$ rpm -qa '*copywala*'
Не установлен.
Найдем пакет в дистрибутиве:
[student@srv1 ~]$ find Distr/ -maxdepth 2 -type f -name '*copywala*.rpm'
Distr/distributive/pangolin-copywala-1.2.2-redos8.0.x86_64.rpm
Получим информацию о пакете:
[student@srv1 ~]$ rpm -qip Distr/distributive/pangolin-copywala-1.2.2-redos8.0.x86_64.rpm
Name : pangolin-copywala
Version : 1.2.2
Release : redos8.0
Architecture: x86_64
Install Date: (not installed)
Group : Other
Size : 42629536
License : "Sbertech license"
Signature : (none)
Source RPM : copywala-1.2.2-redos8.0.src.rpm
Build Date : Вт 24 фев 2026 19:17:34
Build Host : d63381ef5123
Summary : "Commit hash: 4882b486f171ab8075a87c0f502c05430914d714
Description :
Provides creation of backups and recovery of data from backups.
Пакет не установлен в системе, поэтому кроме опций -qi, позволяющих получить информацию о пакете, необходима еще и опция -p. Самостоятельно получите информацию об этом.
Что означает опция -p?
Опция -p (package) в команде rpm указывает менеджеру пакетов, что источником информации является файл пакета, а не запись в системной базе данных уже установленных программ.
Перед установкой пакета бывает разумно выяснить список его зависимостей:
[student@srv1 ~]$ rpm -qRp Distr/distributive/pangolin-copywala-1.2.2-redos8.0.x86_64.rpm
Вывод команды:
/bin/sh
/bin/sh
/bin/sh
config(pangolin-copywala) = 1.2.2-redos8.0
libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.17)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.2)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.32)(64bit)
libc.so.6(GLIBC_2.33)(64bit)
libc.so.6(GLIBC_2.34)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libcrypto.so.3()(64bit)
libcrypto.so.3(OPENSSL_3.0.0)(64bit)
libfe_elog.so()(64bit)
libgcc_s.so.1()(64bit)
libgcc_s.so.1(GCC_3.0)(64bit)
libjsoncpp.so.25()(64bit)
libpassword_encryption.so.1()(64bit)
libresolv.so.2()(64bit)
libssl.so.3()(64bit)
libssl.so.3(OPENSSL_3.0.0)(64bit)
libstdc++.so.6()(64bit)
libstdc++.so.6(CXXABI_1.3)(64bit)
libstdc++.so.6(GLIBCXX_3.4)(64bit)
libstdc++.so.6(GLIBCXX_3.4.11)(64bit)
libstdc++.so.6(GLIBCXX_3.4.14)(64bit)
libstdc++.so.6(GLIBCXX_3.4.15)(64bit)
libstdc++.so.6(GLIBCXX_3.4.17)(64bit)
libstdc++.so.6(GLIBCXX_3.4.18)(64bit)
libstdc++.so.6(GLIBCXX_3.4.20)(64bit)
libstdc++.so.6(GLIBCXX_3.4.21)(64bit)
libstdc++.so.6(GLIBCXX_3.4.29)(64bit)
libstdc++.so.6(GLIBCXX_3.4.32)(64bit)
libstdc++.so.6(GLIBCXX_3.4.9)(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsZstd) <= 5.4.18-1
rtld(GNU_HASH)
Какие-то из этих зависимостей могут потребовать установку дополнительного ПО.
Проще всего проверить это можно, протестировав установку пакета, не выполняя его реальную установку.
Например, так:
[student@srv1 ~]$ rpm -ivh --test Distr/distributive/pangolin-copywala-1.2.2-redos8.0.x86_64.rpm
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Проблемы не обнаружены. Неудовлетворенных зависимостей не выявлено.