Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Linux-сСрвСр своими Ρ€ΡƒΠΊΠ°ΠΌΠΈΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 114

Автор ДСнис ΠšΠΎΠ»ΠΈΡΠ½ΠΈΡ‡Π΅Π½ΠΊΠΎ

vi [ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹] Ρ„Π°ΠΉΠ»

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° vi β€” это тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π²Ρ‹ смоТСтС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π² справочной систСмС.

wc [ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹] Ρ„Π°ΠΉΠ»

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° подсчитываСт количСство строк, символов ΠΈΠ»ΠΈ слов Π² тСкстовом Ρ„Π°ΠΉΠ»Π΅. Если Ρ„Π°ΠΉΠ» Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ стандартный Π²Π²ΠΎΠ΄. Π”Π°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ написании сцСнариСв ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкста. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ рассмотрСны Π² Ρ‚Π°Π±Π». 19.33.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ wc Π’Π°Π±Π»ΠΈΡ†Π° 19.33

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ОписаниС --bytes ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ количСства Π±Π°ΠΉΡ‚ΠΎΠ² -с ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ количСства символов --chars ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ количСства символов -l ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ количСства строк --lines ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ количСства строк -w ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ количСства слов. Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ --words ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ количСства слов. Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

xedit Ρ„Π°ΠΉΠ»

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° xedit являСтся ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΌ тСкстовым Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΌ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² систСмС X Window. ВмСсто Π½Π΅Π³ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹ kedit ΠΈΠ»ΠΈ gedit. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… являСтся стандартным Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ срСды KDE, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ срСды Gnome.

zdiff Ρ„Π°ΠΉΠ»Ρ‹

Данная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° распаковываСт Π°Ρ€Ρ…ΠΈΠ²Ρ‹ gzip ΠΈ выполняСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ diff.

19.5. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ RPM-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° RPM ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для произвСдСния всСх Π²ΠΈΠ΄ΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ обСспСчСниСм, Π² Ρ‚ΠΎΠΌ числС ΠΈ для создания ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для установки (RPM-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²).

ΠŸΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ сухих Ρ„Π°ΠΊΡ‚ΠΎΠ², взятых ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, рассмотрим простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ создания нСбольшого RPM-ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π― создал этот ΠΏΠ°ΠΊΠ΅Ρ‚ для своСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΊΠΈ, которая ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ состояниС ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π°.

Π‘ΡƒΠ΄Π΅ΠΌ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΡƒΠΆΠ΅ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΈ всС Ρ„Π°ΠΉΠ»Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΡƒΠΆΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹. ΠŸΡ€ΠΈ этом понадобятся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹:

port β€” ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ».

README β€” Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /usr/doc/port-1.0-99.

port.1 β€” Ρ„Π°ΠΉΠ» для справочной систСмы man.

ВсС эти Ρ„Π°ΠΉΠ»Ρ‹ я помСстил Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /root/port. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, это Π½Π΅ совсСм ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ, Π½ΠΎ ΠΎΠ± этом Π±ΡƒΠ΄Π΅Ρ‚ сказано Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ·ΠΆΠ΅.

Для создания ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» спСцификаций. Π’ Ρ„Π°ΠΉΠ»Π΅ спСцификаций указываСтся вся информация ΠΎ создаваСмом ΠΏΠ°ΠΊΠ΅Ρ‚Π΅: Π½Π°Π·Π²Π°Π½ΠΈΠ΅, вСрсия, Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Ρ„Π°ΠΉΠ»Ρ‹ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, дСйствия, выполняСмыС ΠΏΡ€ΠΈ установкС ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈ ΠΏΡ€ΠΈ Π΅Π³ΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ. Мой Ρ„Π°ΠΉΠ» спСцификаций для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ port прСдставлСн Π² листингС 19.1

Листинг 19.1. Π€Π°ΠΉΠ» спСцификации для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ port

Summary: Program to control your serial device

Name: port

Version: 1.0

Release: 101

Group: Monitoring

License:GPL

Packager: Denis Kolisnichenko [ [email protected]]

URL: http://dkws.narod.ru

%description

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° port ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° состояния ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ

ΠΏΠΎΡ€Ρ‚Π°. ΠŸΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ сигнала (1) Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π°,

port отправляСт сообщСниС Π·Π°ΠΏΡƒΡΡ‚ΠΈΠ²ΡˆΠ΅ΠΌΡƒ Π΅Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ email

%files

%doc /root/port/README

/root/port/port

/root/port/port.1

Для построСния ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½ΡƒΠΆΠ½ΠΎ ввСсти ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

# rpm –bb /root/port/port.spec

Если Π²Ρ‹ Π½Π΅ допустили Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ошибок ΠΏΡ€ΠΈ создании Ρ„Π°ΠΉΠ»Π° спСцификаций, Π½Π° экранС Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сообщСниС:

Executing(%install): /bin/sh –e /var/tmp/rpm-tmp.33439

Processing files: port-1.0-99

Finding Provides: (using /usr/lib/rpm/find-provides)…

Finding Requires: (using /usr/lib/rpm/find-requires)…

Requires: ld-linux.so.2 libc.so.6 libc.so.6(GLIBC_2.0)

Записан: /usr/src/RPM/RPMS/i686/port-1.0-99.i686.rpm

ΠŸΡ€ΠΈ этом Π±ΡƒΠ΄Π΅Ρ‚ создан ΠΏΠ°ΠΊΠ΅Ρ‚ port-1.0-99.i686.rpm. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /usr/src/RPM/RPMS/i686.

ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½ ΠΈΠ· Π±Π°Π·Ρ‹ RPM, Π½ΠΎ удалСния самих Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚. ДСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΄ΠΎ ΠΈ послС удалСния ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈΠ· Π±Π°Π·Ρ‹ RPM, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π² ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… %preun ΠΈ %postun соотвСтствСнно. НапримСр

%preun

rm –f /usr/bin/port

rm –f /usr/man/man1/port.1

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ β€” самый простой Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· полоТСния, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ являСтся Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ. РСшСниС этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΎΡΡ‚Π°Π²Π»ΡΡŽ Π²Π°ΠΌ Π² качСствС домашнСго задания.

А сСйчас ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅ΠΌ нСбольшой экспСримСнт. ЗапуститС Midnight Commander (mc), ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /usr/src/RPM/RPMS/i686/ ΠΈ Β«Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅Β» Π² ΠΏΠ°ΠΊΠ΅Ρ‚ port-1.0-99.i686.rpm ΠΊΠ°ΠΊ Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³. Π’ Π½Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Β«ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Β» INFO, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈ содСрТится вся информация ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅.

Π§Ρ‚ΠΎ ΠΆ, Π²Ρ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ с построСниСм простого ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π½ΠΎ для создания Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² установки Π²Π°ΡˆΠΈΡ… Π·Π½Π°Π½ΠΈΠΉ всС Π΅Ρ‰Π΅ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚. Π’Π΅ΠΏΠ΅Ρ€ΡŒ настала ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Ρ‚ΠΎΠΉ сухой Ρ‚Π΅ΠΎΡ€ΠΈΠΈ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ я упомянул Π² Π½Π°Ρ‡Π°Π»Π΅ этого ΠΏΡƒΠ½ΠΊΡ‚Π°. Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° создания RPM-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² состоит ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… этапов:

1. Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΡ исходных тСкстов ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ· Π°Ρ€Ρ…ΠΈΠ²Π°.

2. ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ· исходных тСкстов.

3. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ RPM-ΠΏΠ°ΠΊΠ΅Ρ‚Π°.

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° этапа ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈ сдСлали ΠΏΡ€ΠΈ создании ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π’Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² случаС, Ссли ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΡƒΠΆΠ΅ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΈΠ· исходных тСкстов.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° RPM ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ rpmrc. Поиск этого Ρ„Π°ΠΉΠ»Π° производится Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… /usr/lib/rpm, /etc, $HOME. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ этот Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

# rpm --showrc

Π—Π°ΠΏΠΈΡΡŒ topdir Ρ„Π°ΠΉΠ»Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ rpmrc содСрТит Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ RPM для построСния ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

# rpm –-showrc | grep topdir

-14 _builddir %{_topdir}/BUILD

-14 _rpmdir %{_topdir}/RPMS

-14 _sourcedir %{_topdir}/SOURCES

–14 _specdir %{_topdir}/SPECS

–14 _srcrpmdir %{_topdir}/SRPMS

–14 _topdir %{usrsrc}/RPM

Π£ мСня эти ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ находятся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /usr/src/RPM. Как Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π² этом ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ находятся ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ BUILD, RPMS, SOURCES, SPECS, SRPMS.

Π’ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ BUILD создаСтся RPM-ΠΏΠ°ΠΊΠ΅Ρ‚. Π’ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ SOURCES находятся сТатыС исходныС тСксты ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ RPMS ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ созданныС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹. Π’ΠΎΡ‡Π½Π΅Π΅, ΠΎΠ½ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ β€” это зависит ΠΎΡ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. Π’ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ SRPMS ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, содСрТащиС исходныС тСксты ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ SPECS находятся Ρ„Π°ΠΉΠ»Ρ‹ спСцификаций. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ„Π°ΠΉΠ» спСцификации называСтся Π½Π°Π·Π²Π°-Π½ΠΈΠ΅_ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-вСрсия-Ρ€Π΅Π»ΠΈΠ·.8рСс.

НапримСр, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ исходный тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π°Ρ€Ρ…ΠΈΠ²Π΅, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ RPM, скопируйтС Π΅Π³ΠΎ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ SOURCES:

