From cd23053b928d9ee4cf5309a64964df4726ac440e Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 27 Nov 2025 16:44:04 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 309 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 309 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..454e370 --- /dev/null +++ b/README.md @@ -0,0 +1,309 @@ +# Домашнее задание 7 + +## Сборка RPM-пакета и создание репозитория + +Для выполнение задания используется Fedora Linux 43 (Server Edition) + + +### Устанавливаем дополнительные пакеты + +Для работы с собственным репозиторием устанавливаем дополнительные пакеты + + + +```bash +[root@fedora2 ~]# yum install -y wget rpmdevtools rpm-build createrepo yum-utils cmake gcc git +Updating and loading repositories: + Fedora 43 openh264 (From Cisco) - x86_ 100% | 3.7 KiB/s | 5.8 KiB | 00m02s + Fedora 43 - x86_64 100% | 6.9 MiB/s | 35.7 MiB | 00m05s + Fedora 43 - x86_64 - Updates 100% | 710.5 KiB/s | 5.7 MiB | 00m08s +Repositories loaded. +Package "wget2-wget-2.2.0-6.fc43.x86_64" is already installed. +... + +... +[76/78] Removing libxcrypt-0:4.4.38-8.fc43.x86_64 100% | 1.2 KiB/s | 18.0 B | 00m00s +[77/78] Removing libgomp-0:15.2.1-2.fc43.x86_64 100% | 2.2 KiB/s | 9.0 B | 00m00s +[78/78] Removing libgcc-0:15.2.1-2.fc43.x86_64 100% | 3.0 B/s | 11.0 B | 00m03s +Complete! +``` + + + +### Загрузка SRPM пакета apache + +Создаем папку куда будем загружать, и скачиваем apache +```bash +[root@fedora2 ~]# mkdir /var/rpm +[root@fedora2 ~]# cd /var/rpm/ +[root@fedora2 rpm]# yumdownloader --source httpd +enabling fedora-source repository +enabling fedora-cisco-openh264-source repository +enabling updates-source repository +Fedora 43 - x86_64 8.5 MB/s | 35 MB 00:04 +Fedora 43 - Source 6.3 MB/s | 5.9 MB 00:00 +Fedora 43 openh264 (From Cisco) - x86_64 1.8 kB/s | 1.8 kB 00:01 +Fedora 43 openh264 (From Cisco) - x86_64 - Source 1.1 kB/s | 770 B 00:00 +Fedora 43 - x86_64 - Updates 4.2 MB/s | 4.7 MB 00:01 +Fedora 43 - Updates Source 901 kB/s | 769 kB 00:00 +httpd-2.4.65-3.fc43.src.rpm 183 kB/s | 7.7 MB 00:43 + +``` + + +Установка пакета и зависимостей + +```bash +[root@fedora2 rpm]# rpm -Uvh httpd-2.4.65-3.fc43.src.rpm +Updating / installing... + 1:httpd-2.4.65-3.fc43 ################################# [100%] +[root@fedora2 rpm]# yum-builddep httpd -y +enabling fedora-source repository +enabling fedora-cisco-openh264-source repository +enabling updates-source repository +Last metadata expiration check: 0:06:21 ago on Thu 27 Nov 2025 12:00:11 PM MSK. +Package make-1:4.4.1-11.fc43.x86_64 is already installed. +Package gcc-15.2.1-4.fc43.x86_64 is already installed. +Package systemd-rpm-macros-258-1.fc43.noarch is already installed. +Package gnupg2-2.4.8-4.fc43.x86_64 is already installed. +Package perl-interpreter-4:5.42.0-520.fc43.x86_64 is already installed. +Package pkgconf-pkg-config-2.3.0-3.fc43.x86_64 is already installed. +Package findutils-1:4.10.0-6.fc43.x86_64 is already installed. +Package libxcrypt-devel-4.5.2-1.fc43.x86_64 is already installed. +Dependencies resolved. +============================================================================================================================================================================================================================================================================================================================= + Package Architecture Version Repository Size +============================================================================================================================================================================================================================================================================================================================= +Installing: + apr-devel x86_64 1.7.6-3.fc43 fedora 235 k + apr-util-devel x86_64 1.6.3-25.fc43 updates 78 k +... + +... +Complete! + +``` + + +### Изменение и сборка пакета +Далее я хочу изменить установку apache так, что бы после установки он работал на 81 порту а не не на 80. +Для этого редактируем httpd.spec + +```bash +[root@fedora2 rpm]# cd ~/rpmbuild/SPECS/ +[root@fedora2 SPECS]# vi httpd.spec +``` + +Найдем сценарий %post (в данном сценарии выполняются действия после установки пакета), и вставим небольшой скрипт, который заменит порт в стандартной конфигурации apache + + +```bash +sed -i 's/^Listen 80/Listen 81/g' /etc/httpd/conf/httpd.conf +``` + + +Собираем RPM пакет + +```bash +[root@fedora2 SPECS]# rpmbuild -ba httpd.spec -D 'debug_package %{nil}' +setting SOURCE_DATE_EPOCH=1762905600 +Executing(%mkbuilddir): /bin/sh -e /var/tmp/rpm-tmp.2KbsA2 +Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.Mrff9G ++ umask 022 ++ cd /root/rpmbuild/BUILD/httpd-2.4.65-build ++ /usr/libexec/gpgverify --keyring=/root/rpmbuild/SOURCES/KEYS --signature=/root/rpmbuild/SOURCES/httpd-2.4.65.tar.bz2.asc --data=/root/rpmbuild/SOURCES/httpd-2.4.65.tar.bz2 +gpgv: Signature made Mon Jul 21 15:10:24 2025 MSK +gpgv: using RSA key 65B2D44FE74BD5E3DE3AC3F082781DE46D5954FA +... + + + +``` + + +Копируем пакеты в общий каталог +```bash +[root@fedora2 SPECS]# cp ~/rpmbuild/RPMS/noarch/* ~/rpmbuild/RPMS/x86_64/ + +``` + +Пробуем установить apache + +```bash +[root@fedora2 SPECS]# cd ~/rpmbuild/RPMS/x86_64 +[root@fedora2 x86_64]# dnf install ./httpd-2.4.65-3.fc43.x86_64.rpm +[root@fedora2 x86_64]# dnf install ./httpd-2.4.65-3.fc43.x86_64.rpm +Updating and loading repositories: +Repositories loaded. +Package Arch Version Repository Size +Installing: + httpd x86_64 2.4.65-3.fc43 @commandline 61.5 KiB +Installing dependencies: + fedora-logos-httpd noarch 42.0.1-2.fc43 fedora 12.1 KiB + httpd-core x86_64 2.4.65-3.fc43 updates 4.5 MiB + httpd-filesystem noarch 2.4.65-3.fc43 +.... + +.... +[10/10] Installing julietaula-montserrat-fonts-1:9.000-3.fc43.noarch 100% | 6.5 MiB/s | 5.6 MiB | 00m01s +Warning: skipped OpenPGP checks for 1 package from repository: @commandline +Complete! +``` + + +Apache успешно установился, запускаем его и смотрим, какие порты он слушает. + +```bash +[root@fedora2 x86_64]# systemctl start httpd + +``` + +```bash +[root@fedora2 x86_64]# ss -tulpn | grep httpd +tcp LISTEN 0 511 *:81 *:* users:(("httpd",pid=134653,fd=4),("httpd",pid=134652,fd=4),("httpd",pid=134651,fd=4),("httpd",pid=134649,fd=4) +``` + +Мы видим, что он слушает 81 порт, как мы и хотели. + +### Создание своего репозитория + +Создадим каталог + +```bash +[root@fedora2 x86_64]# mkdir /var/www/html/repo +``` + + + +Скопируем туда ранее созданные RMP пакеты +```bash +[root@fedora2 x86_64]# cp ~/rpmbuild/RPMS/x86_64/*.rpm /var/www/html/repo/ +``` + + +Создаем репозиторий +```bash +[root@fedora2 x86_64]# createrepo /var/www/html/repo/ +Directory walk started +Directory walk done - 11 packages +Temporary output repo path: /var/www/html/repo/.repodata/ +Pool started (with 5 workers) +Pool finished + +``` + + + +С помощью curl проверим, что нам отдает apache +```bash +[root@fedora2 x86_64]# curl -a http://localhost:81/repo/ + + + + Index of /repo + + +

Index of /repo

+ + + + + + + + + + + + + + + + + +
[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory   -  
[   ]httpd-2.4.65-3.fc43...>2025-11-27 15:47 45K 
[   ]httpd-core-2.4.65-3...>2025-11-27 15:47 1.3M 
[   ]httpd-devel-2.4.65-3..>2025-11-27 15:47 194K 
[   ]httpd-filesystem-2.4..>2025-11-27 15:47 12K 
[   ]httpd-manual-2.4.65-..>2025-11-27 15:47 2.2M 
[   ]httpd-tools-2.4.65-3..>2025-11-27 15:47 77K 
[   ]mod_ldap-2.4.65-3.fc..>2025-11-27 15:47 58K 
[   ]mod_lua-2.4.65-3.fc4..>2025-11-27 15:47 58K 
[   ]mod_proxy_html-2.4.6..>2025-11-27 15:47 34K 
[   ]mod_session-2.4.65-3..>2025-11-27 15:47 42K 
[   ]mod_ssl-2.4.65-3.fc4..>2025-11-27 15:47 109K 
[DIR]repodata/ 2025-11-27 15:47 -  

+ + +``` + + +Подключаем созданный репозиторий в систему + +```bash +[root@fedora2 x86_64]# cat >> /etc/yum.repos.d/home.repo<< EOF +[home] +name=home-linux +baseurl=http://localhost:81/repo +gpgcheck=0 +enabled=1 +EOF + +``` + + + +Для проверки добавим еще паке в наш репозиторий + +```bash +[root@fedora2 x86_64]# cd /var/www/html/repo/ +[root@fedora2 repo]# wget https://repo.percona.com/yum/percona-release-latest.noarch.rpm +Saving 'percona-release-latest.noarch.rpm' +HTTP response 200 [https://repo.percona.com/yum/percona-release-latest.noarch.rpm] +percona-release-late 100% [=====================================================================================================================================================================================================>] 27.86K --.-KB/s + [Files: 1 Bytes: 27.86K [89.30KB/s] Redirects: 0 Todo: 0 Errors: 0 ] + +``` + + +Обновим список пакетов +```bash +[root@fedora2 repo]# createrepo /var/www/html/repo/ +Directory walk started +Directory walk done - 13 packages +Temporary output repo path: /var/www/html/repo/.repodata/ +Pool started (with 5 workers) +Pool finished +[root@fedora2 repo]# yum makecache +Updating and loading repositories: + home-linux 100% | 1.1 MiB/s | 6.8 KiB | 00m00s +Repositories loaded. +Metadata cache created. + +``` + + +Посмотрим, какие пакеты данный момент есть в репозитории +```bash +[root@fedora2 repo]# yum list | grep home +Updating and loading repositories: +Repositories loaded. +httpd-devel.x86_64 2.4.65-3.fc43 home +httpd-manual.noarch 2.4.65-3.fc43 home +mod_ldap.x86_64 2.4.65-3.fc43 home +mod_proxy_html.x86_64 1:2.4.65-3.fc43 home +mod_session.x86_64 2.4.65-3.fc43 home +mod_ssl.x86_64 1:2.4.65-3.fc43 home +percona-release.noarch 1.0-32 home + +``` + + +Пробуем установить + +```bash +[root@fedora2 repo]# yum install -y percona-release.noarch +Updating and loading repositories: +Repositories loaded. +Package Arch Version Repository Size +Installing: + percona-release noarch 1.0-32 home 50.3 KiB +... + +... +Complete! + +``` + + +Готово, наш репозиторий в рабочем состоянии! +