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

310 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Домашнее задание 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/
<!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>
```
Подключаем созданный репозиторий в систему
```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!
```
Готово, наш репозиторий в рабочем состоянии!