# ср source_code-1.0.tar.gz /usr/src/RPM/SOURCES.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ RPM Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ, располоТСнными Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΌ с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈ Π΅Π³ΠΎ вСрсиСй. Для нашСго ΠΏΠ°ΠΊΠ΅Ρ‚Π° port это Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ port-1.0-99. ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ наш ΠΏΠ°ΠΊΠ΅Ρ‚ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /usr/src/RPM/port-1.0-99.

Π”ΡƒΠΌΠ°ΡŽ, ΡƒΠΆΠ΅ достаточно ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… RPM. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ спСцификаций. Π€Π°ΠΉΠ» спСцификаций состоит ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… сСгмСнтов: Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ, Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ, установочного. Π’ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ указываСтся общая информация ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅. Π’ листингС 19.1 ΠΊ сСгмСнту Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° относятся тэги Summary, Name, Version, Release, Group ΠΈ License. На Π½ΠΈΡ… ΠΌΡ‹ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΡ… Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ понятно ΠΈΠ· листинга 19.1.

Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ тэг: BuildRoot. Он измСняСт располоТСниС Π΄Π΅Ρ€Π΅Π²Π° BUILD. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ являСтся /usr/src/RPM ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ окруТСния $RPM_BUILD_ROOT. Π’ цСлях экономии дискового пространства ΠΏΠΎΠ»Π΅Π·Π½ΠΎ послС установки ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΄Π΅Ρ€Π΅Π²ΠΎ %RPM_BUILD_ROOT. Но это Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹, относящиСся ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ сначала с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ тэга BuildRoot Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Π° послС установки ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ.

Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сСгмСнтС находятся ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Π‘ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ β€” это %description, %files, %doc, %install. Π’ Ρ‚Π°Π±Π». 19.34 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ΅ описаниС ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄.

ΠœΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π’Π°Π±Π»ΠΈΡ†Π° 19.34

ΠœΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Π° ОписаниС %description ПолноС описаниС ΠΏΠ°ΠΊΠ΅Ρ‚Π° %prep ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π°Ρ€Ρ…ΠΈΠ²Π°. Π—Π΄Π΅ΡΡŒ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для извлСчСния исходного тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π΅Π³ΠΎ распаковки, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° исходного тСкста. ПослС ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ %prep Π·Π°Π΄Π°ΡŽΡ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ shell %setup ΠœΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Π° извлСчСния Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ· Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ². ΠžΠΏΡ†ΠΈΡ –n позволяСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ распаковываСтся Π°Ρ€Ρ…ΠΈΠ², располоТСнный Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ SOURCES, Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ BUILD %build ΠœΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Π° компилирования. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ здСсь запускаСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° make с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ %files Π—Π°Π΄Π°Π΅Ρ‚ список Ρ„Π°ΠΉΠ»ΠΎΠ², входящих Π² состав ΠΏΠ°ΠΊΠ΅Ρ‚Π°. ΠŸΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ ΠΏΠΎΠ»Π½Ρ‹ΠΉ, Π° Π½Π΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ. Для указания ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния $RPM_BUILD_ROOT. НСобходимыС Ρ„Π°ΠΉΠ»Ρ‹ ΡƒΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ BUILD. Π­Ρ‚ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ %setup ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ %pre (см. Π½ΠΈΠΆΠ΅) %config список Π—Π°Π΄Π°Π΅Ρ‚ список Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /etc %doc список Π—Π°Π΄Π°Π΅Ρ‚ список Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /usr/doc/[package]–[ver]–[release] %install Π­Ρ‚Π°ΠΏ установки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Π—Π΄Π΅ΡΡŒ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, входящиС Π² состав ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π£Π΄ΠΎΠ±Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ install ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я использовал Π² листингС 19.1 %pre ДСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Π΄ΠΎ инсталляции ΠΏΠ°ΠΊΠ΅Ρ‚Π° %post ДСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ послС инсталляции ΠΏΠ°ΠΊΠ΅Ρ‚Π° %preun ДСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π° %postun ДСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ послС удалСния ΠΏΠ°ΠΊΠ΅Ρ‚Π° %clean Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄Π΅Ρ€Π΅Π²Π° BUILD. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ вмСсто ΠΎΠΏΡ†ΠΈΠΈ β€” clean ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ rpm. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ содСрТит ΠΎΠ΄Π½Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ: rm –rf $RPM_BUILD_ROOT

НуТно ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ нСбольшоС Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄ %config ΠΈ %doc. Π’ этом случаС список задаСтся Π½Π΅ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π² ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Π΅ %files. Если послС ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ %files ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ просто ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС, Ρ‚ΠΎ Π² ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Π΅ %doc ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ (ΠΈΠ»ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ списку) Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π° %doc. НапримСр: