Добавить README.md

This commit is contained in:
2025-11-27 16:44:04 +03:00
commit cd23053b92

309
README.md Normal file
View File

@@ -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/
<!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!
```
Готово, наш репозиторий в рабочем состоянии!