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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π’Π°ΠΉΠΌ-ΠΌΠ΅Π½Π΅Π΄ΠΆΠΌΠ΅Π½Ρ‚ для систСмных администраторов». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 48

Автор Вомас Π›ΠΈΠΌΠΎΠ½Ρ‡Π΅Π»Π»ΠΈ

Как ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π½ΡƒΠΆΠ½ΠΎΠΌΡƒ сСрвСру с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SSH

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ вас Ρ‚Ρ€ΠΈ сСрвСра: server1.example.com, server2.example.com ΠΈ server3.example.com. На Π½ΠΈΡ… располоТСно ΠΌΠ½ΠΎΠ³ΠΎ вСбсайтов, ΠΈ Π²Π°ΠΌ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ сайт Π½Π° ΠΊΠ°ΠΊΠΎΠΌ сСрвСрС. Π“Π΄Π΅ находится сайт www.everythingsysadmin.com β€” Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ сСрвСрС? Π’Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π½Π° Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ, Π½ΠΎ Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ пСрСнСсли Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈΠ·-Π·Π° Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ мСста Π½Π° дискС. Π—Π°Ρ‡Π΅ΠΌ Π²ΠΎΠΎΠ±Ρ‰Π΅ всС это Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ? НСт Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ нСобходимости Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ имя хоста Π²Π΅Π±-сайта Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ SSH! НапримСр, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ssh www.everythingsysadmin.com, ΠΈ Π²Ρ‹ ΠΎΠΊΠ°ΠΆΠ΅Ρ‚Π΅ΡΡŒ Π½Π° Π½ΡƒΠΆΠ½ΠΎΠΌ сСрвСрС. Π­Ρ‚ΠΎ довольно ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Π½ΠΎ Π²Ρ‹ Π½Π΅ ΠΏΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ часто люди Π·Π°Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΎ Ρ‚Π°ΠΊΠΎΠΉ возмоТности!

Π£ ΠΊΠΎΠ³ΠΎ найдСтся врСмя Π·Π°ΡƒΡ‡ΠΈΡ‚ΡŒ всС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ послС рСдактирования Ρ„Π°ΠΉΠ»ΠΎΠ²? Π’Π°ΠΊΠΈΠ΅ подробности Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ сам ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€.

На ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π° make! Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ инструмСнтом, Ρ‡Π΅ΠΌ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ компилятора. Она позволяСт Π²Π°ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ для обновлСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Ссли Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π±Ρ‹Π»ΠΈ внСсСны измСнСния.


β™₯ Команда make являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· самых ΠΌΠΎΡ‰Π½Ρ‹Ρ… инструмСнтов систСмного администрирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ Π±Ρ‹Π»ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½Ρ‹. Π― ΡΠ»Ρ‹ΡˆΠ°Π», Ρ‡Ρ‚ΠΎ программисты Ρ‚ΠΎΠΆΠ΅ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ!


Π£ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ make большС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй, Ρ‡Π΅ΠΌ Π±Ρ‹Π»ΠΎ ΠΌΡƒΠΆΠ΅ΠΉ Ρƒ Π­Π»ΠΈΠ·Π°Π±Π΅Ρ‚ Π’Π΅ΠΉΠ»ΠΎΡ€, поэтому я лишь Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡŽ Π΅Π΅ Π²Π°ΠΌ. (ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π΅ Π³Π»Π°Π²Ρ‹ практичСски любой ΠΊΠ½ΠΈΠ³ΠΈ, посвящСнной ΠΊΠΎΠΌΠ°Π½Π΄Π΅ make, Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ 99 % Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π·Π°Π΄Π°Ρ‡ систСмного администрирования, ΠΈ Π² 10 Ρ€Π°Π· большС, Ρ‡Π΅ΠΌ Π·Π½Π°ΡŽΡ‚ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ.)

ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ make

Команда make Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, вСсьма умСстно ΠΈΠΌΠ΅Π½ΡƒΠ΅ΠΌΡ‹ΠΉ Makefile. Π’ этом Ρ„Π°ΠΉΠ»Π΅ находятся инструкции, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ make, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π΄Π΅Π»Π°Ρ‚ΡŒ.

КаТдая инструкция ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚:

whole: partA partB partC

ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΡΠΎΠ·Π΄Π°ΡŽΡ‰Π°Ρ whole

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ начинаСтся с ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ создан. Π—Π°Ρ‚Π΅ΠΌ стоит Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Ρ„Π°ΠΉΠ»Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для построСния Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ.[6] Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ создаСтся Ρ„Π°ΠΉΠ» whole, ΠΈ устанавливаСтся ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ partA, partB ΠΈ partC. Если ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±ΡƒΠ΄Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΡƒΡŽ whole.

ΠŸΡ€ΠΈΠ²Π΅Π΄Ρƒ Π²ΠΏΠΎΠ»Π½Π΅ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

aliases.db: aliases

newaliases

@echo Done updating aliases

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ, Ссли Ρ„Π°ΠΉΠ» aliases Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½, ΠΊΠΎΠΌΠ°Π½Π΄Π° newaliases Ρ€Π΅Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ» aliases.db. Π’ случаС успСха Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ сообщСниС Β«Done updating aliasesΒ» (Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ aliases).

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ вторая ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΡ строчки ΠΊΠΎΠ΄Π° написаны с отступом. ΠžΡ‚ΡΡ‚ΡƒΠΏ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ достигаСтся табуляциСй, Π° Π½Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ². ΠŸΠΎΡ‡Π΅ΠΌΡƒ? НавСрноС, ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ make Ρ…ΠΎΡ‚Π΅Π» Π½Π°ΠΊΠ°Π·Π°Ρ‚ΡŒ мСня Π·Π° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ участок ΠΊΠΎΠ΄Π° Π² систСмС, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±ΡƒΠ»ΡΡ†ΠΈΡŽ Π² ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, я Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽ это Π½Π° свой счСт.

ОбновлСниС Ρ„Π°ΠΉΠ»Π° Π½Π΅ происходит автоматичСски. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ make:

Server1# make aliases.db

newaliases

Done updating aliases

Server1#

Π’ΠΎΡ‚ Ρ‚Π°ΠΊ! Команда make ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π»Π° свой Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, выяснила, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» aliases Π½ΠΎΠ²Π΅Π΅, Ρ‡Π΅ΠΌ aliases.db (сравнив ΠΈΡ… ΠΌΠ΅Ρ‚ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ), ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»Π°, Ρ‡Ρ‚ΠΎ запуск ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ newaliases ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ обновлСнию Ρ„Π°ΠΉΠ»Π° aliasesAb. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ make Π΅Ρ‰Π΅ Ρ€Π°Π·:

Server1# make aliases.db

Server1#

Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π½Π΅ выводится. ΠŸΠΎΡ‡Π΅ΠΌΡƒ? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ согласно ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, вСдь Ρ„Π°ΠΉΠ» aliases.db Π½ΠΎΠ²Π΅Π΅ Ρ„Π°ΠΉΠ»Π° aliases. Команда make Π»Π΅Π½ΠΈΠ²Π° ΠΈ выполняСт ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ для получСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Она ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° основС ΠΌΠ΅Ρ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² Ρ„Π°ΠΉΠ»Π°Ρ….

Π’ΠΎΡ‚ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° Π² Ρ„Π°ΠΉΠ»Π΅ Makefile:

file1.output: file1.input

command1 <file.input> file.output

file2.output: file2.input

command1 file2.input > [email protected]

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ слСдуСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ стандартныС ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° stdin ΠΈ stdout (ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΎ символами < ΠΈ >), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ fileXnput ΠΈ произвСсти запись Π² file, output. Π’Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ, Π½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±Π΅Ρ€Π΅Ρ‚ имя Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈ пСрСнаправляСт вывод… ΠΊΡƒΠ΄Π°? ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ [email protected] ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«Ρ„Π°ΠΉΠ», создаваСмый этой инструкциСй», Π² нашСм случаС это file2.output. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π»ΠΈ мнСмоничСскоС ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π²Ρ€ΠΎΠ΄Π΅ $the ΠΈΠ»ΠΈ $this? НСизвСстно. Π’Π°ΠΌ совсСм Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ [email protected], Π½ΠΎ с Π½ΠΈΠΌ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡƒΠΌΠ½Π΅Π΅ своих ΠΊΠΎΠ»Π»Π΅Π³.

Команда make, запущСнная Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², выполняСт ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Makefile. По Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΈ пСрвая инструкция называСтся all, ΠΈ ΠΎΠ½Π° выполняСт всС инструкции, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, запуск make выполняСт всС Π²Π°ΠΆΠ½Ρ‹Π΅ инструкции. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, это Π±ΡƒΠ΄ΡƒΡ‚ Π½Π΅ всС инструкции, Π° лишь Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π­Ρ‚Π° инструкция ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊ:

all: aliases.db access.db

Команда make Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² провСряСт, Π½Π΅ обновлялись Π»ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ aliases.db ΠΈ access.db. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² инструкции all Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ all создан Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. Π’ΠΎΠ³Π΄Π° make Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» all устарСл (Β«Π½Π΅ сущСствуСт» эквивалСнтно «устарСл»). ВскорС Π²Ρ‹ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅ Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ.

НС Π±ΡƒΠ΄Π΅ΠΌ Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° make Π»Π΅Π½ΠΈΠ²Π°. Если Ρ„Π°ΠΉΠ» access.db устарСл, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„Π°ΠΉΠ» β€” Π½Π΅Ρ‚, Ρ‚ΠΎ ΠΎΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ дСйствия ΠΏΠΎ обновлСнию access.db. Если для обновлСния Ρ„Π°ΠΉΠ»Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ дСйствия, Π° для Π½ΠΈΡ… Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Π΅, Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° make Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

