Files
homework07/README.md
2025-11-27 16:44:04 +03:00

18 KiB
Raw Blame History

Домашнее задание 7

Сборка RPM-пакета и создание репозитория

Для выполнение задания используется Fedora Linux 43 (Server Edition)

Устанавливаем дополнительные пакеты

Для работы с собственным репозиторием устанавливаем дополнительные пакеты

[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

[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

Установка пакета и зависимостей

[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

[root@fedora2 rpm]# cd ~/rpmbuild/SPECS/
[root@fedora2 SPECS]# vi httpd.spec

Найдем сценарий %post (в данном сценарии выполняются действия после установки пакета), и вставим небольшой скрипт, который заменит порт в стандартной конфигурации apache

sed -i 's/^Listen 80/Listen 81/g' /etc/httpd/conf/httpd.conf

Собираем RPM пакет

[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
...



Копируем пакеты в общий каталог

[root@fedora2 SPECS]# cp ~/rpmbuild/RPMS/noarch/* ~/rpmbuild/RPMS/x86_64/

Пробуем установить apache

[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 успешно установился, запускаем его и смотрим, какие порты он слушает.

[root@fedora2 x86_64]# systemctl start httpd

[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 порт, как мы и хотели.

Создание своего репозитория

Создадим каталог

[root@fedora2 x86_64]#  mkdir /var/www/html/repo

Скопируем туда ранее созданные RMP пакеты

[root@fedora2 x86_64]# cp ~/rpmbuild/RPMS/x86_64/*.rpm /var/www/html/repo/

Создаем репозиторий

[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

[root@fedora2 x86_64]# curl -a http://localhost:81/repo/
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
 <head>
  <title>Index of /repo</title>
 </head>
 <body>
<h1>Index of /repo</h1>
  <table>
   <tr><th valign="top"><img src="/icons/blank.gif" alt="[ICO]"></th><th><a href="?C=N;O=D">Name</a></th><th><a href="?C=M;O=A">Last modified</a></th><th><a href="?C=S;O=A">Size</a></th><th><a href="?C=D;O=A">Description</a></th></tr>
   <tr><th colspan="5"><hr></th></tr>
<tr><td valign="top"><img src="/icons/back.gif" alt="[PARENTDIR]"></td><td><a href="/">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
<tr><td valign="top"><img src="/icons/unknown.gif" alt="[   ]"></td><td><a href="httpd-2.4.65-3.fc43.x86_64.rpm">httpd-2.4.65-3.fc43...&gt;</a></td><td align="right">2025-11-27 15:47  </td><td align="right"> 45K</td><td>&nbsp;</td></tr>
<tr><td valign="top"><img src="/icons/unknown.gif" alt="[   ]"></td><td><a href="httpd-core-2.4.65-3.fc43.x86_64.rpm">httpd-core-2.4.65-3...&gt;</a></td><td align="right">2025-11-27 15:47  </td><td align="right">1.3M</td><td>&nbsp;</td></tr>
<tr><td valign="top"><img src="/icons/unknown.gif" alt="[   ]"></td><td><a href="httpd-devel-2.4.65-3.fc43.x86_64.rpm">httpd-devel-2.4.65-3..&gt;</a></td><td align="right">2025-11-27 15:47  </td><td align="right">194K</td><td>&nbsp;</td></tr>
<tr><td valign="top"><img src="/icons/unknown.gif" alt="[   ]"></td><td><a href="httpd-filesystem-2.4.65-3.fc43.noarch.rpm">httpd-filesystem-2.4..&gt;</a></td><td align="right">2025-11-27 15:47  </td><td align="right"> 12K</td><td>&nbsp;</td></tr>
<tr><td valign="top"><img src="/icons/unknown.gif" alt="[   ]"></td><td><a href="httpd-manual-2.4.65-3.fc43.noarch.rpm">httpd-manual-2.4.65-..&gt;</a></td><td align="right">2025-11-27 15:47  </td><td align="right">2.2M</td><td>&nbsp;</td></tr>
<tr><td valign="top"><img src="/icons/unknown.gif" alt="[   ]"></td><td><a href="httpd-tools-2.4.65-3.fc43.x86_64.rpm">httpd-tools-2.4.65-3..&gt;</a></td><td align="right">2025-11-27 15:47  </td><td align="right"> 77K</td><td>&nbsp;</td></tr>
<tr><td valign="top"><img src="/icons/unknown.gif" alt="[   ]"></td><td><a href="mod_ldap-2.4.65-3.fc43.x86_64.rpm">mod_ldap-2.4.65-3.fc..&gt;</a></td><td align="right">2025-11-27 15:47  </td><td align="right"> 58K</td><td>&nbsp;</td></tr>
<tr><td valign="top"><img src="/icons/unknown.gif" alt="[   ]"></td><td><a href="mod_lua-2.4.65-3.fc43.x86_64.rpm">mod_lua-2.4.65-3.fc4..&gt;</a></td><td align="right">2025-11-27 15:47  </td><td align="right"> 58K</td><td>&nbsp;</td></tr>
<tr><td valign="top"><img src="/icons/unknown.gif" alt="[   ]"></td><td><a href="mod_proxy_html-2.4.65-3.fc43.x86_64.rpm">mod_proxy_html-2.4.6..&gt;</a></td><td align="right">2025-11-27 15:47  </td><td align="right"> 34K</td><td>&nbsp;</td></tr>
<tr><td valign="top"><img src="/icons/unknown.gif" alt="[   ]"></td><td><a href="mod_session-2.4.65-3.fc43.x86_64.rpm">mod_session-2.4.65-3..&gt;</a></td><td align="right">2025-11-27 15:47  </td><td align="right"> 42K</td><td>&nbsp;</td></tr>
<tr><td valign="top"><img src="/icons/unknown.gif" alt="[   ]"></td><td><a href="mod_ssl-2.4.65-3.fc43.x86_64.rpm">mod_ssl-2.4.65-3.fc4..&gt;</a></td><td align="right">2025-11-27 15:47  </td><td align="right">109K</td><td>&nbsp;</td></tr>
<tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="repodata/">repodata/</a>              </td><td align="right">2025-11-27 15:47  </td><td align="right">  - </td><td>&nbsp;</td></tr>
   <tr><th colspan="5"><hr></th></tr>
</table>
</body></html>

Подключаем созданный репозиторий в систему

[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

Для проверки добавим еще паке в наш репозиторий

[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                                                                                                                                  ]

Обновим список пакетов

[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.

Посмотрим, какие пакеты данный момент есть в репозитории

[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

Пробуем установить

[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!

Готово, наш репозиторий в рабочем состоянии!