ΠšΡ€ΠΎΠΌΠ΅ инструкции all, я ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΈΡˆΡƒ Π΅Ρ‰Π΅ ΠΏΠ°Ρ€Ρƒ-Ρ‚Ρ€ΠΎΠΉΠΊΡƒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄:

reload:

postfix reload

stop:

postfix stop

Start:

postfix start

ΠžΠ±ΡΡƒΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚. Если я Π²Π²Π΅Π΄Ρƒ make reload, ΠΊΠΎΠΌΠ°Π½Π΄Π° make Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ отсутствиС Ρ„Π°ΠΉΠ»Π° reload ΠΈ запустит ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ postfix reload Π² Π½Π°Π΄Π΅ΠΆΠ΄Π΅, Ρ‡Ρ‚ΠΎ Ρ‚Π° создаст Ρ‚Π°ΠΊΠΎΠΉ Ρ„Π°ΠΉΠ». Ага! Π― Π΅Π΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΈΡ‚Ρ€ΠΈΠ»! Указанная ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Postfix. Она Π½Π΅ создаСт Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° reload Когда я Π²Ρ‹ΠΏΠΎΠ»Π½ΡŽ make reload Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·, ΠΊΠΎΠΌΠ°Π½Π΄Π° make поступит Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ дСйствиС Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΎΡΡŒ всСгда, сдСлайтС Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ инструкция Π½Π΅ создавала Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ надССтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π° make.

ИмСя ΠΊΠΎΠ΄, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅, я ΠΌΠΎΠ³Ρƒ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ, ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ postfix, ввСдя ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ make reload, make stop ΠΈ make start соотвСтствСнно. Если Π΅ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ процСссы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ трСбуСтся ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, IMAP сСрвСр, Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΈ Ρ‚. Π΄.), я Π²ΠΊΠ»ΡŽΡ‡Ρƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² инструкции. МнС Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ эти ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

БСйчас я Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅ Ρ‡ΡƒΡ‚ΡŒ-Ρ‡ΡƒΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π΅Ρ€Π½ΡƒΠ». Π― сказал, Ρ‡Ρ‚ΠΎ каТдая инструкция начинаСтся с ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ, Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ΄Π΅Ρ‚ Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅, Π° Π·Π°Ρ‚Π΅ΠΌ β€” список Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΡ… Π³Π»Π°Π²Π½Ρ‹ΠΉ. Π’Π°ΠΊ Π²ΠΎΡ‚, ΠΊΠΎΠΌΠ°Π½Π΄Π΅ make нСизвСстно, состоит Π»ΠΈ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ создаваСмый Ρ„Π°ΠΉΠ» ΠΈΠ· пСрСчислСнных. Π£ Π½Π΅Π΅ Π½Π΅Ρ‚ способа ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ это. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ послС двоСточия, ΡΠ²Π»ΡΡŽΡ‚ΡΡ всСго лишь ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌΠΈ.

ΠŸΡ€ΠΈΠ²Π΅Π΄Ρƒ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Makefile, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСт Postfix ΠΈ содСрТит инструкции обновлСния индСкса для Ρ„Π°ΠΉΠ»ΠΎΠ² aliases ΠΈ access. Π’ Π½Π°Ρ‡Π°Π»Π΅ Ρ„Π°ΠΉΠ»Π° Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅ константы (NEWALISES, PDIR ΠΈ Ρ‚. Π΄.), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π΄Π°Π»Π΅Π΅ Π² Ρ„Π°ΠΉΠ»Π΅. ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ слэш (\) Π² ΠΊΠΎΠ½Ρ†Π΅ строки ΠΊΠΎΠ΄Π° слуТит для пСрСноса Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… строк:

NEWALISES=/usr/sbin/newaliases

PDIR=/etc/postfix

POSTMAP=/usr/local/postfix/sbin/postmap

# ΠšΠΎΠΌΠ°Π½Π΄Ρ‹

all: $(PDIR)/aliases.pag $(PDTR)/aliases.dir \

$(PDIP)/access.dir $(PDIR)/access.pag reload

reload:

postfix reload

stop:

postfix stop

start:

postfix start

#

# Когда aliases измСнится, ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹. pag and.dir

#

$(PDIR)/aliases.pag $(PDIR)/aliases.dir: $(PDIR)/aliases $(NEWALIASES)

#

# ΠšΠΎΠ³Π΄Π° access измСнится, ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹. pag and.dir

#

$(PDIR)/access.dir $(PDIR)/access.pag: $(PDIR)/access $(POSTMAP) $(PDIR)/access

Π’Π΅ΠΏΠ΅Ρ€ΡŒ я ΠΌΠΎΠ³Ρƒ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» aliases ΠΈΠ»ΠΈ access ΠΈ ввСсти ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ make. МнС Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ обновлСния индСксов сильно Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ. Π― Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ нСобходимости ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Postfix, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ all. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ reload Π² ΠΊΠΎΠ½Ρ†Π΅ all Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ эту ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ.