По традиции, име-на пакетов, состоящих только из разделяемых библиотек, должны на-чинаться с префикса lib либо содержать его внутри слова.


Чтобы посмотреть этот PDF файл с форматированием и разметкой, скачайте файл и откройте на своем компьютере.
ALTLinuxMaster2.2 Ðóêîâîäñòâîðàçðàáîò÷èêà P.Cederqvist, Ñ . Èíäëèí , Ä . Ëåâèí , À . Ìàõîòêèí ,  . Ôèëèïïîâ ALTLinuxMaster2.2: Ðóêîâîäñòâîðàçðà- áîò÷èêà P.Cederqvist, Ñ . Èíäëèí , Ä . Ëåâèí , À . Ìàõîòêèí ,  . Ôèëèïïîâ Íàñòîÿùàÿêíèãàñîñòàâëåíàèçäîêóìåíòîâ , ðàñïðîñòðàíÿþùèõñÿíàóñëîâèÿõ Ëèöåíçèèíàñâîáîäíóþäîêóìåíòàöèþ (GNUFreeDocumentationLicense) âåðñèè 1.1. Êàæäûéèìååòïðàâîâîñïðîèçâîäèòü , ðàñïðîñòðàíÿòüè / èëèâíîñèòüèçìåíåíèÿ âíàñòîÿùèéÄîêóìåíòâñîîòâåòñòâèèñóñëîâèÿìèýòîéëèöåíçèé . ÄàííûéÄîêóìåíòíåñîäåðæèòÍåèçìåíÿåìûõðàçäåëîâ ; ÄàííûéÄîêóìåíòíå ñîäåðæèòòåêñòà , ïîìåùàåìîãîíàïåðâîéèëèïîñëåäíåéñòðàíèöàõîáëîæêè . ×àñòü I.ALTPackaging 2 Ðóêîâîäñòâîðàçðàáîò÷èêà Ãëàâà 1. ALT specle conventions Ïðåîáðàçîâàíèåîðèãèíàëüíîãîòåêñòàâ DocBook : Þ . Çîòîâ Îáîñíîâàíèå Ïðèðàçðàáîòêåýòèõïðàâèëðåøàëèñüñëåäóþùèåçàäà÷è : Îáåñïå÷èòüæåëàåìóþôóíêöèîíàëüíîñòü : íàøèïàêåòû äîëæíûîòâå÷àòüîïðåäåë¼ííûìïðàâèëàì , îêîòîðûõïîéä¼òðå÷ü íåñêîëüêîïîçæå . Äëÿýòîãîíàäî , ÷òîáû spec- ôàéëûîáåñïå÷èâàëè âûïîëíåíèåýòèõïðàâèë . Ïîìî÷üðàçðàáîò÷èêó : òàêêàê spec- ôàéëûâñååù¼ïèøóòëþäè , òîèõðàáîòóíóæíîñâåñòèêòîìóìèíèìóìó , êîòîðûé , ñîáñòâåííî , è òðåáóåòó÷àñòèÿ÷åëîâåêà . Ðàçðàáîò÷èêíåäîëæåíêîïèðîâàòüáëîêè êîäàèçôàéëàâôàéë , èáîýòàíåèíòåëëåêòóàëüíàÿðàáîòàîòíèìàåò ìàññóñèëè÷ðåâàòàîøèáêàìè . Äëÿýòîãîåñòüìàêðîñû . Åñëèêàêîé - òîêîäïîÿâëÿåòñÿâðàçíûõ spec- ôàéëàõáîëååîäíîãîðàçà , òîíàäî íàïèñàòüìàêðîñ ( û ). Spec- ôàéëû Óñòàðåâøèåêîíñòðóêöèè Íåñëåäóåòèñïîëüçîâàòüóñòàðåâøèåêîíñòðóêöèè  îíèëèøü çàãðîìîæäàþò spec- ôàéë , ñíèæàÿòåìñàìûìåãî÷èòàáåëüíîñòü . Ê óñòàðåâøèìêîíñòðóêöèÿì , â÷àñòíîñòè , îòíîñÿòñÿ : ˆ òýã BuildRoot; ˆ ñòðîêèâèäà rm-rf$RPM_BUILD_ROOT ; ˆ %_defattr ñîñòàíäàðòíûìèàðãóìåíòàìèâíà÷àëåôàéëîâèñåêöèé %files ; ˆ ñåêöèÿ %clean , ïóñòàÿëèáîáåçðàçóìíîãîñîäåðæàíèÿ . Ãëàâà 1.ALTspecleconventions 3 Ôèãóðíûåñêîáêè Íåòñìûñëàçàñîðÿòüòåêñò spec- ôàéëàíåíóæíûìèôèãóðíûìèñêîá- êàìè . Èçáàâèòñÿîòíèõìîæíîñïîìîùüþêîìàíäû cleanup_spec spec- ôàéë Âûðàâíèâàíèå Èñïîëüçóéòåòàáóëÿöèèäëÿâûðàâíèâàíèÿ . Èçáåãàéòåïðîáåëüíûõ ñèìâîëîââêîíöåñòðîê . Ïîðÿäîêòýãîâ Ðåêîìåíäóåìûéïîðÿäîêçàãîëîâî÷íûõòýãîâ :Name,Version, Release,Serial, äàëåå Summary,License,Group,Url,Packager, BuildArch, ïîòîì Source*,Patch*, äàëåå PreReqs,Requires,Provides, Conicts, è , íàêîíåö ,Prex,BuildPreReqs,BuildRequires. Ðàçóìå- åòñÿ , íåâñåèçâûøåïåðå÷èñëåííûõòýãîâèñïîëüçóþòñÿ , ðàâíîêàê âñòðå÷àþòñÿèäðóãèåðåäêîèñïîëüçóåìûåòýãè . Âñâÿçèñòåì , ÷òî BuildRequires çàðåçåðâèðîâàíäëÿàâòîìàòè÷åñêèâû÷èñëÿåìûõçàâè- ñèìîñòåé , äëÿóêàçàíèÿîñîáûõçàâèñèìîñòåéñëåäóåòèñïîëüçîâàòü BuildPreReq. Çíà÷åíèÿòýãîâ Çíà÷åíèåòýãàîòåãîèìåíèñëåäóåòðàçäåëÿòüîäíèìïðîáåëîì . Ýëå- ìåíòûñïèñêàçíà÷åíèéñëåäóåòðàçäåëÿòüçàïÿòîéñïîñëåäóþùèì ïðîáåëîì . Çíà÷åíèåòýãà Summary ñëåäóåòíà÷èíàòüñïðîïèñíîéáóê- âû . Çíà÷åíèåòýãà Summary íåñëåäóåòçàâåðøàòüòî÷êîé . Çíà÷åíèÿ òýãîâ Summary è %description ìîãóòñîäåðæàòüíàçâàíèÿêîìàíäòîëü- êîâíåèçìåí¼ííîìâèäå . Ãðóïïû Çíà÷åíèåòýãà Group äîëæíîñîîòâåòñòâîâàòüäåéñòâèòåëüíîñòèè ïðèýòîìïðèíàäëåæàòüôèêñèðîâàííîìóìíîæåñòâó , ïåðå÷èñëåííîìó âôàéëå /usr/lib/rpm/GROUPS . ChangeLog Ïðèôîðìèðîâàíèèïåðâîéñòðîêè changelog- çàïèñèèñïîëüçóéòå óòèëèòó add_changelog spec- ôàéë . Îïèñàíèåèçìåíåíèéäîëæíî áûòüèíôîðìàòèâíûì ; íåäîñòàòî÷íîîáúÿâèòüîíàëè÷èèèçìåíåíèé , íåîáõîäèìîèõâñåÿâíîïåðå÷èñëèòü . 4 Ðóêîâîäñòâîðàçðàáîò÷èêà Ôàéëûëîêàëèçàöèè Åñëèâñîñòàâïàêåòàâõîäÿòôàéëûëîêàëèçàöèèëèáîäðó- ãèåôàéëûíàðàçíûõÿçûêàõ , ñëåäóåòèñïîëüçîâàòüìàêðîñ %nd_lang. Ïîäðîáíóþèíôîðìàöèþìîæíîïîëó÷èòü , âûïîëíèâêî- ìàíäó /usr/lib/rpm/nd-lang-h . Âíóòðèïàêåòíûåçàâèñèìîñòè Ïðèðàáîòåñìóëüòèïàêåòíûìè spec- ôàéëàìèñîáëþäàéòåïðàâèëî âíóòðèïàêåòíûõçàâèñèìîñòåé : Åñëèîäèíïàêåòâêàêîé - ëèáîìåðå çàâèñèòîòäðóãîãîïîäïàêåòà , òîýòàçàâèñèìîñòüäîëæíàáûòüóêà- çàíàïîëíîñòüþ , âêëþ÷àÿíåòîëüêîèìÿ , íîòàêæåâåðñèþ , ðåëèçè serial( åñëèåñòü ). Íàïðèìåð , Requires:%name=%version-%release  èëè  Requires:%name=%serial:%version-%release . Îáðàòèòåâíèìà- íèåíàñèíòàêñèñ : çíàêðàâåíñòâà , âîòëè÷èåîòäåôèñà , îêðóæ¼íïðî- áåëàìè . Ðàçäåëÿåìûåáèáëèîòåêè Ïàêåòû , ñîäåðæàùèåêàêðàçäåëÿåìûåáèáëèîòåêè , òàêèèñïîëüçó- þùèåèõïðîãðàììû , äîëæíûáûòüðàçäåëåíûíàïîäïàêåòûòàêèì îáðàçîì , ÷òîáûâïîäïàêåò , ñîäåðæàùèéðàçäåëÿåìûåáèáëèîòåêè , íå âõîäèëèèñïîëüçóþùèåèõïðîãðàììû . Ýòî , â÷àñòíîñòè , ïîçâîëÿåò óìåíüøèòüêîëè÷åñòâîöèêëè÷åñêèõçàâèñèìîñòåé . Ïîòðàäèöèè , èìå- íàïàêåòîâ , ñîñòîÿùèõòîëüêîèçðàçäåëÿåìûõáèáëèîòåê , äîëæíûíà- ÷èíàòüñÿñïðåôèêñà lib ëèáîñîäåðæàòüåãîâíóòðèñëîâà . Ïðèðàç- äåëåíèèïîäïàêåòîâñëåäóåòïîìíèòüîâíóòðèïàêåòíûõçàâèñèìîñòÿõ . Êàæäûéïàêåò , ñîäåðæàùèéðàçäåëÿåìûåáèáëèîòåêèâêàòàëîãå /lib , /usr/lib èëè /usr/X11R6/lib , äîëæåíèõðåãèñòðèðîâàòüïðèóñòà- íîâêå / îáíîâëåíèÿõèóäàëåíèèñïîìîùüþìàêðîñîâ %post_ldcong è %postun_ldcong ñîîòâåòñòâåííî . Ñòàòè÷åñêèåáèáëèîòåêè Ñòàòè÷åñêèåáèáëèîòåêèäîëæíûïàêîâàòüñÿâîòäåëüíûåïîäïàêå- òû , ÷òîñâÿçàíîñîñïåöèôèêîéèõèñïîëüçîâàíèÿ . Åñëèèìÿ devel- ïîäïàêåòàçàêàí÷èâàåòñÿñóôôèêñîì -devel , òîèìÿíîâîãî devel- static- ïîäïàêåòàáóäåòçàêàí÷èâàòüñÿñóôôèêñîì -devel-static . Ïðè ðàçäåëåíèèïîäïàêåòîâñëåäóåòïîìíèòüîâíóòðèïàêåòíûõçàâèñèìî- ñòÿõ : âñïèñêåçàâèñèìîñòåé devel-static- ïîäïàêåòàäîëæíàïðèñóò- ñòâîâàòüçàâèñèìîñòüîò -devel =%version-%release. Ãëàâà 1.ALTspecleconventions 5 Ïåðåèìåíîâàíèåïàêåòîâ Èíîãäàïàêåòûïåðåèìåíîâûâàþò . Íàïðèìåð , ýòîñëó÷àåòñÿïðèóïà- êîâêåðàçäåëÿåìûõáèáëèîòåê . Âòàêèõñëó÷àÿõñëåäóåòóêàçûâàòü ïðàâèëüíóþèíôîðìàöèþîçàâèñèìîñòÿõ , íåîáõîäèìóþäëÿêîððåêò- íîãîîáíîâëåíèÿ . Â÷àñòíîñòè , äîëæåíïðèñóòñòâîâàòü : ˆ òýã Provides: ñòàðîå _ èìÿ =%version ; ˆ òýã ˆ NAME è VERSION  èìÿèâåðñèÿïàêåòà , äëÿêîòîðîãîñäåëàíïàò÷ ; ˆ ORIGIN  àááðåâèàòóðûèñòî÷íèêîâïàò÷à ( îáû÷íîäèñòðèáóòè- âîâ ); ˆ WHAT  êðàòêîåîïèñàíèåïàò÷à . Âñëó÷àå , êîãäàïàò÷îáðàçîâàíèçíåñêîëüêèõ÷àñòåé , ïîëó÷åííûõèç ðàçíûõèñòî÷íèêîâ , êîìïîíåíòàèìåíè ORIGIN äîëæíàñîäåðæàòüàá- áðåâèàòóðûâñåõèñòî÷íèêîâ . Åñëèïàò÷áûëñîçäàíèëèàäàïòèðîâàí äëÿ ALTLinux , òîâ ORIGIN , ñîîòâåòñòâåííî , äîëæíîïðèñóòñòâîâàòü -alt- . Äëÿïàò÷åé , ñîçäàííûõíàáàçå CVS, êîìïîíåíòàèìåíè ORIGIN äîëæíàíà÷èíàòüñÿñ cvs- YYYYMMDD . Ïðèñîñòàâëåíèèîïèñàíèÿïàò÷àñëåäóåòèìåòüââèäóñëåäóþùèå îáùåïðèíÿòûåñîêðàùåíèÿ : 6 Ðóêîâîäñòâîðàçðàáîò÷èêà makefile ïàò÷è , çàòðàãèâàþùèåèñêëþ÷èòåëüíî makefile* ; bound ïðîâåðêèíàãðàíèöû ( áóôåðà , öåëûõ÷èñåë , èò . ï .); config ïàò÷è , çàòðàãèâàþùèåèñêëþ÷èòåëüíîêîíôèãóðàöèîííûåôàéëû ; configuse ïàò÷è , çàòðàãèâàþùèåèñêëþ÷èòåëüíî configure* ; doc ïàò÷è , çàòðàãèâàþùèåèñêëþ÷èòåëüíîäîêóìåíòàöèþ ; fixes êóìóëÿòèâíûåïàò÷èè / èëèèñïðàâëåíèÿïîíàä¼æíîñòèè / èëèáåç- îïàñíîñòè ; format ïàò÷èíàèñïîëüçîâàíèåôîðìàòèðîâàíèÿñòðîê ( printf ); install ïàò÷è , íàïðàâëåííûåíàâîçìîæíîñòüâûïîëíåíèÿ makeinstall íåïðèâèëåãèðîâàííûìïîëüçîâàòåëåì ; linux ïàò÷è , ïðåäíàçíà÷åííûåäëÿïîðòèðîâàíèÿÏÎíà Linux; man ïàò÷è , çàòðàãèâàþùèåèñêëþ÷èòåëüíî man- ñòðàíèöû ; texinfo ïàò÷è , çàòðàãèâàþùèåèñêëþ÷èòåëüíîäîêóìåíòàöèþâôîðìàòå texinfo; tmp ïàò÷è , ïðåäíàçíà÷åííûåäëÿðåøåíèÿðàçëè÷íûõâîïðîñîâ , ñâÿçàí- íûõñâðåìåííûìèôàéëàìè ; Ãëàâà 1.ALTspecleconventions 7 vitmp ïàò÷è , íàïðàâëåííûåíàïîääåðæêó vitmp(1) ; warnings ïàò÷è , èñïðàâëÿþùèåîøèáêè , íàéäåííûåêîìïèëÿòîðîì . Èñõîäíûéêîä Ôîðìàòõðàíåíèÿ Èñõîäíûéêîäáîëüøîãîîáú¼ìà ( êàêàðõèâû , òàêèïàò÷è , ïîñòàòóñó ïðèðàâíåííûåêíèì ) ñëåäóåòõðàíèòüâóïàêîâàííîìâèäå . Ìåòîä ñæàòèÿ , gzip èëè bzip2 , ñëåäóåòâûáèðàòüòàêèìîáðàçîì , ÷òîáû ðàçìåðàðõèâàáûëìèíèìàëüíûì , íàïðèìåð , ñïîìîùüþóòèëèòû zme . Èñêëþ÷åíèåñîñòàâëÿþò nosurce- ïàêåòû : âíèõîòñóòñòâóþùèå ôàéëûñëåäóåòóêàçûâàòüââèäåêîððåêòíûõ URL. 8 Ðóêîâîäñòâîðàçðàáîò÷èêà Ãëàâà 2. ALTLinux RPM: îñîáåííîñòèâåðñèè rpm-4.0.4-alt5 Ïðåîáðàçîâàíèåîðèãèíàëüíîãîòåêñòàâ DocBook : Þ . Çîòîâ Îáîñíîâàíèå Ïðèðàçðàáîòêåèçìåíåíèéèäîïîëíåíèéê RPM ðåøàëèñüñëåäóþ- ùèåçàäà÷è : Îáåñïå÷èòüæåëàåìóþôóíêöèîíàëüíîñòü : íàøèïàêåòû äîëæíûîòâå÷àòüîïðåäåëåííûìïðàâèëàì , îêîòîðûõïîéä¼òðå÷ü íåñêîëüêîïîçæå . Äëÿýòîãîíàäî , ÷òîáû spec- ôàéëûîáåñïå÷èâàëè âûïîëíåíèåýòèõïðàâèë . Ïîìî÷üðàçðàáîò÷èêó : òàêêàê spec- ôàéëûâñååù¼ïèøóòëþäè , òîèõðàáîòóíóæíîñâåñòèêòîìóìèíèìóìó , êîòîðûé , ñîáñòâåííî , è òðåáóåòó÷àñòèÿ÷åëîâåêà . Ðàçðàáîò÷èêíåäîëæåíêîïèðîâàòüáëîêè êîäàèçôàéëàâôàéë , èáîýòàíåèíòåëëåêòóàëüíàÿðàáîòàîòíèìàåò ìàññóñèëè÷ðåâàòàîøèáêàìè . Äëÿýòîãîåñòüìàêðîñû . Åñëèêàêîé - òîêîäïîÿâëÿåòñÿâðàçíûõ spec- ôàéëàõáîëååîäíîãîðàçà , òîíàäî íàïèñàòüìàêðîñ ( û ). Íîâûåòýãè BuildHost Ñïîìîùüþýòîãîòýãàìîæíîïåðåîïðåäåëèòüçíà÷åíèå hostname, êîòîðîå RPM ïîìåùàåòâçàãîëîâîêêàæäîãîïàêåòà . Ïîóìîë÷àíèþ , êàêèðàíåå , èñïîëüçóåòñÿçíà÷åíèå , âîçâðàùàåìîå uname(2 ). Óñòàðåâøèåòýãè BuildRoot Âðåìåíà , êîãäàòýã BuildRoot â spec- ôàéëåîïðåäåëÿë , êàêîéêà- òàëîã RPM áóäåòèñïîëüçîâàòüâêà÷åñòâå BuildRoot, ïðîøëèáåçâîç- âðàòíî . Òåïåðüýòîòòýãíåíåñ¼òíèêàêîéèíôîðìàöèèèìîæåò ( è äîëæåí ) áûòüîïóùåí . Âìåñòîýòîãîèñïîëüçóåòñÿçíà÷åíèåìàêðîñà %buildroot, êîòîðûéîïðåäåë¼íêàê  %{_tmppath}/%{name}-buildroot  âôàéëå /usr/lib/rpm/macros èìîæåòáûòüïåðåîïðåäåë¼íâëþáîì ìåñòå , ãäåäîïóñêàåòñÿîïðåäåëÿòüìàêðîñû . Âñëó÷àå , åñëèìàêðîñ Ãëàâà 2.ALTLinuxRPM: îñîáåííîñòèâåðñèè rpm-4.0.4-alt5 9 %buildroot íåîïðåäåë¼íëèáîåãîçíà÷åíèåïðåäñòàâëÿåòñîáîéíåäî- ïóñòèìîåçíà÷åíèå  / , ñáîðêàïàêåòàíåáóäåòâûïîëíåíà . Íîâûåìàêðîñû Âñòðîåííûåìàêðîñû %homedir äîìàøíèéêàòàëîãïîëüçîâàòåëÿ , âûçûâàþùåãîýòîòìàêðîñ ; %homedir{user} äîìàøíèéêàòàëîãïîëüçîâàòåëÿ user ; Ìàêðîñûäëÿ÷àñòîèñïîëüçóåìûõ êàòàëîãîâ manpages: %_man1dir,%_man2dir,%_man3dir,%_man4dir, %_man5dir,%_man6dir,%_man7dir,%_man8dir,%_man9dir; X11R6: %_x11dir,%_x11bindir,%_x11libdir,%_x11includedir, %_x11mandir,%_x11datadir,%_x11fontsdir; ëèöåíçèè : %_licensedir; ìåíþ : %_menudir,%_iconsdir,%_miconsdir,%_liconsdir; emacs: %_emacslispdir; tcl: %_tcllibdir,%_tcldatadir; äðóãèåñèñòåìíûå : %_initdir,%_lockdir,%_logdir,%_cachedir, %_spooldir. Óïðàâëåíèåîïöèÿìèêîìïèëÿòîðà gcc %add_optags opti&#xopti;ons;ons äîáàâèòüóêàçàííûåïàðàìåòðûâñòàíäàðòíûéíàáîð %opags; %remove_optags opti&#xopti;ons;ons óáðàòüóêàçàííûåïàðàìåòðûèçñòàíäàðòíîãîíàáîðà %opags; %optags_core áàçîâûåïàðàìåòðû ; 10 Ðóêîâîäñòâîðàçðàáîò÷èêà %_optlevel óðîâåíüîïòèìèçàöèè ; %optags_optimization ïàðàìåòðû , îòâå÷àþùèåçàîïòèìèçàöèþ , êðîìåàðõèòåêòóðíî - çàâèñèìûõ ; %optags_warnings warningoptions; %optags_debug debuggingoptions; %optags_shared ïàðàìåòðû , ïðèìåíÿåìûåäëÿñîçäàíèÿ relocatable ôàéëîâ ; %optags_nocpp ïàðàìåòðû , îòêëþ÷àþùèåïîääåðæêó C++exceptions è C++RTTI; %optags_notraceback -fomit-frame-pointer ; %optags_fastmath -ffast-math ; %optags_strict -fstrict-aliasing ; %optags_kernel ïàðàìåòðû , èñïîëüçóåìûåïðèêîìïèëÿöèèÿäðàèåãîìîäóëåé . Ïîóìîë÷àíèþ , ñòàíäàðòíûéíàáîð %opags ñîñòîèòèç  %optflags_core%optflags_warnings%optflags_optimization . Ìàêðîñû - íàäñòðîéêèíàäóòèëèòîé make %__nprocs ÷èñëîïðîöåññîðîâ , äîñòóïíûõäëÿñáîðêèñïîìîùüþ %make_build; Ãëàâà 2.ALTLinuxRPM: îñîáåííîñòèâåðñèè rpm-4.0.4-alt5 11 %make_build âûçîâ make ñïàðàìåòðîì , îáåñïå÷èâàþùèìîïòèìàëüíóþïàðàë- ëåëüíóþñáîðêóâäàííîéñðåäå ; %make_install âûçîâ make c èíèöèàëèçàöèåéïåðåìåííîé INSTALL , ÷òîâñëó÷àåêîð- ðåêòíîéðåàëèçàöèè Makefile - îâïàêåòàïîçâîëÿåòñîõðàíèòüäàòóïî- ñëåäíåéìîäèôèêàöèèôàéëîâ , ÷òîîñîáåííîâàæíîäëÿäîêóìåíòàöèè ; %makeinstall  %make_install èíèöèàëèçàöèÿäðóãèõïåðåìåííûõ , èñïîëüçóåìûõ ìíîãèìè Makefile- àìè � install  Ðåãèñòðàöèÿðàçäåëÿåìûõáèáëèîòåê %post_ldcong,%post_ldcong_lib ðåãèñòðàöèÿíîâûõ / îáíîâë¼ííûõáèáëèîòåê ; %post_ldcong_sys ðåãèñòðàöèÿíîâûõ / îáíîâë¼ííûõñèñòåìíûõáèáëèîòåê ( êîòîðûåìî- ãóòáûòüèñïîëüçîâàíûâ chroot' àõ ); %postun_ldcong îòìåíàðåãèñòðàöèèóäàë¼ííûõáèáëèîòåê . Ðåãèñòðàöèÿäîêóìåíòàöèèâôîðìàòå info %install_info ðåãèñòðàöèÿíîâûõ / îáíîâë¼ííûõ info- ñòðàíèö ; %uninstall_info îòìåíàðåãèñòðàöèèóäàë¼ííûõ info- ñòðàíèö . Ðåãèñòðàöèÿìåíþ %update_menus ðåãèñòðàöèÿíîâûõ / îáíîâë¼ííûõìåíþ ; 12 Ðóêîâîäñòâîðàçðàáîò÷èêà %clean_menus îòìåíàðåãèñòðàöèèóäàë¼ííûõìåíþ . Ðåãèñòðàöèÿêàòàëîãîâ scrollkeeper %update_scrollkeeper ðåãèñòðàöèÿíîâûõ / îáíîâë¼ííûõêàòàëîãîâ ; %clean_scrollkeeper îòìåíàðåãèñòðàöèèóäàë¼ííûõêàòàëîãîâ . Âñïîìîãàòåëüíûåìàêðîñû %congure %__libtoolize ïóòüêñêðèïòó libtoolize ; %_congure_script ïóòüêñêðèïòó congure ; Ãëàâà 2.ALTLinuxRPM: îñîáåííîñòèâåðñèè rpm-4.0.4-alt5 13 Ìàêðîñû , îïðåäåëÿþùèåíåêîòîðûå àñïåêòû packagingpolicy %buildroot çíà÷åíèå BuildRoot; %_defattr àòðèáóòûôàéëîâèêàòàëîãîâïîóìîë÷àíèþäëÿêàæäîéñåêöèè %files èäëÿêàæäîãîôàéëà , âêëþ÷àåìîãîâòàêèõñåêöèÿõ ; 14 Ðóêîâîäñòâîðàçðàáîò÷èêà %_{cleanup,compress,xup,strip,verify_elf,ndreq,ndprov}_skiplist ñïèñîêøàáëîíîâôàéëîâ , êîòîðûåáóäóòïðîïóùåíûïðèîáðàáîòêå ñîîòâåòñòâóþùèììåòîäîì ; Ãëàâà 2.ALTLinuxRPM: îñîáåííîñòèâåðñèè rpm-4.0.4-alt5 15 %clean_buildroot âûïîëíåíèå rm-rf%buildroot , åñëè %buildroot íåóêàçûâàåòíàíà- ñòîÿùèé / . Óïðàâëåíèåïðîöåññîìñáîðêè %buildmulti àëüòåðíàòèâíàÿäèðåêòèâà %build äëÿñëó÷àÿ , êîãäàâñåêöèè %build ïðîèñõîäèòçàïîëíåíèå %buildroot. Âîîáùåãîâîðÿ , òàêîéòåõíèêè ñòîèòèçáåãàòüâîâñåõñëó÷àÿõ , êîãäàýòîâîçìîæíî ; %_build_lang çíà÷åíèåïåðåìåííûõ LANG , LANGUAGE è LC_ALL ; %_build_display çíà÷åíèåïåðåìåííîé DISPLAY ; %_build_xauthority çíà÷åíèåïåðåìåííîé XAUTHORITY ; %__ccache_cc çíà÷åíèåïåðåìåííîé CCACHE_CC ; %__ccache_dir çíà÷åíèåïåðåìåííîé CCACHE_DIR ; Âåðñèèíåêîòîðûõóñòàíîâëåííûõâñèñòåìå ïàêåòîâ glibc: %__glibc_version,%__glibc_version_major, %__glibc_version_minor; gcc: %__gcc_version,%__gcc_version_major, %__gcc_version_minor,%__gcc_version_base python: %__python_version 16 Ðóêîâîäñòâîðàçðàáîò÷èêà Ãëàâà 2.ALTLinuxRPM: îñîáåííîñòèâåðñèè rpm-4.0.4-alt5 17 %with,%without,%enabled,%disabled ïðîâåðêàçíà÷åíèÿìàêðîñîâóñëîâèÿ ; %ifdef,%ifndef âåòâëåíèåïîôàêòóñóùåñòâîâàíèÿìàêðîñà ; %if_with,%if_without,%if_enabled,%if_disabled âåòâëåíèåïîçíà÷åíèþìàêðîñîâóñëîâèÿ ; Ïðî÷èåìàêðîñû %intel ñïèñîêàðõèòåêòóð Intel — , ñîâìåñòèìûõñ i386 ; %amd ñïèñîêàðõèòåêòóð AMD — , ñîâìåñòèìûõñ i386 ; %ix86 ñïèñîêâñåõàðõèòåêòóð , ñîâìåñòèìûõñ i386 ; êîìïîíåíòûìàêðîñà %packager %packagerName,%packagerAddress %_internal_gpg_path ïóòüêñâÿçêåêëþ÷åé ALTLinuxTeam 1 . Íîâû e ïàðàìåòðû rpm -bE íîâûéðåæèìðàáîòû RPM, ïðèêîòîðîìïðîèñõîäèòòîëüêîïîäñòà- íîâêàìàêðîñîâ ; --nowait-lock íåáëîêèðîâàòüïðîöåññ , åñëèáàçàäàííûõ RPM çàíÿòà ; 1 http://www.altlinux.ru 18 Ðóêîâîäñòâîðàçðàáîò÷èêà --fancypercent îòîáðàæàòüäîïîëíèòåëüíóþèíôîðìàöèþîïðîöåíòàõïðîäåëàííîé ðàáîòûïðèóñòàíîâêå / îáíîâëåíèèïàêåòîâ ; --nopatch íåâêëþ÷àòüóêàçàííûåïàò÷èâèñõîäíûéïàêåò ; --nosource íåâêëþ÷àòüóêàçàííûåèñõîäíèêèâèñõîäíûéïàêåò ; --lastchange âûâåñòèèíôîðìàöèþîïîñëåäíåìèçìåíåíèèïàêåòà ; --changes-since âûâåñòèèíôîðìàöèþîáîâñåõèçìåíåíèÿõïàêåòà , íà÷èíàÿñóêàçàí- íîéâåðñèè . Íîâûåâîçìîæíîñòè rpm ïîñáîðêå ïàêåòîâ Ïîîêîí÷àíèèâûïîëíåíèÿñåêöèè %install RPM âûïîëíÿåòðÿä äåéñòâèé : ˆ óäàëåíèåíåíóæíûõôàéëîâèêàòàëîãîâ ; ˆ èñïðàâëåíèåïðàâäîñòóïàêôàéëàìèêàòàëîãàì ; ˆ óïàêîâêàäîêóìåíòàöèè ; ˆ óäàëåíèåîòëàäî÷íîéèíôîðìàöèè ; ˆ êîððåêöèÿñèìâîëè÷åñêèõññûëîêíàðàçäåëÿåìûåáèáëèîòåêè ; ˆ ïåðåêîìïèëÿöèÿ python- ìîäóëåé . Àâòîìàòè÷åñêîåóäàëåíèåíåíóæíûõ ôàéëîâ Âñåôàéëûèêàòàëîãè , ïîäïàäàþùèåïîäïðàâèëîîïðåäåëåíèÿ íåíóæíûõôàéëîâèêàòàëîãîâ , óäàëÿþòñÿ . Â÷àñòíîñòè , ïîóìîë- ÷àíèþïîäëåæàòóäàëåíèþ ˆ ôàéëûñèìåíàìè DEADJOE , .SUMS , TAGS , core ; ˆ ôàéëû , çàêàí÷èâàþùèåñÿíà ~ , .orig , .rej , .bak ; Ãëàâà 2.ALTLinuxRPM: îñîáåííîñòèâåðñèè rpm-4.0.4-alt5 19 ˆ êàòàëîãèñèìåíåì CVS . Ïîääåðæèâàþòñÿñëåäóþùèåìåòîäûîïðåäåëåíèÿôàéëîâèêàòàëî- ãîâ , ïîäëåæàùèõóäàëåíèþ : none , skip ïîèñêàèóäàëåíèÿíåïðîèçâîäèòñÿ ; auto ìåòîäïîóìîë÷àíèþ , îïðåäåëåííûéâôàéëå /usr/lib/rpm/brp- cleanup ; * ñïåöèàëüíûéìåòîä ; ïåðåäàííîåçíà÷åíèåèñïîëüçóåòñÿâêà÷åñòâå èìåíèïðîãðàììû , êîòîðàÿáóäåòâûçâàíàäëÿïîèñêàèóäàëåíèÿ íåíóæíûõôàéëîâ . Êàêîéìåòîäáóäåòèñïîëüçîâàíâêàæäîìêîíêðåòíîìñëó÷àå , çàâè- ñèòîòçíà÷åíèÿìàêðîñà ïîèñêèîáðàáîòêà .la - ôàéëîâ ; 20 Ðóêîâîäñòâîðàçðàáîò÷èêà Êàêîéìåòîäáóäåòèñïîëüçîâàíâêàæäîìêîíêðåòíîìñëó÷àå , çà- âèñèòîòçíà÷åíèÿìàêðîñà . Àâòîìàòè÷åñêîåèñïðàâëåíèåïðàâäîñòóïà êôàéëàìèêàòàëîãàì Ïðàâàäîñòóïàêîâñåìôàéëîâûìîáúåêòàì , íàõîäÿùèìñÿâ $RPM_BUILD_ROOT , ïðîâåðÿþòñÿèêîððåêòèðóþòñÿñîãëàñíîñëåäóþùèì ïðàâèëàì : ˆ êàòàëîãè /usr/share , /usr/include , /usr/X11R6/share , /usr/X11R6/include , /usr/X11R6/man ñîâñåìñîäåðæèìûìäîëæíû áûòüäîñòóïíûïî÷òåíèþâñåìïîëüçîâàòåëÿì ; ˆ íè÷òîèçñîäåðæèìîãîêàòàëîãà /usr , çàèñêëþ÷åíèåì /usr/src , íå äîëæíîáûòüäîñòóïíîïîçàïèñèíå - âëàäåëüöó , çàèñêëþ÷åíèåì âëàäåëüöàôàéëîâ . ˆ íèêàêèå suid è / èëè sgid- ôàéëûíåäîëæíûáûòüäîñòóïíûïî ÷òåíèþ ( èòåìáîëååïîçàïèñè ), çàèñêëþ÷åíèåìâëàäåëüöàôàéëîâ . Àâòîìàòè÷åñêîåñæàòèå man- è info- äîêóìåíòàöèèñïîääåðæêîé ðàçëè÷íûõìåòîäîâñæàòèÿ Âñÿäîêóìåíòàöèÿïàêåòà , ðàñïîçíàâàåìàÿêàê man- èëè info- äîêóìåíòàöèÿ , ïîîêîí÷àíèèðàáîòûñåêöèè %install , ñæèìàåòñÿñî- ãëàñíîâûáðàííîìóìåòîäó . Ïîääåðæèâàþòñÿñëåäóþùèåìåòîäû ñæàòèÿ : bzip2 ñæàòèåñïîìîùüþ bzip2-9 ; gzip ñæàòèåñïîìîùüþ gzip-9n ; auto ñæàòèåñïîìîùüþ gzip-9n ëèáî bzip2-9 âçàâèñèìîñòèîòòîãî , êàêîéâàðèàíòîêàæåòñÿýôôåêòèâíåå ; Ãëàâà 2.ALTLinuxRPM: îñîáåííîñòèâåðñèè rpm-4.0.4-alt5 21 none ïðîèçâîäèòñÿäåêîìïðåññèÿôàéëîââìåñòîñæàòèÿ ; skip ïðîöåäóðàñæàòèÿïðîïóñêàåòñÿïîëíîñòüþ . Êàêîéìåòîäáóäåòèñïîëüçîâàíâêàæäîìêîíêðåòíîìñëó÷àå , çàâè- ñèòîòçíà÷åíèÿìàêðîñà 22 Ðóêîâîäñòâîðàçðàáîò÷èêà Àâòîìàòè÷åñêîåóäàëåíèåîòëàäî÷íîé èíôîðìàöèèèç ELF- ôàéëîâñïîääåðæêîé ðàçëè÷íûõñòðàòåãèéâûáîðàôàéëîâ , ïîäëåæàùèõîáðàáîòêå Çà÷àñòóþâîçìîæíîóìåíüøèòüðàçìåðïîëó÷àåìûõâðåçóëüòàòå ñáîðêèïàêåòà ELF- ôàéëîâáåçïîòåðèêà÷åñòâàçàñ÷¼òóäàëåíèÿèç íèõîòëàäî÷íîéèíôîðìàöèè . Ïîýòîìóïîîêîí÷àíèèðàáîòûñåêöèè %install âñå ELF- ôàéëûâûáðàííûõòèïîâîáðàáàòûâàþòñÿïðîãðàì- ìîé strip . Âûáîðòèïîâôàéëîâîïðåäåëÿåòñÿçíà÷åíèåììàêðîñà Ãëàâà 2.ALTLinuxRPM: îñîáåííîñòèâåðñèè rpm-4.0.4-alt5 23 python- ìîäóëåéòàêèìîáðàçîì , ÷òîáûèõìîæíîáûëîèñïîëüçîâàòü ïîñëåóñòàíîâêèïàêåòà . Âêà÷åñòâåáàéò - êîìïèëÿòîðàáóäåòèñïîëü- çîâàòüñÿïðîãðàììà , èìÿêîòîðîéõðàíèòñÿâìàêðîñå %__python. Îáû÷íîýòî /usr/bin/python , îäíàêîâíåêîòîðûõñëó÷àÿõìîæåò ïîòðåáîâàòüñÿèçìåíèòüýòîçíà÷åíèåíàäðóãîå ( íàïðèìåð , âñëó÷àå ñáîðêèïàêåòà python èëèåñëèïîêàêîé - òîïðè÷èíåïåðåêîìïèëÿöèÿ íåíóæíà ). Àâòîìàòè÷åñêèéïîèñêòðåáóåìûõè ïðåäîñòàâëÿåìûõçàâèñèìîñòåé Âäîïîëíåíèåêñòàíäàðòíîìóïîèñêóçàâèñèìîñòåéîò / äëÿðàçäåëÿ- åìûõáèáëèîòåê , ðåàëèçîâàíàïîääåðæêàïîèñêàòðåáóåìûõçàâèñèìî- ñòåéäëÿ shell- è perl- ñêðèïòîâ , ïîèñêàçàâèñèìîñòåé , îïðåäåëÿåìûõ íàëè÷èåìñïåöèàëüíûõôàéëîââïàêåòå , àòàêæåïîääåðæêàïîèñêà ïðåäîñòàâëÿåìûõçàâèñèìîñòåéäëÿ perl- ñêðèïòîâ . Èçìåíåíèåñåìàíòèêèòýãîâ , óïðàâëÿþùèõ ïîèñêîìçàâèñèìîñòåé Íîâûåâîçìîæíîñòè RPM ïîàâòîìàòè÷åñêîìóïîèñêóçàâèñèìîñòåé ïðèñáîðêåïàêåòîâóïðàâëÿþòñÿ , êàêèïðåæäå , çíà÷åíèÿìèòýãîâ AutoReq,AutoProv è AutoReqProv. Êñòàíäàðòíûìçíà÷åíèÿì yes / no ( true / false ), òàêèìîáðàçîì , äîáàâëåíûíîâûåâîçìîæíûåçíà÷åíèÿ , ÿâëÿþùèåñÿèìåíàìèìåòîäîâïîèñêàçàâèñèìîñòåé : lib/nolib âêëþ÷åíèå / âûêëþ÷åíèåïîèñêàçàâèñèìîñòåéîò / äëÿðàçäåëÿåìûõ áèáëèîòåê ; shell/noshell âêëþ÷åíèå / âûêëþ÷åíèåïîèñêàçàâèñèìîñòåéâ shell- ñêðèïòàõ ; perl/noperl âêëþ÷åíèå / âûêëþ÷åíèåïîèñêàçàâèñèìîñòåéâ perl- ñêðèïòàõ ; files/nofiles âêëþ÷åíèå / âûêëþ÷åíèåïîèñêàçàâèñèìîñòåé , îïðåäåëÿåìûõíàëè- ÷èåìñïåöèàëüíûõôàéëîââïàêåòå ; 24 Ðóêîâîäñòâîðàçðàáîò÷èêà default òîæå , ÷òîè yes ; none,off òîæå , ÷òîè no ; all âêëþ÷åíèåâñåõâîçìîæíûõìåòîäîâïîèñêàçàâèñèìîñòåé . Çíà÷åíèåìòýãàìîæåòÿâëÿòüñÿêàêîäèíìåòîä , òàêèïåðå÷èñëåíèå ìåòîäîâ . Ïîóìîë÷àíèþ , äëÿêàæäîãîïîäïàêåòàñîáèðàåìîãîïàêåòà AutoReq=AutoProv= yes , ÷òîíàïðàêòèêåîçíà÷àåòèñïîëüçîâàíèå ìàêðîñîâ %_ndreq_default_method è Ãëàâà 2.ALTLinuxRPM: îñîáåííîñòèâåðñèè rpm-4.0.4-alt5 25 Ñáîðêàïàêåòîâïðèâèëåãèðîâàííûì ïîëüçîâàòåëåì Òî , ÷òîêîãäà - òîáûëîíåîáõîäèìîñòüþ , ñîâðåìåíåìñòàëîèçëèø- íèì , àïîðîéèïðîñòîîïàñíûì . Òåïåðü , êîãäàâñåáåçèñêëþ÷åíèÿ ïàêåòûìîæíî ( èíóæíî ) ñîáèðàòüíåïðèâèëåãèðîâàííûìïîëüçîâàòå- ëåìâîèçáåæàíèåðèñêàðàçðóøåíèÿñèñòåìûèíåêîððåêòíîéñáîðêè , ñáîðêàïàêåòîâïðèâèëåãèðîâàííûìïîëüçîâàòåëåìïîóìîë÷àíèþçà- ïðåùåíà . Ýòîòçàïðåòìîæíîñíÿòüïóò¼ìèçìåíåíèÿçíà÷åíèÿìàêðî- ñà %_allow_root_build. Ëèòåðàòóðà [wwwrpm] Îôèöèàëüíûé web- ñàéò rpm:http://www.rpm.org/. [mailrpm] Ñïèñîêðàññûëêèäëÿðàçðàáîò÷èêîâ rpm:rpm- list{@}redhat.com. [maxrpm]E.C.Bailey.February17,1997.Maximum RPM,( äîñòóïíàòàêæå online- âåðñèÿïîàäðåñó http://www.rpm.org/max-rpm/ èâôîðìàòå PostScript ïî àäðåñó http://www.rpm.org/local/maximum-rpm.ps.gz). 26 Ðóêîâîäñòâîðàçðàáîò÷èêà Ãëàâà 3. ALT Secure PackagingPolicy Ïðåîáðàçîâàíèåîðèãèíàëüíîãîòåêñòàâ DocBook : Þ . Çîòîâ Ìàññîâûåîïåðàöèèíàäôàéëàìèè êàòàëîãàìè ( ñåêöèè : Ãëàâà 3.ALTSecurePackagingPolicy 27 exit_handler() { localrc=$? trapEXIT rm-f--"$TMPFILE" exit$rc } trapexit_handlerEXITHUPINTPIPETERMQUIT Íåñëåäóåòïîëüçîâàòüñÿôèêñèðîâàííûìèëèáîïðåäñêàçóåìûìè èìåíàìèäëÿñîçäàíèÿâðåìåííûõôàéëîââîáùåäîñòóïíûõêàòàëîãàõ , òàêèõêàê /tmp . Íåñëåäóåòîñòàâëÿòüâðåìåííûåôàéëûâñëó÷àå óñïåøíîãîîêîí÷àíèÿòåêóùåéñòàäèèñáîðêèïàêåòà . ×óæèåèñèñòåìíûåêàòàëîãèè ôàéëû ( ñåêöèè : %install , %files ) Ïàêåòû ÍÅÄÎËÆÍÛ âêëþ÷àòüâñâîéñîñòàâ÷óæèåêàòàëîãèè ôàéëû , â÷àñòíîñòè , ñèñòåìíûåîáúåêòûôàéëîâîéñèñòåìû , àòàêæå ôàéëûóñòðîéñòâ ( ïîñëåäíåå  ïðåðîãàòèâàïàêåòà dev ). Îáîñíîâàíèå : Óêàæäîãîîáúåêòàôàéëîâîéñèñòåìû , èìåþùåãîîò- íîøåíèåêäèñòðèáóòèâó , äîëæåíèìîæåòáûòüòîëüêîîäèíâëàäåëåö ( èëèãðóïïàðîäñòâåííûõâëàäåëüöåââñëó÷àå , êîãäàíåñêîëüêîïîäïà- êåòîâîäíîãîïàêåòàñîâìåñòíîèñïîëüçóþòîáùèéêàòàëîã ). Ýòîëó÷øå îáåñïå÷èâàåòóïðàâëåíèåàòðèáóòàìèîáúåêòîâôàéëîâîéñèñòåìû , à òàêæåðåøàåòìíîãèåïðîáëåìûîïðåäåëåíèÿñáîðî÷íûõçàâèñèìîñòåé ìåæäóïàêåòàìè . Àòðèáóòûôàéëîâèêàòàëîãîâ ( ñåêöèè : %install , %files ) Ïðàâàäîñòóïàíàïðèâèëåãèðîâàííûå èñïîëíÿåìûåôàéëû Ïðèâèëåãèðîâàííûåèñïîëíÿåìûåôàéëû , ò . å . èñïîëíÿåìûåôàéëûñ óñòàíîâëåííûìèáèòàìè suid è / èëè sgid, ÍÅÄÎËÆÍÛ áûòüäîñòóï- íûïî÷òåíèþ ( èòåìáîëååïîçàïèñè ) êîìó - ëèáî , êðîìåïðîöåññîâñ uid==0 . 28 Ðóêîâîäñòâîðàçðàáîò÷èêà Ðàçäåëû , ïðåäíàçíà÷åííûåäëÿ èñïîëüçîâàíèÿ readonly Ïàêåòû ÍÅÄÎËÆÍÛ ñîäåðæàòüôàéëûèêàòàëîãèâïîääåðåâå /usr , ðàçðåøàþùèåäîñòóïïîçàïèñèêîìó - ëèáî , êðîìåïðîöåññîâñ uid==0 . Áîëååòîãî , ïðîãðàììàì , âõîäÿùèìâïàêåò , âîâðåìÿñâîåé ðàáîòû ÍÅÑËÅÄÓÅÒ ïîëàãàòüñÿíàòî , ÷òîôàéëîâûåîáúåêòû , íàõîäÿùèåñÿâ /usr , äîñòóïíûïîçàïèñè . Ôàéëûèêàòàëîãè , äîñòóïíûåäëÿçàïèñè Ïàêåòû ÍÅÄÎËÆÍÛ ñîäåðæàòüôàéëûèêàòàëîãè , äîñòóïíûå äëÿçàïèñèâñåìïîëüçîâàòåëÿì . Äîëæíûáûòüïðåäóñìîòðåíûìåðû ïîðàçãðàíè÷åíèþäîñòóïà , íàïðèìåð , ïóò¼ìïðåäîñòàâëåíèÿäîñòóïà ïîçàïèñèîïðåäåë¼ííîéãðóïïå ( àì ). Âëàäåëüöûôàéëîâ Ïàêåòû ÍÅÄÎËÆÍÛ ñîäåðæàòüôàéëû , ïðèíàäëåæàùèåïñåâäî - ïîëüçîâàòåëÿì , åñëèâïðîöåññåðàáîòûêýòèìôàéëàìîñóùåñòâëÿ- åòñÿäîñòóïïðîöåññîâñäðóãèì uid ëèáîñáîëååøèðîêèìèïðàâàìè äîñòóïà . Êòàêèìôàéëàì , â÷àñòíîñòè , îòíîñÿòñÿèñïîëíÿåìûå , êîí- ôèãóðàöèîííûåèíåèçìåíÿåìûåôàéëû . Îáîñíîâàíèå : Ïñåâäî - ïîëüçîâàòåëüíåäîëæåíèìåòüïðàâîèçìåíÿòü ýòèôàéëû ; íàðóøåíèåýòîãîïðàâèëà , êàêïðàâèëîïðèâîäèòêî÷å- âèäíîéâîçìîæíîñòèîñóùåñòâëåíèÿ pseudouser/rootcompromise. Âëàäåëüöûêàòàëîãîâ Ïàêåòû ÍÅÄÎËÆÍÛ ñîäåðæàòüêàòàëîãè , ïðèíàäëåæàùèåïñåâäî - ïîëüçîâàòåëÿì . Âìåñòîýòîãîñëåäóåòèñïîëüçîâàòüêàòàëîãè , ïðèíàä- ëåæàùèå root, ñóñòàíîâëåííûì stickybit èäîñòóïîìãðóïïûïîçàïè- ñè . Îáîñíîâàíèå : Ïñåâäî - ïîëüçîâàòåëüíåäîëæåíèìåòüïðàâîèçìåíÿòü àòðèáóòûêàòàëîãîâ , àòàêæåôàéëûèêàòàëîãè , ñîçäàííûåäðóãèìè ïîëüçîâàòåëÿìè ; íàðóøåíèåýòîãîïðàâèëà , êàêïðàâèëîïðèâîäèòê âîçìîæíîñòèîñóùåñòâëåíèÿ pseudouser/rootcompromise. Áëîêèðîâêè ( ñåêöèè : %build , %install , %files ) Ðàçíûåïàêåòû , èñïîëüçóþùèåáëîêèðîâêèäëÿðàáîòûñîáùèìè ôàéëîâûìèîáúåêòàìè , òàêèìèêàê mbox' û , âîèçáåæàíèåïîòåðè äàííûõ ÄÎËÆÍÛ ïðèäåðæèâàòüñÿåäèíîãîìåõàíèçìàáëîêèðîâêè . Ãëàâà 3.ALTSecurePackagingPolicy 29 Íàïðèìåð , äëÿáëîêèðîâêè mbox' îâ ÍÅÎÁÕÎÄÈÌÎ èñïîëüçîâàòü ìåòîä , çàêîòîðûìçàêðåïèëîñüèìÿ fcntl . Íåäîïóñêàåòñÿèñïîëüçîâà- íèåïðèâèëåãèðîâàííûõïðîãðàììäëÿ dotlocking' à . Îáîñíîâàíèå : Êàæäàÿïðèâèëåãèðîâàííàÿïðîãðàììà  ýòîäî- ïîëíèòåëüíàÿñòåïåíüðèñêàäëÿñèñòåìû , âêîòîðîéòàêàÿïðîãðàììà óñòàíîâëåíà . Ïîýòîìóñëåäóåòìèíèìèçèðîâàòüïîòðåáíîñòüâïîäîá- íûõñðåäñòâàõ . Ìåòîäáëîêèðîâêè fcntl îïèðàåòñÿíàñèñòåìíûéâûçîâ fcntl(2) , óäîâëåòâîðÿþùèéñòàíäàðòó POSIX, è , ñëåäîâàòåëüíî , áîëåå øèðîêîðàñïðîñòðàí¼ííûé , ÷åìåãîàíàëîã flock(2) . ×àñòü II. Ðàáîòàñ CVS 32 Ðóêîâîäñòâîðàçðàáîò÷èêà Ãëàâà 4. Îáçîð Ýòàãëàâàïðåäíàçíà÷åíàäëÿëþäåé , íèêîãäàðàíååíåèñïîëüçîâàâ- øèõ CVS è , âîçìîæíî , íèêîãäàíåèñïîëüçîâàâøèõóïðàâëåíèåâåðñè- ÿìè . Åñëèâûóæåçíàêîìûñ CVS èïðîñòîõîòèòåèçó÷èòüêîíêðåòíóþ âîçìîæíîñòüèëèâñïîìíèòüîïðåäåëåííóþêîìàíäó , âû , âåðîÿòíî , ìîæåòåïðîïóñòèòüâñþãëàâó . ×òîòàêîå CVS? Íåïîìíÿùèåïðîøëîãîîáðå÷åíûïîâòîðÿòüåãî .  ÄæîðäæÑàíòàÿíà CVS ýòîñèñòåìàêîíòðîëÿâåðñèé . Èñïîëüçóÿåå , âûìîæåòå âåñòèèñòîðèþâàøèõôàéëîâñèñõîäíûìèòåêñòàìè . Íàïðèìåð , èíîãäàïðèîïðåäåëåííîìèçìåíåíèèâêîäåìîãóòïî- ÿâèòüñÿîøèáêè , êîòîðûåâûíåñìîæåòåîáíàðóæèòüâòå÷åíèåäëè- òåëüíîãîâðåìåíè . Ñïîìîùüþ CVS âûëåãêîìîæåòåîáðàòèòüñÿê ñòàðûìâåðñèÿì , ÷òîáûòî÷íîâûÿñíèòü , ÷òîèìåííîïðèâåëîêîøèá- êå . Èíîãäàýòîñèëüíîïîìîãàåò . Êîíå÷íî , âûìîæåòåõðàíèòüêàæäóþâåðñèþêàæäîãîôàéëà , êîòî- ðûåâûñîçäàåòå . Ýòîáóäåòñòîèòüâàìíåâåðîÿòíîãîîáúåìàäèñêîâîãî ïðîñòðàíñòâà .CVS õðàíèòâñåâåðñèèôàéëàâîäíîìôàéëåòàêèìîá- ðàçîì , ÷òîçàïîìèíàþòñÿëèøüèçìåíåíèÿìåæäóâåðñèÿìè . CVS òàêæåïîìîæåò , åñëèâûÿâëÿåòåñü÷ëåíîìãðóïïûðàçðàáîò÷è- êîâîäíîãîïðîåêòà . Î÷åíüëåãêîïîïîðòèòü÷óæèåèçìåíåíèÿ , åñëè òîëüêîâûíåêðàéíåàêêóðàòíû . Íåêîòîðûåðåäàêòîðû , òàêèåêàê GNUEmacs, ñòàðàþòñÿïðîñëåäèòü , ÷òîáûäâà÷åëîâåêàíåèçìåíÿëè îäíîâðåìåííîîäèíèòîòæåôàéë . Êñîæàëåíèþ , åñëèêòî - òîèñ- ïîëüçóåòäðóãîéðåäàêòîð , ýòàïðåäîñòîðîæíîñòüíåñðàáîòàåò .CVS ðåøàåòýòóïðîáëåìó , èçîëèðóÿðàçðàáîò÷èêîâäðóãîòäðóãà . Êàæ- äûéðàáîòàåòâñâîåìñîáñòâåííîìêàòàëîãå , àçàòåì CVS îáúåäèíÿåò çàêîí÷åííûåðàáîòû . CVS ïîÿâèëñÿèçíàáîðà sh- ñêðèïòîâ , àâòîðîìêîòîðûõáûë Dick Grune, îïóáëèêîâàííûõâãðóïïåíîâîñòåé comp.sources.unix âòîìå 6 âäåêàáðå 1986 ãîäà . Íåñìîòðÿíàòî , ÷òîíèñòðî÷êèêîäàèç òåõñêðèïòîâíåïðèñóòñòâóåòâ CVS, îñíîâûàëãîðèòìàóñòðàíåíèÿ êîíôëèêòîââçÿòûèìåííîîòòóäà . Âàïðåëå 1989 ãîäà BrianBerliner ñïðîåêòèðîâàëèðåàëèçîâàë CVS. JePolk ïîçäíååïîìîãåìóñïîääåðæêîéìîäóëåéèâåòâåéïîñòàâùè- êà . Ãëàâà 4. Îáçîð 33 Ïîëó÷èòü CVS ìîæíîðàçíûìèñïîñîáàìè , âêëþ÷àÿñâîáîäíîåïîëó- ÷åíèåâÈíòåðíåòå . Çàèíôîðìàöèåéîïîëó÷åíèèèïîäðóãèìâîïðî- ñàìîáðàùàéòåñüíà : http://www.cyclic.com/ http://www.loria.fr/~molli/cvs-index.html Èìååòñÿñïèñîêðàññûëêè info-cvs , ïîñâÿùåííûéîáñóæäåíèþ CVS. ×òîáûïîäïèñàòüñÿíàíåãîèëèîòïèñàòüñÿ , ïèøèòåíà [email protected] . Åñëèâûïðåäïî÷èòàåòåãðóïïûíîâîñòåé usenet, íàéäèòå comp.software.config-mgmt , ïîñâÿùåííóþîáñóæäåíèþðàçíîîá- ðàçíûõñèñòåìóïðàâëåíèÿêîíôèãóðàöèåé , íåòîëüêî CVS.  áóäóùåìâîçìîæíîñîçäàíèå comp.software.config-mgmt.cvs , åñëèâ comp.software.config-mgmt áóäåòíàëè÷åñòâîâàòüäîñòàòî÷íîåêîëè÷å- ñòâîîáñóæäåíèé CVS. Ìîæíîòàêæåïîäïèñàòüñÿíàñïèñîêðàññûëêè bug-cvs . ×òîáû ïîäïèñàòüñÿ , íàïèøèòåíà [email protected] ×åìíåÿâëÿåòñÿ CVS? CVS ñäåëàåòäëÿâàñìíîæåñòâîâåùåé , íîíåïûòàåòñÿáûòüâñåì ñðàçó . CVS íåÿâëÿåòñÿñèñòåìîéóïðàâëåíèÿñáîðêîé Íåñìîòðÿíàòî , ÷òîñòðóêòóðûâàøåãîðåïîçèòîðèÿèôàéëàìîäó- ëåéâçàèìîäåéñòâóþòññèñòåìîéóïðàâëåíèÿñáîðêîé ( òîåñòüôàéëàìè Makefile ), îíèïðèíöèïèàëüíîíåçàâèñèìû .CVS íåóêàçûâàåò , êàêñî- áèðàòüòîòèëèèíîéïðîåêò . Îíàïðîñòîõðàíèòôàéëû , ïðåäîñòàâëÿÿ âîçìîæíîñòüîáðàùàòüñÿêíèì , èñïîëüçóÿçàäóìàííóþâàìèñòðóêòó- ðóäåðåâà .CVS íåóêàçûâàåò , êàêèñïîëüçîâàòüäèñêîâîåïðîñòðàíñòâî âèçâëå÷åííûõêàòàëîãàõ . Åñëèâûñîçäàäèòå Makefile èëèñêðèïòûâ êàæäîìêàòàëîãåòàê , ÷òîîíèäîëæíûçíàòüîòíîñèòåëüíóþïîçèöèþ âñåãîîñòàëüíîãî , òîäåëîêîí÷èòñÿòåì , ÷òîïðèäåòñÿèçâëåêàòüâåñü ðåïîçèòîðèé . Åñëèâûìîäóëÿðèçóåòåâàøóðàáîòóèñîçäàäèòåñè- ñòåìóñáîðêè , êîòîðàÿáóäåòñîâìåñòíîèñïîëüçîâàòüôàéëû ,( ïîñðåä- ñòâîìññûëîê , ìîíòèðîâàíèÿ , VPATH â Makefile ' àõèò . ä .), òîñìîæåòå èñïîëüçîâàòüäèñêîâîåïðîñòðàíñòâîëþáûìóãîäíûìâàìñïîñîáîì . Ïîìíèòåòîëüêî , ÷òîëþáàÿïîäîáíàÿñèñòåìàòðåáóåòñåðüåçíîéðà- áîòûïîñîçäàíèþèïîääåðæàíèþ .CVS íåïûòàåòñÿñïðàâèòüñÿñ 34 Ðóêîâîäñòâîðàçðàáîò÷èêà âîçíèêàþùèìèïðèýòîìâîïðîñàìè . Êîíå÷íîæå , âàìñëåäóåòïîìå- ñòèòüñðåäñòâà , ñîçäàííûåäëÿïîääåðæêèñèñòåìûñáîðêè ( ñêðèïòû , Makefile ' û , èò . ä .), ïîä CVS. Âûÿñíåíèåòîãî , êàêèåôàéëûñëåäóåò ïåðåêîìïèëèðîâàòüïðèêàêîì - ëèáîèçìåíåíèè , îïÿòüæå , íåÿâëÿåòñÿ çàäà÷åé CVS. Òðàäèöèîííûìïîäõîäîìÿâëÿåòñÿèñïîëüçîâàíèå make äëÿñáîðêè , èèñïîëüçîâàíèåñïåöèàëüíîéóòèëèòûäëÿãåíåðàöèèçà- âèñèìîñòåé , èñïîëüçóåìûõïðîãðàììîé make. CVS íåÿâëÿåòñÿçàìåíîéðóêîâîäèòåëþ Ïðåäïîëàãàåòñÿ , ÷òîâûîáùàåòåñüñâàøèìíà÷àëüíèêîìèëèäåðîì ïðîåêòàäîñòàòî÷íî÷àñòî , ÷òîáûçíàòüîãðàôèêåðàáîò , òî÷êàõ ñëèÿíèÿ , èìåíàõâåòîêèäàòàõâûïóñêà . Åñëèýòîíåòàê , ÷òî CVS íèêàêíåñìîæåòïîìî÷ü .CVS ýòîèíñòðóìåíò , çàñòàâëÿþùèéâàø êîäïëÿñàòüïîäâàøóäóäêó . Íîâûèêîìïîçèòîð , èèñïîëíèòåëü . Íè îäèíèíñòðóìåíòíåèãðàåòñàìèíåñî÷èíÿåòñîáñòâåííîéìóçûêè . CVS íåÿâëÿåòñÿçàìåíîéîáùåíèÿðàçðàáîò÷èêîâ Âñòðåòèâøèñüñêîíôëèêòîì , ñîñòîÿùèìèçåäèíñòâåííîéñòðîêè , áîëüøèíñòâîðàçðàáîò÷èêîâñïðàâëÿþòñÿñíèìèáåçîñîáîãîòðóäà . Îäíàêî , áîëååîáùååîïðåäåëåíèåêîíôëèêòàâêëþ÷àåòâñåáÿïðîáëå- ìû , êîòîðûåñëèøêîìòðóäíîðåøèòüáåçâçàèìîäåéñòâèÿðàçðàáîò÷è- êîâ .CVS íåìîæåòîáíàðóæèòü , ÷òîñèíõðîííûåèçìåíåíèÿâîäíîì èëèíåñêîëüêèõôàéëàõïðèâåëèêëîãè÷åñêîìóêîíôëèêòó . Ïîíÿòèå êîíôëèêò , êîòîðîåèñïîëüçóåò CVS, ñòðîãîòåêñòóàëüíî . Òàêèåêîí- ôëèêòûïîÿâëÿþòñÿ , êîãäàèçìåíåíèÿâîñíîâíîìôàéëåäîñòàòî÷íî áëèçêè , ÷òîáûíàïóãàòüïðîãðàììóñëèÿíèÿ ( òîåñòü di3).CVS ñîâåð- øåííîíåñïîñîáíàïîìî÷üâóñòðàíåíèèíåòåêñòóàëüíûõèëèðàñïðåäå- ëåííûõêîíôëèêòîââëîãèêåïðîãðàììû . Ïðèìåð : ïðåäïîëîæèì , âû èçìåíèëèàðãóìåíòûôóíêöèè X , îïèñàííîéâôàéëå A . Âòîæåñàìîå âðåìÿêòî - òîåùåðåäàêòèðóåòôàéë B , äîáàâèâíîâûéâûçîâôóíê- öèè X , èñïîëüçóÿñòàðûåàðãóìåíòû .CVS íè÷åìíåñìîæåòïîìî÷ü . Âîçüìèòåïðèâû÷êó÷èòàòüñïåöèôèêàöèèèáåñåäîâàòüñêîëëåãàìè . CVS íåâåäåòêîíòðîëÿèçìåíåíèé Ïîäêîíòðîëåìèçìåíåíèéèìååòñÿââèäóíåñêîëüêîâåùåé . Âî - ïåðâûõ , ýòîìîæåòîçíà÷àòüîòñëåæèâàíèåîøèáîê , òîåñòüõðàíåíèå áàçûäàííûõîáíàðóæåííûõîøèáîêèñîñòîÿíèåêàæäîé ( èñïðàâëåíà ëèîíà ? âêàêîéâåðñèè ? ñîãëàñèëñÿëèîáíàðóæèâøèéåå , ÷òîîíà èñïðàâëåíà ?). Îâçàèìîäåéñòâèèñâíåøíåéñèñòåìîéîòñëåæèâàíèÿ îøèáîêìîæíîïðî÷èòàòüâôàéëàõ rcsinfo è verifymsg . Äðóãèì àñïåêòîìêîíòðîëÿèçìåíåíèéÿâëÿåòñÿîòñëåæèâàíèåòîãîôàêòà , Ãëàâà 4. Îáçîð 35 ÷òîèçìåíåíèÿâíåñêîëüêèõôàéëàõâäåéñòâèòåëüíîñòèÿâëÿþòñÿ îäíèìèòåìæåñîãëàñîâàííûìèçìåíåíèåì . Åñëèâûôèêñèðóåòå íåñêîëüêîôàéëîâîäíîéêîìàíäîé cvscommit , òî CVS çàáûâàåò , ÷òî ýòèôàéëûáûëèçàôèêñèðîâàíûîäíîâðåìåííî , èåäèíñòâåííàÿâåùü , èõîáúåäèíÿþùàÿ  ýòîîäèíàêîâûåæóðíàëüíûåçàïèñè . Âäàííîì ñëó÷àåìîæåòïîìî÷üâåäåíèåôàéëà ChangeLog âñòèëå GNU. Åùå îäíèìàñïåêòîìêîíòðîëÿèçìåíåíèé , âíåêîòîðûõñèñòåìàõÿâëÿåòñÿ âîçìîæíîñòüîòñëåæèâàòüñòàòóñêàæäîãîèçìåíåíèÿ . Íåêîòîðûå èçìåíåíèÿáûëèíàïèñàíûðàçðàáîò÷èêîì , íåêîòîðûåáûëèèçó÷åíû äðóãèìðàçðàáîò÷èêîì , èòàêäàëåå . Îáû÷íîïðèðàáîòåñ CVS â ýòîìñëó÷àåñîçäàåòñÿ di ôàéë ,( èñïîëüçóÿêîìàíäû cvsdi èëè di ), êîòîðûéïîñûëàåòñÿïîýëåêòðîííîéïî÷òåêîìó - íèáóäü , êòî ïîòîìïðèìåíèòýòîò di- ôàéë , èñïîëüçóÿïðîãðàììó patch . Ýòî î÷åíüãèáêî , íîçàâèñèòîòâíåøíèõïîîòíîøåíèþê CVS ìåõàíèçìîâ , ÷òîáûóáåäèòüñÿ , ÷òîíè÷åãîíåóïóùåíî . CVS íåÿâëÿåòñÿñèñòåìîéàâòîìàòè÷åñêîãîòåñòèðîâàíèÿ Âïðî÷åì , èìååòñÿâîçìîæíîñòüïðèíóäèòåëüíîãîâûïîëíåíèÿñåðèè òåñòîâ , èñïîëüçóÿôàéë commitinfo . ß , îäíàêîæå , íåî÷åíüìíîãîçíàþ îïðîåêòàõ , èñïîëüçîâàâøèõýòóâîçìîæíîñòü , èåñòüëèâíåéêàêèå - íèáóäüëîâóøêèèïîäâîäíûåêàìíè . CVS íåèìååòâñòðîåííîéìîäåëèïðîöåññà Íåêîòîðûåñèñòåìûîáåñïå÷èâàþòñïîñîáûóáåäèòüñÿ , ÷òîèçìåíå- íèÿèðåëèçûïðîõîäÿò÷åðåçîïðåäåëåííûåñòóïåíè , ïîëó÷àÿîäîáðå- íèåíàêàæäîé . Âîîáùåãîâîðÿ , ýòîãîìîæíîäîáèòüñÿñïîìîùüþ CVS, íîýòîìîæåòïîòðåáîâàòüíåìíîãîáîëüøåðàáîòû . Âíåêîòîðûõ ñëó÷àÿõâûáóäåòåèñïîëüçîâàòüôàéëû commitinfo , loginfo , rcsinfo èëè verifymsg , ÷òîáûóáåäèòüñÿ , ÷òîïðåäïðèíÿòûîïðåäåëåííûåøà- ãè , ïðåæäå÷åì CVS ïîçâîëèòçàôèêñèðîâàòüèçìåíåíèå . Ïîäóìàéòå òàêæå , äîëæíûëèèñïîëüçîâàòüñÿòàêèåâîçìîæíîñòè , êàêâåòâèðàç- ðàáîòêèèìåòêè , ÷òîáû , ñêàæåì , ïîðàáîòàòüíàäíîâîéâåòêîéðàç- ðàáîòêè , àçàòåìîáúåäèíÿòüîïðåäåëåííûåèçìåíåíèÿñîñòàáèëüíîé âåòêîé , êîãäàýòèèçìåíåíèÿîäîáðåíû . Ïðèìåððàáîòûñ CVS Âêà÷åñòâåââåäåíèÿâ CVS ìûïðèâåäåìçäåñüòèïè÷íóþñåññèþðà- áîòûñ CVS. Ïåðâîå , ÷òîíåîáõîäèìîïîíèìàòü , ýòîòî , ÷òî CVS õðàíèò âñåôàéëûâöåíòðàëèçîâàííîìðåïîçèòîðèè ( ñì . Ãëàâà 5. Ðåïîçèòî- ðèé ); âýòîéãëàâåïðåäïîëàãàåòñÿ , ÷òîðåïîçèòîðèéíàñòðîåí . 36 Ðóêîâîäñòâîðàçðàáîò÷èêà Ïðåäïîëîæèì , ÷òîâûðàáîòàåòåíàäïðîñòûìêîìïèëÿòîðîì . Èñõîä- íûéòåêñòñîñòîèòèçíåñêîëüêèõ C- ôàéëîâè Makefile ' à . Êîìïèëÿòîð íàçûâàåòñÿ 'tc'( ÒðèâèàëüíûéÊîìïèëÿòîð ), àðåïîçèòîðèéíàñòðîåí òàê , ÷òîèìååòñÿìîäóëü tc . Ïîëó÷åíèåèñõîäíîãîêîäà Ñíà÷àëàâàìíàäîïîëó÷èòüðàáî÷óþêîïèþèñõîäíîãîêîäàäëÿ tc . Èñïîëüçóéòåêîìàíäó $cvscheckouttc ïðèýòîìáóäåòñîçäàíêàòàëîã tc , âêîòîðûéáóäóòïîìåùåíûâñå ôàéëûñèñõîäíûìèòåêñòàìè . $cdtc $ls CVSMakefilebackend.cdriver.cfrontend.cparser.c Êàòàëîã CVS èñïîëüçóåòñÿäëÿâíóòðåííèõíóæä CVS. Îáû÷íîâàì íåñëåäóåòðåäàêòèðîâàòüèëèóäàëÿòüôàéëû , íàõîäÿùèåñÿâýòîì êàòàëîãå . Âûçàïóñêàåòåñâîéëþáèìûéðåäàêòîð , ðàáîòàåòåíàä backend.c è÷åðåçïàðó÷àñîââûäîáàâèëèôàçóîïòèìèçàöèèâêîìïèëÿòîð . Çàìå÷àíèåäëÿïîëüçîâàòåëåé RCS è SCCS: íåòðåáóåòñÿáëîêèðîâàòü ôàéëû , êîòîðûåâûæåëàåòåîòðåäàêòèðîâàòü . Ôèêñèðîâàíèåèçìåíåíèé Ïîñëåòîãî , êàêâûïðîâåðèëè , ÷òîêîìïèëÿòîðâñååùåêîìïèëèðó- åòñÿ , âûðåøèëèñîçäàòüíîâóþâåðñèþôàéëà backend.c . Ïðèýòîì âðåïîçèòîðèèïîÿâèòñÿâàøíîâûéôàéë backend.c , êîòîðûéñòàíåò äîñòóïíûìâñåì , èñïîëüçóþùèìýòîòðåïîçèòîðèé . $cvscommitbackend.c CVS çàïóñêàåòðåäàêòîð , ÷òîáûïîçâîëèòüâàìââåñòèæóðíàëüíóþ çàïèñü . Âûíàáèðàåòå  Äîáàâëåíàôàçàîïòèìèçàöèè , ñîõðàíÿåòå âðåìåííûéôàéëèâûõîäèòåèçðåäàêòîðà . Ïåðåìåííàÿîêðóæåíèÿ $CVSEDITOR îïðåäåëÿåò , êàêîéèìåííîðåäàê- òîðáóäåòâûçâàí . Åñëè $CVSEDITOR íåóñòàíîâëåíà , òîèñïîëüçóåòñÿ Ãëàâà 4. Îáçîð 37 $EDITOR , åñëèîíà , âñâîþî÷åðåäü , óñòàíîâëåíà . Åñëèîáåïåðåìåííûå íåóñòàíîâëåíû , èñïîëüçóåòñÿðåäàêòîðïîóìîë÷àíèþäëÿâàøåéîïå- ðàöèîííîéñèñòåìû , íàïðèìåð , vi ïîä UNIX èëè notepad äëÿ Windows 95/NT. Âäîáàâîê ,CVS ïðîâåðÿåòïåðåìåííóþîêðóæåíèÿ VISUAL . Ñóùåñòâó- þòðàçëè÷íûåìíåíèÿîòîì , òðåáóåòñÿëèòàêîåïîâåäåíèåèäîëæíû ëèäàëüíåéøèåâåðñèè CVS ïðîâåðÿòüïåðåìåííóþ VISUAL èëèèãíîðè- ðîâàòüå¼ . Âëþáîìñëó÷àå , ëó÷øåâñåãîáóäåòóáåäèòüñÿ , ÷òî VISUAL èëèâîîáùåíåóñòàíîâëåíà , èëèóñòàíîâëåíàâòîæåçíà÷åíèå , ÷òîè EDITOR . Êîãäà CVS çàïóñêàåòðåäàêòîð , âøàáëîíåäëÿââîäàæóðíàëüíîéçà- ïèñèïåðå÷èñëåíûèçìåíåííûåôàéëû . Äëÿêëèåíòà CVS ýòîòñïèñîê ñîçäàåòñÿïóò¼ìñðàâíåíèÿâðåìåíèèçìåíåíèÿôàéëàñåãîâðåìåíåì èçìåíåíèÿ , êîãäàîíáûëïîëó÷åíèëèîáíîâëåí . Òàêèìîáðàçîì , åñëè âðåìÿèçìåíåíèÿôàéëàèçìåíèëîñü , àåãîñîäåðæèìîåîñòàëîñüïðåæ- íèì , îíáóäåòñ÷èòàòüñÿèçìåíåííûì . Ïðîùåâñåãîâäàííîìñëó÷àå íåîáðàùàòüíàýòîâíèìàíèÿ  âïðîöåññåôèêñèðîâàíèÿèçìåíåíèé CVS îïðåäåëèò , ÷òîñîäåðæèìîåôàéëàíåèçìåíèëîñüèïîâåäåòñåáÿ äîëæíûìîáðàçîì . Ñëåäóþùàÿêîìàíäà update ñîîáùèò CVS, ÷òî ôàéëíåáûëèçìåíåí , èåãîâðåìÿèçìåíåíèÿáóäåòâîçâðàùåíîâïðåæ- íååçíà÷åíèå , òàê÷òîýòîòôàéëíåáóäåòìåøàòüñÿïðèäàëüíåéøèõ ôèêñèðîâàíèÿõ . Åñëèâûõîòèòåèçáåæàòüçàïóñêàðåäàêòîðà , óêàæèòåæóðíàëüíóþ çàïèñüâêîìàíäíîéñòðîêå , èñïîëüçóÿôëàã -m , íàïðèìåð : $cvscommit-m Äîáàâëåíàôàçàîïòèìèçàöèè backend.c Óáîðêàçàñîáîé Ïåðåäòåì , êàêïåðåéòèêäðóãèìçàíÿòèÿì , âûðåøàåòåóäàëèòü ðàáî÷óþêîïèþ tc . Êîíå÷íîæå , ýòîìîæíîñäåëàòüòàê : $cd.. $rm-rtc íîëó÷øèìñïîñîáîìáóäåòèñïîëüçîâàíèåêîìàíäû release : $cd.. $cvsrelease-dtc 38 Ðóêîâîäñòâîðàçðàáîò÷èêà Mdriver.c ?tc Youhave[1]alteredfilesinthisrepository. Ãëàâà 4. Îáçîð 39 newrevision:1.2;previousrevision:1.1 done $cd.. $cvsrelease-dtc ?tc Youhave[0]alteredfilesinthisrepository. 40 Ðóêîâîäñòâîðàçðàáîò÷èêà Ãëàâà 5. Ðåïîçèòîðèé Âðåïîçèòîðèè CVS õðàíèòïîëíûåêîïèèâñåõôàéëîâèêàòàëîãîâ , íàõîäÿùèõñÿïîäêîíòðîëåìâåðñèé . Îáû÷íîâàìíèêîãäàíåïðèäåòñÿíàïðÿìóþîáðàùàòüñÿêôàéëàìâ ðåïîçèòîðèè . Âìåñòîýòîãîâûáóäåòåèñïîëüçîâàòüêîìàíäû CVS äëÿ ïîëó÷åíèÿâàøåéñîáñòâåííîéêîïèèôàéëîâââàøåìðàáî÷åìêàòàëî- ãå , àçàòåìáóäåòåðàáîòàòüñýòîéêîïèåé . Êîãäàâûâíåñëèîïðåäå- ëåííûåèçìåíåíèÿ , âûïîìåùàåòå ( èëèôèêñèðóåòå ) èõâðåïîçèòîðèé . Òåïåðüâðåïîçèòîðèèõðàíèòñÿèíôîðìàöèÿîñäåëàííûõâàìèèçìå- íåíèÿõ : ÷òîèìåííîèêîãäàáûëîèçìåíåíîèïðî÷àÿïîäîáíàÿèíôîð- ìàöèÿ . Çàìåòüòå , ÷òîðåïîçèòîðèéíåÿâëÿåòñÿïîäêàòàëîãîìðàáî÷åãî êàòàëîãà , èîáðàòíîåòàêæåíåâåðíî ; îíèíàõîäÿòñÿâñîâåðøåííîðàç- íûõìåñòàõ . CVS ìîæåòîáðàùàòüñÿêðåïîçèòîðèþìíîæåñòâîìñïîñîáîâ . Ðåïî- çèòîðèéìîæåòíàõîäèòüñÿíàëîêàëüíîéìàøèíå , íàñîñåäíåéìàøèíå èëèæåíàìàøèíå , íàõîäÿùåéñÿíàäðóãîìêîíòèíåíòå . ×òîáûðàçëè- ÷àòüñïîñîáûäîñòóïàêðåïîçèòîðèþ , åãîèìÿíà÷èíàåòñÿñìåòîäàäî- ñòóïà . Íàïðèìåð , ìåòîääîñòóïà :local: îçíà÷àåò , ÷òîðåïîçèòîðèéíà- õîäèòñÿâëîêàëüíîìêàòàëîãå . Íàïðèìåð , :local:/usr/local/cvsroot ' îçíà÷àåò , ÷òîðåïîçèòîðèéíàõîäèòñÿâêàòàëîãå /usr/local/cvsroot íà êîìïüþòåðå , íàêîòîðîìèñïîëüçóåòñÿ CVS. Äðóãèåìåòîäûäîñòóïà îïèñàíûâðàçäåëå  Ñåòåâûåðåïîçèòîðèè . Åñëèìåòîääîñòóïàíåóêàçàí , èèìÿðåïîçèòîðèÿíåñîäåðæèò : , òîïðåäïîëàãàåòñÿìåòîä :local: . Åñëèâèìåíèñîäåðæèòñÿ : , òîïðåä- ïîëàãàåòñÿìåòîääîñòóïà :ext: èëè :server: . Íàïðèìåð , åñëèâàøëî- êàëüíûéðåïîçèòîðèéíàõîäèòñÿâ /usr/local/cvsroot , òîâûìîæåòå èñïîëüçîâàòü /usr/local/cvsroot âìåñòî :local:/usr/local/cvsroot . Íî åñëè , íàïðèìåð , ïîä WindowsNT âàøëîêàëüíûéðåïîçèòîðèéíàõî- äèòñÿâ c:\src\cvsroot , òîâûäîëæíûóêàçàòüìåòîääîñòóïà , òîåñòü :local:c:\src\cvsroot . Ðåïîçèòîðèéäåëèòñÿíàäâå÷àñòè . $CVSROOT/CVSROOT ñîäåðæèòàä- ìèíèñòðàòèâíûåôàéëû CVS. Âñåïðî÷èåêàòàëîãèñîäåðæàòìîäóëè , îïðåäåëåííûåïîëüçîâàòåëåì . Êàêñîîáùèòü CVS, ãäåíàõîäèòñÿ ðåïîçèòîðèé Ñóùåñòâóåòíåñêîëüêîñïîñîáîâñîîáùèòü CVS, ãäåèñêàòüðåïîçè- òîðèé . Âûìîæåòåÿâíîçàäàòüðåïîçèòîðèéâêîìàíäíîéñòðîêåñ ïîìîùüþêëþ÷à -d (directory, êàòàëîã ): Ãëàâà 5. Ðåïîçèòîðèé 41 cvs-d/usr/local/cvsrootcheckoutyoyodyne/tc Äðóãèìâàðèàíòîìÿâëÿåòñÿóñòàíîâêàïåðåìåííîéîêðóæå- íèÿ $CVSROOT âïîëíûéïóòüäîêîðíÿðåïîçèòîðèÿ , íàïðèìåð , /usr/local/cvsroot . ×òîáûóñòàíîâèòü $CVSROOT , ïîëüçîâàòåëè csh è tcsh äîëæíûïîìåñòèòüâñâîéôàéë ~/.cshrc èëè ~/.tcshrc òàêóþ ñòðîêó : 42 Ðóêîâîäñòâîðàçðàáîò÷èêà Ãäåõðàíÿòñÿôàéëûâðåïîçèòîðèè Îáùàÿñòðóêòóðàðåïîçèòîðèÿ  ýòîäåðåâîêàòàëîãîâ , ñîîòâåò- ñòâóþùååêàòàëîãàìâðàáî÷åéêîïèè . Ïðåäïîëîæèì , íàïðèìåð , ÷òî ðåïîçèòîðèéíàõîäèòñÿâ /usr/local/cvsroot Âîòâîçìîæíîåäåðåâîêàòàëîãîâ ( ïîêàçàíûòîëüêîêàòàëîãè ): /usr | +--local || |+--cvsroot ||| ||+--CVSROOT |( àäìèíèñòðàòèâíûåôàéëû ) | +--gnu || |+--diff ||( èñõîäíûéòåêñò GNUdiff) || |+--rcs ||( èñõîäíûéòåêñò RCS) || |+--cvs |( èñõîäíûéòåêñò CVS) | +--yoyodyne | +--tc || |+--man || |+--testing | +---( äðóãîåïðîãðàììíîåîáåñïå÷åíèåôèðìû Yoyodyne) Âíóòðèêàòàëîãîâíàõîäÿòñÿôàéëûèñòîðèèäëÿêàæäîãîôàéëà , íàõîäÿùåãîñÿïîäêîíòðîëåìâåðñèé . Èìÿôàéëàèñòîðèèñîñòîèòèç Ãëàâà 5. Ðåïîçèòîðèé 43 èìåíèñîîòâåòñòâóþùåãîôàéëàèñóôôèêñà ,v . Âîòêàêâûãëÿäèò äåðåâîêàòàëîãîâäëÿ yoyodyne/tc : $CVSROOT | +--yoyodyne || |+--tc ||| +--Makefile,v +--backend.c,v +--driver.c,v +--frontend.c,v +--parser.c,v +--man || |+--tc.1,v | +--testing | +--testpgm.t,v +--test2.t,v Ôàéëèñòîðèèñîäåðæèò , ïîìèìîâñåãîïðî÷åãî , äîñòàòî÷íîèíôîð- ìàöèè , ÷òîáûâîññîçäàòüëþáóþðåâèçèþôàéëà , æóðíàëâñåõçàôèê- ñèðîâàííûõèçìåíåíèéèèìåíàâñåõïîëüçîâàòåëåé , ñäåëàâøèõýòè èçìåíåíèÿ . Ôàéëûèñòîðèèèçâåñòíûêàê RCS- ôàéëû , ïîòîìó÷òî ïåðâîéïðîãðàììîé , êîòîðàÿñîçäàâàëàôàéëûýòîãîôîðìàòà , áûëà ñèñòåìàêîíòðîëÿâåðñèé RCS. Ïîëíîåîïèñàíèåôîðìàòàôàéëîâíà- õîäèòñÿíàñòðàíèöåðóêîâîäñòâà rcsle(5), ðàñïðîñòðàíÿåìîãîâìåñòå ñ RCS, èëèâôàéëå doc/RCSFILES èçêîìïëåêòàèñõîäíûõòåêñòîâ CVS. Ýòîòôîðìàòôàéëàèñïîëüçóåòñÿïîâñåìåñòíî  ìíîæåñòâîäðóãèõ ïðîãðàìììîãóòïîìåíüøåéìåðåèìïîðòèðîâàòüôàéëûýòîãîôîð- ìàòà . Ôàéëû RCS, èñïîëüçóåìûåâ CVS, íåñêîëüêîîòëè÷àþòñÿîòñòàí- äàðòíîãîôîðìàòà . Âîëøåáíûåâåòêè  ñàìîåáîëüøîåîòëè÷èå ; ñì . ðàçäåë  Âîëøåáíûåíîìåðàâåòîê . Èìåíàìåòîê , êîòîðûåïîçâîëÿ- åòèñïîëüçîâàòü CVS, ÿâëÿþòñÿïîäìíîæåñòâîìòåõ , ÷òîïîçâîëåíûâ RCS; ñì . ðàçäåë  Ìåòêèðåâèçèé . 44 Ðóêîâîäñòâîðàçðàáîò÷èêà Ïðàâàäîñòóïàêôàéëàì Âñåôàéëû ,v ñîçäàþòñÿñïðàâàìè  òîëüêîäëÿ÷òåíèÿ , èâàìíå ñëåäóåòèçìåíÿòüýòèïðàâàäîñòóïà . Êàòàëîãèâðåïîçèòîðèèäîëæ- íûáûòüäîñòóïíûäëÿçàïèñèòåì , êîìóðàçðåøåíîèçìåíÿòüôàéëûâ êàæäîìêàòàëîãå . Ýòîîáû÷íîîçíà÷àåò , ÷òîâàìíóæíîñîçäàòüãðóïïó ïîëüçîâàòåëåé UNIX( ñì . ñòðàíèöóðóêîâîäñòâà group(5)), ñîñòîÿùóþ èçëèö , ó÷àñòâóþùèõâñîçäàíèèïðîåêòà , èíàñòðîèòüðåïîçèòîðèé òàê , ÷òîáûýòàãðóïïàáûëàâëàäåëüöåìêàòàëîãàñïðîåêòîì . Ýòîîçíà÷àåò , ÷òîîãðàíè÷èâàòüäîñòóïêôàéëàììîæíîòîëüêîíà óðîâíåêàòàëîãà . Çàìåòüòå , ÷òîïîëüçîâàòåëèäîëæíûèìåòüïðàâàíàçàïèñüâêàòàëîã èäëÿèçâëå÷åíèÿôàéëîâ , ïîòîìó÷òî CVS äîëæíàñîçäàòüôàéëû áëîêèðîâêè . Çàìåòüòåòàêæå , ÷òîïîëüçîâàòåëèäîëæíûèìåòüïðàâàíàçàïèñü âôàéë CVSROOT/val-tags .CVS èñïîëüçóåòýòîòôàéë , ÷òîáûîòñëåæè- âàòü , êàêèåìåòêèðàçðåøåíû ( ýòîòôàéëèíîãäàîáíîâëÿåòñÿ , êîãäà èñïîëüçóþòñÿèêîãäàñîçäàþòñÿìåòêè ). Êàæäûé RCS- ôàéëïðèíàäëåæèòïîëüçîâàòåëþ , êîòîðûéïîñëåäíèì çàôèêñèðîâàëèçìåíåíèÿâýòîòôàéë . Ýòîòôàêòíåñòîëüâàæåí , ãëàâíîå  êòîâëàäåëåöêàòàëîãà . CVS ïûòàåòñÿóñòàíîâèòüàäåêâàòíûåïðàâàäîñòóïàêôàéëàìäëÿ íîâûõêàòàëîãîâ , êîòîðûåñîçäàþòñÿâäåðåâå , íîåñëèâàìòðåáóåò- ñÿ , ÷òîáûíîâûéêàòàëîãèìåëïðàâàäîñòóïà , îòëè÷àþùèåñÿîòåãî ðîäèòåëüñêîãîêàòàëîãà , âûäîëæíûçàäàòüýòîâðó÷íóþ . Åñëèâû óñòàíîâèòåïåðåìåííóþîêðóæåíèÿ CVSUMASK , òîîíàáóäåòçàäàâàòü , êàêèåïðàâàäîñòóïàêôàéëàì CVS èñïîëüçóåòïðèñîçäàíèèêàòàëî- ãîâè / èëèôàéëîââðåïîçèòîðèè . CVSUMASK íåâëèÿåòíàïðàâàäîñòóïà êôàéëàìâðàáî÷åìêàòàëîãå ; òàêèåôàéëûèìåþòïðàâà , îáû÷íûå äëÿíîâûõôàéëîâ , ðàçâå÷òîòîëüêîèíîãäà CVS ñîçäàåòèõñïðàâàìè òîëüêîäëÿ÷òåíèÿ . Çàìåòüòå , ÷òîïðèèñïîëüçîâàíèèêëèåíò - ñåðâåðíîãî CVS( ñì . ðàç- äåë  Ñåòåâûåðåïîçèòîðèè ) íåñóùåñòâóåòíîðìàëüíîãîñïîñîáàóñòà- íîâèòü CVSUMASK ; óñòàíîâêàåãîíàêëèåíòñêîéìàøèíåíåèãðàåòðî- ëè . Åñëèâûñîåäèíÿåòåñüñïîìîùüþ rsh, òîìîæåòåóñòàíàâëèâàòü CVSUMASK âôàéëå .bashrc èëè .cshrc , êàêîïèñàíîâäîêóìåíòàöèèíà âàøóîïåðàöèîííóþñèñòåìó . Ýòîïîâåäåíèåìîæåòèçìåíèòüñÿâáó- äóùåéâåðñèè CVS; íåïîëàãàéòåñüíàòî , ÷òîóñòàíîâêà CVSUMASK íà êëèåíòñêîéìàøèíåíåèãðàåòðîëè . Ïðèèñïîëüçîâàíèèñåðâåðàïàðîëüíîéàóòåíòèôèêàöèè ( pserver ) îáû÷íîòðåáóþòñÿãîðàçäîáîëååæåñòêèåïðàâàäîñòóïàêêàòàëîãó Ãëàâà 5. Ðåïîçèòîðèé 45 $CVSROOT èêàòàëîãàì , íàõîäÿùèìñÿâí¼ì ; ñì . ðàçäåë  Íàñòðîéêà ñåðâåðàäëÿïàðîëüíîéàóòåíòèôèêàöèè . Íåêîòîðûåîïåðàöèîííûåñèñòåìûïîçâîëÿþòîïðåäåëåííûìïðî- ãðàììàìâûïîëíÿòüîïåðàöèè , êîòîðûåíåìîæåòâûïîëíÿòüòîò , êòî âûçûâàåòýòèïðîãðàììû . Òàêîâû , íàïðèìåð , âîçìîæíîñòè setuid èëè setgid â UNIX èëèóñòàíîâëåííûåîáðàçûâ VMS.CVS íåðàçðàáà- òûâàëñÿ , ÷òîáûèñïîëüçîâàòüòàêèåâîçìîæíîñòè , èïîýòîìóïîïûòêè óñòàíîâèòü CVS òàêèìîáðàçîìîáåñïå÷àòçàùèòóòîëüêîëèøüîòñëó- ÷àéíûõîøèáîê ; òå , êòîæåëàåòîáîéòèçàùèòó , ñìîãóòýòîñäåëàòü è , âçàâèñèìîñòèîòêîíêðåòíûõóñëîâèé , ñìîãóòïîëó÷èòüäîñòóïåùå êóäà - ëèáîïîìèìî CVS. Âûìîæåòåïîïðîáîâàòüèñïîëüçîâàòü pserver . Ýòàâîçìîæíîñòüòàêæåñïîñîáíàñîçäàòüëîæíîå÷óâñòâîáåçîïàñíî- ñòèèëèîòêðûòüäûðó , áîëüøóþ÷åìòà , êîòîðóþâûïûòàåòåñüçà- êðûòü , ïîýòîìóâíèìàòåëüíîïðî÷òèòåãëàâóîáåçîïàñíîñòèñåðâåðà ïàðîëüíîéàóòåíòèôèêàöèè , åñëèâûñîáèðàåòåñüåãîèñïîëüçîâàòü . Äîïîëíèòåëüíàÿèíôîðìàöèÿâðàçäåëå  Íàñòðîéêàñåðâåðàäëÿïà- ðîëüíîéàóòåíòèôèêàöèè . Ñïåöèôè÷åñêèåäëÿ Windows ïðàâàäîñòóïà Íåêîòîðûåâîïðîñû , ñâÿçàííûåñïðàâàìèäîñòóïà , ñïåöèôè÷íûäëÿ îïåðàöèîííûõñèñòåìêëàññà Window(Windows95/98,WindowsNT è , ñêîðååâñåãî , áóäóùèåïîäîáíûåîïåðàöèîííûåñèñòåìû . ×àñòü íèæåñêàçàííîãîìîæåòáûòüïðèìåíèìàê OS/2, õîòÿÿíåóâåðåí ). ×åðäàê Âûçàìåòèòå , ÷òîèíîãäà CVS ïîìåùàåò RCS- ôàéëûâêàòàëîãå Attic ( ÷åðäàê ). Íàïðèìåð , åñëè CVSROOT  ýòî /usr/local/cvsroot , èìû ãîâîðèìîôàéëå backend.c âêàòàëîãå yoyodyne/tc , òîîáû÷íîýòîò ôàéëíàõîäèòñÿâ /usr/local/cvsroot/yoyodyne/tc/backend.c,v Åñëèæåîíïîïàäàåòíà÷åðäàê , òîîíáóäåòíàõîäèòüñÿâ /usr/local/cvsroot/yoyodyne/tc/Attic/backend.c,v Ñòî÷êèçðåíèÿïîëüçîâàòåëÿíåâàæíî , íàõîäèòñÿôàéëíà÷åðäàêå èëèíåò , òàêêàê CVS ñàìñëåäèòçàýòèìèïðèíåîáõîäèìîñòè çàãëÿäûâàåòíà÷åðäàêâïîèñêàõôàéëà . Âñëó÷àåæå , åñëèâûõîòèòå 46 Ðóêîâîäñòâîðàçðàáîò÷èêà çíàòüòî÷íî , òî RCS- ôàéëõðàíèòñÿíà÷åðäàêåòîãäàèòîëüêîòîãäà , êîãäàãîëîâíàÿðåâèçèÿñòâîëàíàõîäèòñÿâñîñòîÿíèè dead( ìåðòâîå ).  Ìåðòâîå  ñîñòîÿíèåîçíà÷àåò , ÷òîôàéëáûëóäàëåíèëèæåíèêîãäà íåäîáàâëÿëñÿâýòóâåòêó . Íàïðèìåð , åñëèâûäîáàâèòåôàéëââåòêó , òîåãîñòâîëîâàÿðåâèçèÿáóäåòâ  ìåðòâîì  ñîñòîÿíèè , àðåâèçèÿíà âåòêå  íåò . Êàòàëîã CVS âðåïîçèòîðèè Êàòàëîã CVS âêàæäîìðåïîçèòîðèèñîäåðæèòèíôîðìàöèþîáàòðè- áóòàõôàéëîâ ( âôàéëå CVS/fileattr ); ñìîòðè fileattr.h ñðåäèèñõîä- íûõòåêñòîâ CVS çàäîïîëíèòåëüíîéèíôîðìàöèåé . Âáóäóùåìâýòîì êàòàëîãåìîãóòîêàçàòüäðóãèåäîïîëíèòåëüíûåôàéëû , ïîýòîìóñåãî- äíÿøíèåðåàëèçàöèèäîëæíûèãíîðèðîâàòüíåèçâåñòíûåôàéëû . Ýòîïîâåäåíèåðåàëèçîâàíîòîëüêîââåðñèÿõ 1.7 èâûøå . Áëîêèðîâêèâðåïîçèòîðèè Ýòàãëàâàîðèåíòèðîâàíàíàëþäåé , ïèøóùèõóòèëèòû , îáðàùàþùè- åñÿêðåïîçèòîðèþ CVS, íåêîíôëèêòóÿïðèýòîìñäðóãèìèïðîãðàì- ìàìè , îáðàùàþùèìèñÿêòîìóæåðåïîçèòîðèþ . Åñëèâûçàïóòàåòåñü âîïèñûâàåìûõçäåñüêîíöåïöèÿõ , êàêòîáëîêèðîâêà÷òåíèÿ , áëîêè- ðîâêàçàïèñèèìåðòâàÿáëîêèðîâêà , òîîáðàòèòåñüêëèòåðàòóðåïî îïåðàöèîííûìñèñòåìàìèëèáàçàìäàííûõ . Ôàéëûâðåïîçèòîðèè , ÷üèèìåíàíà÷èíàþòñÿñ #cvs.rfl  ýòîáëî- êèðîâêè÷òåíèÿ . Ôàéëû , ÷üèèìåíàíà÷èíàþòñÿñ #cvs.wfl  ýòîáëî- êèðîâêèçàïèñè . Ñòàðûåâåðñèè CVS( äîâåðñèè 1.5) ñîçäàâàëèòàêæå ôàéëûñèìåíàìè , íà÷èíàþùèìèñÿñ #cvs.tfl , íîòàêèåôàéëûçäåñü íåîáñóæäàþòñÿ . Êàòàëîã #cvs.lock ñëóæèòîñíîâíîéáëîêèðîâêîé , òî åñòüïåðåäòåì , êàêñîçäàâàòüêàêóþ - ëèáîåùåáëîêèðîâêó , ñíà÷àëà íåîáõîäèìîñîçäàòüîñíîâíóþáëîêèðîâêó . ×òîáûñîçäàòüáëîêèðîâêó÷òåíèÿ , ñíà÷àëàñîçäàéòåêàòàëîã #cvs.lock . Âáîëüøèíñòâåîïåðàöèîííûõñèñòåìîïåðàöèÿñîçäàíèÿ êàòàëîãàÿâëÿåòñÿàòîìàðíîé . Åñëèïîïûòêàñîçäàíèÿçàâåðøèëàñü íåóäà÷íî , çíà÷èò , îñíîâíàÿáëîêèðîâêàóæåñóùåñòâóåò , ïîýòîìóïî- äîæäèòåíåìíîãîèïîïðîáóéòååùå . Ïîñëåïîëó÷åíèÿáëîêèðîâêè #cvs.lock ñîçäàéòåôàéë , ÷üåèìÿñîñòîèòèç #cvs.rfl , èèíôîðìà- öèåéïîâàøåìóâûáîðó , íàïðèìåð , èìÿìàøèíûèíîìåðïðîöåññà . Ïîòîìóäàëèòåêàòàëîã #cvs.lock , ÷òîáûñíÿòüîñíîâíóþáëîêèðîâêó . Òåïåðüìîæíî÷èòàòüðåïîçèòîðèé . Êîãäà÷òåíèåîêîí÷åíî , óäàëèòå ôàéë #cvs.rfl , ÷òîáûñíÿòüáëîêèðîâêó÷òåíèÿ . Ãëàâà 5. Ðåïîçèòîðèé 47 ×òîáûïîëó÷èòüáëîêèðîâêóçàïèñè , ñíà÷àëàñîçäàéòåêàòàëîã #cvs.lock , êàêèâñëó÷àåñáëîêèðîâêîé÷òåíèÿ . Çàòåìóáåäèòåñü , ÷òîâðåïîçèòîðèèíåòôàéëîâ , ÷üèèìåíàíà÷èíàþòñÿñ #cvs.rfl . Åñ- ëèîíèèìåþòñÿ , óäàëèòå #cvs.lock , ïîäîæäèòåíåìíîãîèïîïðîáóéòå ñíîâà . Åñëèáëîêèðîâîê÷òåíèÿíåò , ñîçäàéòåôàéëñèìåíåì , ñî- ñòîÿùèìèç #cvs.wfl èêàêîé - íèáóäüèíôîðìàöèèïîâàøåìóâûáîðó , íàïðèìåð , èìåíèìàøèíûèíîìåðàïðîöåññà . Íåóäàëÿéòåáëîêèðîâ- êó #cvs.lock . Òåïåðüâûìîæåòåïèñàòüâðåïîçèòîðèé . Êîãäàçàïèñü îêîí÷åíà , ñíà÷àëàóäàëèòåôàéë #cvs.wfl , àçàòåìêàòàëîã #cvs.lock . Çàìåòüòå , ÷òîâîòëè÷èåîòôàéëà #cvs.rfl , ôàéë #cvs.wfl èìååò÷èñòî èíôîðìàöèîííîåçíà÷åíèå ; îííåîêàçûâàåòáëîêèðóþùåãîýôôåêòà , êîòîðûéâäàííîìñëó÷àåäîñòèãàåòñÿèñïîëüçîâàíèåìãëàâíîéáëîêè- ðîâêè ( #cvs.lock ). Çàìåòüòå , ÷òîêàæäàÿáëîêèðîâêà ( ÷òåíèÿèëèçàïèñè ) áëîêèðóåò åäèíñòâåííûéêàòàëîãâðåïîçèòîðèè , âêëþ÷àÿ Attic è CVS , íîíåâêëþ- ÷àÿïîäêàòàëîãè , êîòîðûåïðåäñòàâëÿþòñîáîéäðóãèåêàòàëîãè , íàõî- äÿùèåñÿïîäêîíòðîëåìâåðñèé . ×òîáûçàáëîêèðîâàòüöåëîåäåðåâî , âàìñëåäóåòçàáëîêèðîâàòüêàæäûéêàòàëîã ( çàìåòüòå , ÷òîåñëèâûíå ñìîæåòåïîëó÷èòüõîòÿáûîäíóáëîêèðîâêóâýòîìïðîöåññå , òîñëå- äóåòîòìåíèòüâñåóæåïîëó÷åííûåáëîêèðîâêè , çàòåìïîäîæäàòüè ïîïðîáîâàòüñíîâà , âîèçáåæàíèåìåðòâûõáëîêèðîâîê .) Çàìåòüòåòàêæå , ÷òî CVS îæèäàåò , ÷òîäîñòóïêîòäåëüíûìôàé- ëàì foo,v êîíòðîëèðóåòñÿáëîêèðîâêàìèçàïèñè .RCS èñïîëüçóåòâ êà÷åñòâåáëîêèðîâîêôàéëû ,foo, , íî CVS íåïîääåðæèâàåòòàêóþñõå- ìó , ïîýòîìóðåêîìåíäóåòñÿèñïîëüçîâàíèåáëîêèðîâêèçàïèñè . Ñìîòðè êîììåíòàðèèêôóíêöèè rcs_internal_lockfile âèñõîäíîìêîäå CVS, ãäåíàõîäèòñÿäîïîëíèòåëüíîåîáñóæäåíèåèìîòèâàöèÿ . Êàêâêàòàëîãå CVSROOT õðàíÿòñÿôàéëû Êàòàëîã $CVSROOT/CVSROOT ñîäåðæèòðàçëè÷íûåàäìèíèñòðàòèâíûå ôàéëû . Âêàêîì - òîñìûñëåýòîòêàòàëîãïîäîáåíëþáîìóäðóãîìó êàòàëîãóâðåïîçèòîðèè ; îíñîäåðæèò RCS- ôàéëû , ÷üèèìåíàçàêàí- ÷èâàþòñÿíà ,v , èìíîãèåêîìàíäû CVS îïåðèðóþòñíèìèîáû÷íûì îáðàçîì . Îäíàêî , èìååòñÿíåñêîëüêîðàçëè÷èé . Äëÿêàæäîãîàäìèíèñòðàòèâíîãîôàéëà , âäîïîëíåíèåê RCS- ôàéëó , õðàíèòñÿåãîïîñëåäíÿÿðåâèçèÿ . Íàïðèìåð , åñòü RCS- ôàéë loginfo,v èôàéë loginfo , ñîäåðæàùèéïîñëåäíþþðåâèçèþ , íàõîäÿùóþñÿâ loginfo,v . Êîãäàâûôèêñèðóåòåàäìèíèñòðàòèâíûéôàéë ,CVS äîë- æåííàïèñàòü : 48 Ðóêîâîäñòâîðàçðàáîò÷èêà cvscommit:Rebuildingadministrativefiledatabase èîáíîâèòüåãîèçâëå÷åííóþêîïèþâ $CVSROOT/CVSROOT . Åñëèýòîíå òàê , çíà÷èò , ÷òî - òîñëó÷èëîñüñ CVS. ×òîáûâàøè CVS îáðàùàëñÿñ âàøèìèñîáñòâåííûìèôàéëàìèòî÷íîòàêæå , âûìîæåòåäîáàâèòüèõ èìåíàâàäìèíèñòðàòèâíûéôàéë checkoutlist . Ïîóìîë÷àíèþ , ôàéë modules âåäåòñåáÿêàêîïèñàíîâûøå . Åñëèæå îíñòàíîâèòñÿî÷åíüáîëüøèì , òîõðàíåíèåââèäåïëîñêîãîôàéëàìî- æåòïðèâåñòèêìåäëåííîìóïîèñêóìîäóëåé ( ÿíåóâåðåí , ÷òîýòîâñå åùåñòîëüæåâàæíî , êàêèòîãäà , êîãäàýòàâîçìîæíîñòüâïåðâûåïî- ÿâèëàñü ; ÿíåâèäåëðàñ÷åòîâáûñòðîäåéñòâèÿ ). Òàêèìîáðàçîì , âíåñÿ îïðåäåëåííûåèçìåíåíèÿâèñõîäíûéêîä CVS, ìîæíîõðàíèòüôàéë ìîäóëåéâáàçåäàííûõ , êîòîðàÿèìååòèíòåðôåéññ ndbm, íàïðèìåð , Berkeleydb èëè GDBM. Åñëèýòàîïöèÿèñïîëüçóåòñÿ , òîáàçàäàí- íûõìîäóëåéáóäåòõðàíèòüñÿâôàéëàõ modules.db , modules.pag è / èëè modules.dir . Êàêäàííûåõðàíÿòñÿâðàáî÷åì êàòàëîãå Ïîêàìûîïèñûâàåìâíóòðåííþþðàáîòó CVS, êîòîðàÿèíîãäàñòà- íîâèòñÿâèäíà , ìûìîæåìòàêæåïîãîâîðèòüîòîì , ÷òî CVS õðàíèò âêàòàëîãàõ CVS âðàáî÷èõêàòàëîãàõ . Êàêèâñëó÷àåñðåïîçèòîðèåì , CVS îáðàáàòûâàåòýòóèíôîðìàöèþ , èîáû÷íîâûîáðàùàåòåñüêíåé ïîñðåäñòâîìêîìàíä CVS. Âíåêîòîðûõñëó÷àÿõ , îäíàêî , áûâàåòïî- ëåçíîíàïðÿìóþðàáîòàòüññîäåðæèìûìýòèõêàòàëîãîâ , íàïðèìåð , â ãðàôè÷åñêîéîáîëî÷êå jCVS èëèïàêåòå VC äëÿ emacs. Òàêèåïðîãðàì- ìûäîëæíûñëåäîâàòüðåêîìåíäàöèÿìâýòîéãëàâå , åñëèîíèæåëàþò íîðìàëüíîðàáîòàòüñîâìåñòíîñäðóãèìèïðîãðàììàìè , èñïîëüçóþ- ùèìèòåæåñàìûåôàéëû , âêëþ÷àÿáóäóùèåèõâåðñèè , àòàêæåñ CVS, ðàáîòàþùèìèçêîìàíäíîéñòðîêè . Êàòàëîã CVS ñîäåðæèòíåñêîëüêîôàéëîâ . Ïðîãðàììû , ÷èòàþùèå ýòîòêàòàëîã , äîëæíûèãíîðèðîâàòüôàéëû , íàõîäÿùèåñÿâýòîì êàòàëîãå , íîíåäîêóìåíòèðîâàííûåçäåñü , ÷òîáûäàòüâîçìîæíîñòü ðàçâèòèÿâáóäóùåì . Ôàéëûõðàíÿòñÿâòåêñòîâîìôîðìàòå , ñîîòâåòñòâóþùåìñîãëàøå- íèÿìîïåðàöèîííîéñèñòåìû . Ýòîîçíà÷àåò , ÷òîðàáî÷èåêàòàëîãèíå ïåðåíîñèìûìåæäóñèñòåìàìèñðàçíûìèôîðìàòàìèõðàíåíèÿòåêñòî- âûõôàéëîâ . Ýòîñäåëàíîñïåöèàëüíî , èñõîäÿèçòîãî , ÷òîñàìèôàéëû , Ãëàâà 5. Ðåïîçèòîðèé 49 íàõîäÿùèåñÿïîäóïðàâëåíèåì CVS, âåðîÿòíî , òàêæåíåïåðåíîñèìû ìåæäóòàêèìèïëàòôîðìàìè . Root Ýòîòôàéëñîäåðæèòòåêóùèéêîðíåâîéêàòàëîã CVS, êàêîïèñàíîâ ðàçäåëå  Êàêñîîáùèòü CVS, ãäåíàõîäèòñÿðåïîçèòîðèé . Repository Ýòîòôàéëñîäåðæèòêàòàëîãâðåïîçèòîðèè , êîòîðîìóñîîòâåòñòâóåò òåêóùèéêàòàëîã . Çäåñüìîæåòáûòüèìÿñïîëíûìèëèîòíîñèòåëüíûì ïóòåì ;CVS ñïîñîáíàîáðàáàòûâàòüîáàâàðèàíòà , íà÷èíàÿñâåðñèè 1.3. Îòíîñèòåëüíûéïóòüîòñ÷èòûâàåòñÿîòêîðíÿ , õîòÿèñïîëüçîâàíèå àáñîëþòíîãîïóòèäîâîëüíîðàñïðîñòðàíåíîèïðîãðàììûäîëæíû óìåòüîáðàáàòûâàòüîáàâàðèàíòà . Íàïðèìåð , ïîñëåêîìàíäû cvs-d:local:/usr/local/cvsrootcheckoutyoyodyne/tc Root áóäåòñîäåðæàòü :local:/usr/local/cvsroot à Repository áóäåòñîäåðæàòüèëè /usr/local/cvsroot/yoyodyne/tc èëè yoyodyne/tc Åñëèðàáî÷èéêàòàëîãíåèìååòñîîòâåòñòâóþùåãîêàòàëîãàâðåïî- çèòîðèè , òî Repository äîëæåíñîäåðæàòü CVSROOT/Emptydir . Entries Âýòîìôàéëåïåðå÷èñëåíûôàéëûèêàòàëîãèâðàáî÷åìêàòàëîãå . Ïåðâûéñèìâîëêàæäîéñòðîêèóêàçûâàåòòèïêàæäîéñòðîêè . Åñëè ñèìâîëíåðàñïîçíàí , ïðîãðàììà , ÷èòàþùàÿôàéë , äîëæíàñïîêîéíî ïðîïóñòèòüýòóñòðîêó , ÷òîáûäàòüâîçìîæíîñòüðàçâèòèÿâáóäóùåì . Åñëèïåðâûéñèìâîë  ýòî / , òîôîðìàòñòðîêèòàêîâ : / èìÿ / ðåâèçèÿ / ìåòêàâðåìåíè [+ êîíôëèêò ]/ îïöèè / òýãèëèäàòà 50 Ðóêîâîäñòâîðàçðàáîò÷èêà ãäå '[' è ']' íåÿâëÿþòñÿ÷àñòüþñòðîêè , íîóêàçûâàþò , ÷òî '+' èîòìåò- êàîêîíôëèêòåíåîáÿçàòåëüíû .name ýòîèìÿôàéëàâêàòàëîãå . ðåâèçèÿ  ýòîíîìåððåâèçèè , íàêîòîðîéîñíîâàíôàéëâðàáî÷åì êàòàëîãå , èëè '0' äëÿäîáàâëåííîãîôàéëà , èëè '-', çàêîòîðûìñëåäóåò íîìåððåâèçèè , äëÿóäàëåííîãîôàéëà . ìåòêàâðåìåíè  ýòîâðåìÿ , êîãäà CVS ñîçäàëàýòîòôàéë ; åñëèýòîâðåìÿîòëè÷àåòñÿîòòåêóùåãî âðåìåíèìîäèôèêàöèèôàéëà , çíà÷èò , îíáûëèçìåíåí . Ìåòêàâðåìåíè çàïèñûâàåòñÿâ UTC( ïîÃðèíâè÷ó ), âôîðìàòå , èñïîëüçóåìîìôóíê- öèåéñòàíäàðòà ISOC asctime() ( íàïðèìåð ,'SunApr701:29:261996'). Ìîæíîíàïèñàòüòàêæåñòðîêóâäðóãîìôîðìàòå , íàïðèìåð ,'Result ofmerge', ÷òîáûóêàçàòü , ÷òîôàéëâñåãäàäîëæåíñ÷èòàòüñÿèçìåíåí- íûì . Ýòàñòðîêà  âîâñåíåñïåöèàëüíûéñëó÷àé : ÷òîáûóçíàòü , èçìåíèëñÿëèôàéë ,CVS áåðåòäàòóìîäèôèêàöèèôàéëàèïðîñòî ñðàâíèâàåòñòðîêóñîñòðîêîéìåòêàâðåìåíè . êîíôëèêòóêàçûâàåò , ÷òîïðîèçîøåëêîíôëèêò . Åñëèýòàñòðîêàñîâïàäàåòñäåéñòâèòåëü- íûìâðåìåíåììîäèôèêàöèè , çíà÷èò , ïîëüçîâàòåëüåùåíåñïðàâèëñÿ ñêîíôëèêòîì . îïöèèñîäåðæàòïðèëèïøèåêëþ÷èêîìàíäíîéñòðîêè ( íàïðèìåð , -kb äëÿäâîè÷íûõôàéëîâ ). òýãèëèäàòàñîäåðæèòëèáî 'T', çàêîòîðîéñëåäóåòèìÿòýãà , ëèáî 'D', çàêîòîðîéñëåäóåòïðè- ëèïøèéòýãèëèäàòà . Çàìåòüòå , ÷òîåñëèìåòêàâðåìåíèñîäåðæèò ïàðóìåòîêâðåìåíè , ðàçäåëåííûõïðîáåëîì , àíååäèíñòâåííóþìåòêó âðåìåíè , çíà÷èò , âûèìååòåäåëîñâåðñèåé CVS ðàíåå 1.5( ýòîòñëó- ÷àéçäåñüíåäîêóìåíòèðîâàí ). Åñëèïåðâûéñèìâîëâñòðîêåâôàéëå Entries  ýòî 'D', ýòîîçíà÷àåòïîäêàòàëîã .'D' íàîòäåëüíîéñòðîêå óêàçûâàåò , ÷òîïðîãðàììà , êîòîðàÿñîçäàëàôàéë Entries , óìååòîáðà- ùàòüñÿñïîäêàòàëîãàìè ( òîåñòü , åñëèòàêàÿñòðîêàïðèñóòñòâóåò , è íåòäðóãèõñòðîê , íà÷èíàþùèõñÿñ 'D', çíà÷èò , ïîäêàòàëîãîâíåò ).  ïðîòèâíîìñëó÷àåñòðîêàâûãëÿäèòòàê : D/ èìÿ / çàïîëíèòåëü 1/ çàïîëíèòåëü 2/ çàïîëíèòåëü 3/ çàïîëíèòåëü 4 ãäåèìÿ  ýòîèìÿïîäêàòàëîãà , àâñåïîëÿçàïîëíèòåëüäîëæíû èãíîðèðîâàòüñÿ , âöåëÿõáóäóùèõðàñøèðåíèé . Ïðîãðàììû , èçìåíÿþ- ùèåôàéëû Entries , äîëæíûñîõðàíÿòüçíà÷åíèÿýòèõïîëåé . Ñòðîêè âôàéëå Entries ìîãóòáûòüâëþáîìïîðÿäêå . Entries.Log Âýòîìôàéëåõðàíèòñÿòàæåñàìàÿèíôîðìàöèÿ , ÷òîèâôàé- ëå Entries , èñåãîïîìîùüþìîæíîîáíîâëÿòüýòóèíôîðìàöèþáåç Ãëàâà 5. Ðåïîçèòîðèé 51 íåîáõîäèìîñòèïîëíîñòüþïåðåïèñûâàòüôàéë Entries , âêëþ÷àÿâîç- ìîæíîñòüñîõðàíÿòüèíôîðìàöèþ , äàæååñëèïðîãðàììà , ïèñàâøàÿ â Entries è Entries.Log àâàðèéíîçàâåðøèëàñü . Ïðîãðàììû , ÷èòà- þùèåôàéë Entries äîëæíûòàêæåïðîâåðÿòüñóùåñòâîâàíèåôàéëà Entries.Log . Åñëèïîñëåäíèéñóùåñòâóåò , òîîíèäîëæíûïðî÷åñòü ôàéë Entries èâíåñòèâíåãîèçìåíåíèÿèçôàéëà Entries.Log , ïî- ñëå÷åãîðåêîìåíäóåòñÿçàïèñàòüçàíîâîôàéë Entries èóäàëèòüôàéë Entries.Log . Ôîðìàòñòðîêèôàéëà Entries.Log  îäíîñèìâîëüíàÿ êîìàíäà , çàêîòîðîéñëåäóåòñòðîêà , âôîðìàòå Entries . Êîìàíäà  ýòîëèáî 'A' äëÿóêàçàíèÿ , ÷òîñòðîêàäîáàâëÿåòñÿ , ëèáî 'R' åñëè ñòðîêàóäàëÿåòñÿ , èëèëþáîéäðóãîéñèìâîë  åñëèýòóñòðîêóñëåäó- åòïðîèãíîðèðîâàòü ( äëÿáóäóùèõðàñøèðåíèé ). Åñëèâòîðîéñèìâîë ñòðîêèâôàéëå Entries.Log  íåïðîáåë , çíà÷èò , ôàéëáûëñîçäàí ñòàðîéâåðñèåé CVS( çäåñüíåäîêóìåíòèðóåòñÿ ). Ïðîãðàììû , êîòîðûå ïèøóò , íîíå÷èòàþò , ìîãóòñïîêîéíîèãíîðèðîâàòü Entries.Log . Entries.Backup Ýòîâðåìåííûéôàéë . Ðåêîìåíäîâàííîåèñïîëüçîâàíèå  çàïèñàòü íîâûéôàéë Entries â Entries.Backup , çàòåìïåðåèìåíîâàòüåãî ( àòî- ìàðíî , åñëèâîçìîæíî ) â Entries . Entries.Static Åäèíñòâåííàÿâåùü , èíòåðåñóþùàÿíàñîáýòîìôàéëå  ñóùåñòâóåò îíèëèíåò . Åñëèñóùåñòâóåò , ýòîçíà÷èò , ÷òîáûëàïîëó÷åíàòîëüêî ÷àñòüêàòàëîãàè CVS íåáóäåòñîçäàâàòüâíåìäîïîëíèòåëüíûõôàé- ëîâ . ×òîáûî÷èñòèòüýòîòôàéë , èñïîëüçóéòåêîìàíäó update ñîïöèåé -d , ÷òîáûïîëó÷èòüäîïîëíèòåëüíûåôàéëûèóäàëèòü Entries.Static . Tag Âýòîìôàéëåíàõîäÿòñÿïðèëèïøèåòýãèèäàòûäëÿýòîãîêàòàëîãà . Ïåðâûéñèìâîë 'T' äëÿòýãàâåòêè ,'N' äëÿîáû÷íîãîòýãàèëè 'D' äëÿäàòû . Äðóãèåñèìâîëûäîëæíûèãíîðèðîâàòüñÿ , äëÿáóäóùèõ ðàñøèðåíèé . Çàýòèìñèìâîëîìñëåäóåòòýãèëèäàòà . Çàìåòüòå , ÷òî ïðèëèïøèåòýãèèäàòûïðèìåíÿþòñÿêäîáàâëÿåìûìôàéëàì ; îíè ìîãóòîòëè÷àòüñÿîòòýãîâèäàò , ïðèëèïøèõêîòäåëüíûìôàéëàì . Îáùàÿèíôîðìàöèÿîïðèëèïøèõòýãàõèäàòàõíàõîäèòñÿâðàçäåëå  Ëèïêèåìåòêè . Checkin.prog Âýòèõôàéëàõõðàíÿòñÿèìåíàïðîãðàìì , çàäàííûõîïöèÿìè -i è -u âôàéëå modules , ñîîòâåòñòâåííî . 52 Ðóêîâîäñòâîðàçðàáîò÷èêà Update.prog Ñì . Checkin.prog . Notify Âýòîìôàéëåõðàíÿòñÿóâåäîìëåíèÿ ( íàïðèìåð , äëÿ edit èëè unedit ), êîòîðûååùåíåáûëîîòîñëàíûíàñåðâåð . Èõôîðìàòåùå íåäîêóìåíòèðîâàíçäåñü . Notify.tmp Ýòîòôàéëïîîòíîøåíèþêôàéëó Notify ÿâëÿåòñÿòåìæå , ÷òî Entries.Backup ïîîòíîøåíèþê Entries . ×òîáûñîçäàòüôàéë Notify , ñíà÷àëàçàïèøèòååãîíîâîåñîäåðæèìîåâ Notify.tmp , çàòåì ( àòîìàðíî , åñëèâîçìîæíî ), ïåðåèìåíóéòååãîâ Notify . Base Åñëèèñïîëüçóþòñÿñëåæåíèÿ , òîêîìàíäà edit ñîõðàíÿåòèñõîäíóþ êîïèþôàéëàâêàòàëîãå Base . Ýòîïîçâîëÿåòêîìàíäå unedit ðàáî- òàòü , äàæååñëèíåòäîñòóïàêñåðâåðó . Baserev Âýòîìôàéëåïåðå÷èñëåíûðåâèçèèêàæäîãîôàéëàâêàòàëîãå Base . Ôîðìàòòàêîâ : B èìÿ / ðåâèçèÿ / ðàñøèðåíèå ïîëåðàñøèðåíèåäîëæíîáûòüïðîèãíîðèðîâàíî , äëÿáóäóùèõðàñ- øèðåíèé . Baserev.tmp Ýòîòôàéëïîîòíîøåíèþê Baserev ÿâëÿåòñÿòåìæå , ÷åì Entries.Backup ïîîòíîøåíèþê Entries . ×òîáûñîçäàòüçàïèñàòüôàéë Baserev , ñíà÷àëàçàïèøèòååãîíîâîåñîäåðæèìîåâ Baserev.tmp , çàòåì ( àòîìàðíî , åñëèâîçìîæíî ), ïåðåèìåíóéòååãîâ Baserev . Template Ýòîòôàéëñîäåðæèòøàáëîí , çàäàííûéôàéëîì rcsinfo . Îíèñïîëü- çóåòñÿòîëüêîêëèåíòîì ; íå - êëèåíò - ñåðâåðíûåâàðèàíòû CVS íàïðÿ- ìóþîáðàùàþòñÿê rcsinfo . Ãëàâà 5. Ðåïîçèòîðèé 53 Àäìèíèñòðàòèâíûåôàéëû Êàòàëîã $CVSROOT/CVSROOT ñîäåðæèòíåñêîëüêîàäìèíèñòðàòèâíûõ ôàéëîâ . Ìîæíîèñïîëüçîâàòü CVS èáåçýòèõôàéëîâ , íîíåêîòî- ðûåêîìàíäûëó÷øåðàáîòàþò , åñëèõîòÿáûôàéë modules äîëæíûì îáðàçîìíàñòðîåí . Âñóùíîñòè , ýòîòôàéëÿâëÿåòñÿíàèáîëååâàæ- íûì , âíåìîïèñûâàþòñÿâñåìîäóëèâðåïîçèòîðèè . Âîòïðèìåðýòîãî ôàéëà : CVSROOTCVSROOT modulesCVSROOTmodules cvsgnu/cvs rcsgnu/rcs diffgnu/diff tcyoyodyne/tc Ôàéë modules ïðåäñòàâëÿåòñîáîéòåêñòîâûéôàéë . Âïðîñòåéøåì ñëó÷àåêàæäàÿñòðîêàñîäåðæèòèìÿìîäóëÿ , ïðîáåëèèìÿêàòàëîãà , ãäåíàõîäèòñÿýòîòìîäóëü , îòíîñèòåëüíî $CVSROOT . Ñòðîêà , êîòîðàÿîïðåäåëÿåòìîäóëü modules , èñïîëüçóåòâîçìîæíî- ñòè , çäåñüíåîïèñàííûå . Ðåäàêòèðîâàíèåàäìèíèñòðàòèâíûõôàéëîâ Àäìèíèñòðàòèâíûåôàéëûìîæíîðåäàêòèðîâàòüòî÷íîòàêæå , êàêèëþáîéäðóãîéìîäóëü . Èñïîëüçóéòåêîìàíäó cvscheckout CVSROOT , ÷òîáûïîëó÷èòüðàáî÷èéêàòàëîã , ðåäàêòèðóéòååãîè çàôèêñèðóéòåèçìåíåíèÿîáû÷íûìîáðàçîì . Ñëó÷àåòñÿ , ÷òîôèêñèðóåòñÿàäìèíèñòðàòèâíûéôàéëñîøèáêîé . Îáû÷íîìîæíîèñïðàâèòüîøèáêóèçàôèêñèðîâàòüíîâóþâåðñèþ , íî èíîãäàîñîáåííîñåðüåçíàÿîøèáêàìîæåòïðèâåñòèêíåâîçìîæíîñòè ôèêñèðîâàíèÿèçìåíåíèé . Íåñêîëüêîðåïîçèòîðèåâ Èíîãäàíåîáõîäèìîèìåòüìíîãîðåïîçèòîðèåâ , íàïðèìåð , åñëèóâàñ åñòüäâåãðóïïûðàçðàáîò÷èêîâ , ðàáîòàþùèõíàäðàçíûìèïðîåêòàìè , óêîòîðûõíåòîáùåãîêîäà . Âñå , ÷òîâàìòðåáóåòñÿ , ÷òîáûðàáîòàòü ñíåñêîëüêèìèðåïîçèòîðèÿìè  óêàçàòüíåîáõîäèìûé , èñïîëüçóÿ ïåðåìåííóþñðåäû CVSROOT , îïöèþ CVS -d èëè ( åñëèóâàñóæååñòü ðàáî÷èéêàòàëîã ) ïðîñòîðàáîòàÿïîóìîë÷àíèþñòåìðåïîçèòîðèåì , 54 Ðóêîâîäñòâîðàçðàáîò÷èêà èçêîòîðîãîáûëèçâëå÷åíðàáî÷èéêàòàëîã ( Ñì . ðàçäåë  Êàêñîîáùèòü CVS, ãäåíàõîäèòñÿðåïîçèòîðèé ). Ñåðüåçíûìïðåèìóùåñòâîìíåñêîëüêèõðåïîçèòîðèåâÿâëÿåòñÿòî , ÷òîîíèìîãóòíàõîäèòüñÿíàðàçëè÷íûõñåðâåðàõ . Ïðèèñïîëüçîâà- íèè CVS âåðñèè 1.10 åäèíñòâåííàÿêîìàíäàìîæåòðàáîòàòüñêàòàëî- ãàìèèçðàçíûõðåïîçèòîðèåâ . Ñïîìîùüþðàçðàáàòûâàåìûõâåðñèé CVS ìîæíîèçâëåêàòüèñõîäíûåòåêñòûñíåñêîëüêèõñåðâåðîâ .CVS ñàìðàçáåðåòñÿñîáõîäîìäåðåâàêàòàëîãîâèñîåäèíåíèÿìèñðàçíûìè ñåðâåðàìèïðèíåîáõîäèìîñòè . Âîòïðèìåðñîçäàíèÿðàáî÷åãîêàòàëî- ãà : cvs-dserver1:/cvscodir1 cddir1 cvs-dserver2:/rootcosdir cvsupdate Êîìàíäû cvsco ñîçäàþòðàáî÷èéêàòàëîã , àêîìàíäà cvsupdate ñîåäèíèòñÿñ server2, ÷òîáûîáíîâèòüêàòàëîã dir1/sdir , èñ server1, ÷òîáûîáíîâèòüâñåîñòàëüíîå . Ñîçäàíèåðåïîçèòîðèÿ ×òîáûíàñòðîèòü CVS- ðåïîçèòîðèé , ñíà÷àëàâûáåðèòåìàøèíóè äèñê , íàêîòîðîìáóäåòõðàíèòüñÿèñòîðèÿðåâèçèéèñõîäíûõòåêñòîâ . Òðåáîâàíèÿêïðîöåññîðóèïàìÿòèóìåðåííû , ïîýòîìóïîäîéäåòïðàê- òè÷åñêèëþáàÿìàøèíà . Äåòàëèîïèñàíûâðàçäåëå  Òðåáîâàíèÿê ñåðâåðó . Åñëèâûèìïîðòèðóåòå RCS- ôàéëûèçäðóãîéñèñòåìû , íà÷àëüíîå äèñêîâîåïðîñòðàíñòâîìîæíîîöåíèòüêàêñóììàðíûéðàçìåðýòèõ ôàéëîâ . Âäàëüíåéøåììîæíîðàññ÷èòûâàòüíàòðîåêðàòíûéðàçìåð èñõîäíûõòåêñòîâ , êîòîðûåâûáóäåòåõðàíèòüïîäêîíòðîëåìâåðñèé ( êîãäà - íèáóäüâûïåðåðàñòåòåýòîòïðåäåë , íîíåñëèøêîìñêîðî ). Íà ìàøèíàõðàçðàáîò÷èêèòðåáóåòñÿäèñêîâîåïðîñòðàíñòâîäëÿðàáî÷åãî êàòàëîãàêàæäîãîðàçðàáîò÷èêà ( âñåäåðåâîèëèåãîêóñîê , âçàâèñè- ìîñòèîòòîãî , íàä÷åìðàáîòàåòïðîãðàììèñò ). Êðåïîçèòîðèþäîëæåíáûòüäîñòóï ( ïðÿìîéèëèñïîìîùüþñåòåâîé ôàéëîâîéñèñòåìû ) ñîâñåõìàøèí , êîòîðûåáóäóòèñïîëüçîâàòü CVS âñåðâåðíîìèëèëîêàëüíîìðåæèìå ; êëèåíòñêèåìàøèíûíåòðåáóþò íèêàêîãîäîñòóïàêðåïîçèòîðèþêðîìåïðîòîêîëà CVS. Èñïîëüçîâà- íèå CVS äëÿäîñòóïàòîëüêîäëÿ÷òåíèÿâñåðàâíîòðåáóåòïðàâíà çàïèñüâðåïîçèòîðèéäëÿñîçäàíèÿôàéëîâáëîêèðîâîê . Ãëàâà 5. Ðåïîçèòîðèé 55 ×òîáûñîçäàòüðåïîçèòîðèé , âûïîëíèòåêîìàíäó cvsinit . Îíàñî- çäàñòïóñòîéðåïîçèòîðèéâêîðíåâîìêàòàëîãå CVS, çàäàííîìîáû÷- íûìîáðàçîì ( ñì . ðàçäåëÃëàâà 5. Ðåïîçèòîðèé ). Íàïðèìåð , cvs-d/usr/local/cvsrootinit cvsinit ñëåäèò , ÷òîáûíåïåðåçàïèñàòüóæåñóùåñòâóþùèåôàéëû , ïîýòîìóíèêàêîãîâðåäàîòçàïóñêà cvsinit ïîóæåíàñòðîåííîìó ðåïîçèòîðèþíåïðîèçîéäåò . cvsinit âêëþ÷èòæóðíàëèðîâàíèåèñòîðèè ; åñëèâûíåõîòèòåýòîãî , óäàëèòåôàéëèñòîðèèïîñëåâûïîëíåíèÿ cvsinit . Ðåçåðâíîåêîïèðîâàíèåðåïîçèòîðèÿ Ôàéëûâðåïîçèòîðèè , âñóùíîñòè , íåîáëàäàþòíèêàêèìèîñîáûìè ñâîéñòâàìè , âáîëüøèíñòâåñëó÷àåâìîæíîäåëàòüèõðåçåðâíûåêîïèè êàêîáû÷íî . Åñòü , îäíàêî , íåñêîëüêîàñïåêòîâ , êîòîðûåíåîáõîäèìî ó÷èòûâàòü . Âî - ïåðâûõ , ñïàðàíîèäàëüíîéòî÷êèçðåíèÿ , ñëåäóåòëèáîíåèñïîëü- çîâàòü CVS âîâðåìÿðåçåðâíîãîêîïèðîâàíèÿ , ëèáîñäåëàòüòàê , ÷òîáû ïðîãðàììàðåçåðâíîãîêîïèðîâàíèÿáëîêèðîâàëàðåïîçèòîðèéâïðî- öåññå . ×òîáûíåèñïîëüçîâàòü CVS, âûìîæåòåçàïðåòèòüëîãèíû íàìàøèíû , êîòîðûåìîãóòèìåòüäîñòóïêðåïîçèòîðèþ , îòêëþ÷èòü CVS- ñåðâåðèëèñäåëàòü÷òî - ëèáîïîäîáíîå . Äåòàëèçàâèñÿòîòâà- øåéîïåðàöèîííîéñèñòåìûèîòíàñòðîéêè CVS. ×òîáûçàáëîêèðî- âàòü CVS, ñîçäàéòåôàéëûáëîêèðîâîê ( #cvs.rfl ) âêàæäîìêàòàëîãå ðåïîçèòîðèÿ . Äàæåó÷èòûâàÿâûøåñêàçàííîå , åñëèâûïðîñòîñêîïè- ðóåòåôàéëû , íè÷åãîîñîáåííîñòðàøíîãîíåïðîèçîéäåò . Îäíàêî , ïðè âîññòàíîâëåíèèèçðåçåðâíîéêîïèèðåïîçèòîðèéìîæåòíàõîäèòüñÿâ íåóñòîé÷èâîìñîñòîÿíèè , ÷òî , âïðî÷åì , íåòðóäíîèñïðàâèòüâðó÷íóþ . Êîãäàâûâîññòàíàâëèâàåòåðåïîçèòîðèéèçðåçåðâíîéêîïèè , ïðåä- ïîëàãàÿ , ÷òîðåïîçèòîðèéèçìåíèëñÿñìîìåíòàïîñëåäíåãîðåçåðâíîãî êîïèðîâàíèÿ , ðàáî÷èåêàòàëîãè , êîòîðûåíåïîñòðàäàëè , ìîãóòññû- ëàòüñÿíàðåâèçèè , íåñóùåñòâóþùèåáîëååâðåïîçèòîðèè . Ïîïûòêà âûïîëíåíèÿ CVS âòàêèõêàòàëîãàõïðèâåäåòêñîîáùåíèþîáîøèáêå . Îäèíèçñïîñîáîââåðíóòüâñåèçìåíåíèÿâðåïîçèòîðèéòàêîâ : ˆ Ïîëó÷èòåíîâûéðàáî÷èéêàòàëîã . ˆ Ñêîïèðóéòåôàéëûèçðàáî÷åãîêàòàëîãà , ñäåëàííîãîïåðåäàâàðè- åé , ïîâåðõôàéëîââíîâîìðàáî÷åìêàòàëîãå ( íåêîïèðóéòåñîäåð- æèìîåêàòàëîãîâ CVS ). 56 Ðóêîâîäñòâîðàçðàáîò÷èêà ˆ Ðàáîòàÿâíîâîìðàáî÷åìêàòàëîãå , èñïîëüçóéòåêîìàíäûòèïà cvsupdate è cvsdi , ÷òîáûâûÿñíèòü , ÷òîèçìåíèëîñü , àçàòåì çàôèêñèðóéòåèçìåíåíèÿâðåïîçèòîðèé . Ïåðåìåùåíèåðåïîçèòîðèÿ Òî÷íîòàêæå , êàêèâñëó÷àåñðåçåðâíûìêîïèðîâàíèåìôàéëîâ , ïåðåìåùåíèåðåïîçèòîðèÿñìåñòàíàìåñòîñâîäèòñÿêïåðåìåùåíèþ íàáîðàôàéëîâ . Îñíîâíàÿâåùü , êîòîðóþíóæíîó÷èòûâàòü  ýòîòî , ÷òîðàáî÷èå êàòàëîãèññûëàþòñÿíàðåïîçèòîðèé . Ñàìûéïðîñòîéñïîñîáñïðàâèòü- ñÿñýòèì  ïîëó÷èòüñâåæèéðàáî÷èéêàòàëîãïîñëåïåðåìåùåíèÿ . Êîíå÷íî , âàìñëåäóåòñíà÷àëàóáåäèòüñÿ , ÷òîñòàðûéðàáî÷èéêàòà- ëîãáûëçàôèêñèðîâàíïåðåäïåðåìåùåíèåì , èëèâûóâåðåíû , ÷òîíå ïîòåðÿåòåñâîèõèçìåíåíèé . Åñëèâûäåéñòâèòåëüíîõîòèòåèñïîëüçî- âàòüóæåñóùåñòâóþùèéðàáî÷èéêàòàëîã , òîýòîâîçìîæíîñïîìîùüþ õèðóðãè÷åñêîãîâìåøàòåëüñòâàâôàéëû CVS/Repository . Ñì . ðàçäåë  Êàêäàííûåõðàíÿòñÿâðàáî÷åìêàòàëîãå , âêîòîðîìîïèñûâàþòñÿ ôàéëû CVS/Repository è CVS/Root , íîåñëèâûíåóâåðåíû , òî , íàâåðíîå , ëó÷øåíåïûòàòüñÿ . Ñåòåâûåðåïîçèòîðèè Ðàáî÷àÿêîïèÿèñõîäíûõòåêñòîâèðåïîçèòîðèéìîãóòáûòüíà ðàçíûõìàøèíàõ . Èñïîëüçîâàíèå CVS òàêèìîáðàçîìèçâåñòíîêàê ðåæèìêëèåíò / ñåðâåð . Âûâûïîëíÿåòå CVS- êëèåíòíàìàøèíå , íà êîòîðîéñìîíòèðîâàíâàøðàáî÷èéêàòàëîã , èãîâîðèòååìóîáùàòüñÿ ñìàøèíîé , íàêîòîðîéñìîíòèðîâàíðåïîçèòîðèé , ñ CVS- ñåðâåðîì . Âîîáùåèñïîëüçîâàíèåñåòåâîãîðåïîçèòîðèÿïîõîæåíàèñïîëüçîâàíèå ëîêàëüíîãî , òîëüêîôîðìàòèìåíèðåïîçèòîðèÿòàêîâ : : ìåòîä : ïîëüçîâàòåëü @ ìàøèíà :/ ïóòü / ê / ðåïîçèòîðèþ Äåòàëèçàâèñÿòîòòîãî , êàêâûñîåäèíÿåòåñüññåðâåðîì . Åñëèìåòîäíåóêàçàí , àèìÿðåïîçèòîðèÿñîäåðæèò : , òîìåòîäïî óìîë÷àíèþ  ext èëè server , âçàâèñèìîñòèîòïëàòôîðìû ; îáàìåòîäà îïèñàíûâðàçäåëå  Ñîåäèíåíèåñïîìîùüþ rsh. Ãëàâà 5. Ðåïîçèòîðèé 57 Òðåáîâàíèÿêñåðâåðó Ïðîñòîéîòâåò : òðåáîâàíèÿêñåðâåðóóìåðåííû  åñëèäåðåâî êàòàëîãîâíåî÷åíüáîëüøîå , èàêòèâíîñòüíåñëèøêîìâûñîêà , òî ïîäîéäåòìàøèíàñ 32Mb ïàìÿòèèëèäàæåìåíüøå . Âðåàëüíîéæèçíè , êîíå÷íî , âñåñëîæíåå . Îöåíêàïèêîâîãîèñïîëü- çîâàíèÿïàìÿòèäîñòàòî÷íà , ÷òîáûîöåíèòüîáùèåòðåáîâàíèÿ . Çäåñü äîêóìåíòèðîâàíûäâåòàêèåîáëàñòèìàêñèìàëüíîãîïîòðåáëåíèÿïà- ìÿòè ; âñåîñòàëüíûåïîñðàâíåíèþñíèìèíåçíà÷èòåëüíû , ÷òîáûìû îáíîâèëèäîêóìåíòàöèþ . Ïåðâàÿîáëàñòüáîëüøîãîïîòðåáëåíèÿïàìÿòè  èçâëå÷åíèÿáîëü- øèõðàáî÷èõêàòàëîãîâ . Ñåðâåðñîñòîèòèçäâóõïðîöåññîâíàêàæäî- ãîîáñëóæèâàåìîãîêëèåíòà . Ïîòðåáëåíèåïàìÿòèäî÷åðíèìïðîöåññîì äîëæíîáûòüíåâåëèêî . Ðîäèòåëüñêèéïðîöåññæå , îñîáåííîêîãäàñåòå- âûåñîåäèíåíèÿìåäëåííû , ìîæåòâûðàñòèäîðàçìåðîâ , ÷óòüáîëüøèõ ðàçìåðàèñõîäíûõòåñòîâ , èëèäîäâóõìåãàáàéò , ñìîòðÿ÷òîáîëüøå . Óìíîæàÿðàçìåðêàæäîãî CVS- ñåðâåðàíàêîëè÷åñòâîêëèåíòîâ , êî- òîðûåâûîæèäàåòåîäíîâðåìåííî , âûîöåíèòåòðåáóåìûéðàçìåðïàìÿ- òèóñåðâåðà . Ïîáîëüøåé÷àñòèïàìÿòü , ïîòðåáëÿåìàÿðîäèòåëüñêèì ïðîöåññîì , áóäåòíàõîäèòüñÿâôàéëåïîäêà÷êè , àíåâôèçè÷åñêîé ïàìÿòè . Âòîðàÿîáëàñòüáîëüøîãîïîòðåáëåíèÿïàìÿòè  di ïðèôèêñè- ðîâàíèèèçìåíåíèéâáîëüøèõôàéëàõ . Ýòîòðåáóåòñÿäàæåäëÿáè- íàðíûõôàéëîâ . Ìîæíîïðåäóñìîòðåòüèñïîëüçîâàíèåïðèìåðíîäå- ñÿòèêðàòíîãîðàçìåðàñàìîãîáîëüøîãîôàéëà , êîòîðûéòîëüêîáó- äåòôèêñèðîâàòüñÿ , õîòÿïÿòèêðàòíûéðàçìåðáóäåòâïîëíåàäåêâàòåí . Íàïðèìåð , åñëèâûõîòèòåôèêñèðîâàòüôàéëðàçìåðîìâäåñÿòüìåãà- áàéò , òîâìàøèíå , íàêîòîðîéâûïîëíÿåòñÿôèêñèðîâàíèå ( ñåðâåðèëè ëîêàëüíàÿìàøèíà , íàêîòîðîéíàõîäèòñÿðåïîçèòîðèé ), äîëæíîáûòü ñòîìåãàáàéò . Ñêîðååâñåãî , ýòîáóäåòôàéëïîäêà÷êè , àíåôèçè÷åñêàÿ ïàìÿòü . Òàêêàêýòàïàìÿòüòðåáóåòñÿíàíåïðîäîëæèòåëüíîåâðåìÿ , òîîñîáåííîéíóæäûâûäåëÿòüïàìÿòüïîäíåñêîëüêîîäíîâðåìåííûõ ôèêñèðîâàíèéíåò . Ïîòðåáëåíèåðåñóðñîâäëÿêëèåíòñêîéìàøèíûåùåáîëåå óìåðåííû  ëþáàÿìàøèíà , ñïîñîáíàÿâûïîëíÿòüñîîòâåòñòâóþ- ùóþîïåðàöèîííóþñèñòåìó , áóäåòïðèãîäíà . Èíôîðìàöèÿîòðåáîâàíèÿõêäèñêîâîìóïðîñòðàíñòâóíàõîäèòñÿâ ðàçäåëå  Ñîçäàíèåðåïîçèòîðèÿ . 58 Ðóêîâîäñòâîðàçðàáîò÷èêà Ñîåäèíåíèåñïîìîùüþ rsh CVS èñïîëüçóåòïðîòîêîë rsh äëÿðàáîòûññåòåâûìðåïîçèòîðèåì , ïîýòîìóíàñåòåâîéìàøèíåäîëæåíáûòüñîçäàíôàéë .rhosts , ïîçâî- ëÿþùèéäîñòóïäàííîìóïîëüçîâàòåëþ . Íàïðèìåð , ïðåäïîëîæèì , ÷òîâûïîëüçîâàòåëü 'mozart' íàëîêàëüíîé ìàøèíå 'toe.example.com', àñåðâåðíàõîäèòñÿíà 'faun.example.com'. Íàìàøèíå 'faun' ïîìåñòèòåâôàéë .rhosts âäîìàøíåìêàòàëîãå ïîëüçîâàòåëÿ 'bach' ñëåäóþùåå : toe.example.commozart Ïîòîìïðîòåñòèðóéòå , ÷òî rsh ðàáîòàåò , çàïóñòèâ rsh-lbachfaun.example.org'echo$PATH' Çàòåìâàìñëåäóåòóáåäèòüñÿ , ÷òî rsh íàéäåòñåðâåð . Óáåäèòåñü , ÷òî ïóòü , íàïå÷àòàííûéâðåçóëüòàòåâûïîëíåíèÿýòîãîïðèìåðàñîäåðæèò êàòàëîã , ñîäåðæàùèéèñïîëíÿåìûéôàéë cvs , êîòîðûéÿâëÿåòñÿñåð- âåðíîéâåðñèåé CVS. Âûìîæåòåóñòàíîâèòüïóòüâ .bashrc , .cshrc , èò . ï ., íîíåâôàéëàõ .login èëè .profile . Ìîæíîòàêæåóñòà- íîâèòüïåðåìåííóþñðåäû CVS_SERVER íàêëèåíòñêîéìàøèíå , ÷òîáû óêàçàòü , êàêîéèñïîëíÿåìûéôàéëâûõîòèòåèñïîëüçîâàòü , íàïðèìåð , /usr/local/bin/cvs-1.6 . Íåòðåáóåòñÿðåäàêòèðîâàòü Ãëàâà 5. Ðåïîçèòîðèé 59 âñåãî , íåïðèìåíèìû , ïîýòîìóîáðàòèòåñüêäîêóìåíòàöèèïîñîîòâåò- ñòâóþùåéïðîãðàììå . Ïðîäîëæàÿíàøïðèìåð , ïðåäïîëîæèâ , ÷òîâûõîòèòåîáðàòèòü- ñÿêìîäóëþ foo âðåïîçèòîðèè /usr/local/cvsroot íàìàøèíå 'faun.example.org', âûíàáèðàåòå : cvs-d:ext:[email protected]:/usr/local/cvsrootcheckoutfoo ( Ìîæíîíåïèñàòü '[email protected]', åñëèèìåíàïîëüçîâàòåëåéñîâïàäàþòíà ëîêàëüíîéèñåòåâîéìàøèíàõ .) Ïðÿìîåñîåäèíåíèåñïàðîëüíîé àóòåíòèôèêàöèåé Êëèåíò CVS òàêæåìîæåòñîåäèíÿòüñÿññåðâåðîì , èñïîëüçóÿïðî- òîêîëñïàðîëåì . Ýòîîñîáåííîïîëåçíî , êîãäàèñïîëüçîâàíèå rsh íåîñóùåñòâèìî ,( íàïðèìåð , åñëèñåðâåðíàõîäèòñÿçàôàéåðâîëëîì ), è kerberos òàêæåíåäîñòóïåí . ×òîáûèñïîëüçîâàòüýòîòìåòîä , íåîáõîäèìàíåêîòîðàÿíàñòðîéêà êàêñåðâåðà , òàêèêëèåíòîâ . Íàñòðîéêàñåðâåðàäëÿïàðîëüíîéàóòåíòèôèêàöèè Âî - ïåðâûõ , âû , âåðîÿòíî , õîòèòåóñèëèòüïðàâàäîñòóïàêêàòàëîãàì $CVSROOT è $CVSROOT/CVSROOT . Ñì . ðàçäåë  Ïðÿìîåñîåäèíåíèåñïàðîëü- íîéàóòåíòèôèêàöèåé . Íàñòîðîíåñåðâåðàñëåäóåòðåäàêòèðîâàòüôàéë 60 Ðóêîâîäñòâîðàçðàáîò÷èêà Êëþ÷êîìàíäíîéñòðîêè --allow-root çàäàåòðàçðåøåííûéêàòàëîã CVSROOT . Êëèåíòû , ïûòàþùèåñÿèñïîëüçîâàòüäðóãîéêàòàëîã , íåñìî- ãóòñîåäèíèòüñÿ . Åñëèâûõîòèòåðàçðåøèòüäîñòóïêíåñêîëüêèìêà- òàëîãàì CVSROOT , ïîâòîðèòåýòóîïöèþ . Åñëèâàø Ãëàâà 5. Ðåïîçèòîðèé 61 ×åòâåðòàÿñòðîêàïðåäîñòàâëÿåòäîñòóïïîëüçîâàòåëþ melissa, åñëè îíàçíàåòïðàâèëüíûéïàðîëü . Ïðèýòîìñàìàñåðâåðíàÿïðîãðàììà CVS íàñàìîìäåëåâûïîëíÿåòñÿíàïðàâàõñèñòåìíîãîïîëüçîâàòåëÿ pubcvs. Òàêèìîáðàçîì , âñèñòåìåíåòðåáóåòñÿçàâîäèòüïîëüçîâàòåëÿ melissa, íîîáÿçàòåëüíîäîëæåíáûòüïîëüçîâàòåëü pubcvs. Ïÿòàÿñòðîêàäåìîíñòðèðóåò , ÷òîñèñòåìíûåïîëüçîâàòåëèìîãóòèñ- ïîëüçîâàòüñÿñîâìåñòíî : ëþáîéêëèåíò , êîòîðûéóñïåøíîàóòåíòè- ôèöèðóåòñÿêàê qproj, áóäåòðàáîòàòüíàïðàâàõñèñòåìíîãîïîëüçî- âàòåëÿ pubcvs, òàêæå , êàêè melissa. Òàêèìîáðàçîì , âûìîæåòå ñîçäàòüåäèíñòâåííîãîîáùåãîñèñòåìíîãîïîëüçîâàòåëÿäëÿêàæäîãî ïðîåêòàââàøåìðåïîçèòîðèè , èïðåäîñòàâèòüêàæäîìóðàçðàáîò÷èêó ñâîþñîáñòâåííóþñòðîêóâôàéëå $CVSROOT/CVSROOT/passwd . Èìÿ CVS- ïîëüçîâàòåëÿâêàæäîéñòðîêåáóäåòðàçíûì , íîèìÿñèñòåìíîãîïîëü- çîâàòåëÿáóäåòîäíèìèòåìæå . Ïðè÷èíà , ïîêîòîðîéíóæíîèìåòü ðàçíûåèìåíàïîëüçîâàòåëåé CVS âòîì , ÷òîâñåäåéñòâèÿ CVS áóäóò æóðíàëèðîâàòüñÿïîäýòèìèèìåíàìè : êîãäà melissa ôèêñèðóåòèçìå- íåíèÿâïðîåêòå , ýòàôèêñàöèÿçàïèñûâàåòñÿâèñòîðèþïðîåêòàïîä èìåíåì melissa, àíå pubcvs. Ïðè÷èíà , ïîêîòîðîéñëåäóåòèìåòüîäè- íî÷íîãîñèñòåìíîãîïîëüçîâàòåëÿâòîì , ÷òîâûñìîæåòåçàäàòüïðàâà äîñòóïàêñîîòâåòñòâóþùèìêàòàëîãàìðåïîçèòîðèÿòàê , ÷òîòîëüêî ýòîòñèñòåìíûéïîëüçîâàòåëüáóäåòèìåòüïðàâàíàçàïèñü . Åñëèâñòðîêåïðèñóòñòâóåòïîëåññèñòåìíûìïîëüçîâàòåëåì , òî âñåêîìàíäû CVS âûïîëíÿþòñÿíàïðàâàõýòîãîïîëüçîâàòåëÿ ; åñëè ñèñòåìíîåèìÿíåçàäàíî , òî CVS ïðîñòîáåðåòèìÿïîëüçîâàòåëÿ CVS â êà÷åñòâåèìåíèñèñòåìíîãîïîëüçîâàòåëÿ , èðàáîòàåòíàåãîïðàâàõ .  ëþáîìñëó÷àå , åñëèâñèñòåìåíåòòàêîãîïîëüçîâàòåëÿ , òî CVS- ñåðâåð îòêàæåòñÿðàáîòàòü , äàæååñëèêëèåíòñêàçàëïðàâèëüíûéïàðîëü . Ïàðîëüèèìÿñèñòåìíîãîïîëüçîâàòåëÿìîãóòîòñóòñòâîâàòü ( ïðè îòñóòñòâèèïîñëåäíåãîíåñëåäóåòïèñàòüäâîåòî÷èå , êîòîðîåñëóæèò ðàçäåëèòåëåìïîëåé ). Íàïðèìåð , ôàéë $CVSROOT/CVSROOT/passwd ìîæåò âûãëÿäåòüòàê : anonymous::pubcvs fish:rKa5jzULzmhOo:kfogel sussman:1sOp854gDF3DY Êîãäàïàðîëüïðîïóùåíèëèïóñòîé , òîàóòåíòèôèêàöèÿïðîèçîéäåò óñïåøíîñëþáûìïàðîëåì , âêëþ÷àÿïóñòóþñòðîêó . Îäíàêî , äâîå- òî÷èåïîñëåèìåíèïîëüçîâàòåëÿ CVS âñåãäàîáÿçàòåëüíî , äàæååñëè ïàðîëüïóñò . 62 Ðóêîâîäñòâîðàçðàáîò÷èêà CVS òàêæåìîæåòèñïîëüçîâàòüñòàíäàðòíóþñèñòåìíóþàóòåíòè- ôèêàöèþ . Ïðèïàðîëüíîéàóòåíòèôèêàöèèñåðâåðñíà÷àëàïðîâåðÿåò íàëè÷èåïîëüçîâàòåëÿâôàéëå $CVSROOT/CVSROOT/passwd . Åñëèïîëü- çîâàòåëüîáíàðóæåíâýòîìôàéëå , òîñîîòâåòñòâóþùàÿñòðîêàáóäåò èñïîëüçîâàíàäëÿàóòåíòèôèêàöèè , êàêîïèñàíîâûøå . Åñëèæåïîëü- çîâàòåëüíåíàéäåí , èëèôàéëå passwd íåñóùåñòâóåò , òîñåðâåðïû- òàåòñÿàóòåíòèôèöèðîâàòüïîëüçîâàòåëÿñïîìîùüþñèñòåìíûõïðî- öåäóð ( ýòî " ðåçåðâíîå " ïîâåäåíèåìîæåòáûòüçàïðåùåíî , óñòàíîâèâ SystemAuth=no âôàéëå config . Ïîìíèòå , îäíàêî , ÷òîèñïîëüçîâàíèå ñèñòåìíîéàóòåíòèôèêàöèèìîæåòóâåëè÷èòüðèñêíàðóøåíèÿáåçîïàñ- íîñòè : îïåðàöèè CVS áóäóòàóòåíòèôèöèðîâàòüñÿåãîîáû÷íûìïàðî- ëåì , êîòîðûéáóäåòïåðåäàâàòüñÿïîñåòèâòåêñòîâîìâèäå . Ñì . ðàçäåë  Âîïðîñûáåçîïàñíîñòèïðèïàðîëüíîéàóòåíòèôèêàöèè , ãäåîïèñàíû äåòàëè . Âíàñòîÿùååâðåìÿåäèíñòâåííûéñïîñîáïîìåñòèòüïàðîëüâ CVSROOT/passwd  ýòîâûðåçàòüåãîîòêóäà - íèáóäüåùå . Êîãäà - íèáóäü ïîÿâèòñÿêîìàíäà cvspasswd. Âîòëè÷èåîòáîëüøèíñòâàôàéëîââ $CVSROOT/CVSROOT , îáû÷íîïðàê- òèêóåòñÿðåäàêòèðîâàíèåôàéëà passwd ïðÿìîâðåïîçèòîðèè , áåçèñ- ïîëüçîâàíèÿ CVS. Ýòîèç - çàðèñêàáåçîïàñíîñòè , ñâÿçàííîãîñèçâëå- ÷åíèåìýòîãîôàéëàâ÷üþ - íèáóäüðàáî÷óþêîïèþ . Åñëèâûõîòè- òå , ÷òîáûôàéë passwd èçâëåêàëñÿâìåñòåñîñòàëüíûìèôàéëàìèâ $CVSROOT/CVSROOT , ñì . ðàçäåë  Êàêâêàòàëîãå CVSROOT õðàíÿòñÿ ôàéëû . Èñïîëüçîâàíèåêëèåíòàñïàðîëüíîé àóòåíòèôèêàöèåé Äëÿòîãî , ÷òîáûâûïîëíèòüêîìàíäó CVS âñåòåâîìðåïîçèòîðèèñ ïîìîùüþñåðâåðàïàðîëüíîéàóòåíòèôèêàöèè , íóæíîçàäàòüïðîòîêîë pserver, èìÿïîëüçîâàòåëÿ , ìàøèíó , íàêîòîðîéíàõîäèòñÿðåïîçèòî- ðèé , èïóòüêðåïîçèòîðèþ . Íàïðèìåð : cvs-d:pserver:[email protected]:/usr/local/cvsrootcheckout - someproj èëè CVSROOT=:pserver:[email protected]:/usr/local/cvsroot cvscheckoutsomeproj Ãëàâà 5. Ðåïîçèòîðèé 63 Îäíàêî , åñëèòîëüêîâûíåðàáîòàåòåñïóáëè÷íûìðåïîçèòîðèåì ( òî åñòüòàêèì , ãäåèìÿîïðåäåëåííîãîïîëüçîâàòåëÿíåòðåáóåòèñïîëüçî- âàíèÿïàðîëÿ ), âàìñíà÷àëàïîòðåáóåòñÿâîéòèâñèñòåìó . Ïðèâõîäå âñèñòåìóïðîâåðÿåòñÿâàøïàðîëü . Ýòîïðîèñõîäèòïðèâûïîëíåíèè êîìàíäû login , êîòîðàÿñïðàøèâàåòóâàñïàðîëü : cvs-d:pserver:[email protected]:/usr/local/cvsrootlogin CVSpassword:_ Ïîñëåòîãî , êàêâûââåëèïàðîëü ,CVS ïðîâåðÿåòýòîòïàðîëüíà ñåðâåðå . Åñëèðåçóëüòàòïîëîæèòåëåí , òîêîìáèíàöèÿèìåíèïîëüçî- âàòåëÿ , ìàøèíû , ïóòèêðåïîçèòîðèþèïàðîëÿñîõðàíÿþòñÿâñïåöè- àëüíîìôàéëå , ÷òîáûïðèäàëüíåéøåéðàáîòåñýòèìðåïîçèòîðèåìîò âàñíåòðåáîâàëîñüçàïóñêàòü cvslogin .( Åñëèðåçóëüòàòïðîâåðêèîò- ðèöàòåëåí ,CVS ïîæàëóåòñÿ , ÷òîïàðîëüíåâåðåí , è , åñòåñòâåííî , îííå áóäåòñîõðàíåí .) Ïàðîëèîáû÷íîõðàíÿòñÿâôàéëå $HOME/.cvspass . Ýòîòôàéëìîæíî ïðî÷èòàòüãëàçàìè , è , äîêàêîé - òîñòåïåíè , ìîæíîîòðåäàêòèðîâàòü ðóêàìè . Çàìåòüòå , âïðî÷åì , ÷òîïàðîëèíåõðàíÿòñÿâñîâñåìîòêðû- òîìâèäå : îíèòðèâèàëüíîçàêîäèðîâàíû , ÷òîáûçàùèòèòüñÿîòíå÷à- ÿííîãîïîäñìàòðèâàíèÿ ( íàïðèìåð , ñèñòåìíûìàäìèíèñòðàòîðîìèëè êåì - ëèáîäðóãèì , íåíàñòðîåííûìâðàæäåáíî ). Èçìåíèòüìåñòîðàñïîëîæåíèÿýòîãîôàéëàìîæíî , óñòàíîâèâïåðå- ìåííóþîêðóæåíèÿ CVS_PASSFILE . Ïðèèñïîëüçîâàíèèýòîéïåðåìåííîé íåçàáóäüòåóñòàíîâèòüå¼ïåðåäèñïîëüçîâàíèåì cvslogin . Åñëèâû ýòîãîíåñäåëàåòå , òîïîñëåäóþùèåêîìàíäû CVS íåñìîãóòíàéòèïà- ðîëåéäëÿîòïðàâêèíàñåðâåð . Ïîñëåòîãî , êàêâûâîøëèâñèñòåìó , âñåêîìàíäû CVS, èñïîëüçóþ- ùèåýòîòñåòåâîéðåïîçèòîðèéèèìÿïîëüçîâàòåëÿ , ñìîãóòàóòåíòèôè- öèðîâàòüñÿ , èñïîëüçóÿýòîòñîõðàíåííûéïàðîëü . Ïîýòîìó , íàïðèìåð : cvs-d:pserver:[email protected]:/usr/local/cvsrootcheckout - foo áóäåòðàáîòàòüáåçäîïîëíèòåëüíûõâîïðîñîâ ( åñëèòîëüêîïàðîëüíå èçìåíèòñÿíàñåðâåðå , âýòîìóñëó÷àåâàìíóæíîåù¼ðàçâûïîëíèòü cvslogin ). Çàìåòüòå , ÷òîåñëèçàáûòüïðî :pserver: âèìåíèðåïîçèòîðèÿ , òî CVS áóäåòñ÷èòàòü , ÷òîâûñîáèðàåòåñüèñïîëüçîâàòü rsh( ñì . ðàçäåë  Ñîåäèíåíèåñïîìîùüþ rsh). 64 Ðóêîâîäñòâîðàçðàáîò÷èêà Êîíå÷íîæå , ïîñëåòîãî , êàêâûèçâëåêëèðàáî÷óþêîïèþ , òîìîæíî íåçàäàâàòüèìÿðåïîçèòîðèÿïðèðàáîòåñíåé , ïîòîìó÷òî CVS ìîæåò èñàìàâçÿòüýòîèìÿèçêàòàëîãà CVS/ . Ïàðîëüêîïðåäåëåííîìóñåòåâîìóðåïîçèòîðèþìîæíîóäàëèòüèç ôàéëàïàðîëåéñïîìîùüþêîìàíäû cvslogout . Âîïðîñûáåçîïàñíîñòèïðèïàðîëüíîé àóòåíòèôèêàöèè Ïàðîëèõðàíÿòñÿíàñòîðîíåêëèåíòàòðèâèàëüíîçàøèôðîâàííûì îòêðûòûìòåêñòîìèïåðåäàþòñÿòî÷íîòàêæå . Òàêîåøèôðîâàíèå èñïîëüçóåòñÿòîëüêîäëÿïðåäîòâðàùåíèÿíå÷àÿííîãîïîäñìàòðèâàíèÿ ïàðîëÿ ( íàïðèìåð , ñèñòåìíûéàäìèíèñòðàòîð , ñëó÷àéíîçàãëÿíóâøèé âôàéë ) èíåïðåäîòâðàùàåòäàæåñàìûåòðèâèàëüíûåàòàêè . Îòäåëüíûéôàéëïàðîëåé CVS( ñì . ðàçäåë  Íàñòðîéêàñåðâåðàäëÿ ïàðîëüíîéàóòåíòèôèêàöèè ) ïîçâîëÿåòèñïîëüçîâàòüäëÿäîñòóïàê ðåïîçèòîðèþïàðîëü , îòëè÷àþùèéñÿîòïàðîëÿäëÿäîñòóïàêìàøèíå . Ñäðóãîéñòîðîíû , åñëèïîëüçîâàòåëüïîëó÷èëäîñòóïêðåïîçèòîðèþ äëÿ÷òåíèÿèçàïèñè , îíìîæåòðàçëè÷íûìèñïîñîáàìèâûïîëíÿòüïðî- ãðàììûíàñåðâåðå . Òàêèìîáðàçîì , äîñòóïêðåïîçèòîðèþîçíà÷àåò òàêæåäîâîëüíîøèðîêèéäèàïàçîíäðóãîãîäîñòóïàêñèñòåìå . Ìîæíî áûëîáûìîäèôèöèðîâàòü CVS, ÷òîáûïðåäîòâðàòèòüýòî , íîäîñèõ ïîðíèêòîýòîãîíåñäåëàë . Áîëååòîãî , ìîãóòáûòüäðóãèåñïîñîáû , êîòîðûìèëþäè , èìåþùèåäîñòóïêðåïîçèòîðèþ , ïîëó÷àòäîñòóïê ñèñòåìå ; íèêòîíåïðîèçâîäèëòùàòåëüíîãîàóäèòà . Çàìåòüòå , ÷òîèç - çàòîãî , ÷òîêàòàëîã $CVSROOT/CVSROOT ñîäåðæèò passwd èïðî÷èåôàéëû , èñïîëüçóþùèåñÿâöåëÿõáåçîïàñíîñòè , íóæíî ñëåäèòüçàïðàâàìèäîñòóïàêýòîìóêàòàëîãóòàêæåõîðîøî , êàêèç ïðàâàìèäîñòóïàê Ãëàâà 5. Ðåïîçèòîðèé 65 Ïðÿìîåñîåäèíåíèåñèñïîëüçîâàíèåì GSSAPI GSSAPI ýòîîáùèéèíòåðôåéñêñèñòåìàìñåòåâîéáåçîïàñíîñòè , òàêèìêàê Kerberos5. Åñëèóâàñåñòüðàáî÷àÿáèáëèîòåêà GSSAPI, òîâàø CVS ìîæåò ñîâåðøàòü TCP- ñîåäèíåíèÿññåðâåðîì , àóòåíòèôèöèðóÿñüñïîìî- ùüþ GSSAPI. Äëÿýòîãî CVS íóæíîñêîìïèëèðîâàòüñïîääåðæêîé GSSAPI; ïðèêîíôèãóðèðîâàíèè CVS ïûòàåòñÿîïðåäåëèòü , íàëè÷å- ñòâóþòëèâñèñòåìåáèáëèîòåêè GSSAPI, èñïîëüçóþùèå Kerberos âåð- ñèè 5. Âûòàêæåìîæåòåäàòü configure ôëàã --with-gssapi . Ñîåäèíåíèåàóòåíòèôèöèðóåòñÿ , èñïîëüçóÿ GSSAPI, íîñàìïîòîê äàííûõíåàóòåíòèôèöèðóåòñÿïîóìîë÷àíèþ . Âûäîëæíûèñïîëüçî- âàòüãëîáàëüíûéêëþ÷êîìàíäíîéñòðîêè -a , ÷òîáûçàïðîñèòüàóòåí- òèôèêàöèþïîòîêà . Ïåðåäàâàåìûåäàííûåïîóìîë÷àíèþíåøèôðóþòñÿ . Êàêñåðâåð , òàêèêëèåíòìîãóòáûòüñêîìïèëèðîâàíûñïîääåðæêîéøèôðîâàíèÿ ; èñïîëüçóéòåêëþ÷êîìàíäíîéñòðîêè congure--enable-encrypt . Äëÿâêëþ÷åíèÿøèôðîâàíèÿèñïîëüçóéòåêëþ÷êîìàíäíîéñòðîêè -x . Ñîåäèíåíèÿ GSSAPI îáðàáàòûâàþòñÿíàñòîðîíåñåðâåðàòåìæåñåð- âåðîì , ÷òîïðîèçâîäèòïàðîëüíóþàóòåíòèôèêàöèþ ; ñìîòðèðàçäåë  Íàñòðîéêàñåðâåðàäëÿïàðîëüíîéàóòåíòèôèêàöèè . Åñëèâûèñ- ïîëüçóåòå , íàïðèìåð ,Kerberos, îáåñïå÷èâàþùèéõîðîøóþàóòåíòèôè- êàöèþ , âû , âåðîÿòíî , çàõîòèòåòàêæåóñòðàíèòüâîçìîæíîñòüàóòåí- òèôèöèðîâàòüñÿñèñïîëüçîâàíèåìïàðîëåéîòêðûòûìòåêñòîì . Äëÿ ýòîãîñîçäàéòåïóñòîéôàéë CVSROOT/passwd èïîìåñòèòå SystemAuth=no âôàéëêîíôèãóðàöèè config . Ñåðâåð GSSAPI èñïîëüçóåò principalnamecvs/ èìÿ - ìàøèíû , ãäåèìÿ - ìàøèíû  ýòîêàíîíè÷åñêîåèìÿñåðâåðà . Âàìïîòðåáóåòñÿíàñòðîèòü âàøìåõàíèçì GSSAPI. Äëÿñîåäèíåíèÿñèñïîëüçîâàíèåì GSSAPI, èñïîëüçóéòå :gserver: . Íàïðèìåð , cvs-d:gserver:faun.example.org:/usr/local/cvsrootcheckoutfoo Ïðÿìîåñîåäèíåíèåñïîìîùüþ Kerberos Ñàìûéïðîñòîéñïîñîáèñïîëüçîâàíèÿ Kerberos ýòî kerberosrsh, ÷òîîïèñàíîâðàçäåëå  Ñîåäèíåíèåñïîìîùüþ rsh. Îñíîâíîéíåäî- ñòàòîêèñïîëüçîâàíèÿ rsh òîò , ÷òîâñåäàííûåäîëæíûïðîõîäèòü 66 Ðóêîâîäñòâîðàçðàáîò÷èêà ñêâîçüäîïîëíèòåëüíûåïðîãðàììû , ÷òîçàìåäëÿåòðàáîòó . Ïîýòî- ìóåñëèóâàñóñòàíîâëåí Kerberos, âàìñëåäóåòèñïîëüçîâàòüïðÿìûå TCP- ñîåäèíåíèÿ , àóòåíòèôèöèðóÿñüñïîìîùüþ Kerberos. Ýòàãëàâàîòíîñèòñÿêñèñòåìå Kerberos âåðñèè 4.Kerberos âåðñèè 5 ïîääåðæèâàåòñÿïîñðåäñòâîìîáùåãîèíòåðôåéñàñåòåâîéáåçîïàñíîñòè GSSAPI, êàêîïèñàíîâïðåäûäóùåéãëàâå . CVS äîëæåíáûòüñêîìïèëèðîâàíñïîääåðæêîé kerberos; ïðèêîí- ôèãóðèðîâàíèè CVS ïûòàåòñÿîïðåäåëèòü , êàêàÿâåðñèÿ Kerberos ïðè- ñóòñòâóåòíàìàøèíå . Âûìîæåòåòàêæåèñïîëüçîâàòüêëþ÷êîìàíäíîé ñòðîêè congure--with-krb4 . Ïåðåñûëàåìûåäàííûåïîóìîë÷àíèþíåøèôðóþòñÿ . Êàêêëèåíò , òàêèñåðâåðäîëæíûáûòüñêîìïèëèðîâàíûñèñïîëüçîâàíèåìøèô- ðîâàíèÿ ; èñïîëüçóéòåêëþ÷êîìàíäíîéñòðîêè congure--enable- encryption . Äëÿâêëþ÷åíèÿøèôðîâàíèÿèñïîëüçóéòåãëîáàëüíûé êëþ÷êîìàíäíîéñòðîêè -x. Íàñåðâåðåòðåáóåòñÿîòðåäàêòèðîâàòü Ãëàâà 5. Ðåïîçèòîðèé 67 ×òîáûñîåäèíèòüñÿ , èñïîëüçóÿìåòîääîñòóïà :fork: , äîáàâüòååãîê èìåíèëîêàëüíîãîðåïîçèòîðèÿ , íàïðèìåð : cvs-d:fork:/usr/local/cvsrootcheckoutfoo Êàêèïðèèñïîëüçîâàíèè :ext: , ñåðâåðïîóìîë÷àíèþíàçûâàåòñÿ cvs . Åñëèóñòàíîâëåíàïåðåìåííàÿîêðóæåíèÿ CVS_SERVER , èñïîëüçóåòñÿåå çíà÷åíèå . Äîñòóïêðåïîçèòîðèþòîëüêîäëÿ ÷òåíèÿ Ñóùåñòâóåòâîçìîæíîñòüïðåäîñòàâèòüïóáëè÷íûéäîñòóïêðåïîçè- òîðèþòîëüêîäëÿ÷òåíèÿ , èñïîëüçóÿñåðâåðïàðîëüíîéàóòåíòèôèêà- öèè ( ñì . ðàçäåë  Ïðÿìîåñîåäèíåíèåñïàðîëüíîéàóòåíòèôèêàöèåé ). ( Ïðî÷èåìåòîäûäîñòóïàíåèìåþòÿâíîéïîääåðæêèäëÿäîñòóïàòîëü- êîäëÿ÷òåíèÿ , ïîòîìó÷òîâñåýòèìåòîäûïîäðàçóìåâàþòðåãèñòðàöèþ íàìàøèíåñðåïîçèòîðèåì , èïîýòîìóïîëüçîâàòåëüìîæåòäåëàòüâñå , ÷òîïîçâîëÿþòåìóïðàâàäîñòóïàêôàéëàì ). Ïîëüçîâàòåëü , èìåþùèéäîñòóïêðåïîçèòîðèþòîëüêîäëÿ÷òåíèÿ , ìîæåòâûïîëíÿòüâñåêîìàíäû CVS, íåèçìåíÿþùèåðåïîçèòîðèé , çà èñêëþ÷åíèåìîïðåäåëåííûõ " àäìèíèñòðàòèâíûõ " ôàéëîâ ( òàêèõ , êàê ôàéëûáëîêèðîâîêèôàéëèñòîðèè ). Ìîæåòïîòðåáîâàòüñÿèñïîëüçî- âàòüýòóâîçìîæíîñòüñîâìåñòíîñâîçìîæíîñòüþèñïîëüçîâàíèÿïñåâ- äîíèìîâïîëüçîâàòåëåé ( ñì . ðàçäåë  Íàñòðîéêàñåðâåðàäëÿïàðîëüíîé àóòåíòèôèêàöèè ). Âîòëè÷èåîòïðåäûäóùèõâåðñèé CVS, ïîëüçîâàòåëèñäîñòóïîì òîëüêîäëÿ÷òåíèÿäîëæíûáûòüñïîñîáíûòîëüêî÷èòàòüðåïîçèòî- ðèé , íîíåâûïîëíÿòüïðîãðàììûíàñåðâåðåèëèäðóãèìñïîñîáîìïî- ëó÷àòüíåíóæíûåóðîâíèäîñòóïà . Ãîâîðÿòî÷íåå , çàêðûòûâñåðàíåå èçâåñòíûåäûðûâáåçîïàñíîñòè . Òàêêàêýòàâîçìîæíîñòüïîÿâèëàñü íåäàâíîèíåïîäâåðãàëàñüèñ÷åðïûâàþùåìóàíàëèçóáåçîïàñíîñòè , âû äîëæíûäåéñòâîâàòüñìàêñèìàëüíîíåîáõîäèìîéîñòîðîæíîñòüþ . Åñòüäâàñïîñîáàóêàçàòüäîñòóïïîëüçîâàòåëÿòîëüêîäëÿ÷òåíèÿ : âêëþ÷àþùèéèèñêëþ÷àþùèé . Âêëþ÷àþùèéñïîñîáîçíà÷àåò , ÷òîïîëüçîâàòåëüÿâíîóêàçûâàåòñÿ âôàéëå $CVSROOT/CVSROOT/readers , âêîòîðîìïðîñòîïåðå÷èñëÿþòñÿ " â ñòîëáèê " ïîëüçîâàòåëè . Âîòïðèìåð : melissa 68 Ðóêîâîäñòâîðàçðàáîò÷èêà splotnik random ( Íåçàáóäüòåñèìâîëíîâîéñòðîêèâêîíöåôàéëà ). Èñêëþ÷àþùèéñïîñîáîçíà÷àåò , ÷òîâñå , êòîèìååòäîñòóïêðåïîçè- òîðèþäëÿçàïèñè , ïåðå÷èñëÿþòñÿâôàéëå $CVSROOT/CVSROOT/writers . Åñëèýòîòôàéëñóùåñòâóåò , òîâñåïîëüçîâàòåëè , íåóïîìÿíóòûåâ íåì , ïîëó÷àþòäîñòóïòîëüêîäëÿ÷òåíèÿ ( êîíå÷íî , äàæåïîëüçîâàòåëè òîëüêîäëÿ÷òåíèÿäîëæíûáûòüóïîìÿíóòûâôàéëå CVSROOT/passwd ). Ôàéë writers èìååòòîòæåôîðìàò , ÷òîèôàéë readers . Çàìå÷àíèå : åñëèâàøôàéë CVSROOT/passwd îòîáðàæàåòïîëüçîâàòåëåé CVS âñèñòåìíûõïîëüçîâàòåëåé ( ñì . ðàçäåë  Íàñòðîéêàñåðâåðàäëÿ ïàðîëüíîéàóòåíòèôèêàöèè ), óáåäèòåñü , ÷òîâûïðåäîñòàâëÿåòåèëè íåïðåäîñòàâëÿåòåäîñòóïòîëüêîäëÿ÷òåíèÿïîëüçîâàòåëÿì CVS, à íåñèñòåìíûìïîëüçîâàòåëÿì . Ýòîîçíà÷àåò , ÷òîâôàéëàõ readers è writers äîëæíûíàõîäèòüñÿïîëüçîâàòåëè CVS, êîòîðûåìîãóòíå ñîâïàäàòüññèñòåìíûìèïîëüçîâàòåëÿìè . Âîòïîëíîåîïèñàíèåïîâåäåíèÿñåðâåðà , ïðèíèìàþùåìóðåøåíèå , êàêîéòèïäîñòóïàïðåäîñòàâèòü : ˆ Åñëèôàéë readers ñóùåñòâóåò , èäàííûéïîëüçîâàòåëüíåóïîìÿíóò âíåì , îíïîëó÷àåòäîñòóïòîëüêîäëÿ÷òåíèÿ . ˆ Åñëèñóùåñòâóåòôàéë writers , èýòîòïîëüçîâàòåëüÍÅóïîìÿíóò âíåì , òîîíòàêæåïîëó÷àåòäîñòóïòîëüêîäëÿ÷òåíèÿ ( ýòîòàê äàæååñëèôàéë readers ñóùåñòâóåò , íîïîëüçîâàòåëüíåóïîìÿíóò âíåì ). ˆ Âïðîòèâíîìñëó÷àåïîëüçîâàòåëüïîëó÷àåòïîëíûéäîñòóïäëÿ ÷òåíèÿèçàïèñè . Êîíå÷íî , âîçìîæåíêîíôëèêò , åñëèïîëüçîâàòåëüóïîìÿíóòâîáîèõ ôàéëàõ . Òàêîéêîíôëèêòðàçðåøàåòñÿêîíñåðâàòèâíîèòàêîéïîëüçî- âàòåëüïîëó÷àåòäîñòóïòîëüêîäëÿ÷òåíèÿ . Âðåìåííûåêàòàëîãèíàñåðâåðå Âïðîöåññåðàáîòû CVS- ñåðâåðñîçäàåòâðåìåííûåêàòàëîãè . Îíè íàçûâàþòñÿ cvs-servpid , ãäå pid  ýòîíîìåðïðîöåññàñåðâåðà . Îíè íàõîäÿòñÿâêàòàëîãå , óêàçàííîìâïåðåìåííîéîêðóæåíèÿ TMPDIR , êëþ÷îìêîìàíäíîéñòðîêè -T èëèâ /tmp ïîóìîë÷àíèþ . Âáîëüøèíñòâåñëó÷àåâñåðâåðñàìóäàëèòâðåìåííûéêàòàëîãâ êîíöåðàáîòû . Âíåêîòîðûõñëó÷àÿõñåðâåðìîæåòçàâåðøèòüñÿ , íå óäàëèâñâîéâðåìåííûéêàòàëîã , íàïðèìåð : Ãëàâà 5. Ðåïîçèòîðèé 69 ˆ åñëèñåðâåðàâàðèéíîçàâåðøàåòñÿèç - çàâíóòðåííåéîøèáêè , îí ìîæåòîñòàâèòüâðåìåííûéêàòàëîã , ÷òîáûîáëåã÷èòüîòëàäêó ; ˆ åñëèñåðâåðáûëóáèòòàê , ÷òîíåñìîãóáðàòüçàñîáîé ( íàïðèìåð , kill-KILL ïîä UNIX); ˆ ñèñòåìàïðåêðàùàåòñâîþðàáîòó , íåñîîáùèâïðåäâàðèòåëüíîñåð- âåðóîáýòîìôàêòå . Âòàêèõñëó÷àÿõâûäîëæíûâðó÷íóþóäàëèòüêàòàëîãè cvs-servpid . Åñëèíåòñåðâåðàñíîìåðîìïðîöåññà pid, òîñäåëàòüýòîìîæíî ñîâåðøåííîáåçîïàñíî . 70 Ðóêîâîäñòâîðàçðàáîò÷èêà Ãëàâà 6. Íà÷èíàåìïðîåêò ïîä CVS Òàêêàêïåðåèìåíîâàíèåôàéëîâèïåðåìåùåíèåèõìåæäóêàòàëî- ãàìèñëåãêàíåóäîáíî , ïåðâîå , ÷òîâàìñëåäóåòñäåëàòü , êîãäàâûíà- ÷èíàåòåíîâûéïðîåêò  ïðîäóìàòüîðãàíèçàöèþôàéëîâ . Ñîáñòâåí- íî , ïåðåìåùàòüèïåðåèìåíîâûâàòüôàéëûìîæíî , íîýòî , âî - ïåðâûõ , óâåëè÷èâàåòâîçìîæíîñòüíåäîïîíèìàíèÿ , àâî - âòîðûõ , ó CVS åñòü íåêîòîðûåíåïîëàäêè , íàïðèìåð , ïðèïåðåèìåíîâàíèèêàòàëîãîâ . Ñì . ðàçäåë  Ïåðåìåùåíèåèïåðåèìåíîâàíèåôàéëîâ . Äàëüíåéøèåäåéñòâèÿçàâèñÿòîòêîíêðåòíîéñèòóàöèè . Ïîìåùåíèåôàéëîââðåïîçèòîðèé Ïåðâûìøàãîìáóäåòñîçäàíèåôàéëîââðåïîçèòîðèè . Ýòîìîæåò áûòüñäåëàíîíåñêîëüêèìèðàçëè÷íûìèñïîñîáàìè . Ñîçäàíèåäåðåâàêàòàëîãîâèç íåñêîëüêèõôàéëîâ Êîãäàâûíà÷íåòåèñïîëüçîâàòü CVS, âû , ñêîðååâñåãî , óæåèìååòå íåñêîëüêîïðîåêòîâ , êîòîðûåìîæíîïîìåñòèòüïîäêîíòðîëü CVS.  ýòèõñëó÷àÿõñàìûìïðîñòûììåòîäîìáóäåòèñïîëüçîâàíèåêîìàíäû import. Ñàìûìïðîñòûìîáúÿñíåíèåì , âåðîÿòíî , áóäåòïðèâåñòèïðè- ìåð . Åñëèôàéëû , êîòîðûåâûõîòèòåïîìåñòèòüïîä CVS, íàõîäÿòñÿ â wdir ', àâûõîòèòå , ÷òîáûîíèïîÿâèëèñüâðåïîçèòîðèèâêàòàëîãå $CVSROOT/yoyodyne/rdir , âûìîæåòåñêàçàòü : $cdwdir $cvsimport-m"Importedsources"yoyodyne/rdiryoyostart Åñëèâûíåóêàæåòåæóðíàëüíîåñîîáùåíèåñïîìîùüþêëþ÷àêî- ìàíäíîéñòðîêè -m , òî CVS çàïóñòèòðåäàêòîð , âêîòîðîììîæíîáó- äåòíàáðàòüýòîñîîáùåíèå . Ñòðîêà 'yoyo' ýòîòýãïðîèçâîäèòåëÿ , à 'start' ýòîòýãðåëèçà . Âäàííîìêîíòåêñòåîíèìîãóòíåèìåòü íàçíà÷åíèÿ , íî CVS òðåáóåòèõïðèñóòñòâèÿ . Òåïåðüâûìîæåòåïðîâåðèòü , ÷òîâñåðàáîòàåòèóäàëèòüâàø èñõîäíûéêàòàëîã . Ãëàâà 6. Íà÷èíàåìïðîåêòïîä CVS 71 $cd.. $mvdirdir.orig $cvscheckoutyoyodyne/dir# îáúÿñíåíèåñëåäóåò $diff-rdir.origyoyodyne/dir $rm-rdir.orig Áûëîáûíåïëîõîóäàëèòüèçíà÷àëüíûåôàéëû , ÷òîáûñëó÷àéíîíå íà÷àòüðåäàêòèðîâàòüèõâ dir áåçèñïîëüçîâàíèÿ CVS. Êîíå÷íîæå , ïåðåäóäàëåíèåìõîðîøîáûëîáûóáåäèòüñÿ , ÷òîóâàñåñòüðåçåðâíàÿ êîïèÿèñõîäíûõòåêñòîâ . Êîìàíäà checkout ïîëó÷àåòâêà÷åñòâåàðãóìåíòàèìÿìîäóëÿ ( êàê âïðåäûäóùèõïðèìåðàõ ) èëèèìÿêàòàëîãàîòíîñèòåëüíî $CVSROOT , êàê ââûøåïðèâåäåííîìïðèìåðå . Õîðîøîáûëîáûïðîâåðèòü , ÷òîïðàâàäîñòóïàíàñîçäàííûå CVS êàòàëîãèïðàâèëüíû , è÷òîýòèêàòàëîãèïðèíàäëåæàòäîëæíûìãðóï- ïàì . Ñì . ðàçäåë  Ïðàâàäîñòóïàêôàéëàì . Åñëèêàêèå - òîèçôàéëîâ , êîòîðûåíóæíîèìïîðòèðîâàòü , ÿâëÿþòñÿ áèíàðíûìè , âàìïîòðåáóåòñÿèñïîëüçîâàòüîáåðòêè , ÷òîáûóêàçàòü , êàêèåèìåííî . Ñîçäàíèåôàéëîâèçäðóãèõñèñòåì êîíòðîëÿâåðñèé Åñëèóâàñåñòüïðîåêò , êîòîðûéîáñëóæèâàåòñÿäðóãîéñèñòåìîé êîíòðîëÿâåðñèé , íàïðèìåð ,RCS, âûìîæåòåçàõîòåòüïîìåñòèòüýòè ôàéëûïîäóïðàâëåíèå CVS èñîõðàíèòüèñòîðèþèçìåíåíèÿýòèõ ôàéëîâ . Èç RCS Åñëèâûèñïîëüçîâàëè RCS, òîíàéäèòåâñåôàéëû RCS îáû÷íî ôàéëó foo.c áóäåòñîîòâåòñòâîâàòüôàéë RCS/foo.c,v ( ýòîòôàéëìî- æåòòàêæåíàõîäèòüñÿâäðóãîììåñòå , îáðàòèòåñüêäîêóìåíòàöèèíà RCS. Çàòåìñîçäàéòåñîîòâåòñòâóþùèåêàòàëîãèâ CVS, åñëèîíèåùå íåñóùåñòâóþò . Çàòåìñêîïèðóéòåôàéëâñîîòâåòñòâóþùèåêàòàëîãè âðåïîçèòîðèè ( èìÿâðåïîçèòîðèèäîëæíîñîâïàäàòüñèìåíåìèñõîä- íîãîôàéëàñäîáàâëåíèåìñóôôèêñà ',v'; ôàéëûíàõîäÿòñÿïðÿìîâñî- îòâåòñòâóþùåìêàòàëîãåðåïîçèòîðèÿ , àíåâïîäêàòàëîãå RCS/ . Ýòî  îäèíèçðåäêèõñëó÷àåâ , êîãäàæåëàòåëåíïðÿìîéäîñòóïêðåïîçèòî- ðèþ , áåçèñïîëüçîâàíèÿêîìàíä CVS. Òåïåðüâûìîæåòåèçâëå÷üíîâûé ðàáî÷èéêàòàëîã . Ôàéë RCS íåäîëæåíáûòüçàáëîêèðîâàí , êîãäàâû 72 Ðóêîâîäñòâîðàçðàáîò÷èêà ïåðåìåùàåòååãîïîäóïðàâëåíèå CVS, èíà÷åó CVS áóäóòïðîáëåìû ïðèðàáîòåñýòèìôàéëîì . Èçäðóãîéñèñòåìûêîíòðîëÿâåðñèé Ìíîãèåñèñòåìûêîíòðîëÿâåðñèéñïîñîáíûýêñïîðòèðîâàòüôàéëû RCS âñòàíäàðòíîìôîðìàòå . Åñëèâàøàñèñòåìàóìååòòàêäåëàòü , ýêñïîðòèðóéòåôàéëû RCS èñëåäóéòåâûøåïðèâåäåííûìèíñòðóê- öèÿì . Åñëèýòîíåòàê , âåðîÿòíî , ëó÷øèìâûõîäîìáóäåòíàïèñàòü ñêðèïò , êîòîðûéèçâëåêàåòêàæäóþðåâèçèþôàéëà , èñïîëüçóÿèíòåð- ôåéñêîìàíäíîéñòðîêèñòàðîéñèñòåìû , àçàòåìôèêñèðóþùèéýòè ðåâèçèèâ CVS. Ñêðèïò sccs2rcs , óïîìÿíóòûéíèæå , ÿâëÿåòñÿõîðî- øèìïðèìåðîì . Èç SCCS Âêàòàëîãå 'contrib/' ñðåäèèñõîäíûõòåêñòîâ CVS åñòüñêðèïò sccs2rcs , êîíâåðòèðóþùèéôàéëû SCCS âôàéëû RCS. Çàìå÷àíèå : âû äîëæíûâûïîëíèòüýòîòñêðèïòíàìàøèíå , íàêîòîðîéóñòàíîâëåíêàê SCCS, òàêè RCS, èýòîòñêðèïòíåïîääåðæèâàåòñÿ . Èç PVCS Âêàòàëîãå contrib/ ñðåäèèñõîäíûõòåêñòîâ CVS åñòüñêðèïò pvcs_to_rcs , ïðåîáðàçóþùèéàðõèâû PVCS âôàéëû RCS. Âûäîëæ- íûâûïîëíèòüýòîòñêðèïòíàìàøèíå , íàêîòîðîéóñòàíîâëåíûêàê PVCS, òàêè RCS, èêàêèâñåïðî÷ååâêàòàëîãå contrib/ , ýòîòñêðèïò íåïîääåðæèâàåòñÿ . Äåòàëèîïèñàíûâêîììåíòàðèÿõêñêðèïòó . Ñîçäàíèåäåðåâàêàòàëîãîâñíóëÿ Äëÿíîâîãîïðîåêòàñàìûìïðîñòûìñïîñîáîì , âåðîÿòíî , áóäåòñî- çäàòüïóñòóþñòðóêòóðóêàòàëîãîâ , íàïðèìåð : $mkdirtc $mkdirtc/man $mkdirtc/testing Çàòåìèñïîëüçóéòåêîìàíäó import , ÷òîáûñîçäàòüñîîòâåòñòâóþ- ùóþ ( ïóñòóþ ) ñòðóêòóðóêàòàëîãîââíóòðèðåïîçèòîðèÿ : $cdtc $cvsimport-m"Createddirectorystructure"yoyodyne/diryoyostart Çàòåìèñïîëüçóéòåêîìàíäó add , ÷òîáûäîáàâëÿòüôàéëûèíîâûå êàòàëîãïîìåðåèõïîÿâëåíèÿ . Ãëàâà 6. Íà÷èíàåìïðîåêòïîä CVS 73 Óáåäèòåñü , ÷òîïðàâàäîñòóïà , êîòîðûå CVS äàåòíîâûìêàòàëîãàì â $CVSROOT , ïðàâèëüíû . Îïðåäåëåíèåìîäóëÿ Ñëåäóþùèìøàãîìáóäåòîïðåäåëåíèåìîäóëÿâôàéëå modules . Ýòî íåîáÿçàòåëüíî , íîìîäóëèóäîáíûäëÿãðóïïèðîâàíèÿñâÿçàííûõôàé- ëîâèêàòàëîãîâ . Âïðîñòûõñëó÷àÿõíèæåñëåäóþùèõøàãîâäîñòàòî÷íîäëÿîïðåäå- ëåíèÿìîäóëÿ . 1. èçâëåêèòåðàáî÷óþêîïèþôàéëà 'modules': $cvscheckoutCVSROOT/modules $cdCVSROOT 2. îòðåäàêòèðóéòåýòîòôàéë , âñòàâèââíåãîñòðîêó , îïðåäåëÿþùóþ ìîäóëü . Ñì . ðàçäåë ???. Ïîëíîåîïèñàíèåôàéëà modules ' ìîæíî íàéòèâðàçäåëå ???. Íàïðèìåð , äëÿîïèñàíèÿìîäóëÿ tc ìîæíî èñïîëüçîâàòüòàêóþñòðîêó : tcyoyodyne/tc 3. çàôèêñèðóéòåâàøèèçìåíåíèÿâôàéëå modules $cvscommit-m"Addedthetcmodule."modules 4. îñâîáîäèòåìîäóëü CVSROOT $cd.. $cvsrelease-dCVSROOT 74 Ðóêîâîäñòâîðàçðàáîò÷èêà Ãëàâà 7. Ðåâèçèè Âáîëüøèíñòâåñëó÷àåâèñïîëüçîâàíèÿ CVS íåòðåáóåòñÿñèëüíî áåñïîêîèòüñÿîíîìåðàõðåâèçèé ;CVS ïðèñâàèâàåòíîìåðàòèïà 1.1, 1.2 èò . ä ., èýòîãîäîñòàòî÷íî . Íåêîòîðûå , îäíàêî , õîòåëèáû èìåòüáîëüøåèíôîðìàöèèèëó÷øåêîíòðîëèðîâàòüòî , êàê CVS ïðèñâàèâàåòíîìåðàðåâèçèé . Åñëèíåîáõîäèìîîòñëåæèâàòüíàáîððåâèçèé , ñîäåðæàùèõáîëåå îäíîãîôàéëà , íàïðèìåð , ðåâèçèè , ïîïàâøèåâêîíêðåòíóþâåðñèþ ïðîãðàììû , èñïîëüçóþòñÿìåòêè , ò . å . áóêâåííûåèìåíàðåâèçèé , êîòîðûåìîæíîïðèñâîèòüêàæäîìóíîìåðóðåâèçèèôàéëà . Íîìåðàðåâèçèé Êàæäàÿðåâèçèÿôàéëàèìååòóíèêàëüíûéíîìåððåâèçèè . Íîìåðà ðåâèçèéâûãëÿäÿòêàê '1.1','1.2','1.3.2.2' èëèäàæå '1.3.2.2.4.5'. Íîìåð ðåâèçèèâñåãäàñîäåðæèò÷åòíîåêîëè÷åñòâîäåñÿòè÷íûõ÷èñåë , ðàçäå- ëåííûõòî÷êîé . Ïîóìîë÷àíèþðåâèçèÿ 1.1 ïåðâàÿðåâèçèÿôàéëà . Âíîìåðåêàæäîéñëåäóþùåéðåâèçèèñàìàÿïðàâàÿöèôðàóâåëè÷è- âàåòñÿíàåäèíèöó . Âîòïðèìåðíåñêîëüêèõðåâèçèé , íîâûåâåðñèè íàõîäÿòñÿïðàâååñòàðûõ : +-----++-----++-----++-----++-----+ !1.1!----!1.2!----!1.3!----!1.4!----!1.5! +-----++-----++-----++-----++-----+ Ìîæåòòàêæåîêàçàòüñÿ , ÷òîâíîìåðàõðåâèçèéáóäåòáîëüøåîäíîé òî÷êè , íàïðèìåð ,'1.3.2.2'. Òàêèåíîìåðàîçíà÷àþòðåâèçèè , íàõîäÿ- ùèåñÿíàâåòêàõ ( ñì . ðàçäåëÃëàâà 8. Ñîçäàíèåèñëèÿíèåâåòâåé ); ýòè íîìåðàïîäðîáíîîïèñàíûââðàçäåëå  Âåòêèèðåâèçèè . Âåðñèèèðåâèçèè Êàêîïèñàíîâûøå , óôàéëàìîæåòáûòüíåñêîëüêîðåâèçèé . Ó ïðîãðàììíîãîïðîäóêòàìîæåòáûòüíåñêîëüêîâåðñèé . Ïðîãðàììíûì ïðîäóêòàìîáû÷íîäàþòíîìåðàâåðñèéòèïà '4.1.1'. Íàçíà÷åíèåíîìåðîâðåâèçèé Ïîóìîë÷àíèþ ,CVS íàçíà÷àåòíîìåððåâèçèè , îñòàâëÿÿïåðâóþ öèôðóèóâåëè÷èâàÿâòîðóþ . Íàïðèìåð ,1.1,1.2,1.3. Ãëàâà 7. Ðåâèçèè 75 Ïðèäîáàâëåíèèíîâîãîôàéëàâòîðàÿöèôðàâñåãäàáóäåòåäèíèöåé , àïåðâàÿöèôðàáóäåòðàâíÿòüñÿñàìîéáîëüøîéïåðâîéöèôðåíîìåðà ðåâèçèèêàæäîãîôàéëàâêàòàëîãå . Íàïðèìåð , åñëèâêàòàëîãå íàõîäÿòñÿôàéëûñðåâèçèÿìè 1.7,3.1,4.12, òîäîáàâëåííûéôàéë ïîëó÷èòíîìåððåâèçèè 4.1. Îáû÷íîñîâåðøåííîíåòðåáóåòñÿçàáîòèòüñÿîíîìåðàõðåâèçèé  ïðîùåäóìàòüîíèõ , êàêîñëóæåáíûõíîìåðàõ , çàêîòîðûìèñëåäèò CVS, àòàêæåîìåòêàõ , îáåñïå÷èâàþùèõõîðîøèéñïîñîáðàçëè÷àòü , íàïðèìåð , âåðñèþ 1 âàøåãîïðîäóêòàîòâåðñèè 2( ñì . ðàçäåë  Ìåòêè ðåâèçèé ). Îäíàêî , åñëèâûõîòèòåóñòàíîâèòüíîìåððåâèçèè , âàì ïîìîæåòêëþ÷êîìàíäíîéñòðîêè -r êîìàíäû cvscommit . Êëþ÷ -r ïîäðàçóìåâàåòèñïîëüçîâàíèåêëþ÷à -f , âòîìñìûñëå , ÷òîîíïðèâîäèò êôèêñèðîâàíèþôàéëîâ , äàæååñëèîííåáûëèèçìåíåíû . Íàïðèìåð , äëÿòîãî , ÷òîçàäàòüâñåìâàøèìôàéëàì , âêëþ÷àÿòå , ÷òîíåèçìåíèëèñü , íîìåððåâèçèè 3.0, âûïîëíèòåêîìàíäó $cvscommit-r3.0 Çàìåòüòå , ÷òîíîìåð , êîòîðûéâûóêàçûâàåòåâìåñòåñêëþ÷îì -r , äîëæåíáûòüáîëüøåëþáîãîñóùåñòâóþùåãîíîìåðàðåâèçèè . Ñêà- æåì , åñëèñóùåñòâóåòðåâèçèÿ 3.0, âûíåìîæåòåñêàçàòü cvscommit -r1.3 . Åñëèâûõîòèòåïàðàëëåëüíîîòñëåæèâàòüíåñêîëüêîâåðñèé ïðîãðàììíîãîïðîäóêòà , âàìíóæíîñîçäàòüâåòêó ( ñì . ðàçäåëÃëàâà 8. Ñîçäàíèåèñëèÿíèåâåòâåé ). Ìåòêèðåâèçèé Íîìåðàðåâèçèéæèâóòñâîåéñîáñòâåííîéæèçíüþ . Îíèìîãóòñîâåð- øåííîíèêàêíåñîîòíîñèòüñÿñíîìåðîìâåðñèèâàøåãîïðîãðàììíîãî ïðîäóêòà . Âçàâèñèìîñòèîòòîãî , êàêâûèñïîëüçóåòå CVS, íîìåðàðå- âèçèéìîãóòèçìåíèòüñÿíåñêîëüêîðàçìåæäóäâóìÿâûïóñêàìèïðî- äóêòà . Íàïðèìåð , ôàéëûñèñõîäíûìèòåêñòàìè RCS5.6 èìåþòòàêèå íîìåðàðåâèçèé : ci.c5.21 co.c5.9 ident.c5.3 rcs.c5.12 rcsbase.h5.11 rcsdiff.c5.10 rcsedit.c5.11 76 Ðóêîâîäñòâîðàçðàáîò÷èêà rcsfcmp.c5.9 rcsgen.c5.10 rcslex.c5.11 rcsmap.c5.2 rcsutil.c5.10 Âûìîæåòåèñïîëüçîâàòüêîìàíäó tag , ÷òîáûçàäàòüáóêâåííîåèìÿ îïðåäåëåííîéðåâèçèèôàéëà . Âûìîæåòåèñïîëüçîâàòüêëþ÷êîìàíä- íîéñòðîêè -v êîìàíäû status , ÷òîáûóâèäåòüâñåìåòêè , êîòîðûåèìå- åòôàéë , àòàêæåêàêèåíîìåðàðåâèçèéîíèïðåäñòàâëÿþò . Èìåíà ìåòîêäîëæíûíà÷èíàòüñÿñáóêâûèìîãóòñîäåðæàòüáóêâû , öèôðû èçíàêè '-' è '_'. Äâàèìåíèìåòîê BASE è HEAD çàðåçåðâèðîâàíû äëÿèñïîëüçîâàíèÿâ CVS. Ïðåäïîëàãàåòñÿ , ÷òîáóäóùèåçàðåçåðâèðî- âàííûåèìåíàáóäóòèìåòüñïåöèàëüíûéâèä , íàïðèìåð , íà÷èíàòüñÿñ ñèìâîëà '.', ÷òîáûèçáåæàòüêîíôëèêòîâñäåéñòâèòåëüíûìèèìåíàìè ìåòîê . Âûçàõîòèòåâûáðàòüêàêîå - ëèáîñîãëàøåíèåîáèìåíàõìåòîê , îñíî- âûâàÿñü , íàïðèìåð , íàèìåíèïðîãðàììûèíîìåðåååâåðñèè . Íàïðè- ìåð , ìîæíîâçÿòüèìÿïðîãðàììû , çàêîòîðûìñëåäóåòíîìåðâåðñèè , âêîòîðîìñèìâîë '.' çàìåíåííà '-', òàê÷òî CVS1.9 áóäåòïîìå÷åí êàê cvs1-9. Åñëèâûâûáåðåòåñòàáèëüíûåïðàâèëàèìåíîâàíèÿ , âàìíå ïðèäåòñÿïîñòîÿííîóãàäûâàòü , íàçûâàåòñÿëèìåòêà cvs-1-9,cvs1_9 èëèêàê - òîåùå . Âûìîæåòåäàæåïðèíóäèòåëüíîçàäàòüýòèïðàâèëà èìåíîâàíèÿâôàéëå taginfo . Âíèæåñëåäóþùåìïðèìåðåïîêàçàíî , êàêäîáàâèòüìåòêóêôàéëó . Êîìàíäûäîëæíûâûïîëíÿòüñÿâíóòðèâàøåãîðàáî÷åãîêàòàëîãà , òî åñòüòàì , ãäåíàõîäèòñÿôàéë backend.c . $cvstagrel-0-4backend.c Tbackend.c $cvsstatus-vbackend.c =================================================================== File:backend.cStatus:Up-to-date Version:1.4TueDec114:39:011992 RCSVersion:1.4/u/cvsroot/yoyodyne/tc/backend.c,v StickyTag:(none) StickyDate:(none) StickyOptions:(none) ExistingTags: Ãëàâà 7. Ðåâèçèè 77 rel-0-4(revision:1.4) Ðåäêîòðåáóåòñÿïîìå÷àòüîäèíî÷íûåôàéëû . Ãîðàçäî÷àùåíóæíî ïîìåòèòüâñåôàéëû , ñîñòàâëÿþùèåìîäóëü , âñòðàòåãè÷åñêîéòî÷êå öèêëàðàçðàáîòêè , íàïðèìåð , êîãäàâûïóùåíàíîâàÿâåðñèÿ . $cvstagrel-1-0. cvstag:Tagging. TMakefile Tbackend.c Tdriver.c Tfrontend.c Tparser.c ( Åñëèâûäàäèòå CVS êàòàëîãâêà÷åñòâåïàðàìåòðàêîìàíäíîé ñòðîêè , îíàîáû÷íîîïåðèðóåòíàäâñåìèôàéëàìèâýòîìêàòàëîãåè , ðåêóðñèâíî , êîâñåìïîäêàòàëîãàì , êîòîðûåòîòñîäåðæèò . Ñì . ðàçäåë Ãëàâà 9. Ðåêóðñèâíîåïîâåäåíèå ). Êîìàíäà checkout èìååòêëþ÷êîìàíäíîéñòðîêè -r , ïîçâîëÿþùèé èçâëå÷üîïðåäåëåííóþðåâèçèþìîäóëÿ . Ýòîòôëàãóïðîùàåòèçâëå- ÷åíèåèñõîäíîãîòåêñòà , èçêîòîðîãîñäåëàíàâåðñèÿ 1.0 ìîäóëÿ tc â êîãäà - íèáóäüâáóäóùåì . $cvscheckout-rrel-1-0tc Ýòîïîëåçíî , íàïðèìåð , åñëèêòî - òîçàÿâëÿåò , ÷òîâòîéâåðñèèáûëà îøèáêà , íîâûíåìîæåòåíàéòèååâòåêóùåéðàáî÷åéêîïèè . Âûìîæåòåòàêæåèçâëå÷üìîäóëüïîñîñòîÿíèþíàëþáóþäàòó . Çà- äàâêîìàíäå checkout êëþ÷êîìàíäíîéñòðîêè -r , ñëåäóåòîñòåðåãàòü- ñÿëèïêèõìåòîê ; ñì . ðàçäåë  Ëèïêèåìåòêè . Êîãäàâûïîìå÷àåòåáîëååîäíîãîôàéëà , âûìîæåòåäóìàòüîìåòêå êàêîêðèâîé , ïðîâåäåííîéïîòàáëèöåèìåíôàéëîâèèõíîìåðîâ ðåâèçèé . Ñêàæåì , óíàñåñòüïÿòüôàéëîâñîñëåäóþùèìèðåâèçèÿìè : file1file2file3file4file5 1.11.11.11.1/--1.1*-*-TAG 1.2*-1.21.2-1.2*- 1.3\-1.3*-1.3/1.3 1.4\1.4/1.4 \-1.5*-1.5 78 Ðóêîâîäñòâîðàçðàáîò÷èêà 1.6 Êîãäà - òîâïðîøëîì , ðåâèçèè , îòìå÷åííûåçâåçäî÷êàìè , áûëèïîìå- ÷åíû . Âûìîæåòåäóìàòüîìåòêå , êàêîðó÷êå , ïðèäåëàííîéêêðèâîé , íàðèñîâàííîéíàïîìå÷åííûõðåâèçèÿõ . Êîãäàâûòÿíåòåçàðó÷êó , âûïîëó÷àåòåâñåïîìå÷åííûåðåâèçèè . Åùåîäíèìñïîñîáîìïðåäñòàâ- ëåíèÿÿâëÿåòñÿïðÿìàÿëèíèÿ , âäîëüêîòîðîéâûñìîòðèòåíàíàáîð ôàéëîâ , èâäîëüêîòîðîéâûðîâíåíûïîìå÷åííûåðåâèçèè , íàïðèìåð : file1file2file3file4file5 1.1 1.2 1.11.3_ 1.11.21.41.1/ 1.2*----1.3*----1.5*----1.2*----1.1(------Lookhere 1.31.61.3\_ 1.41.4 1.5 ×òîïîìåòèòüâðàáî÷åìêàòàëîãå Ïðèìåðâïðåäûäóùåéñåêöèèäåìîíñòðèðóåòîäèíèçñàìûõðàñ- ïðîñòðàíåííûõñïîñîáîââûáðàòü , êàêèåðåâèçèèïîìåòèòü , àèìåííî : âûïîëíåíèåêîìàíäû cvstag áåçïàðàìåòðîâçàñòàâëÿåò CVS âûáðàòü ðåâèçèè , êîòîðûåèçâëå÷åíûâòåêóùåìðàáî÷åìêàòàëîãå . Íàïðèìåð , åñëèêîïèÿôàéëà backend.c âðàáî÷åìêàòàëîãåáûëàèçâëå÷åíàèç ðåâèçèè 1.4, òî CVS ïîìåòèòðåâèçèþ 1.4. Çàìåòüòå , ÷òîìåòêàïðè- ëàãàåòñÿíåïîñðåäñòâåííîêðåâèçèè 1.4 âðåïîçèòîðèè . Ïîìåòêà  ýòîíåèçìåíåíèåôàéëà , èíåêàêàÿ - ëèáîîïåðàöèÿ , ïðèêîòîðîéñíà- ÷àëàìîäèôèöèðóåòñÿðàáî÷èéêàòàëîã , àçàòåìêîìàíäà cvscommit ïåðåíîñèòèçìåíåíèÿâðåïîçèòîðèé . Âîçìîæíî , íåîæèäàííûìîáñòîÿòåëüñòâîìòîãîôàêòà , ÷òî cvstag îïåðèðóåòñðåïîçèòîðèåì , ÿâëÿåòñÿòî , ÷òîâûïîìå÷àåòåèçâëå÷åííûå ðåâèçèè , êîòîðûåìîãóòîòëè÷àòüñÿîòôàéëîâ , èçìåíåííûõââàøåì ðàáî÷åìêàòàëîãå . Åñëèâûõîòèòåèçáåæàòüîøèáî÷íîãîâûïîëíåíèÿ ýòîéîïåðàöèè , óêàæèòåêîìàíäå cvstag êëþ÷êîìàíäíîéñòðîêè -c . Åñëèâðàáî÷åìêàòàëîãåèìåþòñÿèçìåíåííûåôàéëû ,CVS çàâåðøèò- ñÿññîîáùåíèåìîáîøèáêå , íåïîìåòèâíèîäíîãîôàéëà : Ãëàâà 7. Ðåâèçèè 79 $cvstag-crel-0-4 cvstag:backend.cislocallymodified cvs[tagaborted]:correcttheaboveerrorsfirst! Êàêïîìå÷àòüïîäàòåèëèðåâèçèè Êîìàíäà cvsrtag ïîìå÷àåòðåïîçèòîðèéïîñîñòîÿíèþíàîïðåäå- ëåííóþäàòóèâðåìÿ ( ìîæåòèñïîëüçîâàòüñÿäëÿïîìåòêèïîñëåäíåé ðåâèçèè ). rtag ðàáîòàåòïðÿìîññîäåðæèìûìðåïîçèòîðèÿ ( íåòðåáó- åòñÿñíà÷àëàèçâëåêàòüðàáî÷èéêàòàëîã ). Íèæåñëåäóþùèåêëþ÷èêîìàíäíîéñòðîêèóêàçûâàþò , ïîêàêîéäàòå èëèíîìåðóðåâèçèèïîìå÷àòü . -D äàòà Ïîìå÷àåòñàìóþíîâóþðåâèçèþíåïîçäíåå äàòû . -f Ïîëåçíîòîëüêîâìåñòåñ -D äàòà èëè -r ìåòêà . Åñëèíåîáíàðóæåíîñîîòâåòñòâóþùåéðåâèçèè , âìåñòîèãíîðèðîâàíèÿôàéëàèñïîëüçóåòñÿñà- ìàÿíîâàÿðåâèçèÿ . -r ìåòêà Ïîìå÷àòüòîëüêîôàéëû , ñîäåðæàùèåñóùå- ñòâóþùóþìåòêóìåòêà . Êîìàíäà cvstag òàêæåïîçâîëÿåòâûáðàòüôàéëûïîðåâèçèèèëèïî äàòå , èñïîëüçóÿòåæåêëþ÷èêîìàíäíîéñòðîêè -D è -f . Îäíàêî , ýòî , ñêîðååâñåãî , âîâñåíåòî , ÷òîâàìíàäî , ïîòîìó÷òî cvstag âûáèðàåò , êàêèåôàéëûïîìå÷àòü , îñíîâûâàÿñüíàôàéëàõ , ñóùåñòâóþùèõâ ðàáî÷åìêàòàëîãå , àíåíàôàéëàõ , ñóùåñòâîâàâøèõíàçàäàííóþäàòó èëèâçàäàííîéðåâèçèè . Òàêèìîáðàçîì , îáû÷íîëó÷øåèñïîëüçîâàòü cvsrtag . Èñêëþ÷åíèåììîãóòáûòüñëó÷àèòèïà : cvstag-r1.4backend.c Óäàëåíèå , ïåðåìåùåíèåèóäàëåíèå ìåòîê Îáû÷íîìåòêèíåèçìåíÿþòñÿ . Îíèñóùåñòâóþò , ÷òîáûõðàíèòü èñòîðèþðåïîçèòîðèÿ , ïîýòîìóèçìåíÿòüèóäàëÿòüèõîáû÷íîíå íóæíî . 80 Ðóêîâîäñòâîðàçðàáîò÷èêà Îäíàêîæå , ìîãóòáûòüñëó÷àè , âêîòîðûõìåòêèèñïîëüçóþòñÿëèøü âðåìåííîèëèñëó÷àéíîïîìå÷àþòñÿíåâåðíûåðåâèçèè . Òàêèìîáðà- çîì , íóæíîóäàëèòü , ïåðåìåñòèòüèëèïåðåèìåíîâàòüìåòêó . Ïðåäó- ïðåæäåíèå : êîìàíäûâýòîéñåêöèèîïàñíû , îíèíàâñåãäàóíè÷òîæàþò èíôîðìàöèþîáèñòîðèèèâîññòàíîâëåíèåïîñëåîøèáîêìîæåòáûòü òðóäíûìèëèíåâîçìîæíûì . Åñëèâû  àäìèíèñòðàòîð CVS, âû ìîæåòåçàõîòåòüîãðàíè÷èòüèñïîëüçîâàíèåýòèõêîìàíäñïîìîùüþ ôàéëà taginfo . ×òîáûóäàëèòüìåòêó , çàäàéòåêëþ÷êîìàíäíîéñòðîêè -d êîìàíäå cvstag èëè c vsrtag . Íàïðèìåð : cvsrtag-drel-0-4tc óäàëÿåòìåòêó rel-0-4 èçìîäóëÿ tc. Êîãäàìûãîâîðèìïåðåìåùåíèåìåòêè , ìûõîòèì , ÷òîáûñóùåñòâóþ- ùååèìÿóêàçûâàëîíàäðóãèåðåâèçèè . Íàïðèìåð , ìåòêà stable ìîæåò óêàçûâàòüíàðåâèçèþ 1.4 ôàéëà backend.c , àìûõîòèì , ÷òîáûîíà óêàçûâàëàíàðåâèçèþ 1.6. ×òîáûïåðåìåñòèòüìåòêó , çàäàéòåêëþ÷ êîìàíäíîéñòðîêè -F êîìàíäàì cvstag èëè cvsrtag . Íàïðèìåð , âû- øåóïîìÿíóòàÿçàäà÷àìîæåòáûòüðåøåíàòàê : cvstag-r1.6-Fstablebackend.c Êîãäàìûãîâîðèìïåðåèìåíîâàòüìåòêó , ìûõîòèì , ÷òîáûäðóãîå èìÿóêàçûâàëîíàòåæåðåâèçèè , ÷òîèñóùåñòâóþùåå . Íàïðèìåð , ìû ìîãëèîøèáèòüñÿâíàïèñàíèèèìåíèìåòêèèõîòèìèñïðàâèòüåãî , ïîêàîñòàëüíûåíåíà÷àëèåãîèñïîëüçîâàòü . ×òîáûïåðåèìåíîâàòü ìåòêó , ñíà÷àëàñîçäàéòåíîâóþìåòêó , èñïîëüçóÿêëþ÷êîìàíäíîé ñòðîêè -r êîìàíäû cvsrtag , çàòåìóäàëèòåñòàðîåèìÿ . Ïîñëåýòîãî íîâàÿìåòêàóêàçûâàåòíàòî÷íîòåæåñàìûåôàéëû , ÷òîèñòàðàÿ . Íàïðèìåð : cvsrtag-rold-name-0-4rel-0-4tc cvsrtag-dold-name-0-4tc Ãëàâà 7. Ðåâèçèè 81 Ïîìåòêèïðèäîáàâëåíèèè óäàëåíèèôàéëîâ Ïîìåòêèäîâîëüíîçàïóòàííîâçàèìîäåéñòâóþòñîïåðàöèÿìèäîáàâ- ëåíèÿèóäàëåíèÿôàéëîâ ; âîñíîâíîì CVS îòñëåæèâàåò , ñóùåñòâóåò ôàéëèëèíåò , íåîñîáåííîáåñïîêîÿñüîïóñòÿêàõ . Ïîóìîë÷àíèþ , ïî- ìå÷àþòñÿòîëüêîôàéëû , êîòîðûåèìåþòðåâèçèè , ñîîòâåòñòâóþùèå òîìó , ÷òîïîìå÷àåòñÿ . Ôàéëû , êîòîðûååùåíåñóùåñòâóþòèëèêîòî- ðûåóæåáûëèóäàëåíû , ïðîñòîïðîïóñêàþòñÿïðèïîìåòêå , ïðèýòîì CVS çíàåò , ÷òîîòñóòñòâèåìåòêèîçíà÷àåò , ÷òîôàéëíåñóùåñòâóåòâ ïîìå÷åííîììåñòå . Îäíàêî , ïðèýòîììîæíîïîòåðÿòüíåáîëüøîåêîëè÷åñòâîèíôîðìà- öèè . Íàïðèìåð , ïðåäïîëîæèì , ÷òîôàéëáûëäîáàâëåí , àçàòåìóäàëåí . Çàòåì , åñëèäëÿýòîãîôàéëàîòñóòñòâóåòìåòêà , íåòñïîñîáàñêàçàòü , ïîòîìóëèýòî , ÷òîìåòêàñîîòâåòñòâóåòâðåìåíèïåðåäòåì , êàêôàéë áûëäîáàâëåí , èëèïîñëåòîãî , êàêîíáûëóäàëåí . Åñëèâûâûïîëíè- òå cvsrtag ñêëþ÷îìêîìàíäíîéñòðîêè -r , òî CVS ïîìå÷àåòôàéëû , êîòîðûåáûëèóäàëåíû , èçáåãàÿòàêèìîáðàçîìïðîáëåìû . Íàïðèìåð , ìîæíîóêàçàòü -rHEAD , ÷òîáûïîìåòèòüãîëîâíóþðåâèçèþ . Êîìàíäà cvsrtag èìååòêëþ÷êîìàíäíîéñòðîêè -a , î÷èùàþùèé ìåòêóñóäàëåííûõôàéëîâ , êîòîðûåâïðîòèâíîìñëó÷àåíåáûëè áûïîìå÷åíû . Íàïðèìåð , ìîæíîóêàçàòüýòîòêëþ÷âìåñòåñ -F ïðè ïåðåìåùåíèèìåòêè . Åñëèïåðåìåñòèòüìåòêóáåç -a , òîìåòêàíà óäàëåííûõôàéëàõâñååùåññûëàëàñüáûíàñòàðóþðåâèçèþèíå îòðàæàëàáûòîãîôàêòà , ÷òîôàéëáûëóäàëåí . ßíåñ÷èòàþ , ÷òî ýòîîáÿçàòåëüíî , åñëèóêàçàíî -r , êàêîòìå÷åíîâûøå . Ëèïêèåìåòêè Èíîãäàðåâèçèÿ , íàõîäÿùàÿñÿâðàáî÷åìêàòàëîãå , ñîäåðæèòòàêæå äîïîëíèòåëüíóþèíôîðìàöèþîñåáå : íàïðèìåð , îíàìîæåòíàõîäèòü- ñÿíàâåòêå ( ñì . ðàçäåëÃëàâà 8. Ñîçäàíèåèñëèÿíèåâåòâåé ), èëè æåìîæåòáûòüîãðàíè÷åíàñïîìîùüþ checkout-D èëè update-D âåðñèÿìè , ñîçäàííûìèðàíååóêàçàííîéäàòû . Òàêêàêýòàèíôîð- ìàöèÿäîëãîâðåìåííîñîõðàíÿåòñÿ , òîåñòüäåéñòâóåòíàïîñëåäóþùèå êîìàíäûíàäðàáî÷åéêîïèåé , òîìûíàçûâàåìååëèïêîé . Âáîëüøèíñòâåñëó÷àåâëèïêîñòü  ýòîçàïóòàííûéàñïåêò CVS, îêîòîðîìâàìíåñëåäóåòäóìàòü . Îäíàêî , äàæååñëèâûíåæåëàåòå èñïîëüçîâàòüýòóâîçìîæíîñòü , âûâñåæåçàõîòèòå÷òî - íèáóäüóçíàòü îëèïêèõìåòêàõ ( íàïðèìåð , êàêèõèçáåæàòü !). 82 Ðóêîâîäñòâîðàçðàáîò÷èêà Ìîæíîèñïîëüçîâàòüêîìàíäó status , ÷òîáûïîñìîòðåòü , êàêèåóñòà- íîâëåíûëèïêèåìåòêèèëèäàòû : $cvsstatusdriver.c =================================================================== File:driver.cStatus:Up-to-date Version:1.7.2.1SatDec519:35:031992 RCSVersion:1.7.2.1/u/cvsroot/yoyodyne/tc/driver.c,v StickyTag:rel-1-0-patches(branch:1.7.2) StickyDate:(none) StickyOptions:(none) Ëèïêèåìåòêèîñòàþòñÿíàâàøèõðàáî÷èõôàéëàõäîòåõïîð , ïîêà âûíåóäàëèòåèõñïîìîùüþ cvsupdate-A . Îïöèÿ -A èçâëåêàåò âåðñèþôàéëàèçãîëîâíîéðåâèçèèñòâîëàèçàáûâàåòîáîâñåõëèïêèõ ìåòêàõ , äàòàõèêëþ÷àõêîìàíäíîéñòðîêè . Ñàìîåðàñïðîñòðàíåííîåèñïîëüçîâàíèåëèïêèõìåòîê  óêàçàòü , íàäêàêîéâåòâüþèäåòðàáîòà , ÷òîîïèñàíîâðàçäåëå  Äîñòóïêâåò- êàì . Îäíàêî , ëèïêèåìåòêèòàêæåèñïîëüçóþòñÿèáåçâåòîê . Ïðåä- ïîëîæèì , íàïðèìåð , ÷òîâûõîòèòåèçáåæàòüîáíîâëåíèÿâàøåãîðà- áî÷åãîêàòàëîãà , ÷òîáûçàùèòèòüñÿîòèçìåíåíèé , êîòîðûåäåëàþòâà- øèêîëëåãè . Âû , êîíå÷íî , ìîæåòåïðîñòîíåâûïîëíÿòüêîìàíäó cvs update . Åñëèæåâûõîòèòåèçáåæàòüîáíîâëåíèÿòîëüêî÷àñòèáîëü- øîãîäåðåâà , òîëèïêèåìåòêèìîãóòïîìî÷ü . Åñëèâûèçâëå÷åòåîïðå- äåëåííóþðåâèçèþ , ñêàæåì ,1.4, òîîíàñòàíåòëèïêîé . Ïîñëåäóþùèå êîìàíäû cvsupdate íåñòàíóòèçâëåêàòüïîñëåäíþþðåâèçèþäîòåõ ïîð , ïîêàâûíåî÷èñòèòåìåòêóñïîìîùüþ cvsupdate-A . Òî÷íî òàêæå , èñïîëüçîâàíèåêëþ÷àêîìàíäíîéñòðîêè -D êîìàíä update è checkout çàäàåòëèïêóþäàòó , êîòîðàÿèñïîëüçóåòñÿäëÿáóäóùèõ èçâëå÷åíèé . Ëþäè÷àñòîõîòÿòèçâëå÷üñòàðóþâåðñèþôàéëàáåçóñòàíîâêèëèï- êîéìåòêè . Ýòîìîæíîñäåëàòüñïîìîùüþêëþ÷àêîìàíäíîéñòðîêè -p êîìàíä checkout èëè update , êîòîðàÿïîñûëàåòñîäåðæèìîåôàéëà íàñòàíäàðòíûéâûâîä . Íàïðèìåð : $cvsupdate-p-r1.1file1�file1 =================================================================== Checkingoutfile1 RCS:/tmp/cvs-sanity/cvsroot/first-dir/Attic/file1,v Ãëàâà 7. Ðåâèçèè 83 VERS:1.1 *************** $ Îäíàêî , ýòîíåñàìûéïðîñòîéñïîñîá , åñëèâûñïðàøèâàåòå , êàê îòìåíèòüïîñëåäíååôèêñèðîâàíèå ( âýòîìïðèìåðå  ïîìåñòèòü file1 îáðàòíîâòîñîñòîÿíèå , âêîòîðîìîíáûëâðåâèçèè 1.1). Âýòîìñëó÷àåëó÷øåáóäåòèñïîëüçîâàòüêëþ÷êîìàíäíîéñòðîêè -j êîìàíäû update ; äàëüíåéøååîáñóæäåíèåíàõîäèòñÿâðàçäåë t  Ñëèÿíèåèçìåíåíèéìåæäóäâóìÿðåâèçèÿìè . 84 Ðóêîâîäñòâîðàçðàáîò÷èêà Ãëàâà 8. Ñîçäàíèåèñëèÿíèå âåòâåé CVS ïîçâîëÿåòèçîëèðîâàòüèçìåíåíèÿâîòäåëüíîéëèíèèðàçðàáîò- êè , íàçûâàåìîéâåòêîé . Êîãäàâûèçìåíÿåòåôàéëûíàâåòêå , ýòèèç- ìåíåíèÿíåïîÿâëÿþòñÿâîñíîâíîìñòâîëåèëèíàäðóãèõâåòêàõ . Ïîçæåâûìîæåòåïåðåìåñòèòüèçìåíåíèÿñîäíîéâåòêèíàäðóãóþ èëèæåñâåòêèâñòâîë , ýòîíàçûâàåòñÿñëèÿíèåì . Ñíà÷àëàâûïîë- íÿåòñÿ cvsupdate-j , ÷òîáûñëèòüèçìåíåíèÿâðàáî÷èéêàòàëîã , à çàòåìýòèèçìåíåíèÿìîæíîçàôèêñèðîâàòü , ÷òîôàêòè÷åñêèïðèâåäåò êêîïèðîâàíèþèçìåíåíèéíàäðóãóþâåòêó . Äëÿ÷åãîõîðîøèâåòâè ? Ïðåäïîëîæèì , áûëâûïóùåí tc âåðñèè 1.0. Âûïðîäîëæàåòååãîðàç- ðàáîòêó , ïëàíèðóÿâûïóñòèòüâåðñèþ 1.1 ÷åðåçïàðóìåñÿöåâ . ×åðåç íåêîòîðîåâðåìÿâàøèïîëüçîâàòåëèíà÷èíàþòæàëîâàòüñÿíàñåðüåç- íóþîøèáêó . Âûèçâëåêàåòåâåðñèþ 1.0( ñì . ðàçäåë  Ìåòêèðåâèçèé ) èíàõîäèòåîøèáêó , äëÿèñïðàâëåíèÿêîòîðîéòðåáóåòñÿâñåãîëèøü òðèâèàëüíîåèçìåíåíèå ). Îäíàêîæå , òåêóùàÿâåðñèÿèñõîäíèêîâíà- õîäèòñÿâêðàéíåíåñòàáèëüíîìñîñòîÿíèèèíåñòàáèëèçèðóåòñÿïî êðàéíåéìåðååùåìåñÿö . Âûíåìîæåòåâûïóñòèòüèñïðàâëåííóþâåð- ñèþ , îñíîâûâàÿñüíàñâåæèõèñõîäíèêàõ . Âïîäîáíîéñèòóàöèèèìååòñìûñëñîçäàòüâåòêóâäåðåâåðåâèçèé , ñîäåðæàùóþôàéëû , èçêîòîðûõñîñòîÿëàâåðñèÿ 1.0. Çàòåìâû âíîñèòåèçìåíåíèÿââåòâüáåçâòîðæåíèÿâîñíîâíîéñòâîë . Ïîòîì âûñìîæåòåëèáîâíåñòèòåæåñàìûåèçìåíåíèÿâîñíîâíîéñòâîë , ëèáîîñòàâèòüèõòîëüêîíàâåòâè . Ñîçäàíèåâåòâè Âûìîæåòåñîçäàòüâåòâü , èñïîëüçóÿ cvstag-b . Íàïðèìåð , åñëèâû íàõîäèòåñüâêàòàëîãåñðàáî÷åéêîïèåé : $cvstag-brel-1-0-patches Ýòîîòùåïëÿåòâåòêó , îñíîâàííóþíàòåêóùåéðåâèçèèðàáî÷åéêî- ïèè , èïðèñâàèâàåòýòîéâåòêåèìÿ 'rel-1-0-patches'. Âàæíîïîíèìàòü , ÷òîâåòêèñîçäàþòñÿâðåïîçèòîðèè , àíåâðàáî- ÷åéêîïèè . Ñîçäàíèåâåòêè , îñíîâàííîéíàòåêóùåéðåâèçèè , êàêâ Ãëàâà 8. Ñîçäàíèåèñëèÿíèåâåòâåé 85 âûøåïðèâåäåííîìïðèìåðå , ÍÅïåðåêëþ÷àåòðàáî÷óþêîïèþíàèñ- ïîëüçîâàíèåâåòêè ( ñì . ðàçäåë  Äîñòóïêâåòêàì , ãäåîïèñàíî , êàê ñäåëàòüýòî ). Ìîæíîòàêæåñîçäàòüâåòêóâîîáùåáåçèñïîëüçîâàíèÿðàáî÷åé êîïèè , èñïîëüçóÿ rtag . $cvsrtag-b-rrel-1-0rel-1-0-patchestc -rrel-1-0 îçíà÷àåò , ÷òîýòàâåòêàèìååòêîðíåâóþðåâèçèþ , ñîîò- âåòñòâóþùóþìåòêå 'rel-1-0'. Ýòîíåîáÿçàòåëüíîäîëæíàáûòüñàìàÿ ïîñëåäíÿÿðåâèçèÿ : äîâîëüíî÷àñòîáûâàåòïîëåçíîîòùåïèòüâåòêóîò ñòàðîéðåâèçèè ( íàïðèìåð , äëÿèñïðàâëåíèÿîøèáêèâñòàðîéâåðñèè , êîòîðàÿâîñíîâíîìñòàáèëüíà ). Êàêèâñëó÷àåñ tag , êëþ÷êîìàíäíîéñòðîêè -b çàñòàâëÿåò rtag ñîçäàòüâåòêó ( àíåñèìâîëüíîåèìÿðåâèçèè ). Çàìåòüòå , ÷òîíîìåðà ðåâèçèé , ñîîòâåòñòâóþùèõ 'rel-1-0', ñêîðååâñåãî , áóäóòðàçíûìèâ ðàçíûõôàéëàõ . Òàêèìîáðàçîì , ïîëíûéýôôåêòýòîéêîìàíäû  ñîçäàòüíîâóþâåò- êó , êîòîðàÿíàçûâàåòñÿ 'rel-1-0-patches', âìîäóëå tc , êîòîðàÿðàñòåòâ äåðåâåðåâèçèéèçòî÷êè , ïîìå÷åííîéêàê 'rel-1-0'. Äîñòóïêâåòêàì Âûìîæåòåèçâëå÷üâåòêóäâóìÿñïîñîáàìè : èçâëåêàÿååèçðåïî- çèòîðèÿâ÷èñòîìêàòàëîãåèëèïåðåêëþ÷àÿñóùåñòâóþùóþðàáî÷óþ êîïèþíàâåòêó . Äëÿòîãî , ÷òîáûèçâëå÷üâåòêóèçðåïîçèòîðèÿ , âûïîëíèòåêîìàíäó checkout ñêëþ÷îìêîìàíäíîéñòðîêè -r , ñèìåíåììåòêèâêà÷åñòâå ïàðàìåòðà ( Ñì . ðàçäåë  Ñîçäàíèåâåòâè ). $cvscheckout-rrel-1-0-patchestc Åñëèóâàñóæååñòüðàáî÷àÿêîïèÿ , âûìîæåòåïåðåêëþ÷èòüååíà íóæíóþâåòêóñïîìîùüþ update-r : $cvsupdate-rrel-1-0-patchestc èëè , ÷òîòîæåñàìîå : 86 Ðóêîâîäñòâîðàçðàáîò÷èêà $cdtc $cvsupdate-rrel-1-0-patches Íåâàæíî , ÷òîðàáî÷àÿêîïèÿáûëàèçâëå÷åíàèçîñíîâíîãîñòâîëàèëè êàêîé - íèáóäüäðóãîéâåòêè : âûøåïðèâåäåííàÿêîìàíäàïåðåêëþ÷èò ååíàóêàçàííóþâåòêó . Ïîäîáíîîáû÷íîéêîìàíäå update , update -r ñëèâàåòñäåëàííûåèçìåíåíèÿ , óâåäîìëÿÿâàñîïðîèçîøåäøèõ êîíôëèêòàõ . Êîãäàâûñâÿçûâàåòåðàáî÷óþêîïèþñêàêîé - ëèáîâåòêîé , îíàáóäåò îñòàâàòüñÿñâÿçàííîé , ïîêàâûíåóêàæåòåîáðàòíîãî . Ýòîîçíà÷àåò , ÷òîèçìåíåíèÿ , êîòîðûåôèêñèðóþòñÿèçðàáî÷åéêîïèè , áóäóòäîáàâ- ëÿòüíîâûåðåâèçèèíàâåòêó , îñòàâëÿÿáåçèçìåíåíèéîñíîâíîéñòâîë èäðóãèåâåòêè . ×òîáûóçíàòü , íàêàêîéâåòâèíàõîäèòñÿðàáî÷àÿêîïèÿ , ìîæíîèñ- ïîëüçîâàòüêîìàíäó status . Âòîì , ÷òîîíàâûâåëàíàýêðàí , îáðàòèòå âíèìàíèåíàïîëå , êîòîðîåíàçûâàåòñÿ 'Stickytag'( ñì . ðàçäåë  Ëèï- êèåìåòêè ) çäåñü CVS ñîîáùàåò , íàêàêîéâåòâèíàõîäÿòñÿðàáî÷èå ôàéëû : $cvsstatus-vdriver.cbackend.c =================================================================== File:driver.cStatus:Up-to-date Version:1.7SatDec518:25:541992 RCSVersion:1.7/u/cvsroot/yoyodyne/tc/driver.c,v StickyTag:rel-1-0-patches(branch:1.7.2) StickyDate:(none) StickyOptions:(none) ExistingTags: rel-1-0-patches(branch:1.7.2) rel-1-0(revision:1.7) =================================================================== File:backend.cStatus:Up-to-date Version:1.4TueDec114:39:011992 RCSVersion:1.4/u/cvsroot/yoyodyne/tc/backend.c,v StickyTag:rel-1-0-patches(branch:1.4.2) StickyDate:(none) StickyOptions:(none) Ãëàâà 8. Ñîçäàíèåèñëèÿíèåâåòâåé 87 ExistingTags: rel-1-0-patches(branch:1.4.2) rel-1-0(revision:1.4) rel-0-4(revision:1.4) Íåñìóùàéòåñüòåì , ÷òîíîìåðàâåòâåéäëÿêàæäîãîôàéëàðàçëè÷íû ('1.7.2' è '1.4.2', ñîîòâåòñòâåííî ). Ìåòêàâåòâèîäíàèòàæå ,'rel- 1-0-patches', èâñåôàéëûäåéñòâèòåëüíîíàõîäÿòñÿíàîäíîéèòîé æåâåòêå . Íîìåðàëèøüîòðàæàþòòóòî÷êóâèñòîðèèôàéëà , â êîòîðîéïîÿâèëàñüâåòâü . Èçâûøåïðèâåäåííîãîïðèìåðàìîæíî óçíàòü , ÷òîïåðåäòåì , êàêáûëàñîçäàíàâåòêà , driver.c ïðåòåðïåë áîëüøåèçìåíåíèé , ÷åì backend.c . Ñì . ðàçäåë  Âåòêèèðåâèçèè , ãäåïîäðîáíîîïèñàíî , êàêóñòðîåíû íîìåðàâåòâåé . Âåòêèèðåâèçèè Îáû÷íîèñòîðèÿðåâèçèéôàéëà  ýòîëèíåéíàÿâîçðàñòàþùàÿ ïîñëåäîâàòåëüíîñòüíîìåðîâ ( ñì . ðàçäåë  Íîìåðàðåâèçèé ): +-----++-----++-----++-----++-----+ !1.1!----!1.2!----!1.3!----!1.4!----!1.5! +-----++-----++-----++-----++-----+ Îäíàêîæå ,CVS íåîãðàíè÷åíëèíåéíîéðàçðàáîòêîé . Äåðåâîðåâè- çèéìîæåòáûòüðàñùåïëåíîíàâåòâè , ãäåêàæäàÿâåòâü  ñàìîñòî- ÿòåëüíàÿëèíèÿðàçðàáîòêè . Èçìåíåíèÿ , ñäåëàííûåíàîäíîéâåòêå , ëåãêîìîãóòáûòüâíåñåíûòàêæåèâîñíîâíîéñòâîë . Êàæäàÿâåòêàèìååòíîìåðâåòêè , ñîñòîÿùèéèçíå÷åòíîãî÷èñëà äåñÿòè÷íûõ÷èñåë , ðàçäåëåííûõòî÷êàìè . Íîìåðâåòêèñîçäàåòñÿ ïóòåìäîáàâëåíèÿöåëîãî÷èñëàêíîìåðóðåâèçèè , îòêîòîðîéáûëà îòùåïëåíàâåòêà . Íîìåðàâåòîêïîçâîëÿþòîòùåïëÿòüîòîäíîéèòîé æåðåâèçèèíåñêîëüêîâåòîê . Âñåðåâèçèèíàâåòêåèìåþòíîìåðàðåâèçèé , îáðàçîâàííûåïóòåì äîáàâëåíèÿïîðÿäêîâîãîíîìåðàêíîìåðóâåòêè . Âîòèëëþñòðàöèÿ ñîçäàíèÿâåòîê . +-------------+ Branch1.2.2.3.2�-!1.2.2.3.2.1! /+-------------+ / 88 Ðóêîâîäñòâîðàçðàáîò÷èêà / +---------++---------++---------+ Branch1.2.2�-_!1.2.2.1!----!1.2.2.2!----!1.2.2.3! /+---------++---------++---------+ / / +-----++-----++-----++-----++-----+ !1.1!----!1.2!----!1.3!----!1.4!----!1.5!-Themaintrunk +-----++-----++-----++-----++-----+ ! ! !+---------++---------++---------+ Branch1.2.4�-+---!1.2.4.1!----!1.2.4.2!----!1.2.4.3! +---------++---------++---------+ Îáû÷íîíåòðåáóåòñÿçàäóìûâàòüñÿîòî÷íûõäåòàëÿõòîãî , êàê ñòðîÿòñÿíîìåðàâåòîê , íîâîòåùåïîäðîáíîñòè : êîãäà CVS ñîçäàåò íîìåðâåòêè , îíáåðåòïåðâîåíåèñïîëüçîâàííîå÷åòíîå÷èñëî , íà÷èíàÿ ñäâîéêè . Ïîýòîìó , åñëèâûõîòèòåñîçäàòüâåòêóîòðåâèçèè 6.4, îíàáóäåòíàçûâàòüñÿ 6.4.2. Íîìåðàâåòîê , çàêàí÷èâàþùèåñÿíà íîëü ( íàïðèìåð ,6.4.0), èñïîëüçóþòñÿäëÿâíóòðåííèõíóæä CVS( ñì . ðàçäåë  Âîëøåáíûåíîìåðàâåòîê ). Âåòêà 1.1.1 èìååòñïåöèàëüíîå çíà÷åíèå . Âîëøåáíûåíîìåðàâåòîê Âýòîéñåêöèèîïèñàíàâîçìîæíîñòü CVS, íàçûâàþùàÿñÿâîëøåáíûå âåòêè . Âáîëüøèíñòâåñëó÷àåââàìíåïîòðåáóåòñÿáåñïîêîèòüñÿî âîëøåáíûõâåòêàõ , òàêêàê CVS ñàìñëåäèòçàíèìè . Îäíàêî , ïðè îïðåäåëåííûõóñëîâèÿõèõìîæíîóâèäåòü , èïîýòîìóïîëåçíîáûëî áûóçíàòü , êàêîíèðàáîòàþò . Íîìåðàâåòîêñîñòîÿòèçíå÷åòíîãîêîëè÷åñòâàäåñÿòè÷íûõöåëûõ ÷èñåë , ðàçäåëåííûõòî÷êàìè . Ñì . ðàçäåë  Íîìåðàðåâèçèé . Îäíà- êîæå , ýòîíåïîëíàÿïðàâäà . Èçñîîáðàæåíèéýôôåêòèâíîñòè CVS èíîãäàâñòàâëÿåòëèøíèéíîëüâîâòîðóþñïðàâàïîçèöèþ (1.2.4 ñòà- íîâèòñÿ 1.2.0.4, à 8.9.10.11.12 ñòàíîâèòñÿ 8.9.10.11.0.12 èòàêäàëåå ). CVS äîâîëüíîõîðîøîïðÿ÷åòòàêèå  âîëøåáíûå  âåòêè , íîâ íåñêîëüêèõìåñòàõåìóýòîíåóäàåòñÿ : ˆ Íîìåðàâîëøåáíûõâåòîêïîÿâëÿþòñÿââûäà÷å cvslog. ˆ q Âûíåìîæåòåóêàçàòüñèìâîëè÷åñêîåèìÿâåòêèâêîìàíäå cvs admin. Ãëàâà 8. Ñîçäàíèåèñëèÿíèåâåòâåé 89 Ìîæíîèñïîëüçîâàòüêîìàíäó admin , ÷òîáûïåðåíàçíà÷èòüñèìâî- ëè÷åñêîåèìÿâåòêèíàòî , êîòîðîåîæèäàåòóâèäåòü CVS. Íàïðèìåð , åñëè R4patches ïðèñâîåíîâåòêå 1.4.2( âîëøåáíûéíîìåð 1.4.0.2) âôàé- ëå numbers.c ', ìîæíîñäåëàòüòàê : $cvsadmin-NR4patches:1.4.2numbers.c Ýòîñðàáîòàåò , òîëüêîåñëèõîòÿáûîäíàðåâèçèÿóæåáûëàçàôèêñè- ðîâàíàíàâåòêå . Áóäüòåî÷åíüîñòîðîæíû , ÷òîáûíåïðèñâîèòüìåòêó íåïðàâèëüíîìó÷èñëó , òàêêàêíåòñïîñîáàóçíàòü , ÷åìóáûëàïðèñâî- åíàýòàìåòêàâ÷åðà ( çàèñêëþ÷åíèåìåæåäíåâíîãîðåçåðâíîãîêîïèðî- âàíèÿ ). Ñëèÿíèåâåòîê Âûìîæåòåîáúåäèíèòüèçìåíåíèÿ , ñäåëàííûåíàâåòêå , ñâàøåéðà- áî÷åéêîïèåé , äîáàâèâôëàã -j âåòêà êêîìàíäå update . Âðåçóëüòàòå CVS âíåäðÿåòâðàáî÷óþêîïèþèçìåíåíèÿ , ñäåëàííûåìåæäóêîðíå- âîéðåâèçèåéâåòêèèñâåæàéøåéðåâèçèåéíàýòîéâåòêå . Êëþ÷êîìàíäíîéñòðîêè -j îçíà÷àåò  îáúåäèíèòü (join). Ïðåäñòàâüòåñåáåòàêîåäåðåâîðåâèçèé : +-----++-----++-----++-----+ !1.1!----!1.2!----!1.3!----!1.4!- îñíîâíîéñòâîë +-----++-----++-----++-----+ ! ! !+---------++---------+ Âåòâü R1fix�-+---!1.2.2.1!----!1.2.2.2! +---------++---------+ Âåòêå 1.2.2 áûëàíàçíà÷åíàìåòêà ( ñèìâîëüíîåèìÿ )'R1x'.  íèæåñëåäóþùåìïðèìåðåïðåäïîëàãàåòñÿ , ÷òîìîäóëü mod ñîäåðæèò åäèíñòâåííûéôàéë , m.c . $cvscheckoutmod# Èçâëå÷üïîñëåäíþþðåâèçèþ ,1.4 $cvsupdate-jR1fixm.c# Ñëèòüâñåèçìåíåíèÿ , ñäåëàííûåíàâåòêå , # ò . å . èçìåíåíèÿìåæäóðåâèçèÿìè 1.2 # è 1.2.2.2, âðàáî÷óþêîïèþôàéëà 90 Ðóêîâîäñòâîðàçðàáîò÷èêà $cvscommit-m"IncludedR1fix"# ñîçäàòüðåâèçèþ 1.5. Âðåçóëüòàòåîïåðàöèèñëèÿíèÿìîæåòïðîèçîéòèêîíôëèêò .  ýòîñëó÷àåâàìñíà÷àëàíàäîñïðàâèòüñÿñíèìïåðåäôèêñèðîâàíèåì èçìåíåíèé . Êîìàíäà checkout òàêæåïîääåðæèâàåòôëàã -j âåòêà . Ìîæíî äîáèòüñÿýôôåêòà , îáñóæäàâøåãîñÿâûøå , ñïîìîùüþ $cvscheckout-jR1fixmod $cvscommit-m" Äîáàâëåí R1fix" ìíîãîêðàòíîåñëèÿíèåèçâåòêè Ìûïðîäîëæàåìîáñóæäåíèåïðèìåðà . Òåïåðüäåðåâîðåâèçèéâû- ãëÿäèòòàê : +-----++-----++-----++-----++-----+ !1.1!----!1.2!----!1.3!----!1.4!----!1.5!- ñòâîë +-----++-----++-----++-----++-----+ !* !* !+---------++---------+ Âåòâü R1fix�-+---!1.2.2.1!----!1.2.2.2! +---------++---------+ Çäåñüëèíèÿèççâåçäî÷åêïðåäñòàâëÿåòñîáîéñëèÿíèåâåòêè 'R1x' ñîñíîâíûìñòâîëîì , îáñóæäàâøååñÿòîëüêî÷òî . Ïðåäïîëîæèìòåïåðü , ÷òîðàçðàáîòêàâåòêè 'R1x' ïðîäîëæàåòñÿ : +-----++-----++-----++-----++-----+ !1.1!----!1.2!----!1.3!----!1.4!----!1.5!- ñòâîë +-----++-----++-----++-----++-----+ !* !* !+---------++---------++---------+ Âåòâü R1fix�-+---!1.2.2.1!----!1.2.2.2!----!1.2.2.3! +---------++---------++---------+ èòåïåðüâûîïÿòüõîòèòåñëèòüñâåæàéøèåèçìåíåíèÿñîñíîâíûì ñòâîëîì . Åñëèáûâûïðîñòîèñïîëüçîâàëèêîìàíäó cvsupdate-j Ãëàâà 8. Ñîçäàíèåèñëèÿíèåâåòâåé 91 R1xm.c , òî CVS ïîïûòàëàñüáûîïÿòüñëèòüóæåñëèòûåèçìåíåíèÿ , ÷òîïðèâåëîáûêíåæåëàòåëüíûìðåçóëüòàòàì . Âìåñòîýòîãîâàìíóæíîóêàçàòü , ÷òîâûõîòèòåñëèòüòîëüêîòå èçìåíåíèÿíàâåòêå , ÷òîåùåíåáûëèîáúåäèíåíûñîñòâîëîì . Äëÿ ýòîãîâûóêàçûâàåòåäâàêëþ÷àêîìàíäíîéñòðîêè -j , è CVS ñëèâàåò èçìåíåíèÿìåæäóïåðâîéèâòîðîéðåâèçèÿìè . Íàïðèìåð , âýòîì ñëó÷àåñàìûìïðîñòûìñïîñîáîìáóäåò cvsupdate-j1.2.2.2-jR1fixm.c# Ñëèòüèçìåíåíèÿìåæäó 1.2.2.2 è # ãîëîâîéâåòêè R1fix Ïðîáëåìîéçäåñüÿâëÿåòñÿòî , ÷òîâûäîëæíûâðó÷íóþóêàçàòü ðåâèçèþ 1.2.2.2. ×óòüëó÷øèìïîäõîäîìáóäåòèñïîëüçîâàíèåäàòû ñîâåðøåíèÿïîñëåäíåãîñëèÿíèÿ . cvsupdate-jR1fix:yesterday-jR1fixm.c Åùåëó÷øåáûëîáûïîìå÷àòüâåòêó 'R1x' ïîñëåêàæäîãîñëèÿíèÿ ñîñòâîëîì , èèñïîëüçîâàòüýòóìåòêóäëÿäàëüíåéøèõñëèÿíèé : cvsupdate-jmerged_from_R1fix_to_trunk-jR1fixm.c Ñëèÿíèåèçìåíåíèéìåæäóäâóìÿ ðåâèçèÿìè Ñïîìîùüþäâóõôëàãîâ -j ðåâèçèÿ , êîìàíäû update è checkout ìîãóòñëèâàòüèçìåíåíèÿìåæäóëþáûìèäâóìÿðåâèçèÿìèââàø ðàáî÷èéôàéë . Êîìàíäà $cvsupdate-j1.5-j1.3backend.c îòìåíèòèçìåíåíèÿ , ñäåëàííûåìåæäóðåâèçèÿìè 1.3 è 1.5. Îáðàòèòå âíèìàíèåíàïîðÿäîêóêàçàíèÿðåâèçèé ! Åñëèâûïîïðîáóåòåèñïîëüçîâàòüýòóîïöèþïðèðàáîòåñíåñêîëü- êèìèôàéëàìè , ïîìíèòå , ÷òîíîìåðàðåâèçèé , âåðîÿòíî , áóäóòñèëüíî îòëè÷àòüñÿäëÿðàçíûõôàéëîâ . Âòàêèõñëó÷àÿõïî÷òèâñåãäàñëåäóåò èñïîëüçîâàòüñèìâîëüíûåìåòêè , àíåíîìåðàðåâèçèé . 92 Ðóêîâîäñòâîðàçðàáîò÷èêà Óêàçàâäâàêëþ÷àêîìàíäíîéñòðîêè -j , ìîæíîòàêæåîòìåíèòü óäàëåíèåèëèäîáàâëåíèåôàéëà . Íàïðèìåð , ïðåäïîëîæèì , óâàñåñòü ôàéë file1 , ñóùåñòâîâàâøèéâðåâèçèè 1.1. Çàòåìâûóäàëèëèåãî , ñîçäàâ  ìåðòâóþ  ðåâèçèþ 1.2. Òåïåðüïðåäïîëîæèì , ÷òîâûõîòèòå äîáàâèòüåãîîïÿòü , ñòåìæåñàìûìñîäåðæèìûì , ÷òîîíèìåëðàíåå . Âîòêàêñäåëàòüýòî : $cvsupdate-j1.2-j1.1file1 Ufile1 $cvscommit-mtest Checkinginfile1; /tmp/cvs-sanity/cvsroot/first-dir/file1,v--file1 newrevision:1.3;previousrevision:1.2 done $ Ïðèñëèÿíèèìîæíîäîáàâëÿòüè óäàëÿòüôàéëû Åñëèèçìåíåíèÿ , êîòîðûåâûñëèâàåòå , âêëþ÷àþòâñåáÿóäàëåíèå èëèäîáàâëåíèåêàêèõ - ëèáîôàéëîâ , òîêîìàíäà update-j ó÷òåòòàêèå äîáàâëåíèÿèóäàëåíèÿ . Íàïðèìåð : cvsupdate-A touchabc cvsaddabc;cvsci-maddedabc cvstag-bbranchtag cvsupdate-rbranchtag touchd;cvsaddd rma;cvsrma cvsci-maddedd,removeda cvsupdate-A cvsupdate-jbranchtag Ïîñëåòîãî , êàêýòèêîìàíäûâûïîëíåíû , àòàêæåâûïîëíåíàêî- ìàíäà cvscommit , ôàéë a áóäåòóäàëåí , àôàéë d áóäåòäîáàâëåíâ îñíîâíîéñòâîë . Ãëàâà 9. Ðåêóðñèâíîåïîâåäåíèå 93 Ãëàâà 9. Ðåêóðñèâíîå ïîâåäåíèå Ïî÷òèâñåïîäêîìàíäû CVS ðàáîòàþòðåêóðñèâíî , åñëèâûóêàæåòå âêà÷åñòâåàðãóìåíòàêàòàëîã . Íàïðèìåð , ïðåäñòàâèìñåáåòàêóþ ñòðóêòóðóêàòàëîãîâ : $HOME | +--tc || +--CVS |( ñëóæåáíûåôàéëû CVS) +--Makefile +--backend.c +--driver.c +--frontend.c +--parser.c +--man || |+--CVS ||( ñëóæåáíûåôàéëû CVS) |+--tc.1 | +--testing | +--CVS |( ñëóæåáíûåôàéëû CVS) +--testpgm.t +--test2.t Åñëè tc  ýòîòåêóùèéðàáî÷èéêàòàëîã , òîâåðíûñëåäóþùèå óòâåðæäåíèÿ : ˆ cvsupdatetesting ýêâèâàëåíòíî cvsupdatetesting/testpgm.ttesting/test2.t ˆ cvsupdatetestingman îáíîâëÿåòâñåôàéëûâïîäêàòàëîãàõ ˆ cvsupdate. èëèïðîñòî cvsupdate îáíîâëÿåòâñåôàéëûâ êàòàëîãå tc . 94 Ðóêîâîäñòâîðàçðàáîò÷èêà Åñëèêîìàíäå update íåáûëîäàíîíèîäíîãîàðãóìåíòà , òîîíà îáíîâèòâñåôàéëûâòåêóùåìðàáî÷åìêàòàëîãåèâîâñåõåãîïîäêàòà- ëîãàõ . Äðóãèìèñëîâàìè , . ÿâëÿåòñÿàðãóìåíòîìïîóìîë÷àíèþäëÿ update . Ýòîòàêæåèñòèííîäëÿáîëüøèíñòâàïîäêîìàíä CVS, àíå òîëüêîäëÿêîìàíäû update . Ðåêóðñèâíîåïîâåäåíèåïîäêîìàíä CVS ìîæåòáûòüîòêëþ÷åíîñ ïîìîùüþêëþ÷àêîìàíäíîéñòðîêè -l , èíàîáîðîò , êëþ÷êîìàíäíîé ñòðîêè -R ìîæåòèñïîëüçîâàòüñÿäëÿïðèíóäèòåëüíîéðåêóðñèè , åñëè -l áûëóêàçàíâ ~/.cvsrc . $cvsupdate-l# Íåîáíîâëÿòüôàéëûâïîäêàòàëîãàõ Ãëàâà 10. Äîáàâëåíèå , óäàëåíèåèïåðåèìåíîâàíèåôàéëîâè êàòàëîãîâ 95 Ãëàâà 10. Äîáàâëåíèå , óäàëåíèåèïåðåèìåíîâàíèå ôàéëîâèêàòàëîãîâ Âïðîöåññåðàçðàáîòêèïðîåêòà÷àñòîòðåáóåòñÿäîáàâëÿòü , óäàëÿòü èëèïåðåèìåíîâûâàòüôàéëûèêàòàëîãè . Èñõîäÿèçîáùèõïðèíöèïîâ , òðåáóåòñÿ , ÷òîáû CVS çàïîìèíàëàôàêòñîâåðøåíèÿòàêîãîäåéñòâèÿ , âìåñòîòîãî , ÷òîáûñîâåðøàòüíåîáðàòèìîåèçìåíåíèå , òî÷íîòàêæå , êàêîíàîáðàùàåòñÿñèçìåíåíèÿìèôàéëîâ . Òî÷íûåìåõàíèçìû , äåéñòâóþùèåâýòèõñëó÷àÿõ , çàâèñÿòîòêîíêðåòíîéñèòóàöèè . Äîáàâëåíèåôàéëîââêàòàëîã Äëÿòîãî , ÷òîáûäîáàâèòüíîâûéôàéëâêàòàëîã , ñîâåðøèòåñëåäó- þùèåøàãè : ˆ Ñíà÷àëàóâàñäîëæíàáûòüðàáî÷àÿêîïèÿêàòàëîãà . Ñì . ðàçäåë Ïîëó÷åíèåèñõîäíîãîêîäà . ˆ Ñîçäàéòåíîâûéôàéëâðàáî÷åéêîïèèêàòàëîãà . ˆ Èñïîëüçóéòåêîììàíäó cvsadd èìÿ _ ôàéëà , ÷òîáûñîîáùèòü CVS, ÷òîâûõîòèòåõðàíèòüèñòîðèþèçìåíåíèéýòîãîôàéëà . Åñëè âôàéëåõðàíÿòñÿäâîè÷íûåäàííûå , äîáàâüòåêëþ÷êîìàíäíîé ñòðîêè -kb . ˆ Èñïîëüçóéòåêîìàíäó cvscommit èìÿ _ ôàéëà , ÷òîáûïîìåñòèòü ôàéëâðåïîçèòîðèé . Äðóãèåðàçðàáîò÷èêèíåóâèäÿòýòîòôàéë , ïîêàâûíåâûïîëíèòåýòóêîìàíäó . Ìîæíîòàêæåèñïîëüçîâàòüêîìàíäó add äëÿäîáàâëåíèÿíîâîãî êàòàëîãà . Âîòëè÷èåîòáîëüøèíñòâàäðóãèõêîìàíä , êîìàíäà add íåÿâëÿåòñÿ ðåêóðñèâíîé . Âûäàæåíåìîæåòåñêàçàòü cvsaddfoo/bar . Âìåñòî ýòîãî , âàìïîòðåáóåòñÿâûïîëíèòü $cdfoo $cvsaddbar Êîìàíäà : cvsadd[-kkag][-m ñîîáùåíèå ] ôàéëû ... Äîáàâèòüôàéëûâñïèñîêíàïîìåùåíèåâðåïîçèòîðèé . Ôàéëûèëè êàòàëîãè , óêàçàííûåâêîìàíäå add , äîëæíûñóùåñòâîâàòüâòåêóùåì 96 Ðóêîâîäñòâîðàçðàáîò÷èêà êàòàëîãå . Äëÿòîãî , ÷òîáûäîáàâèòüâðåïîçèòîðèéöåëîåäåðåâî êàòàëîãîâ , íàïðèìåð , ôàéëû , ïîëó÷åííûåîòñòîðîííåãîïîñòàâùèêà , èñïîëüçóéòåêîìàíäó import . Äîáàâëåííûåôàéëûíåïîìåùàþòñÿâðåïîçèòîðèé , ïîêàâûíåâû- ïîëíèòåêîìàíäó commit , çàôèêñèðîâàâòåìñàìûìèçìåíåíèÿ . Âû- ïîëíåíèåêîìàíäû add äëÿôàéëà , êîòîðûéáûëóäàëåíêîìàíäîé remove , îòìåíèòäåéñòâèå remove , åñëèïîñëåíåååùåíåáûëàâûïîë- íåíàêîìàíäà commit . Ñì . ðàçäåë  Óäàëåíèåôàéëîâ , òàìíàõîäèòñÿ ïðèìåðèñïîëüçîâàíèÿêîìàíäû . Êëþ÷êîìàíäíîéñòðîêè -k çàäàåòñïîñîáïîóìîë÷àíèþ , êîòîðûì áóäóòèçâëåêàòüñÿôàéëû . Êëþ÷êîìàíäíîéñòðîêè -m çàäàåòîïèñàíèåôàéëà . Îïèñàíèåïîÿâ- ëÿåòñÿâæóðíàëåèñòîðèè , åñëèðàçðåøåíîåãîèñïîëüçîâàíèå . Òàêæå ýòîîïèñàíèåáóäåòñîõðàíåíîâðåïîçèòîðèè , êîãäàôàéëáóäåòçàôèê- ñèðîâàí . Êîìàíäà log ïîêàçûâàåòýòîîïèñàíèå . Îïèñàíèåìîæåòáûòü èçìåíåíîñïîìîùüþêîìàíäû admin-t . Åñëèâûîïóñòèòåôëàã -m îïèñàíèå , òîóâàñíåñïðîñÿòîïèñàíèÿ , àáóäåòèñïîëüçîâàíàïóñòàÿ ñòðîêà . Íàïðèìåð , íèæåñëåäóþùèåêîìàíäûäîáàâëÿþòôàéë 'backend.c' â ðåïîçèòîðèé : $cvsaddbackend.c ˆ Óáåäèòåñü , ÷òîóâàñíåèçìåíåííàÿâåðñèÿýòîãîôàéëà . Ñì . ðàçäåë Ïðîñìîòðèçìåíåíèé , òàìîïèñàíîäèíèçñïîñîáîâóáåäèòüñÿâ ýòîì . Ìîæíîòàêæåèñïîëüçîâàòüêîìàíäû status èëè update . Ãëàâà 10. Äîáàâëåíèå , óäàëåíèåèïåðåèìåíîâàíèåôàéëîâè êàòàëîãîâ 97 Åñëèâûóäàëèòåôàéëáåçïðåäâàðèòåëüíîéôèêñàöèèèçìåíåíèé , âû , êîíå÷íîæå , íåñìîæåòåèçâëå÷üýòîòôàéëâòîìâèäå , â êîòîðîìîííàõîäèëñÿïåðåäóäàëåíèåì . ˆ Óäàëèòåôàéëèçðàáî÷åéêîïèèêàòàëîãà . Íàïðèìåð , ìîæíî èñïîëüçîâàòüïðîãðàììó rm . ˆ Âûïîëíèòå cvsremove èìÿ - ôàéëà , ÷òîáûñîîáùèòü CVS, ÷òîâû äåéñòâèòåëüíîõîòèòåóäàëèòüýòîòôàéë . ˆ Âûïîëíèòå cvscommit èìÿ - ôàéëà , ÷òîáûçàôèêñèðîâàòüóäàëå- íèåôàéëàâðåïîçèòîðèè . Êîãäàâûôèêñèðóåòåóäàëåíèåôàéëà ,CVS çàïîìèíàåò , ÷òîýòîãî ôàéëàáîëååíåñóùåñòâóåò . Âïðî÷åì , îíìîæåòñóùåñòâîâàòüíàîäíèõ âåòêàõèíåñóùåñòâîâàòüíàäðóãèõ , èëèæåìîæíîâïîñëåäñòâèè äîáàâèòüäðóãîéôàéëñòåìæåñàìûìèìåíåì .CVS êîððåêòíîñîçäàñò èëèíåñòàíåòñîçäàâàòüôàéë , îñíîâûâàÿñüíàêëþ÷àõêîìàíäíîé ñòðîêè -r èëè -D , çàäàííûõâêîìàíäàõ checkout èëè update . Êîìàíäà : cvsremove[ êëþ÷è ] ôàéëû ... Ïîìåùàåòôàéëûâñïèñîêíàóäàëåíèåèçðåïîçèòîðèÿ ( äëÿòîãî , ÷òîáûýòàêîìàíäàñðàáîòàëà , íóæíî , ÷òîáûôàéëûáûëèóäàëåíûèç ðàáî÷åãîêàòàëîãà ). Ýòàêîìàíäàíåóäàëÿåòôàéëûèçðåïîçèòîðèÿ , ïîêàâûíåçàôèêñèðóåòåóäàëåíèå . Ïîëíûéñïèñîêêëþ÷åéíàõîäèòñÿ âðàçäåëå ???. Âîòïðèìåðóäàëåíèÿíåñêîëüêèõôàéëîâ : $cdtest $rm*.c $cvsremove cvsremove:Removing. cvsremove:schedulinga.cforremoval cvsremove:schedulingb.cforremoval cvsremove:use'cvscommit'toremovethesefilespermanently $cvsci-mRemovedunneededfiles cvscommit:Examining. cvscommit:Committing. Äëÿóäîáñòâàìîæíîóäàëÿòüôàéëûèîäíîâðåìåííîäåëàòü cvs remove , èñïîëüçóÿêëþ÷êîìàíäíîéñòðîêè -f . Íàïðèìåð , âûøåïðè- âåäåííûéïðèìåðìîæíîïåðåïèñàòüòàê : $cdtest $cvsremove-f*.c 98 Ðóêîâîäñòâîðàçðàáîò÷èêà cvsremove:schedulinga.cforremoval cvsremove:schedulingb.cforremoval cvsremove:use'cvscommit'toremovethesefilespermanently $cvsci-mRemovedunneededfiles cvscommit:Examining. cvscommit:Committing. Åñëèâûâûïîëíèòåêîìàíäó remove , àçàòåìïåðåìåíèòåñâîåðåøå- íèå , åùåíåçàôèêñèðîâàâóäàëåíèå , òîêîìàíäó remove ìîæíîîòìå- íèòüñïîìîùüþêîìàíäû add . $ls CVSja.hoj.c $rmoj.c $cvsremoveoj.c cvsremove:schedulingoj.cforremoval cvsremove:use'cvscommit'toremovethisfilepermanently $cvsaddoj.c Uoj.c cvsadd:oj.c,version1.1.1.1,resurrected Åñëèâûîñîçíàåòåñâîþîøèáêóïåðåäâûïîëíåíèåìêîìàíäû remove , ìîæíîèñïîëüçîâàòü update , ÷òîáûâîñêðåñèòüôàéëû : $rmoj.c $cvsupdateoj.c cvsupdate:warning:oj.cwaslost Uoj.c Êîãäàâûóäàëÿåòåôàéë , îíóäàëÿåòñÿòîëüêîñòîéâåòêè , íàêîòî- ðîéâûðàáîòàåòå ( ñì . ðàçäåëÃëàâà 8. Ñîçäàíèåèñëèÿíèåâåòâåé ). Ïîçæåìîæíîñëèòüóäàëåíèÿíàäðóãóþâåòêó , åñëèçàõîòèòå ( ñì . ðàçäåë  Ïðèñëèÿíèèìîæíîäîáàâëÿòüèóäàëÿòüôàéëû ). Óäàëåíèåêàòàëîãîâ Âïðèíöèïåóäàëåíèåêàòàëîãîââ÷åì - òîïîäîáíîóäàëåíèþ ôàéëîâ  âûíåõîòèòå , ÷òîáûêàòàëîãñóùåñòâîâàëâòåêóùåìðà- áî÷åìêàòàëîãå , íîâûõîòèòåòàêæå , ÷òîáûìîæíîáûëîèçâëåêàòü ñòàðûåâåðñèèïðîåêòà , âêîòîðûõåùåñóùåñòâîâàëêàòàëîã . Ìîæíîóäàëèòüêàòàëîã , óäàëèââñåôàéëûâíåì . Íåòñïîñîáàóäà- ëèòüñàìêàòàëîã . Âìåñòîýòîãîâûçàäàåòåêîìàíäàì cvsupdate , Ãëàâà 10. Äîáàâëåíèå , óäàëåíèåèïåðåèìåíîâàíèåôàéëîâè êàòàëîãîâ 99 cvscheckout èëè cvsexport êëþ÷êîìàíäíîéñòðîêè -P , êîòîðûé çàñòàâèò CVS óäàëÿòüïóñòûåêàòàëîãèâðàáî÷åìêàòàëîãå . Âåðî- ÿòíî , ëó÷øåâñåãîáóäåòâñåãäàóêàçûâàòü -P , åñëèâûõîòèòå , ÷òîáû ñóùåñòâîâàëïóñòîéêàòàëîã , ïîìåñòèòåâíåãîïóñòîéôàéë , íàïðèìåð , .keepme , ÷òîáûíåäàòü CVS ñêëþ÷îì -P óäàëèòüýòîòêàòàëîã . Çàìåòüòå , ÷òîïðèèñïîëüçîâàíèèêëþ÷åé -r èëè -D ñêîìàíäàìè checkout è export ïîäðàçóìåâàåòñÿòàêæåèñïîëüçîâàíèå -P . Ïðè ýòîì CVS ñìîæåòñîçäàòüèëèíåñîçäàâàòüêàòàëîã , âçàâèñèìîñòèîò òîãî , íàõîäèëèñüëèâýòîìêàòàëîãåêàêèå - ëèáîôàéëûâêîíêðåòíîé âåðñèèïðîåêòà . Ïåðåìåùåíèåèïåðåèìåíîâàíèå ôàéëîâ Ïåðåìåùåíèåôàéëîââäðóãîéêàòàëîãèëèïåðåèìåíîâàíèåèõ íåñëîæíî , íîíåêîòîðûåàñïåêòûìîãóòáûòüíåî÷åâèäíûìè . Ïåðå- ìåùåíèåèïåðåèìåíîâàíèåêàòàëîãîâåùåñëîæíåå . Ñì . ðàçäåë  Ïå- ðåìåùåíèåèïåðåèìåíîâàíèåêàòàëîãîâ . Âíèæåïðèâåäåííûõïðèìåðàõïðåäïîëàãàåòñÿ , ÷òîôàéë old ïåðå- èìåíîâûâàåòñÿâ new . Îáû÷íûéñïîñîáïåðåèìåíîâàíèÿ Îáû÷íûìñïîñîáîìïåðåìåùåíèÿôàéëàÿâëÿåòñÿêîïèðîâàíèå old â new , àçàòåìâûïîëíåíèåêîìàíä CVS äëÿóäàëåíèÿôàéëà old èç ðåïîçèòîðèÿèäîáàâëåíèÿòóäàôàéëà new . $mvoldnew $cvsremoveold $cvsaddnew $cvscommit-m"old ïåðåèìåíîâàíâ new"oldnew Ýòîñàìûéïðîñòîéñïîñîáïåðåìåñòèòüôàéë , îííåïîäâåðæåíîøèá- êàì , èñîõðàíÿåòèñòîðèþñîâåðøåííûõäåéñòâèé . Çàìåòüòå , ÷òîäëÿ äîñòóïàêèñòîðèèôàéëàíóæíîóêàçàòüñòàðîåèëèíîâîåèìÿ , âçàâè- ñèìîñòèîòïåðèîäàèñòîðèè , êêîòîðîìóâûîáðàùàåòåñü . Íàïðèìåð , cvslogold âûäàñòæóðíàëâïëîòüäîìîìåíòàïåðåèìåíîâàíèÿ . Êîãäà new ôèêñèðóåòñÿ , íóìåðàöèÿåãîðåâèçèéíà÷íåòñÿñíóëÿ , îáû÷íîñ 1.1, ïîýòîìóåñëèýòîâàìíåíðàâèòñÿ , èñïîëüçóéòåêëþ÷ êîìàíäíîéñòðîêè -r íîìåð êîìàíäû commit . Äàëüíåéøóþèíôîðìà- öèþñìîòðèòåâðàçäåëå  Íîìåðàðåâèçèé  100 Ðóêîâîäñòâîðàçðàáîò÷èêà Ïåðåìåùåíèåôàéëàñðåâèçèÿìè Ýòîòìåòîäáîëååîïàñåí , ïîòîìó÷òîòðåáóåòïåðåìåùåíèÿôàéëîâ âðåïîçèòîðèè . Ïðî÷òèòåâñþãëàâóïåðåäïîïûòêàìèïðèìåíèòüýòîò ìåòîä ! $cd$CVSROOT/dir $mvold,vnew,v Ïðåèìóùåñòâà : ˆ Æóðíàëèçìåíåíèéñîõðàíÿåòñÿ . ˆ Íîìåðàðåâèçèéíåèçìåíÿþòñÿ . Íåäîñòàòêè : ˆ Íåòïðîñòîãîñïîñîáàèçâëå÷üñòàðûåâåðñèèïðîåêòàèçðåïîçè- òîðèÿ . Ôàéëáóäåòèçâëåêàòüñÿïîäèìåíåì new äàæåäëÿâåðñèé ïðîåêòà , âêîòîðûõîíåùåíåáûëïåðåèìåíîâàí . ˆ Íåñîõðàíÿåòñÿèíôîðìàöèÿîòîì , êîãäàáûëïåðåèìåíîâàíôàéë . ˆ Ìîãóòïðîèçîéòèíåïðèÿòíîñòè , åñëèêòî - íèáóäüçàõî÷åòïîðàáî- òàòüñôàéëîìðåâèçèé , ïîêàâûåãîïåðåìåùàåòå . Óáåäèòåñü , ÷òî íèêòîáîëååíåîáðàùàåòñÿêðåïîçèòîðèþ , ïîêàâûâûïîëíÿåòå îïåðàöèþ . Êîïèðîâàíèåôàéëàñðåâèçèÿìè Ýòîòñïîñîáòàêæåòðåáóåòïðÿìûõèçìåíåíèéðåïîçèòîðèÿ . Îí áåçîïàñåí , íîíåáåçïîäâîäíûõêàìíåé . ˆ Êîïèðîâàòü RCS- ôàéëâðåïîçèòîðèè $cd$CVSROOT/dir $cpold,vnew,v ˆ Óäàëèòüñòàðûéôàéë $cd~/dir $rmold $cvsremoveold $cvscommitold Ãëàâà 10. Äîáàâëåíèå , óäàëåíèåèïåðåèìåíîâàíèåôàéëîâè êàòàëîãîâ 101 ˆ Óäàëèòüâñåìåòêèèç new $cvsupdatenew $cvslognew ˆ Çàïîìíèòüâñåìåòêè , íåÿâëÿþùèåñÿèìåíàìèâåòîê $cvstag-dtag1new $cvstag-dtag2new ... Óäàëèâìåòêè , âûñìîæåòåèçâëåêàòüñòàðûåðåâèçèè . Ïðåèìóùåñòâà : ˆ Èçâëå÷åíèåñòàðûõðåâèçèéðàáîòàåòêîððåêòíî , åñëèâûèñïîëüçó- åòåäëÿèçâëå÷åíèÿðåâèçèéêëþ÷êîìàíäíîéñòðîêè -r ìåòêà , àíå -D äàòà . ˆ Æóðíàëèçìåíåíèéîñòàåòñÿâöåëîñòèèñîõðàííîñòè . ˆ Íîìåðàðåâèçèéíåèñêàæàþòñÿ . Íåäîñòàòêè : ˆ Íåòñïîñîáàëåãêîóâèäåòüèñòîðèþôàéëàäîïåðåèìåíîâàíèÿ . Ïåðåìåùåíèåèïåðåèìåíîâàíèå êàòàëîãîâ Îáû÷íûéñïîñîáïåðåèìåíîâàòüèëèïåðåìåñòèòüêàòàëîã  ïåðå- èìåíîâàòüèëèïåðåìåñòèòüêàæäûéôàéëâíåì , êàêîïèñàíîâðàç- äåëå  Îáû÷íûéñïîñîáïåðåèìåíîâàíèÿ . Çàòåìñëåäóåòèçâëå÷üèõ çàíîâî , èñïîëüçóÿêëþ÷êîìàíäíîéñòðîêè -P , êàêîïèñàíîâðàçäåëå  Óäàëåíèåêàòàëîãîâ . Åñëèâàìäåéñòâèòåëüíîíóæíîâîçèòüñÿñðåïîçèòîðèåì , ÷òîáû ïåðåèìåíîâàòüèëèóäàëèòüêàòàëîãâðåïîçèòîðèè , âûìîæåòåñäåëàòü ýòîòàê : 1. Óâåäîìèòüâñåõ , óêîãîåñòüèçâëå÷åííàÿêîïèÿêàòàëîãà , ÷òîêà- òàëîãáóäåòïåðåèìåíîâàí . Îíèäîëæíûçàôèêñèðîâàòüñâîèèç- ìåíåíèÿèóäàëèòüðàáî÷èåêîïèè , ïåðåäòåì , êàêâûïðåäïðèìåòå äàëüíåéøèåøàãè . 102 Ðóêîâîäñòâîðàçðàáîò÷èêà 2. Ïåðåèìåíóéòåêàòàëîãâíóòðèðåïîçèòîðèÿ . $cd$CVSROOT/ ðîäèòåëüñêèé - êàòàëîã $mv ñòàðûé - êàòàëîãíîâûé - êàòàëîã 3. Èñïðàâüòåàäìèíèñòðàòèâíûåôàéëû CVS, åñëèýòîòðåáóåòñÿ ( íàïðèìåð , åñëèâûïåðåèìåíîâàëèöåëûéìîäóëü ). 4. Ñîîáùèòåâñåì , ÷òîîíèìîãóòèçâëå÷üñâîèðàáî÷èåêîïèèîïÿòü èïðîäîëæèòüðàáîòó . Åñëèêòî - òîíåóäàëèëñâîþðàáî÷óþêîïèþ , êîìàíäû CVS áóäóò îòêàçûâàòüñÿðàáîòàòü , ïîêàîííåóäàëèòêàòàëîã , êîòîðîãîáîëüøå íåñóùåñòâóåòâðåïîçèòîðèè . Ïî÷òèâñåãäàãîðàçäîëó÷øèìñïîñîáîìáóäåòïåðåìåñòèòüôàéëûâ êàòàëîãå , âìåñòîòîãî , ÷òîáûïåðåìåùàòüêàòàëîã , ïîòîìó÷òîèíà÷å âû , ñêîðååâñåãî , íåñìîæåòåêîððåêòíîèçâëåêàòüñòàðûåâåðñèè âàøåãîïðîåêòà , òàêêàêîíè , âåðîÿòíî , çàâèñÿòîòèìåíêàòàëîãîâ . ×àñòü III.LAN-Crypto Áèáëèîòåêà ðàçðàáîò÷èêà ïðîãðàììíîãî îáåñïå÷åíèÿçàùèòû èíôîðìàöèè Áèáëèîòåêàïðåäíàçíà÷åíàäëÿðàçðàáîò÷èêîâ , èñïîëüçóþùèõâñâîèõ ïðèëîæåíèÿõçàùèòóèíôîðìàöèèîòíåñàíêöèîíèðîâàííîãîäîñòóïà . Ãëàâà 11. Ââåäåíèå 105 Ãëàâà 11. Ââåäåíèå Áèáëèîòåêàðàçðàáîòêèïðîãðàììíûõñðåäñòâçàùèòûèíôîðìàöèè îòíåñàíêöèîíèðîâàííîãîäîñòóïàâêëþ÷àåòâñåáÿíàáîðáèáëèî- òåê , îáëàäàþùèõñðåäñòâàìè , ïîçâîëÿþùèìèðàçðàáîò÷èêàìïîâû- øàòüáåçîïàñíîñòüñâîèõïðèëîæåíèé . Îíàñîäåðæèòôóíêöèèêîäè- ðîâàíèÿèäåêîäèðîâàíèÿèíôîðìàöèè , êîíòðîëÿöåëîñòíîñòèäàííûõ èèäåíòèôèêàöèèïîëüçîâàòåëåéñèñïîëüçîâàíèåìöèôðîâûõñåðòè- ôèêàòîâ . Ðàçðàáîò÷èêïðèëîæåíèÿ , âêîòîðîåâñòðîåíàçàùèòàèíôîðìàöèè ñðåäñòâàìèáèáëèîòåêè , äîëæåíáûòüçíàêîìñîñíîâàìèêðèïòîãðà- ôèè . ÂäîêóìåíòàöèèïîÁèáëèîòåêå ( ôàéëûâôîðìàòå CHM ) äàíû êðàòêèåîïèñàíèÿîñíîâíûõêîíöåïöèé , àëãîðèòìîâèçàäà÷êðèïòî- ãðàôèè : Áîëüøèíñòâîêðèïòîãðàôè÷åñêèõîïåðàöèéèñïîëüçóþòñåêðåòíûåè îòêðûòûåêëþ÷è . Ñåêðåòíûåêëþ÷è  ýòîñåêðåòíûåêîìïîíåíòû , êîòîðûìèîáëàäàþò ïîëüçîâàòåëèñèñòåìû . Ñåêðåòíûéêëþ÷ïîõîæíàïàðîëü , íîäîâîëü- íîäëèííûéèñîäåðæèòñÿâñïåöèàëüíîìêîíòåéíåðåäëÿñåêðåòíîãî êëþ÷à . Óïîëüçîâàòåëÿíåòïðÿìîãîäîñòóïàêñåêðåòíîìóêëþ÷ó , îí ìîæåòèñïîëüçîâàòüñÿòîëüêîñîîòâåòñòâóþùèìèïðîãðàììàìè . Îòêðûòûåêëþ÷èíåÿâëÿþòñÿòàéíûìèèïðåäñòàâëÿþòîòêðûòóþ èîáùåäîñòóïíóþ÷àñòüêëþ÷àïîëüçîâàòåëÿ . Âàæíîòî , ÷òî , õîòÿ ïîëüçîâàòåëüîòêðûâàåòäîñòóïêñâîåìóîòêðûòîìóêëþ÷óîñòàëüíûì ïîëüçîâàòåëÿìñèñòåìû , îíèíåìîãóòâû÷èñëèòüñåêðåòíûéêëþ÷ ïîîòêðûòîìóêëþ÷ó . Îäíàêîîáìåíîòêðûòûìèêëþ÷àìèìåæäó äâóìÿïîëüçîâàòåëÿìèïîçâîëÿåòóñòàíîâèòüìåæäóíèìèçàùèù¼ííîå ñîåäèíåíèå . Ïðîáëåìàçàùèùåííîãîîáìåíàèíôîðìàöèåé÷åðåçíåçàùèù¼ííûå êîìïüþòåðíûåñåòèâêëþ÷àåòòðèîñíîâíûåîáëàñòè : ˆ ñåêðåòíîñòü  ïðåäîòâðàùåíèåïðî÷òåíèÿñåêðåòíûõäàííûõëþ- áûìëèöîì , êðîìåíàçíà÷åííîãîèõïîëó÷àòåëÿ ; ˆ öåëîñòíîñòü  ãàðàíòèÿ , ÷òîïîëó÷åííûåäàííûååñòüâòî÷íîñòè òå , êîòîðûåáûëèîòïðàâëåíû , ò . å . ÷òîîíèíåáûëèèçìåíåíûñ ìîìåíòàîòïðàâêè ; ˆ àóòåíòèôèêàöèÿ  óñòàíîâëåíèåëè÷íîñòèèëèãðóïïû , ñêîòîðû- ìèóñòàíàâëèâàåòñÿñîåäèíåíèå . Ýòèçàäà÷èðåøàþòñÿêðèïòîãðàôè÷åñêèìèòåõíîëîãèÿìèïðè èñïîëüçîâàíèèðàçíîîáðàçíûõêðèïòîãðàôè÷åñêèõàëãîðèòìîâ . 106 Ðóêîâîäñòâîðàçðàáîò÷èêà Äëÿîáåñïå÷åíèÿñåêðåòíîñòèèñïîëüçóþòñÿàëãîðèòìûêîäèðîâà- íèÿ / äåêîäèðîâàíèÿ . Äëÿöåëîñòíîñòè  àëãîðèòìûõýøèðîâàíèÿ èöèôðîâîéïîäïèñè / ïðîâåðêèïîäïèñè . Äëÿàóòåíòèôèêàöèè ïîëüçîâàòåëåéèñïîëüçóåòñÿñèñòåìàóïðàâëåíèÿïîëüçîâàòåëüñêèìè ñåðòèôèêàòàìè . Áèáëèîòåêàïðåäîñòàâëÿåòíàáîðàëãîðèòìîâêîäèðîâàíèÿ  êàê ðàçðàáîòàííûõ ËÀÍÊðèïòî , òàêèñòàíäàðòíûõàëãîðèòìîâ , èçâåñò- íûõâîâñ¼ììèðå . Ñóùåñòâóþòðàçíîîáðàçíûåñïåöèàëüíûåàëãîðèòìûäëÿêîäèðîâà- íèÿ , õýøèðîâàíèÿèïîäïèñèäàííûõ . Êà÷åñòâîàëãîðèòìàîïðåäå- ëèòüñëîæíî . Àëãîðèòìû , êîòîðûåâûãëÿäÿòìíîãîîáåùàþùå , ìîãóò îêàçàòüñÿî÷åíüë¼ãêèìèäëÿâçëîìàîïðåäåë¼ííûìèìåòîäàìèàòàêè . Ïðèâûáîðåàëãîðèòìîâïðåäñòàâëÿåòñÿðàçóìíûìâûáèðàòüòåèçíèõ , êîòîðûåèñïîëüçîâàëèñüâòå÷åíèåíåêîòîðîãîâðåìåíè , çàêîòîðîåîíè óñïåøíîîòðàçèëèâñåàòàêè . Âòàáëèöåíèæåïðèâåäåíûïàðàìåòðûàëãîðèòìîâ  ðàçìåðáëîêà âáèòàõ , äëèíàñåàíñîâîãîêëþ÷àâáèòàõ .  ËÀÍÊðèïòî  ðåêîìåíäóåò : Íåäàâíîáûëèðàçðàáîòàíûíàä¼æíûåèñâåðõáûñòðûåàëãîðèòìû êîäèðîâàíèÿ Wicker98 è Nush. Ýòèî÷åíüýôôåêòèâíûåàëãîðèòìû áëî÷íîãîêîäèðîâàíèÿìîãóòáûòüóñïåøíîïðèìåíåíûâëþáîìïðè- ëîæåíèè , èìåþùåìîïåðàöèþêîäèðîâàíèÿ . Wicker98 è Nush ïðåêðàñíûåàëãîðèòìûáëî÷íîãîêîäèðîâàíèÿ , èçâåñòíûåíàìèðîâîìðûíêå . Áèáëèîòåêàïðåäîñòàâëÿåòíàáîðàëãîðèòìîâïîäïèñè , êàêðàçðàáî- òàííûõ  ËÀÍÊðèïòî , òàêèäðóãèõ , øèðîêîèçâåñòíûõâîâñ¼ììèðå .  ËÀÍÊðèïòî  ðåêîìåíäóåò : Àëãîðèòìïîäïèñè LANS(Notary-S) ïîçâîëÿåòäåëàòüäëèíóöèôðî- âîéïîäïèñèíà 35% êîðî÷å , ÷åìâàëãîðèòìå DSA, èíà 60% êîðî÷å , ÷åìóàëãîðèòìà GOSTR3410. Îíóæåïðèíÿòâêà÷åñòâåíîâîãîêîðïî- ðàòèâíîãîñòàíäàðòàöèôðîâîéïîäïèñèöåëûìðÿäîìèíäóñòðèàëüíûõ èêîììåð÷åñêèõêîíöåðíîââÐîññèèèÑÍà . Îíòàêæåáûëïðèíÿòêàê îòðàñëåâîéñòàíäàðòãàçîâîéïðîìûøëåííîñòèÐîññèèèñòàëíàöèî- íàëüíûìñòàíäàðòîìöèôðîâîéïîäïèñèâíåñêîëüêèõñòðàíàõÑÍà . Áèáëèîòåêàïðåäîñòàâëÿåòíàáîðàëãîðèòìîâõýøèðîâàíèÿ :  ËÀÍÊðèïòî  ðåêîìåíäóåò : Àëãîðèòìõýøèðîâàíèÿ SHA1, øèðîêîèñïîëüçóåìûéâîâñ¼ììèðå . SHA1 èñïîëüçóåòñÿâìåñòåñàëãîðèòìàìèïîäïèñè DSA è LANS. Áèáëèîòåêàïðåäîñòàâëÿåòíåñêîëüêîìåòîäîâêîäèðîâàíèÿäàííûõ ( ðåæèìîâêîäèðîâàíèÿ ): Ãëàâà 11. Ââåäåíèå 107 Ïîòî÷íûéðåæèìêîäèðîâàíèÿêîäèðóåòäàííûåïîáèòóçàðàç , è èñïîëüçóåòñÿâïîòî÷íûõêîäàõ ( Âåñòà -2 Ì ,RC4). Ïðèèñïîëüçîâàíèè áëî÷íûõêîäîâ (Wicker,TripleDES, ò . ï .) ðåæèìáëî÷íîãîêîäèðîâàíèÿ êîäèðóåòäàííûåïîáëîêóçàðàç . Õîòÿýòîâûïîëíÿåòñÿìåäëåííåå , ÷åìâïîòî÷íûõàëãîðèòìàõ , áëî÷íûåáîëååáåçîïàñíû . Âáëî÷íûõàë- ãîðèòìàõèñïîëüçóþòñÿ÷åòûðåðåæèìàêîäèðîâàíèÿ . Âáîëüøèíñòâå ñëó÷àåâïðåäïî÷òèòåëüíååèñïîëüçîâàíèåðåæèìà CBC. EBC ýëåêòðîííàÿêîäîâàÿêíèãà Ïðîñòîéðåæèìêîäèðîâàíèÿ , êîäèðóþùèéáëîêèïîîòäåëüíîñòèèíåèñ- ïîëüçóþùèéîáðàòíóþñâÿçü . CBC ñöåïëåíèåáëîêîâïîøèôð - òåêñòó Ðåæèìáëî÷íîãîêîäè- ðîâàíèÿ , âêîòîðîìîáðàòíàÿñâÿçüïðåä- ñòàâëåíàêîìáèíèðîâàíèåìøèôð - òåêñòàè îòêðûòîãîòåêñòà . CFB îáðàòíàÿñâÿçüïîøèôð - òåêñòó Ðåæèìáëî÷íîãîêîäèðî- âàíèÿ , ïðåîáðàçóþùèéíåáîëüøèåïðèáàâêè îòêðûòîãîòåêñòàâøèôð - òåêñòïðèèñïîëü- çîâàíèèñäâèãîâîãîðåãèñòðàâìåñòîïðåîá- ðàçîâàíèÿçàðàçáëîêàöåëèêîì . OFB îáðàòíàÿñâÿçüïîâûõîäó Ðåæèìáëî÷íîãîêîäèðîâàíèÿ , èñïîëüçóþùèéîáðàòíóþñâÿçüïîõîæèìñ CFB îáðàçîì , íîèñïîëüçóþùèéäðóãîéìå- òîäçàïîëíåíèÿñäâèãîâîãîðåãèñòðà . Îáû÷íîñîîáùåíèåèêîäèðóåòñÿ , èäåêîäèðóåòñÿíàîáùåìñåàíñîâîì êëþ÷åèïîèñêñïîñîáà , êîòîðûìîòïðàâèòåëüèïîëó÷àòåëüñîîáùåíèÿ ìîãóòáåçîïàñíîñòèïåðåõâàòàîáìåíÿòüñÿýòèìêëþ÷îì , ìîæåòñòàòü îòäåëüíîéïðîáëåìîé . Ýòîïðîáëåìàîáìåíàêëþ÷àìè . Áèáëèîòåêàïîääåðæèâàåòäâàïðîòîêîëàîáìåíàêëþ÷àìè , ðåøàþ- ùèõýòóïðîáëåìó : ˆ ïðîòîêîëÄèôôè - Õåëëìàíà (DH) îáìåíîòêðûòûìèêëþ÷àìè ìåæäóäâóìÿïîëüçîâàòåëÿìè ( îòïðàâèòåëåìèïîëó÷àòåëåì ); ˆ ïðîòîêîëãðóïïîâîéðàáîòû (WG) èñïîëüçóåòñÿäëÿêîäèðîâà- íèÿäëÿíåñêîëüêèõïîëó÷àòåëåé ; ýòîòïðîòîêîëíåòðåáóåòèñïîëü- çîâàíèÿñåêðåòíîãîèîòêðûòîãîêëþ÷åéîòïðàâèòåëÿ . Òðóäíîñòüèñïîëüçîâàíèÿîòêðûòûõêëþ÷åéäëÿãåíåðàöèèñåàíñî- âîãîêëþ÷àâòîì , êàêïîñëàòüâàøîòêðûòûéêëþ÷îñòàëüíûìïîëü- çîâàòåëÿìòàê , ÷òîáûîííåìîãáûòüïåðåõâà÷åíèïîäìåí¼í . Îáû÷íî ýòóïðîáëåìóðåøàåòÖåíòðÑåðòèôèêàöèè  äîâåðåííàÿîðãàíèçà- öèÿ , êîòîðàÿïîäïèñûâàåò , õðàíèòèðàñïðîñòðàíÿåòîòêðûòûåêëþ÷è . 108 Ðóêîâîäñòâîðàçðàáîò÷èêà Òàáëèöà 11.1. Àëãîðèòì Ðàçìåðáëî- êà Äëèíàêëþ- ÷à Îïèñàíèå Nush 128 256 Nush ñàìàÿ ïîñëåäíÿÿðàç- ðàáîòêà " ËÀÍ Êðèïòî " Wicker98 128 128 Wicker98 îò " ËÀÍ Êðèïòî " íàèáîëååýô- ôåêòèâíûé èèçâåñòíûé áëî÷íûéêîä . Âíàñòîÿ- ùååâðåìÿ îíÿâëÿåòñÿ ëó÷øèìïî âñåìîñíîâíûì ïàðàìåòðàì Âåñòà -2M 1 512 Âåñòà -2M îò " ËÀÍ Êðèïòî " ïîòî÷íûéêîä , çàïîñëåäíèå 5 ëåòñòàâøèé ïðàêòè÷åñêè ñòàíäàðòîì äå - ôàêòîäëÿ çàùèòûýëåê- òðîííûõäî- êóìåíòîâ . Îí èñïîëüçóåòñÿ öåëûìðÿäîì êîììåð÷åñêèõ êîìïàíèé , áàíêîâèêîð- ïîðàöèéâ ÐîññèèèÑÍà . RC4 1 64 Ïîòî÷íûéêîä , õîðîøîèçâåñò- íûéâÑØÀ DES 64 64 Áëî÷íûéêîä DES, õîðîøî èçâåñòíûéâ ìèðå TripleDES 64 192 Áëî÷íûéêîä , èñïîëüçóþùèé äëÿáîëüøåé áåçîïàñíîñòè òðèêëþ÷à DES ÃÎÑÒÐÔ 28147 64 256 Áëî÷íûé êîäÃÎÑÒ ÐÔ 28147 ñòàíäàðòÐÔ FEAL 64 64 Áëî÷íûéêîä FEAL SAFER-64K 64 46 Áëî÷íûéêîä SAFER Ãëàâà 11. Ââåäåíèå 109 Òàáëèöà 11.2. Àëãîðèòì Îïèñàíèå Ïðåäïî÷òèòåëüíûé àëãîðèòìõýøè- ðîâàíèÿ LANS(Notary-S) Àëãîðèòìïîäïè- ñè , ðàçðàáîòàííûé " ËÀÍÊðèïòî " è ïðîôåññîðîìÊëàó- ñîìØíîððîì ( Ãåð- ìàíèÿ ). Âêëþ÷àåò îñíîâíûåýëåìåí- òûíàöèîíàëüíîãî àìåðèêàíñêîãîñòàí- äàðòàöèôðîâîé ïîäïèñè , èáî- ëååýôôåêòèâíóþ ôóíêöèþñæàòèÿ . Gas48,SHA1 DSA Àëãîðèòìïîäïèñè DSA( ÑØÀ ) SHA1 RSA Àëãîðèòìïîäïèñè RSA( ÑØÀ ) MD5 ÃÎÑÒÐÔ 34.10-94 Àëãîðèòìïîäïèñè . ÑòàíäàðòÐÔ ÃÎÑÒÐÔ 34.11-94 LANSECC Àëãîðèòìïîäïèñè LANS íàýëëèïòè- ÷åñêèõêðèâûõ Gas48,SHA1 GOSTECC Àëãîðèòìïîäïèñè íàýëëèïòè÷åñêèõ êðèâûõ . Ñòàíäàðò ÐÔ ÃÎÑÒÐÔ 34.11-01 110 Ðóêîâîäñòâîðàçðàáîò÷èêà Òàáëèöà 11.3. Àëãîðèòì Ðàçìåðõýøà ( â áàéòàõ ) Îïèñàíèå SHA1 20 Àëãîðèòìõýøèðî- âàíèÿ SHA1 SHA 20 Àëãîðèòìõýøèðî- âàíèÿ SHA MD5 16 Àëãîðèòìõýøèðî- âàíèÿ MD5 GAS48 48 Àëãîðèòìõýøèðî- âàíèÿ GAS48 áûë ðàçðàáîòàíâ " ËÀÍ Êðèïòî " êàêîòðà- ñëåâîéñòàíäàðòäëÿ ÐÀÎ " Ãàçïðîì ". ÃÎÑÒ 34.11-94 32 Àëãîðèòìõýøèðî- âàíèÿÃÎÑÒÐÔ 34.11-94 ñòàí- äàðòÐÔ . Äîëæåí èñïîëüçîâàòüñÿ ñîâìåñòíîñàëãî- ðèòìîìïîäïèñè ÃÎÑÒ 34.10-94 Ãëàâà 12. Èíòåðôåéñðàçðàáîòêèïðèëîæåíèé (API) Áèáëèîòåêè 111 Ãëàâà 12. Èíòåðôåéñ ðàçðàáîòêèïðèëîæåíèé (API) Áèáëèîòåêè API Áèáëèîòåêè  ýòîãèáêèé , ìîùíûéèñîâðåìåííûéèíòåðôåéñ . Îíðàçäåëåííàíåñêîëüêîôóíêöèîíàëüíûõóðîâíåé : îñíîâíûå÷àñòè APIctBaseLib,ctMsgLib è ctCertStoreLib. Ñîñòàâëÿþùèåáèáëèîòåêè : Êàæäàÿ÷àñòüÁèáëèîòåêèðàçðàáîò÷èêàïðåäñòàâëÿåòóðîâåíüïðî- öåäóðçàùèòûèíôîðìàöèè : Òàáëèöà 12.1. Áèáëèîòåêà Îïèñàíèå ctBaseLib Çàùèòàèíôîðìàöèèîò íåñàíêöèîíèðîâàííîãîäîñòóïà íèçêîãîóðîâíÿ , óïðàâëåíèå ñåêðåòíûìèêëþ÷àìè . ctMsgLib Ðàáîòàñâûñîêîóðîâíåâûìè ñîîáùåíèÿìèèïîëüçîâàòåëü- ñêèìèñåðòèôèêàòàìè . ctCertStoreLib Îáåñïå÷èâàåòóíèôèöèðîâàí- íûéèíòåðôåéñäëÿõðàíåíèÿ ñåðòèôèêàòîââäîëãîñðî÷íûõ õðàíèëèùàõðàçëè÷íûõòèïîâ . Ôóíêöèè ctBaseLib èñïîëüçóþòäëÿãåíåðàöèèñåêðåòíûõêëþ÷åéâ êîíòåéíåðûñåêðåòíûõêëþ÷åé . Òàêæåîíèìîãóòáûòüèñïîëüçîâàíû äëÿðåàëèçàöèèïðîöåäóðçàùèòûèíôîðìàöèèîòíåñàíêöèîíèðîâàí- íîãîäîñòóïà ( òàêèõ , êàêêîäèðîâàíèåèëèïîäïèñàíèå ) âìåñòîâûñîêî- óðîâíåâûõôóíêöèé ( íàïðèìåð , äëÿêîäèðîâàíèÿçàïèñåéáàçäàííûõ ), èëèêîãäàíåòðåáóåòñÿîáìåíàîòêðûòûìèêëþ÷àìèèîïðåäåëåíèÿîò- ïðàâèòåëÿèëèïîëó÷àòåëÿ . CtMsgLib ïîääåðæèâàåòóïðàâëåíèåïîëüçîâàòåëüñêèìèñåðòèôèêà- òàìèèâûñîêîóðîâíåâûìèñîîáùåíèÿìè . Ñåðòèôèêàò  ýòîïîäïè- ñàííûéîáúåêò , ñîäåðæàùèéîòêðûòûéêëþ÷ïîëüçîâàòåëÿ , åãîèìÿè äðóãèåïàðàìåòðû . Îíèñïîëüçóåòñÿäëÿïåðåäà÷èîòêðûòûõêëþ÷åé . Ñîîáùåíèå  ýòîêîíâåðòñòàíäàðòíîãîôîðìàòà , ñîäåðæàùèéîáðàáî- òàííûåäàííûåèäðóãóþèíôîðìàöèþ , çàâèñÿùóþîòòèïàñîîáùåíèÿ , 112 Ðóêîâîäñòâîðàçðàáîò÷èêà êîòîðàÿìîæåòâêëþ÷àòüïàðàìåòðûàëãîðèòìàèäàííûå , íåîáõîäè- ìûåäëÿòîãî , ÷òîáûîòêðûòüñîîáùåíèå . Ôóíêöèèýòîéáèáëèîòåêè ìîæíîèñïîëüçîâàòüäëÿîáðàáîòêèôàéëîâíåîãðàíè÷åííîãîðàçìåðà . Ôóíêöèè ctCertStoreLib èñïîëüçóþòäëÿõðàíåíèÿñåðòèôèêàòîâ . Îáúåêòû - ñåðòèôèêàòûìîãóòõðàíèòüñÿâõðàíèëèùàõ , ðàñïîëîæåí- íûõíàðàçëè÷íîãîòèïàôèçè÷åñêèõõðàíèëèùàõ ( ëîêàëüíàÿèëèóäà- ë¼ííàÿôàéëîâàÿñèñòåìà , áàçàäàííûõ ,LDAP èëèëþáîåïîëüçî- âàòåëüñêîåóñòðîéñòâîõðàíåíèÿ ). Îòäåëüíûåìîäóëè  ïðîâàé- äåðûôèçè÷åñêèõõðàíèëèù (PhysicalStoreProvidersPSP) óïðàâëÿþòõðàíèëèùàìèîïðåäåë¼ííûõòèïîâ . Íåñëåäóåòîáðàùàòü- ñÿê PSP íàïðÿìóþ , íóæíîòîëüêîïðèêðåïèòü ( çàðåãèñòðèðîâàòü ) PSP ê ctCertStoreLib èçàòåìèñïîëüçîâàòüóíèôèöèðîâàííûéèíòåð- ôåéñäëÿðàáîòûñðàçëè÷íûìèõðàíèëèùàìèñåðòèôèêàòîâ . ËÀÍ Êðèïòî  ðàñïðîñòðàíÿåò PSP äëÿôàéëîâûõõðàíèëèù (PSPFile), áàçäàííûõ÷åðåç ADO(PSPADO),LDAP- õðàíèëèùñåðòèôèêàòîâ (PSPLDAP); ëþáîéìîæåòíàïèñàòüñîáñòâåííûé PSP äëÿèñïîëüçî- âàíèÿâ ctCertStoreLib. ÌîäåëüïðîãðàììèðîâàíèÿÁèáëèîòåêè : Ðàçíîîáðàçíûåîáúåêòûçàùèòûèíôîðìàöèèîòíåñàíêöèîíèðîâàí- íîãîäîñòóïà ( êîíòåéíåðûñåêðåòíûõêëþ÷åé , êëþ÷è , ñåðòèôèêàòû , ñîîáùåíèÿ , õðàíèëèùàèò . ï .) ïðåäñòàâëÿþòñÿâÁèáëèîòåêåñïîìî- ùüþêîíòåêñòîâ . Êîíòåêñòâêëþ÷àåòâñåáÿäàííûå , îòíîñÿùèåñÿê îáúåêòó , èñåãîïîìîùüþïðîèçâîäèòñÿóïðàâëåíèåýòèìèäàííûìè . Ïðèëîæåíèÿìîãóòîñóùåñòâëÿòüäîñòóïêîáúåêòàìïîèõîïèñàòå- ëÿìêîíòåêñòîâ . Âöåëîìèñïîëüçîâàíèåîáúåêòàçàùèòûèíôîðìàöèè âêëþ÷àåòñëåäóþùèåøàãè : ˆ îòêðûâàåìêîíòåêñòîáúåêòà , ïîëó÷àÿåãîîïèñàòåëüíóþ÷àñòü ; ˆ ïîëó÷àåìèëèóñòàíàâëèâàåìñâîéñòâàîáúåêòà , âûïîëíÿåìíåêîòî- ðûåîïåðàöèèñîáúåêòîì , ïåðåäàâàÿåãîîïèñàòåëüíóþ÷àñòüêîí- òåêñòàïðîöåäóðàìçàùèòûèíôîðìàöèè ; ˆ çàêðûâàåìêîíòåêñòîáúåêòà , äåëàÿíåäåéñòâèòåëüíûìåãîîïèñà- òåëüíóþ÷àñòü . Ãëàâà 13. Îñíîâíàÿáèáëèîòåêà (ctBaseLib) 113 Ãëàâà 13. Îñíîâíàÿ áèáëèîòåêà (ctBaseLib) Ôóíêöèèáàçîâîéáèáëèîòåêèçàùèòûèíôîðìàöèè (ctBaseLib) ÿâëÿ- þòñîáîéíàèáîëååãèáêèåèíèçêîóðîâíåâûåñðåäñòâàäëÿðàçðàáîòêè ïðèëîæåíèéçàùèòûèíôîðìàöèè . CtBaseLib óïðàâëÿåòñëåäóþùèìèîáúåêòàìèçàùèòûèíôîðìàöèè : Êîíòåéíåðñåêðåòíûõêëþ÷åé , êîòîðûéàññîöèèðîâàíñïîëüçîâàòåëåì ñèñòåìûáåçîïàñíîñòè . Âûìîæåòåîñóùåñòâëÿòüäîñòóïêêîíòåéíå- ðàìêëþ÷åé÷åðåçêîíòåêñòûçàùèòûèíôîðìàöèè , êêîòîðûìïðè- êðåïëåíûêîíòåéíåðûêëþ÷åé . ˆ Çàäà÷èçàùèòûèíôîðìàöèè ( ñåêðåòíîñòü , öåëîñòíîñòü , àóòåíòè- ôèêàöèÿ ), êîòîðûåîòêðûâàþòñÿâíóòðèêîíòåêñòàçàùèòûèíôîð- ìàöèèèïðåäñòàâëÿþòñîáîéðàçëè÷íûåàëãîðèòìû . Çàäà÷àçàùè- òûèíôîðìàöèèóïðàâëÿåòâñåìèäàííûìè , òðåáóåìûìèäëÿâû- ïîëíåíèÿîïðåäåë¼ííîéîïåðàöèèçàùèòûäàííûõ , íàïðèìåð , êî- äèðîâàíèÿèëèïîäïèñè . ˆ Îòêðûòûåêëþ÷è , íåîáõîäèìûåäëÿáîëüøèíñòâàîïåðàöèéçàùè- òûèíôîðìàöèè . Îíèïåðåäàþòñÿñðåäèïîëüçîâàòåëåéñèñòåìû áåçîïàñíîñòèâôîðìåêàïñóëûñîòêðûòûìêëþ÷îì . Äëÿáèáëèî- òåêè ctBaseLib íåèìååòçíà÷åíèÿ , êàêèìîáðàçîìïðîèñõîäèòïå- ðåäà÷àèîáìåíñåêðåòíûõêëþ÷åé , ðàâíîèêàêãàðàíòèðîâàíèåèõ ïîäëèííîñòè . Ôóíêöèè ctBaseLib Àëãîðèòìûçàùèòûèíôîðìàöèèèñïîëüçóþòïàðàìåòðû A,P è Q, íàçûâàåìûåòðèïëåòàìè APQ.CtBaseLib ïîääåðæèâàåòõðàíåíèåýòèõ òðèïëåòîâ , ÷òîÿâëÿåòñÿãàðàíòèåéíàäåæíîéçàùèòûèíôîðìàöèè . Áèáëèîòåêàïðåäîñòàâëÿåòïîëíûéíàáîðôóíêöèéäëÿðàçðàáîòêè ïðèëîæåíèé : 1. Ôóíêöèèäëÿðàáîòûñïàðàìåòðàìèïðîâàéäåðàâêëþ÷àþòâñåáÿ : ˆ ôóíêöèþ , âîçâðàùàþùóþçíà÷åíèÿñëåäóþùèõïàðàìåòðîâ ïðîâàéäåðà ctBaseLib: ˆ èíôîðìàöèÿîâåðñèèáèáëèîòåêè ˆ èíôîðìàöèÿîáóêàçàííîìàëãîðèòìå ˆ èíôîðìàöèÿîáîâñåõïîääåðæèâàåìûõàëãîðèòìàõ 114 Ðóêîâîäñòâîðàçðàáîò÷èêà ˆ òðèïëåò APQ, àññîöèèðîâàííûéñîïðåäåëåííûìèíäåêñîì APQ èàëãîðèòìîì ˆ èíäåêñòðèïëåòà APQ èçíà÷åíèÿäëÿóêàçàííîãîàëãîðèòìà ( èñïîëüçóÿýòîòïàðàìåòð , Âûìîæåòåóñòàíîâèòüñïåöèàëü- íûéòðèïëåò APQ äëÿäàííîãîïðèëîæåíèÿ ) ˆ ìàêñèìàëüíîåêîëè÷åñòâîõýøèðóåìûõòðèïëåòîâ APQ ˆ ïàðàìåòðäëÿîñâîáîæäåíèÿõýøèðîâàííûõòðèïëåòîâ APQ, êîòîðûåíåèñïîëüçóþòñÿíèêàêèìèçàäà÷àìèèêîíòåêñòàìè ˆ îòëàäî÷íàÿèíôîðìàöèÿîáîòêðûòûõêîíòåêñòàõ ˆ îòëàäî÷íàÿèíôîðìàöèÿîõýøèðîâàííûõòðèïëåòàõ APQ ˆ ôóíêöèþ , íàñòðàèâàþùóþïàðàìåòðûáèáëèîòåêèïðîâàéäåðà , ãäåâûìîæåòåèçìåíÿòüçíà÷åíèÿïàðàìåòðîâ , ïðèâåäåííûõ âûøå . 2. Ôóíêöèèêîíòåêñòàçàùèòûèíôîðìàöèè ( êîíòåéíåðîâñåêðåòíûõ êëþ÷åé ): Îíèäàþòâîçìîæíîñòü : ˆ äîáàâèòüññûëêèâîïèñàòåëüêîíòåêñòàçàùèòûèíôîðìàöèè ˆ ñîçäàòüêîïèþêîíòåêñòà ˆ âîçâðàòèòüèëèíàñòðîèòüïàðàìåòðûêîíòåêñòà ˆ óïðàâëÿòüîïåðàöèÿìèññåêðåòíûìêëþ÷îìâíóòðèêîíòåéíå- ðàñåêðåòíîãîêëþ÷à 3. Ôóíêöèèäëÿóïðàâëåíèÿçàäà÷àìèçàùèòûèíôîðìàöèèèîòêðû- òûìèêëþ÷àìè , êîòîðûåäàþòâîçìîæíîñòü : ˆ ñîçäàòüêîïèþçàäà÷èçàùèòûèíôîðìàöèè ˆ âîçâðàòèòüèëèíàñòðîèòüïàðàìåòðûçàäà÷èçàùèòûèíôîð- ìàöèè - èìïîðòèðîâàòü ( ýêñïîðòèðîâàòü ) îòêðûòûéêëþ÷âçà- äà÷óçàùèòûèíôîðìàöèè  êîäèðîâàòü ( äåêîäèðîâàòü ) áó- ôåðñòåêñòîì ˆ âû÷èñëèòüõýøäàííûõèïîäïèñàòüåãîçíà÷åíèå  ïðîâåðèòü çíà÷åíèåïîäïèñèõýøà Ñëåäóþùèåîáúåêòûáèáëèîòåêèîïðåäåëåíûêàêêîíñòàíòû ctBaseLib, ÷òîäàåòâîçìîæíîñòüáûñòðîèïðîñòîðàáîòàòüñáèá- ëèîòåêîé : Ãëàâà 13. Îñíîâíàÿáèáëèîòåêà (ctBaseLib) 115 ˆ òèïûàëãîðèòìîâ : ïîäïèñè \ ïðîâåðêèïîäïèñè , êîäèðîâà- íèÿ \ äåêîäèðîâàíèÿ , õýøèðîâàíèÿ , íåîïðåäåëåííûéòèï . ˆ èäåíòèôèêàòîðûàëãîðèòìîâ : äëÿñëåäóþùèõàëãîðèòìîâ ïðåäóñìîòðåíûñâîèèäåíòèôèêàòîðû : Àëãîðèòìûêîäèðîâàíèÿ : Áëî÷íûåêîäû Safer,DES,TripleDES, FEAL, ÃÎÑÒÐÔ 28147,Wicker98,Nush; ïîòî÷íûåêîäû Vesta-2M, RC4. Àëãîðèòìûïîäïèñè : ÃÎÑÒÐÔ ,DSA,LANS,RSA,Gost. D1 Àëãîðèòìûõýøèðîâàíèÿ : ÃÎÑÒÐÔ ,SHA,SHA-1,MD5, GAS48. Âíåêîòîðûõñèòóàöèÿõìîãóòáûòüïîëåçíûñëåäóþùèåèäåíòè- ôèêàòîðû : a. Èñïîëüçîâàòüàëãîðèòìïîäïèñè , ïðèíÿòûéïîóìîë÷àíèþ ( õðàíÿùèéñÿâêîíòåéíåðåêëþ÷à ). b. Èñïîëüçîâàòüàëãîðèòìêîäèðîâàíèÿ , ïðèíÿòûéïîóìîë÷à- íèþ ( õðàíÿùèéñÿâêîíòåéíåðåêëþ÷à ). ˆ ðåæèìûêîäèðîâàíèÿ :ECB,CBC,CFB,OFB, àòàêæå C,G, GB( âàëãîðèòìåÃÎÑÒ 28147). ˆ ñòàíäàðòíûåèíäåêñû APQ ñòàíäàðòíûåòðèïëåòû APQ äëÿîòêðûòûõêëþ÷åéäëèíîé 512,1024,2048,4096 áèò (A,P è Q ïàðàìåòðû , èñïîëüçóåìûåàëãîðèòìàìèçàùèòûèíôîð- ìàöèè ). ˆ ïðèíÿòûåïîóìîë÷àíèþèäåíòèôèêàòîðûñåêðåòíûõêëþ÷åé . ˆ ïàðàìåòðûêîíòåêñòàçàùèòûèíôîðìàöèè ( íàïð ., òàêèåêàê èíôîðìàöèÿîáàëãîðèòìàõ , ðàçðåøåííûõäëÿèñïîëüçîâàíèÿ âêîíòåéíåðåêëþ÷åé , èëèçàäàííûåïîóìîë÷àíèþâêîíòåéíå- ðåêëþ÷åéàëãîðèòìûïîäïèñè ), ˆ ïàðàìåòðûçàäà÷çàùèòûèíôîðìàöèè ( íàïð ., òàêèåêàêèäåí- òèôèêàòîðñåêðåòíîãîêëþ÷à , êîòîðûéíóæíîèñïîëüçîâàòüâ äàííîéçàäà÷å ) ˆ êîäûâîçâðàòà . Âäîêóìåíòàöèèêáèáëèîòåêåïðèâåäåíûñëåäóþùèåïðèìåðû ðàáîòûñ ctBaseLib: ïåðå÷èñëåíèåàëãîðèòìîâ ˆ ïîëó÷åíèåîòêðûòîãîêëþ÷à 116 Ðóêîâîäñòâîðàçðàáîò÷èêà ˆ êîäèðîâàíèåèäåêîäèðîâàíèåäàííûõ ˆ ïîäïèñàíèåèâåðèôèêàöèÿäàííûõ ˆ èìíîãèåäðóãèåïðèìåðû . Ãëàâà 14. Áèáëèîòåêàñåðòèôèêàòîâèñîîáùåíèé (ctMsgLib) 117 Ãëàâà 14. Áèáëèîòåêà ñåðòèôèêàòîâèñîîáùåíèé (ctMsgLib) Áèáëèîòåêàñåðòèôèêàòîâèñîîáùåíèé (ctMsgLib) ïðåäîñòàâëÿåò âûñîêîóðîâíåâûéèíòåðôåéñêïðîöåäóðàìóïðàâëåíèÿñåðòèôèêàòà- ìèèîáðàáîòêèñîîáùåíèé . Îáùèéîáçîð : Áèáëèîòåêàïîääåðæèâàåòâñåîáùåèñïîëüçóåìûåñåðòèôèêàöèîí- íûåîáúåêòû : c åðòèôèêàò  ïîäïèñàííûåäàííûå , ñîäåðæàùèåèìÿïîëüçîâàòå- ëÿ , îòêðûòûéêëþ÷ , ïàðàìåòðûàëãîðèòìàèäðóãóþèíôîðìàöèþ . Îáû÷íîñåðòèôèêàòûïîäïèñûâàåòäîâåðåííàÿîðãàíèçàöèÿ , íàçûâà- åìàÿ CerticationAuthority(CA) èëèÖåíòðîìÑåðòèôèêàöèè ( ÖÑ ). Ýòîîáåñïå÷èâàåòñåêðåòíûéñïîñîáîáìåíàîòêðûòûìèêëþ÷àìèìåæ- äóïîëüçîâàòåëÿìèñèñòåìûáåçîïàñíîñòè . çàïðîñíàñåðòèôèêàò  ïîäïèñàííûåäàííûå , ñîäåðæàùóþèíôîð- ìàöèþ , òðåáóåìóþäëÿñîçäàíèÿñåðòèôèêàòà . Çàïðîñïîäïèñûâàåòñÿ ïîëüçîâàòåëåìèîòïðàâëÿåòñÿâÖÑíàîáðàáîòêó . ÖÑñîçäà¼òñåðòè- ôèêàòïîèíôîðìàöèèçàïðîñà . CMC çàïðîñ / îòâåò  ýòîòîáúåêòèñïîëüçóåòñÿäëÿâçàèìîäåéñòâèÿ ñÖÑ . Çàïðîñìîæåòñîäåðæàòüíåñêîëüêîçàïðîñîâíàñåðòèôèêàöèþ èíàáîðäîïîëíèòåëüíûõàòðèáóòîâ . ÎòâåòïîñûëàåòñÿÖåíòðîìÑåð- òèôèêàöèèíàêàæäûéçàïðîñ CMC. ñïèñîêàííóëèðîâàííûõñåðòèôèêàòîâ (Certicaterevokationlist, CRL) ïîäïèñàííûåäàííûå , ñîäåðæàùèåñïèñîêñåðòèôèêàòîâ , êî- òîðûåáûëèàííóëèðîâàíû ( îòìåíåíû ) âÖÑèíåìîãóòèñïîëüçîâàòü- ñÿñìîìåíòààííóëèðîâàíèÿ .CRL ïîäïèñûâàåòñÿÖÑèïåðèîäè÷åñêè ðàññûëàåòñÿïîëüçîâàòåëÿì . ñïèñîêäîâåðåííûõñåðòèôèêàòîâ (Certicatetrustlist,CTL) êàï- ñóëàñäàííûìè , ñîäåðæàùèìèñïèñîêñåðòèôèêàòîâ , êîòîðûåÿâëÿþò- ñÿäîâåðåííûìèíàèñïîëüçîâàíèåáåçïðîâåðêèïîäïèñè . Îíäîëæåí ñîäåðæàòü , êàêìèíèìóì , ñàìîïîäïèñàííûéñåðòèôèêàòÖÑ . Êàæäûé ïîëüçîâàòåëüõðàíèò CTL íàñâî¼ìêîìïüþòåðå . öåïüñåðòèôèêàòîâ  êàïñóëàñäàííûìè , ñîäåðæàùàÿíåñêîëüêî ñåðòèôèêàòîâ , ïðåäñòàâëÿþùèìèïóòüñåðòèôèêàöèè . öåïüîáúåêòîâ  êàïñóëàñäàííûìè , ñîäåðæàùàÿâíóòðèíàáîð ëþáûõîáúåêòîâ . 118 Ðóêîâîäñòâîðàçðàáîò÷èêà Ñåðòèôèêàòû , èñïîëüçóåìûåâíàñòîÿùåéáèáëèîòåêå , ïîëíîñòüþ óäîâëåòâîðÿåòìåæäóíàðîäíîìóñòàíäàðòó X.509( ñòàíäàðò , èñïîëüçó- åìûéäëÿõðàíåíèÿäîïîëíèòåëüíîéèíôîðìàöèèâñåðòèôèêàöèîííûõ îáúåêòàõ ), âêëþ÷àÿåãîðàñøèðåíèÿâåðñèè 3. êîíâåðòñîîáùåíèé  ñîîáùåíèÿ , ñîäåðæàùèåêðèïòîãðàôè÷åñêè îáðàáîòàííûåäàííûåèñâÿçàííóþñíèìèèíôîðìàöèþ , íåîáõîäèìóþ äëÿåãîîòêðûâàíèÿ . CtMsgLib ïîääåðæèâàåòîïðåäåë¼ííîåêîëè÷åñòâîîáùåèñïîëüçóå- ìûõòèïîâ ( ñòàíäàðòà PKCS#7) ñîäåðæèìîãîñîîáùåíèéäëÿõýøè- ðîâàííûõ , ïîäïèñàííûõèëèçàêîäèðîâàííûõäàííûõ . Ôîðìàò PKCS#7 îïèñûâàåòîáùèéñèíòàêñèññîîáùåíèÿ . Ýòîòñèí- òàêñèñäîïóñêàåòðåêóðñèþ , ïðèêîòîðîé , íàïðèìåð , îäèíêîíâåðòìî- æåòíàõîäèòüñÿâíóòðèäðóãîãî , èëèïîëüçîâàòåëüìîæåòïîäïèñàòü äàííûå , õîòÿîíèáûëèóæåïîìåùåíûâêîíâåðòäðóãèìïîëüçîâàòå- ëåì . Òàêæåäîñòóïíûïðîèçâîëüíûåðàñøèðåíèÿ  àòðèáóòû , òàêèå êàêïîäïèñàííîåâðåìÿ , ýòèàòðèáóòûïîäïèñûâàþòñÿâìåñòåññîäåð- æèìûìêîíâåðòà . Ôóíêöèèáèáëèîòåêè ctMsgLib ïðåäóñìàòðèâàþòóïðàâëåíèåñåðòè- ôèêàòàìèèîáðàáîòêîéñîîáùåíèé . Îíèïðåäîñòàâëÿþòâîçìîæíîñòü : - îòêðûòüíîâûéêîíòåêñòäëÿîáúåêòàóêàçàííîãîòèïà - äîáàâèòü ññûëêóâêîíòåêñò - çàêðûòüêîíòåêñòèîñâîáîäèòüçàõâà÷åííóþïàìÿòü - ïîëó÷èòüñâîé- ñòâàêîíòåêñòàîáúåêòà - óñòàíîâèòüñâîéñòâàêîíòåêñòàîáúåêòà - ïåðåäàâàòüäàííûåìåæäóêîíòåêñòàìè , äîáàâëÿÿîäèíîáúåêòêî äðóãîìó - ôèêñèðîâàòüèïîäïèñûâàòüäàííûåîáúåêòà - ïðîâåðèòüïîä- ëèííîñòüïîëåéèïîäïèñèîáúåêòà - ïîëó÷èòüèíôîðìàöèþîïîñëåäíåé îøèáêå Ñëåäóþùèåñòðóêòóðû ctMsgLib ñîäåðæàòâñþíåîáõîäèìóþäëÿ ðàáîòûèíôîðìàöèþ : ˆ èíôîðìàöèÿîáàëãîðèòìåñåðòèôèêàòà ˆ èíôîðìàöèÿîá OID( óíèêàëüíûéèäåíòèôèêàòîðàëãîðèòìà . Èñ- ïîëüçóåòñÿäëÿîïèñàíèÿàëãîðèòìîâñîòêðûòûìêëþ÷îìèïîäïè- ñèâñåðòèôèêàöèîííûõîáúåêòàõôîðìàòà X.509) ˆ èíôîðìàöèÿîñâîéñòâåîáúåêòà - ñåðòèôèêàòà ˆ èíôîðìàöèÿîðåçóëüòàòåïîñëåäíåãîâûçîâàôóíêöèè ˆ èíôîðìàöèÿîñåðòèôèêàòåïîëüçîâàòåëå Êêîíñòàíòàì ctMsgLib îòíîñÿòñÿ : Ãëàâà 14. Áèáëèîòåêàñåðòèôèêàòîâèñîîáùåíèé (ctMsgLib) 119 ˆ ïàðàìåòðûïðîâàéäåðà ( íàïð ., èíôîðìàöèÿîâåðñèèáèáëèîòåêè , èëèîçíà÷åíèè OID, âîçâðàùàåìàÿïîèäåíòèôèêàòîðó OID) ˆ ïàðàìåòðûêîíòåêñòàîáúåêòà - ñåðòèôèêàòà ( âêëþ÷àåòñòàòóñêîí- òåêñòà , èíôîðìàöèþîïîëüçîâàòåëå , èíôîðìàöèþîáîòêðûòîì êëþ÷å ) ˆ òèïûèïîëÿîáúåêòîâ : ñåðòèôèêàò , çàïðîñíàñåðòèôèêàò ,CMC çàïðîñ / îòâåò , ñïèñîêàííóëèðîâàííûõñåðòèôèêàòîâ , ñïèñîêäîâå- ðåííûõñåðòèôèêàòîâ , öåïüñåðòèôèêàòîâ , öåïüîáúåêòîâ , êîíâåðò ñîîáùåíèé ˆ òèïûñîäåðæèìîãîñîîáùåíèé : äàííûå , õýøèðîâàííûéòèï , ïîä- ïèñàííûéòèï , çàêîäèðîâàííûéòèï , çàêîäèðîâàííûéñïàðîëåì , çààðõèâèðîâàííûé ˆ òèïûïîëåéîáúåêòîâ : áóëåâî , áîëüøîåöåëîåïåðåìåííîéäëèíû , áèòîâàÿñòðîêà , íîìåð , èäåíòèôèêàòîðîáúåêòà (OID), äàòàè âðåìÿ , òåêñòîâàÿñòðîêà , äâîè÷íûåäàííûå , ñîñòàâíîåïîëå ˆ èíôîðìàöèÿîïîëüçîâàòåëå ˆ ðàñøèðåíèÿÕ .509( çäåñüõðàíèòñÿäîïîëíèòåëüíàÿèíôîðìàöèÿî ñåðòèôèêàöèîííûõîáúåêòàõ ) ˆ èäåíòèôèêàòîðûàëãîðèòìîâ , çíà÷åíèÿ OID ˆ êîäûâîçâðàòà Ñïîìîùüþ ctMsgLib Âûìîæåòåñâîáîäíîðàáîòàòüññåðòèôèêàöè- îííûìèîáúåêòàìèèñîîáùåíèÿìè . Âäîêóìåíòàöèè (.chm) ê . Áèáëèî- òåêåïðèâåäåíûïðèìåðû : ñîçäàíèÿñåðòèôèêàòàïîçàïðîñó ñîçäàíèÿçàêîí÷åííîãîñîîáùåíèÿ èäðóãèåïðèìåðû . ˆ ñîçäàíèÿçàïðîñàíàñåðòèôèêàò 120 Ðóêîâîäñòâîðàçðàáîò÷èêà Ãëàâà 15. Áèáëèîòåêà õðàíåíèÿñåðòèôèêàòîâ (ctStoreLib) Áèáëèîòåêàõðàíåíèÿñåðòèôèêàòîâ CerticateStoreLibrary (ctCertStoreLib) ïðåäíàçíà÷åíàäëÿâûçîâàôóíêöèéõðàíåíèÿñåðòè- ôèêàòîâ . Îáùèåïðèíöèïû : export:Commandnotfound. Ïîëüçîâàòåëüñèñòåìûìîæåòñîáðàòü íàñâîåìêîìïüþòåðåìíîæåñòâîñåðòèôèêàòîâ . Êàêïðàâèëî , óïîëü- çîâàòåëÿõðàíÿòñÿñåðòèôèêàòûèçäàòåëÿ ( ÑÀ ), åãîñîáñòâåííûåñåð- òèôèêàòûèñåðòèôèêàòûäðóãèõïîëüçîâàòåëåé . Äëÿêàæäîãîïîëü- çîâàòåëÿìîæåòñóùåñòâîâàòüíåñêîëüêîñåðòèôèêàòîâ . Äëÿêàæäîãî ñåðòèôèêàòàäîëæíàñóùåñòâîâàòüöåïî÷êàïðîâåðÿþùèõñåðòèôèêà- òîâ , êîòîðàÿîáåñïå÷èâàåòïîäëèííîñòüñåðòèôèêàòàèïðàâèëüíîñòü äàííûõâíåì . Õðàíèëèùàñåðòèôèêàòîâèñïîëüçóþòñÿäëÿõðàíåíèÿñàìèõñåðòè- ôèêàòîâèâñåõîáúåêòîâ , îòíîñÿùèõñÿêýòèìñåðòèôèêàòàì . Ôóíê- öèè ctCertStoreLib ïîçâîëÿþòñîçäàâàòüõðàíèëèùàñåðòèôèêàòîâ , äî- áàâëÿòü / íàõîäèòüîáúåêòûâ / èçõðàíèëèùà . Äëÿâûáîðî÷íîãîíàõî- æäåíèÿîáúåêòàèñïîëüçóåòñÿçàïðîñïîçàäàííûìñâîéñòâàìîáúåêòà . Õðàíèëèùàñåðòèôèêàòîâìîãóòáûòüâñòðîåíûâðàçëè÷íûåòèïû ôèçè÷åñêèõõðàíèëèù ( ïðèìåð : ôàéëîâàÿñèñòåìà , áàçàäàííûõèëè LDAP). Äëÿêàæäîãîòèïàõðàíèëèùàñóùåñòâóåòñîîòâåòñòâóþùèé ïðîâàéäåðôèçè÷åñêîãîõðàíèëèùà (PhysicalStoreProvider,PSP) ïðè- êðåïëåííûéê ctCertStoreLib. Ôóíêöèèäëÿðàáîòûñõðàíèëèùàìèñåðòèôèêàòîâïðåäîñòàâëÿþò øèðîêèåâîçìîæíîñòèäëÿðàáîòûñõðàíèëèùàìèñåðòèôèêàòîâ .  áèáëèîòåêåïðåäóñìîòðåíûâîçìîæíîñòè : - ñîçäàòüíîâîåèëèîòêðûòüñóùåñòâóþùååõðàíèëèùåäëÿïîñëåäó- þùåãîäîñòóïà - äîáàâèòüññûëêóâêîíòåêñòõðàíèëèùà - îñâîáîäèòüîïèñàòåëüõðàíèëèùà , çàâåðøàþùèéòåêóùèéäîñòóï êõðàíèëèùó - ïîëó÷èòüïàðàìåòðûáèáëèîòåêèèõðàíèëèùà - óñòàíîâèòüïàðàìåòðûáèáëèîòåêèèëèêîíòåêñòà - äîáàâèòüîáúåêò ñåðòèôèêàòàâîòêðûòîåõðàíèëèùå - äîáàâèòüõðàíèëèùåâñïèñîê õðàíèëèù Êîíñòàíòû ctCertStoreLib ïðåäóñìàòðèâàþòâñåâîçìîæíûåïàðàìåò- ðûäëÿðàáîòûñõðàíèëèùåìñåðòèôèêàòîâ . Îíèâêëþ÷àþòâñåáÿ : ïàðàìåòðûïðîâàéäåðà : Ãëàâà 15. Áèáëèîòåêàõðàíåíèÿñåðòèôèêàòîâ (ctStoreLib) 121 èíôîðìàöèÿîâåðñèèáèáëèîòåêè ïàðàìåòðäëÿðåãèñòðàöèèèëèóäàëåíèÿèçñïèñêàçàðåãèñòðèðîâàí- íûõòèïîâ PSP âûõîäíàÿèíôîðìàöèÿîáîòêðûòûõêîíòåêñòàõõðà- íèëèùàïðèîòëàäêåïàðàìåòðûõðàíèëèùà : òèï PSP ïàðàìåòðû PSP ïðåäîïðåäåëåííûåèëèîïðåäåëåííûåíåêîòîðûì PSP îòëàäî÷íàÿèíôîðìàöèÿîáîòêðûòûõêîíòåêñòàõõðàíèëèù ïàðàìåòðûçàïðîñà : ÷èñëîíàéäåííûõîáúåêòîâ ðàçðåøåíèåèòåðàöèèðåçóëüòàòîâçàïðîñà UID âõðàíèëèùåòåêóùå- ãîîáúåêòà êîäûâîçâðàòà ÂäîêóìåíòàöèèêÁèáëèîòåêåîïèñàíûïðèìåðû : ˆ ñîçäàíèÿõðàíèëèùàñåðòèôèêàòîâ ˆ äîáàâëåíèÿîáúåêòîâêõðàíèëèùó ˆ ïîèñêâõðàíèëèùå ÂíàñòîÿùååâðåìÿÁèáëèîòåêàÿâëÿåòñÿñàìûìíàäåæíûìèóäîá- íûìñðåäñòâîìðàçðàáîòêèïðèëîæåíèé , èñïîëüçóþùèõçàùèòóèí- ôîðìàöèè . ×àñòü IV. Ðåäàêòîð øðèôòîâ Pfaedit 124 Ðóêîâîäñòâîðàçðàáîò÷èêà Ãëàâà 16. Âñòóïëåíèå Pfaedit ðåäàêòîðøðèôòîâ , êîòîðûéïîçâîëÿåòñîçäàâàòüèðåäàê- òèðîâàòüøðèôòûâðàçëè÷íûõôîðìàòàõ , àòàêæåïðåîáðàçîâûâàòü èõèçîäíîãîôîðìàòàâäðóãîé . Ïðèçàïóñêåïðîãðàììûáåçïàðàìåòðîâïîÿâëÿåòñÿäèàëîãâûáîðà ôàéëà , äàþùèéâîçìîæíîñòüâûáðàòüôàéë ( û ) øðèôòîâäëÿðåäàê- òèðîâàíèÿèëèñîçäàòüíîâûé . Ôîðìàòûøðèôòîâ , ïîääåðæèâàåìûå Pfaedit, ìîæíîðàçäåëèòüíà äâåãðóïïû : ðàñòðîâûåèâåêòîðíûå . Êâåêòîðíûìîòíîñÿòñÿ PostScript Type1(PFA/PFB+AFM; GSF), PostScript Ãëàâà 17. Âèäûîêîí 125 Ãëàâà 17. Âèäûîêîí Ïðèðàáîòåñîøðèôòàìè Pfaedit èñïîëüçóåòíåñêîëüêîðàçëè÷íûõ âèäîâîêîí : îêíîøðèôòà , îêíîðåäàêòèðóåìîãîñèìâîëàèîêíîìåò- ðèê . Êàæäîåîêíîñîäåðæèòìåíþ , ñîäåðæèìîåêîòîðîãî , àòàêæå ðåçóëüòàòäåéñòâèÿêîìàíäðàçëè÷àþòñÿâçàâèñèìîñòèîòðÿäàóñëî- âèé . Îêíîøðèôòà Âîêíåøðèôòà (17.1) îòîáðàæàþòñÿâñåñèìâîëûðåäàêòèðóåìîãî øðèôòà . Îíîïðåäíàçíà÷åíîäëÿðàáîòûñîâñåìøðèôòîìèëèñ îòäåëüíûìèñèìâîëàìèöåëèêîì . Íàèáîëåå÷àñòîâûïîëíÿåìûåâýòîì îêíåîïåðàöèè  âûäåëåíèåñèìâîëîâèîòêðûòèåîêíàñèìâîëàäëÿ ðåäàêòèðîâàíèÿ . Ðèñóíîê 17.1. Îêíîøðèôòà Äëÿâûäåëåíèÿîäíîãîñèìâîëàäîñòàòî÷íîù¼ëêíóòüíàí¼ìëåâîé êëàâèøåéìûøè ; äâîéíîéùåë÷îêïðèâåä¼òêîòêðûòèþîêíàðåäàêòè- ðîâàíèÿñèìâîëà . Äëÿâûäåëåíèÿíåñêîëüêèõñèìâîëîâïîäðÿäíàäî ù¼ëêíóòüíàïåðâîìèçâûäåëÿåìûõñèìâîëîâëåâîéêëàâèøåéìûøè è , óäåðæèâàÿå¼íàæàòîé , ïåðåìåñòèòüêóðñîðêïîñëåäíåìóâûäåëÿå- ìîìóñèìâîëó . 126 Ðóêîâîäñòâîðàçðàáîò÷èêà Äîáàâëÿòüñèìâîëûêâûäåëåíèþìîæíî , óäåðæèâàÿíàæàòîéêëà- âèøó Shift . Ïîâòîðíûéùåë÷îêíàóæåâûäåëåííîìñèìâîëåïðèíà- æàòîéêëàâèøå Shift ïðèâåä¼òêèñêëþ÷åíèþýòîãîñèìâîëàèçâûäå- ëåíèÿ . Îêíîñèìâîëà Ðèñóíîê 17.2. Îêíîðåäàêòèðóåìîãîñèìâîëà ( êîíòóð ) Îêíîðåäàêòèðóåìîãîñèìâîëàñîäåðæèòêîíòóð (17.2) èëèðàñòð (17.3) ñèìâîëàèïîçâîëÿåòèçìåíÿòüêàêñèìâîëöåëèêîì , òàêèåãî îòäåëüíûå÷àñòè . Âìåñòåñýòèìîêíîìîòêðûâàþòñÿäâåïàíåëè : ñîñëîÿìèèñèíñòðóìåíòàìè . Ñîñòàâýòèõïàíåëåéäëÿâåêòîðíûõ èðàñòðîâûõøðèôòîâðàçëè÷åí ( äàëüíåéøååîïèñàíèåîòíîñèòñÿê âåêòîðíûìøðèôòàì ). Ïàíåëüñëî¼âïîçâîëÿåòâêëþ÷àòü / âûêëþ÷àòüîòîáðàæåíèåñëî¼âè âûáèðàòü , êêàêîìóèçíèõáóäóòîòíîñèòüñÿïîñëåäóþùèåêîìàíäû . Ïîääåðæèâàåìûåñëîè : ïåðåäíåãîïëàíà , ôîíà , íàïðàâëÿþùèõ , èí- ñòðóêöèé (Type1hinting èëè Ãëàâà 17. Âèäûîêîí 127 Ðèñóíîê 17.3. Îêíîðåäàêòèðóåìîãîñèìâîëà "( ðàñòðîâûéøðèôò ) Ïàíåëüèíñòðóìåíòîâñîäåðæèò 14 èíñòðóìåíòîâ , êðàòêîîïèñàííûõ âñëåäóþùåìïîäðàçäåëå . Èíñòðóìåíòû  Óêàçàòåëü  ïîçâîëÿåòâûäåëÿòüèïåðåìåùàòüòî÷êèêîíòóðàèëè ñàìèêîíòóðûñèìâîëà . Âûäåëåíèåïðîèçâîäèòñÿùåë÷êîìíàíóæíûõ òî÷êàõèëèêîíòóðàõèëèâûäåëåíèåìïðèíàæàòîéëåâîéêëàâèøå ìûøèîáëàñòèñîäåðæàùåéíóæíûåòî÷êè . Òàêæåùåë÷êîììîæíî âûäåëèòüïðàâóþãðàíèöóñèìâîëà . Äîáàâëåíèå / èñêëþ÷åíèåòî÷åê ïðîèçâîäèòñÿïðèíàæàòîéêëàâèøå Shift . Ãðóïïóâûäåëåííûõòî÷åêìîæíî : ˆ ïåðåìåùàòü , íàæàâëåâîéêëàâèøåéìûøèíàîäíóèçíèõèïåðå- ìåñòèâêóðñîðâíóæíîåìåñòî ; ˆ ïåðåìåùàòüñïîìîùüþêëàâèøóïðàâëåíèÿêóðñîðîì ; ˆ ïîäâåðãàòüðàçëè÷íûìãåîìåòðè÷åñêèìïðåîáðàçîâàíèÿìñïîìî- ùüþäðóãèõèíñòðóìåíòîâèëèâûáðàâñïîñîáïðåîáðàçîâàíèÿâ äèàëîãîâîìîêíåïóíêòà  Ïðåîáðàçîâàòü  ìåíþ  Ýëåìåíò ( Ctrl - \ ); ˆ èçìåíÿòüòèï ( ñì . íèæå ); ˆ óäàëÿòü , ðàçðûâàÿêîíòóð , èëè  óïðîùàòü , ñîõðàíÿÿêîíòóðìåæ- äóîêðóæàþùèìè  óïðîù¼ííóþ  òî÷êàìè . 128 Ðóêîâîäñòâîðàçðàáîò÷èêà Ùåë÷îêëåâîéêëàâèøåéìûøèíàðàáî÷åìïîëåîêíàñèìâîëàóáåð¼ò âûäåëåíèåñîâñåõòî÷åê .  Ëóïà  ïîçâîëÿåòèçìåíÿòüìàñøòàáâîêíåñèìâîëà . Óâåëè÷åíèå ïðîèçâîäèòñÿùåë÷êîìâîêíåñèìâîëà , óìåíüøåíèå  ùåë÷êîìïðè íàæàòîéêëàâèøå Alt . Pfaedit àêòèâíîèñïîëüçóåòêíîïêèìûøèñêëàâèàòóðíûìèìîäèôè- êàòîðàìè . Íåçàâèñèìîîòâûáðàííîãîèíñòðóìåíòà , ëåâàÿêíîïêàìû- øèâñî÷åòàíèèñíàæàòîéêëàâèøåé Ctrl ðàáîòàåòêàê  Óêàçàòåëü , ñðåäíÿÿ  êàê  Ëóïà , àñðåäíÿÿâñî÷åòàíèèñíàæàòîéêëàâèøåé Ctrl  êàê  Èçìåðèòåëü ( ñì . íèæå ). Ùåë÷îêïðàâîéêíîïêîéâîêíå ñèìâîëàâûçûâàåòâñïëûâàþùååìåíþ , ïîçâîëÿþùååâûáðàòüîäèíèç èíñòðóìåíòîâ .  Êðèâàÿ , óãëîâàÿ  è  êàñàòåëüíàÿ  òî÷êèè  Ïåðî  ïîçâîëÿþò äîáàâëÿòüòî÷êèêîíòóðàâîêíåñèìâîëàèðàçëè÷àþòñÿòèïîìäî- áàâëÿåìîéòî÷êè ( Ïåðî  äîáàâëÿåòòî÷êóêðèâîéñêîíòðîëüíûìè òî÷êàìè ). Òèïòî÷êèìîæíîèçìåíèòü , âûäåëèâå¼èâûáðàâïîäõîäÿ- ùèéïóíêòâìåíþ  Òî÷êà  èëèæåíàæàâ Ctrl - 2 , Ctrl - 3 èëè Ctrl - 4 äëÿïðåîáðàçîâàíèÿâòî÷êóêðèâîé , óãëîâóþèëèêàñàòåëüíóþñîîò- âåòñòâåííî . Íîæïîçâîëÿåòðàçðåçàòüêîíòóðìåæäóòî÷êàìè . Íàîáðàçóþùèõñÿ êîíöàõêîíòóðàñîçäàþòñÿäâåíîâûåòî÷êèêðèâûõ , ìåæäóêîòîðûìè íåòñîåäèíåíèÿ . ×òîáûðàçðåçàòüêîíòóð , íàäîïðîâåñòèêóðñîðâ òî÷êåðàçðåçà , óäåðæèâàÿíàæàòîéëåâóþêëàâèøóìûøè .( ×àñòî áîëååóäîáíûìîêàçûâàåòñÿäîáàâèòüòî÷êóíàêîíòóðèóäàëèòüå¼ . Êîíòóðïðèýòîìîêàçûâàåòñÿðàçîðâàí .)  Èçìåðèòåëü  ïîçâîëÿåòèçìåðÿòüðàññòîÿíèå , óãîëèñìåùåíèåïî îñÿì X è Y îòòî÷êèãäåâáûëàîòïóùåíàëåâàÿêëàâèøàìûøèäî òåêóùåãîïîëîæåíèÿêóðñîðà . Ìàñøòàáèðîâàíèåïîçâîëÿåòìàñøòàáèðîâàòüâûäåëåííóþ÷àñòü ñèìâîëà  íàãëàç . Ìàñøòàáèðîâàíèåâûïîëíÿåòñÿïåðåòàñêèâàíèåì êóðñîðàïðèíàæàòîéëåâîéêëàâèøåìûøè . Òî÷êà , âêîòîðîéáûëà íàæàòàêëàâèøà , áóäåòÿâëÿòüñÿíà÷àëîìêîîðäèíàòäëÿïðåîáðàçîâà- íèÿ . Äëÿîäèíàêîâîãîìàñøòàáèðîâàíèÿïîîáåèìîñÿìèëèäëÿìàñ- øòàáèðîâàíèÿòîëüêîïîîäíîéîñèíåîáõîäèìîóäåðæèâàòüíàæàòîé êëàâèøó Shift . Çåðêàëî , êàêñëåäóåòèçíàçâàíèÿ , ïîçâîëÿåòîòðàçèòüâûäåëåííóþ ÷àñòüñèìâîëàïîãîðèçîíòàëèèëèïîâåðòèêàëè . Òàêæå , êàêèäëÿ  Ìàñøòàáèðîâàíèÿ , òî÷êà , âêîòîðîéáûëàíàæàòàêëàâèøà , áóäåò ÿâëÿòüñÿíà÷àëîìêîîðäèíàòäëÿïðåîáðàçîâàíèÿ . Âðàùåíèåïîçâîëÿåòâðàùàòüâûäåëåííóþîáëàñòü . Íàêëîíïîçâîëÿåòíàêëîíÿòüâûäåëåííóþîáëàñòü . Ãëàâà 17. Âèäûîêîí 129 Äëÿòî÷íîãîìàñøòàáèðîâàíèÿ , âðàùåíèÿèíàêëîíàóäîáíååèñïîëü- çîâàòüñîîòâåòñòâóþùèéïàðàìåòðâäèàëîãå  Ïðåîáðàçîâàòü ... ìåíþ  Ýëåìåíò . Ïðÿìîóãîëüíèê / ÝëëèïñèÌíîãîóãîëüíèê / Çâ¼çäî÷êàïîçâîëÿþòíà- ðèñîâàòüñîîòâåòñòâóþùèåôèãóðû . Äâîéíîéùåë÷îêíàèíñòðóìåíòå îòêðûâàåòîêíîäèàëîãàäëÿâûáîðàïàðàìåòðîâèíñòðóìåíòà ( çàêðóã- ëåíèåóãëîâïðÿìîóãîëüíèêà , ïðÿìîóãîëüíèêèëèýëëèïñ , ÷èñëîóãëîâ ìíîãîóãîëüíèêà / çâ¼çäî÷êè , ìíîãîóãîëüíèêèëèçâ¼çäî÷êà ). Îêíîìåòðèê Îêíîìåòðèê (17.4) ïîçâîëÿåòèçìåíÿòüðàçëè÷íûåïàðàìåòðû , îòíî- ñÿùèåñÿêñî÷åòàíèÿìñèìâîëîâ , àòàêæåèçìåíÿòüìåòðèêèêàæäîãî ñèìâîëàâîòäåëüíîñòè . Ðèñóíîê 17.4. Îêíîìåòðèê Èçìåíèòüëåâóþ / ïðàâóþãðàíèöûñèìâîëàèëèåãîøèðèíó , àòàêæå çàäàòüçíà÷åíèåàïðîøàäëÿëþáîéïàðûñèìâîëîâìîæíî , ëèáîââåäÿ çíà÷åíèåâñîîòâåòñòâóþùåéêëåòêå , ëèáîïåðåìåùàÿìûøüþñèìâîë èëèåãîãðàíèöû . Äëÿòîãî , ÷òîáûóïðîñòèòüðàáîòóñêèðèëëè÷åñêèì àëôàâèòîì , èìååòñìûñëóêàçàòüâíàñòðîéêàõ Pfaedit èñïîëüçóåìûé äëÿââîäàíàáîðñèìâîëîâ ( Ôàéë  !  Íàñòðîéêè ... !  Ëîêàëüíàÿêî- äèðîâêà , íàïðèìåðÊÎ I8-R). Ýòîïîçâîëèòââîäèòüêèðèëëè÷åñêèå ñèìâîëûâëþáûõñòðîêàõââîäà , â÷àñòíîñòèâîêíåìåòðèê 3 . 3 Ïîóìîë÷àíèþñòðîêàâîêíåìåòðèêñîäåðæèòñèìâîëû , âûäåëåííûåâîêíå øðèôòà . 130 Ðóêîâîäñòâîðàçðàáîò÷èêà Ãëàâà 18. Ñîçäàíèåøðèôòà ×òîáûñîçäàòüíîâûéøðèôò , íàäîïðèçàïóñêå Pfaedit âûáðàòü ïóíêòÑîçäàòüâîêíåâûáîðàøðèôòà ( èëèâûáðàòüïóíêò  Ñîçäàòü  ìåíþ  Ôàéë , èëèçàïóñòèòü pfaedit-new ). Ïðèýòîìîòêðîåòñÿîêíî øðèôòàíåñîäåðæàùååêîíòóðîâñèìâîëîâ . Íàáîðñèìâîëîââíîâü ñîçäàâàåìîãîøðèôòàìîæíîóêàçàòüâäèàëîãå  Íàñòðîéêè ... ìåíþ  Ôàéë . Åñëèâàñíåóñòðàèâàåòòåêóùèéíàáîðñèìâîëîâ , òîåãî ìîæíîèçìåíèòüâäèàëîãå  Èíôîðìàöèÿîøðèôòå  ìåíþ  Ýëåìåíò  ( ñì .18.1). Âýòîìæåäèàëîãåìîæíîóñòàíîâèòüíàçâàíèåøðèôòà , åãîñåìåéñòâî , óãîëíàêëîíà , êîììåíòàðèéèìíîãîåäðóãîå . Ðèñóíîê 18.1. Èíôîðìàöèÿîøðèôòå Åñëèíèîäèíèçïðåäëàãàåìûõíàáîðîâñèìâîëîâíåïîêðûâàåòâñå- ãîäèàïàçîíàíåîáõîäèìûõâàìñèìâîëîâ , òîìîæíîâûáðàòüíàèáîëåå áëèçêèéäèàïàçîí , óâåëè÷èòü÷èñëîñèìâîëîââøðèôòå ( ëèñò  Êîäè- ðîâêà  âäèàëîãå  Èíôîðìàöèÿîøðèôòå ) èäàòüíàçâàíèÿâñåìäî- ïîëíèòåëüíûìñèìâîëàì . ×òîáûíàçâàòü ( èëèïåðåèìåíîâàòü ) ñèìâîë , íàäîâûçâàòüäèàëîã  Èíôîðìàöèÿîñèìâîëå  ìåíþ  Ýëåìåíò ( èëè íàæàòü Ctrl - I ), âïîÿâèâøåìñÿîêíåìîæíîââåñòèñèìâîë , åãîíàçâà- íèåâñîîòâåòñòâèèñ Unicode èëèåãîêîäïî Unicode . Ïîñëåòîãî , êàê âñåíåîáõîäèìûåñèìâîëûíàçâàíû , ìîæíîñîõðàíèòüïîëó÷èâøèéñÿ íàáîð , íàæàâêíîïêóÑîçäàòüèçøðèôòàíàëèñòå  Êîäèðîâêà  îêíà  Èíôîðìàöèÿîøðèôòå . Âñåíàáîðûñèìâîëîâ , ñîçäàííûåïîëüçîâàòåëåì , ñîõðàíÿþòñÿâôàé- ëå ~/.Pfaedit/Encoding.ps , ïîýòîìóäëÿñîçäàíèÿíîâîãîíàáîðàñèìâî- Ãëàâà 18. Ñîçäàíèåøðèôòà 131 ëîâ÷àñòîáûâàåòóäîáíååäîáàâëÿòüíàçâàíèÿñèìâîëîâïðÿìîâýòîò ôàéëïîîáðàçöó . 132 Ðóêîâîäñòâîðàçðàáîò÷èêà Ãëàâà 19. Ñîçäàíèåñèìâîëà Äëÿñîçäàíèÿñèìâîëàíàèáîëåå÷àñòîèñïîëüçóþòñÿòðèñïîñîáà : êîïèðîâàíèåñèìâîëà ( èëèñîçäàíèåññûëêèíàíåãî ), àâòîìàòè÷åñêîå èëèðó÷íîåîêîíòóðèâàíèåèçîáðàæåíèÿ ( òðàññèðîâêà ) èìîäèôèêàöèÿ ïîäõîäÿùåãîñèìâîëà . Êîïèðîâàíèåñèìâîëà ; àêöåíòèðîâàííûåñèìâîëû ×àñòüñèìâîëîâìîæåòáûòüñîçäàíàêîïèðîâàíèåìóæåñóùåñòâóþ- ùèõ . Íàïðèìåð , åñëèâûäîáàâëÿåòåâøðèôòêèðèëëè÷åñêèåãëèôû , òî ëàòèíñêèåñèìâîëû  ÀÂÑÅÍÌÎÐÒÕàñåîðóõ  ìîãóòáûòüñêîïèðîâà- íûâñîîòâåòñòâóþùèåêèðèëëè÷åñêèå . Øðèôòû Type1 è Ãëàâà 19. Ñîçäàíèåñèìâîëà 133 ñëó÷àå , êîãäàòðåáóåòñÿñîçäàòüáîëååîäíîãîêîíòóðà ( íàïðèìåð , ó Î åñòüâíåøíèéèâíóòðåííèéêîíòóðû ), íàäîñíÿòüâûäåëåíèå ñïîñëåäíåéäîáàâëåííîéòî÷êè ( íàæàòü Ctrl , ÷òîáûïåðåêëþ÷èòü èíñòðóìåíòíàÓêàçàòåëü , èù¼ëêíóòüíàñâîáîäíîììåñòåâîêíå ñèìâîëà ) ïîñëåòîãî , êàêòåêóùèéêîíòóðáóäåòçàìêíóò  èïåðåéòè êîáâîäêåñëåäóþùåãîêîíòóðà . Ýòóîïåðàöèþìîæíîâûïîëíèòüàâòîìàòè÷åñêè , åñëèââàøåéñèñòå- ìåóñòàíîâëåíàïðîãðàììà autotrace. Àâòîòðàññèðîâêà Äëÿàâòîìàòè÷åñêîãîîêîíòóðèâàíèÿèìïîðòèðóéòåèçîáðàæåíèåè âûáåðèòåïóíêò  Àâòîòðàññèðîâêà  èçìåíþ  Ýëåìåíò . Äëÿòîãî , ÷òîáûïîëó÷èòüðåçóëüòàò , ïðèåìëåìûéäëÿïîñëåäóþùåéîáðàáîòêè , íåîáõîäèìîèìïîðòèðîâàòüèçîáðàæåíèåñäîñòàòî÷íîâûñîêèìðàçðå- øåíèåì . Ìîäèôèêàöèÿñèìâîëîâ Âáîëüøèíñòâåøðèôòîâìíîãèåñèìâîëûñîäåðæàòîäèíàêîâûåèëè ñõîæèåýëåìåíòû , àíåêîòîðûåñèìâîëûäàæå÷àñòè÷íîñîâïàäàþò äðóãñäðóãîì . Íàïðèìåðíèæíèåïîëîâèíûó Á , Ü , Û è Ú âîìíîãèõ øðèôòàõáóäóòîäèíàêîâû , à Ð è Ü ìîæíîáóäåòïîëó÷èòüèçäðóã äðóãàçåðêàëüíûìîòðàæåíèåì . Êðîìåòîãî , óëàòèíñêèõ , ãðå÷åñêèõ èêèðèëëè÷åñêèõøðèôòîââåðòèêàëüíûåîñíîâíûåýëåìåíòûäîëæíû áûòüàáñîëþòíîîäèíàêîâû , âïðîòèâíîìñëó÷àåâîçìîæíîâîçíèêíî- âåíèåî÷åíüçàìåòíûõèñêàæåíèéïðèðàñòðèðîâàíèè . Òàêèìîáðàçîì , ñêëåèâàíèå  ñèìâîëîâèçñîîòâåòñòâóþùèõýëåìåí- òîâäðóãèõñèìâîëîâíåòîëüêîóäîáíî , íîèïîçâîëÿåòäîñòè÷üáîëåå ïðàâèëüíîãîñòåõíè÷åñêîéòî÷êèçðåíèÿðåçóëüòàòà ( âîòäåëüíûõñëó- ÷àÿõýëåìåíòû , êîòîðûåêàæóòñÿîäèíàêîâûìè , äîëæíûáûòüðàçíû- ìèèçñîîáðàæåíèéäèçàéíàøðèôòà ; ðàññìîòðåíèåâîïðîñîâäèçàé- íàâûõîäèòçàðàìêèäàííîãîòåêñòà ). Äëÿñîçäàíèÿíîâîãîñèìâîëà ïóò¼ììîäèôèêàöèèóæåñóùåñòâóþùåãîíåîáõîäèìîñêîïèðîâàòüìî- äèôèöèðóåìûéñèìâîë÷åðåçáóôåðîáìåíà : âûäåëèòüèñõîäíûéñèì- âîë , âûáðàòü  Ñêîïèðîâàòü  âìåíþ  Ïðàâêà  èëèíàæàòü Ctrl - C ; âûäåëèòüÿ÷åéêóñîçäàâàåìîãîñèìâîëà , âûáðàòü  Âñòàâèòü  âìåíþ  Ïðàâêà  èëèíàæàòü Ctrl - V . Åñëèêóæåñóùåñòâóþùèì÷àñòÿìñèì- âîëàíåîáõîäèìîäîáàâèòü÷àñòèêàêîãî - òîäðóãîãîñèìâîëà , òîâñòàâ- êóíåîáõîäèìîïðîèçâîäèòüâîêíåñîçäàâàåìîãîñèìâîëà , àíåâîêíå øðèôòà , èíà÷åóæåèìåþùèåñÿ÷àñòèñîçäàâàåìîãîñèìâîëàáóäóòçà- ìåíåíûâñòàâëÿåìûìè . 134 Ðóêîâîäñòâîðàçðàáîò÷èêà Äðóãèåñïîñîáûñîçäàíèÿñèìâîëîâ Ïîìèìîîïèñàííûõ , âîçìîæíîíåïîñðåäñòâåííîåðèñîâàíèåñèìâî- ëîâ . Äëÿýòîãî Pfaedit ïðåäëàãàåòñëåäóþùèåôóíêöèè : Ðàñøèðèòü øòðèõ  è  Óäàëèòüïåðåñå÷åíèÿ  âìåíþ  Ýëåìåíò . Ïåðâàÿïîç- âîëÿåòçàìåíèòüñîçäàííóþèçòî÷åêêðèâóþïîâòîðÿþùèìå¼ôîðìó êîíòóðîìçàäàííîéøèðèíû , àâòîðàÿ  îáúåäèíèòüïåðåñåêàþùèåñÿ êîíòóðû . Îáðàáîòêàñèìâîëîâ Ñîçäàííûåñèìâîëûìîæíî ( èíóæíî ) äîïîëíèòåëüíîîáðàáîòàòü . Pfaedit ïðåäëàãàåòñëåäóþùèåôóíêöèèîáðàáîòêè : Óïðîñòèòü , Äî- áàâèòüýêñòðåìóìû , Èñïðàâèòüíàïðàâëåíèå . Âñåîíèäîñòóïíûâ ìåíþ  Ýëåìåíò . Ëþáûåèçìåíåíèÿìîæíîêîíòðîëèðîâàòü , ñêîïèðî- âàâêîíòóðñèìâîëàâñëîéôîíà ( ïóíêò  Ñêîïèðîâàòüïåðåäíèéïëàí âôîí  âìåíþ  Ïðàâêà  èëè Ctrl - Shift - C ). Pfaedit ïîçâîëÿåòäîáàâëÿòüèíñòðóêöèè (hints) äëÿðàñòåðèçàòîðà Type1 è Ãëàâà 20. Ñêðèïòû 135 Ãëàâà 20. Ñêðèïòû Óíèêàëüíîé÷åðòîé Pfaedit ÿâëÿåòñÿïðåäëàãàåìàÿèìâîçìîæíîñòü ïèñàòüñöåíàðèèíàñîáñòâåííîìÿçûêå , ïîõîæåìíàñìåñü C, ÿçûêà ïðîãðàììèðîâàíèÿêîìàíäíîéîáîëî÷êè (bash) èêîìàíäèçìåíþ Pfaedit. Èçñêðèïòàìîæíîâûïîëíèòüëþáóþôóíêöèþ , îòíîñÿùóþñÿê øðèôòó ( îòêðûòü , ïåðåêîäèðîâàòü , äîáàâèòüñèìâîëû , ñãåíåðèðîâàòü øðèôò ) èëèêñèìâîëó ( ñêîïèðîâàòü , îòðàçèòü , ïîâåðíóòü , èçìåíèòü ãðàíèöûèòàêäàëåå ). Òàêèìîáðàçîìñïîìîùüþñöåíàðèåâìîæíîàâ- òîìàòèçèðîâàòüáîëüøóþ÷àñòüâûïîëíÿåìûõñîøðèôòàìèäåéñòâèé . Òåõíîëîãèèðàçðàáîòêè WEB- ïðîåêòîâñèñïîëüçîâàíèåìñåðâåðîâ ïðèëîæåíèé 137 Òåõíîëîãèèðàçðàáîòêè WEB- ïðîåêòîâñ èñïîëüçîâàíèåì ñåðâåðîâïðèëîæåíèé Èñòîðèÿïåðåèçäàíèÿ Èçäàíèå 0.1 22Oct2002 Îòôîðìàòèðîâàíàâ DocBook âåðñèÿñòàòüè , âçÿòàÿññàéòà http://www.neural.ru- ïîñëåäíÿÿàêòóàëüíàÿâåðñèÿàâòîðà . Îáùèåïðèíöèïû Ïðîãðàììíîåîáåñïå÷åíèåèíòåðíåò - ïðîåêòîâäîëæíîóäîâëåòâîðÿòü ðÿäóòðåáîâàíèé , òàêèõêàêìàêñèìàëüíîâîçìîæíîåðàçäåëåíèåòðåõ ñîñòàâëÿþùèõëþáîãîèíòåðíåò - ïðîåêòà : èñïîëíÿåìîãîêîäà , äèçàéíà âåá - èíòåðôåéñàèèíôîðìàöèîííîãîíàïîëíåíèÿðåñóðñà , ÷òîäàåò âîçìîæíîñòüèçìåíåíèÿëþáîéèçêîìïîíåíòâäîñòàòî÷íîøèðîêèõ ïðåäåëàõ , íåïîäâåðãàÿîïàñíîñòèðàáîòîñïîñîáíîñòüðåñóðñàâöåëîì . Ðàçäåëåíèåïîäðàçóìåâàåòíåòîëüêîâîçìîæíîñòüðàçäåëüíîéðàçðà- áîòêè , íîèâîçìîæíîñòüîò÷óæäåíèÿëþáîéñîñòàâëÿþùåé , ÷òîîáåñ- ïå÷èâàåòâûïîëíåíèåñëåäóþùåãîòðåáîâàíèÿ - ïîâòîðíîãîèñïîëüçî- âàíèÿðåøåíèé . Âñàìîìäåëå , êàêèìèáûóíèêàëüíûìèíèáûëèðå- ñóðñûèáèçíåñ - ïðîöåññû , îíèñòðîÿòñÿèçáàçîâûõýëåìåíòîâ , ðÿäêî- òîðûõïðàêòè÷åñêèåíåèçìåíÿåòñÿîòïðîåêòàêïðîåêòó . Íåîáõîäèìîñòüïîâòîðíîãîèñïîëüçîâàíèÿâëå÷åòçàñîáîéòðåáîâà- íèåôóíêöèîíàëüíîéïîëíîòûèçàìêíóòîñòèðåøåíèÿ , ÷òîîçíà÷àåò ïîëíîåïîêðûòèåïðîãðàììíûìêîäîìâîçìîæíûõóïðàâëÿþùèõâîç- äåéñòâèéèðåøåíèåâñåõçàäà÷óïðàâëåíèÿðåøåíèåìâðàìêàõñàìîãî ýòîãîðåøåíèÿ . Èñïîëüçóåìûåèíñòðóìåíòàëüíûå ñðåäñòâà Âïîñëåäååâðåìÿ , ïîÿâèëñÿðÿäèíñòðóìåíòàëüíûõñðåäñòâ , îðè- åíòèðîâàííûõíàïîääåðæêóðàçðàáîòêèèíòåðíåò - ïðîåêòîâïðèñî- áëþäåíèèâûøåïðèâåäåííûõòðåáîâàíèé . Õîòÿñðåäèèõïðîèçâîäè- òåëåéìîæíîóïîìÿíóòüòàêèåèçâåñòíûåíàçâàíèÿêàê SoftwareAG è 138 Ðóêîâîäñòâîðàçðàáîò÷èêà Oracle, ïðîèçâîäÿùèåõîðîøîìàñøòàáèðóåìûåèèíòåíñèâíîðàçðàáà- òûâàåìûåïðîäóêòû , íåîáõîäèìîîòìåòèòü : äëÿ 90% ðîññèéñêîãîðûí- êàèíòåðíåò - ïðîåêòîâèñïîëüçîâàíèåíàñòîëüêîìàñøòàáíûõðåøåíèé íåîïðàâäàíî , èáîâëå÷åòçàñîáîéñóùåñòâåííûåôèíàíñîâûåçàòðàòû áåçïîëó÷åíèÿñóùåñòâåííûõïðåèìóùåñòâ . Áåññïîðíî ,Oracle- áîëåå ìîùíàÿáàçàäàííûõ , ÷åì MySQL. Íîíåìåíååáåññïîðíîòî , ÷òîäëÿ ïîääåðæêèáàçûäàííûõèçñîðîêàòàáëèöäëèíîéíåáîëååíåñêîëü- êèõòûñÿ÷çàïèñåé MySQL áîëåå÷åìäîñòàòî÷åí . Ïðèýòîìíàêëàä- íûåðàñõîäûíàèñïîëüçîâàíèå MySQL( ëèöåíçèðîâàíèå , êîíòðàêòûñ õîñòèíã - ïðîâàéäåðàìè ) ñóùåñòâåííîíèæå . Íàñåãîäíÿøíèéäåíü , âçàâèñèìîñòèîòòðåáîâàíèéêëèåíòàìîæíî ïðåäëîæèòüîäèíèçòðåõâàðèàíòîâàðõèòåêòóðûèíòåðíåò - ðåñóðñà , îñíîâàííûõíàñâîáîäíî - ðàñïðîñòðàíÿåìîìÏÎ . Ýòî CGI- ñêðèïòûè ñåðâåðàïðèëîæåíèé -Midgard è Zope Ïàêåò CGI- ñêðèïòîâ , îáåñïå÷èâàþùèõ íåîáõîäèìóþôóíêöèîíàëüíîñòü Âöåëÿõïîÿñíåíèÿäàëüíåéøåãîèçëîæåíèÿïðåèìóùåñòâñåðâåðîâ ïðèëîæåíèé , îïèøåìãèïîòåòè÷åñêèéóíèâåðñàëüíûéìîäóëüÿçûêà Perl, ïîçâîëÿþùèéñîçäàâàòüèïîääåðæèâàòüèíòåðíåò - ðåñóðñêàê òðîéêóâèäà îôîðìëåíèå , èíôîðìàöèîííîåíàïîëíåíèå , ìåòîääîñòóïà �. Èíôîðìàöèîííîåíàïîëíåíèåõðàíèòñÿâðåëÿöèîííîéáàçåäàííûõ ( êàêïðàâèëî ,MySQL), îòêóäàèçâëåêàåòñÿïîçàïðîñóèçàïîëíÿåò ñëîòûòåìïëåéòîâ , ôîðìèðóþùèõêîíöåïöèþîôîðìëåíèÿ . Ïðàêòè÷å- ñêè , ìîäóëüìîæåòïðåäñòàâëÿòüñîáîéóäà÷íîåîáúåäèíåíèåòðåõîá- ùåèçâåñòíûõìîäóëåé :HTML::Template,CGI,MySQL, äîïóñêàþùåå èñïîëüçîâàíèåðÿäàâçàèìîçàìåíÿìûõìîäóëåé , ðåàëèçóþùèõñòàí- äàðòíûåêîíöåïöèèâåá - èíòåðôåéñîâ . Èäåÿìîäóëÿñëåäóþùàÿ : ðàçîáðàòü http- çàïðîñèâûïîëíèòüñî- îòâåòñòâóþùèåäåéñòâèÿ , ðàçîáðàòüòåìïëåéò , îïðåäåëèòüñâîáîäíûå ñëîòû , çàïðîñèòüçàïîëíåíèåñëîòîâèçáàçûäàííûõ , çàïîëíèòüñëîòû èîòîáðàçèòüâåá - ñòðàíèöó . Ðåàëèçàöèÿñóùåñòâåííîñëîæíååýòîãî êðàòêîãîîïèñàíèÿ , íîýòîâïîëíåðàáîòîñïîñîáíîåðåøåíèå , õîðîøî çàðåêîìåíäîâàâøååñåáÿâîìíîãèõïðîåêòàõ . Âîçâðàùàÿñüêâçàèìîçàìåíÿåìûììîäóëÿìîòìåòèìñëåäóþùåå : èñ- ïîëüçîâàíèåòàêîãîìîäóëÿâíîâîìïðîåêòåñâîäèòñÿëèøüêäèçàéíó íîâîãîèíòåðôåéñà , çàòðàòûíàïåðåðàáîòêóñàìîãîìîäóëÿáëèçêèê íóëþ . Ìîãóòáûòüñîçäàíûòàêèåìîäóëèêàê " Ãîñòåâàÿêíèãà "," Äîñ- êàîáúÿâëåíèé "," Êàòàëîãóñëóã "," Êîðçèíàïîêóïàòåëÿ " èäðóãèå . Òåõíîëîãèèðàçðàáîòêè WEB- ïðîåêòîâñèñïîëüçîâàíèåìñåðâåðîâ ïðèëîæåíèé 139 Íåñìîòðÿíàèçðÿäíûéâîçðàñòòåõíîëîãèè CGI- ñêðèïòîâ , òàêîéïîä- õîääàåòâîçìîæíîñòüñîçäàâàòüóäà÷íûåèíòåðíåò - ðåñóðñûïðèìèíè- ìàëüíûõòðåáîâàíèÿõêêîíòðàêòóìåæäóïîëüçîâàòåëåìèõîñòèíã - ïðîâàéäåðîì - äàæåñàìûåäåøåâûåâàðèàíòûêîíòðàêòîâïîäðàçóìå- âàþòïðåäîñòàâëåíèå CGI- êàòàëîãà . Ñåðâåðïðèëîæåíèé Midgard Òåõíîëîãèÿ PHP, èñïîëüçóåìàÿäàííûìïðîäóêòîì , èìååòðÿä íåîòúåìëåìûõïðåèìóùåñòâ , òàêèõêàêâûñîêàÿñêîðîñòüîáðàáîòêè çàïðîñîâèîðèåíòèðîâàííîñòüíàñîçäàíèåâåá - ïðèëîæåíèé . Îäíà- êî , èç - çàíåâîçìîæíîñòèäåêîìïîçèöèèíàäèçàéíèïðîãðàìíûéêîä , PHP áîëüøåïîäõîäèòäëÿèíäèâèäóàëüíûõðàçðàáîò÷èêîâðàçîâûõ ïðîåêòîâ , àíåêîðïîðàòèâíîãîïðèìåíåíèÿ . Íåñìîòðÿíàíåäîñòàòêè èñïîëüçîâàíèÿ PHP â÷èñòîìâèäå , åãîèñïîëüçîâàíèåâñîñòàâåòàêèõ ñðåäñòâ , êàêñåðâåðïðèëîæåíèé Midgard, ìîæåòáûòüêðàéíåýôôåê- òèâíûì .Midgard ñîäåðæèòâñòðîåííûåñðåäñòâàóïðàâëåíèÿèíôîð- ìàöèîííûìíàïîëíåíèåìèäèíàìè÷åñêîéãåíåðàöèèñòðàíèö , ÷òîäàåò âîçìîæíîñòüëåãêîéäëÿïîëüçîâàòåëÿïîääåðæêèêðóïíûõêîíòåíò - ïðîåêòîâ . Âñòðîåííûéÿçûêïðîãðàììèðîâàíèÿ -PHP- ïîçâîëÿåòðå- øàòüäîñòàòî÷íîñëîæíûåçàäà÷èïðåäñòàâëåíèÿèíôîðìàöèè , ïðè÷åì îðèãèíàëüíàÿàðõèòåêòóðà Midgard ñíèìàåòáîëüøóþ÷àñòüïðèñóùèõ PHP ïðîáëåì . Midgard ïðåäñòàâëÿåòèíòåðíåò - ðåñóðñêàêòðèäðåâîâèäíûõïðî- ñòðàíñòâàèìåí : Ñòèëü ( äèçàéí ), Àäðåñíîåïðîñòðàíñòâî ( îôîðìëåíèå èðàçìåùåíèå ), Ïóáëèêóåìûåìàòåðèàëû ( èíôîðìàöèîííîåíàïîëíå- íèå ). Âïåðâûõäâóõïðîñòðàíñòâàõìîãóòáûòüîïðåäåëåíûñòèëå- âûåèñòðàíè÷íûåýëåìåíòû , ïðè÷åìòàêîéýëåìåíòâñòàâëÿåòñÿââåá - ñòðàíèöóïîñðåäñòâîìñèíòàêñèñàâèäà "["+ ÈÌß _ ÝËÅÌÅÍÒÀ � +�"".Midgard ïðåäîñòàâëÿåòñðåäñòâàóïðàâëåíèÿâèäèìîñòüþýëå- ìåíòîâ , ïîçâîëÿÿëåãêîâàðüèðîâàòüîôîðìëåíèåñòðàíèöïåðåêðûòè- åìèìåí . Ñäðóãîéñòîðîíû , ëþáîéýëåìåíòîôîðìëåíèÿïèøåòñÿîäèí èòîëüêîîäèíðàç , ÷òîäàåòâîçìîæíîñòüáûñòðîãîèçìåíåíèÿäèçàéíà ñàéòàïåðåîïðåäåëåíèåìýëåìåíòîâîôîðìëåíèÿ . Äîñòóïêïóáëèêóåìûììàòåðèàëàìîñóùåñòâëÿåòñÿïîñðåäñòâîì PHP- ñêðèïòîâíàñòðàíèöàõÀäðåñíîãîÏðîñòðàíñòâà , ôîðìèðóÿòåì ñàìûìðàçâèòûéàíàëîãòåõíîëîãèè , îïèñàííîéâûøåäëÿñëó÷àÿ CGI- ñêðèïòîâ . Ïóáëèêóåìûåìàòåðèàëûèìåþòñòðîãîôèêñèðîâàííóþ ñòðóêòóðó ( äåðåâîêàòàëîãîâòèïèçèðîâàííûõñòàòåéâðàííèõâåðñè- ÿõ Midgard, êêîòîðûìâáîëååïîçäíèõâåðñèÿõäîáàâèëèñüïðèêðåï- ëåíèèÿêñòàòüÿìèîòíîøåíèÿìåæäóñòàòüÿìè ), ïîýòîìóïîñëåäî- ñòèæåíèÿäîãîâîðåííîñòèîðàçìåùåíèèìàòåðèàëîâ , ñòî÷êèçðåíèÿ 140 Ðóêîâîäñòâîðàçðàáîò÷èêà êîíòåíò - ìåíåäæåðàïîääåðæêàèíòåðíåò - ðåñóðñàñîçäàííîãîíàáàçå Midgard óêëàäûâàåòñÿâïðèâû÷íóþàáñòðàêöèþ , ñõîäíóþñðàçìåùå- íèåìäàííûõâäåðåâåêàòàëîãîâ , àäîáàâëåíèåèëèèçìåíåíèåìàòåðè- àëîâíåïðåäñòàâëÿåòñëîæíîñòåé . Êñîæàëåíèþ , äåêîìïîçèöèÿïðîåêòàíàïðîãðàìíûéêîä , èíôîðìà- öèîííîåñîäåðæàíèåèîôîðìëåíèåïðåäñòàâëÿåòñêîðååñîãëàøåíèå , ÷åìíåîòúåìëåìóþ÷àñòüàðõèòåêòóðû , ÷òîïðèâîäèòêñåðúåçíûìòðó- äîçàòðàòàìíàïëàíèðîâàíèåèíòåðôåéñà . Midgard íàâÿçûâàåòðàçðàáîò÷èêàìäðåâîâèäíóþìîäåëüäàííûõè íàêëàäûâàåòïðîìåæóòî÷íûéóðîâåíüàáñòðàêöèèíàèíòåðôåéññáà- çîéäàííûõ , ÷òîîãðàíè÷èâàåòâîçìîæíîñòüôîðìèðîâàòüçàïðîñûè ðàçìåùàòüäàííûåïðîèçâîëüíîãîôîðìàòà , ïîýòîìóïðèïîääåðæ- êåèíôîðìàöèîííûõðåñóðñîâ , ñâÿçàííûõñäîñòàòî÷íîñëîæíûìïî- èñêîìäàííûõ , èñïîëüçîâàíèå Midgard íåäàåòñóùåñòâåííûõïðå- èìóùåñòâ : ïðàêòè÷åñêè , åñëèèíôîðìàöèîííîåíàïîëíåíèåèíòåðíåò - ñàéòàíåóäàåòñÿîòîáðàçèòüíàäèêòóåìóþ Midgard ìîäåëü , òîåãîèñ- ïîëüçîâàíèååäâàëèîáëåã÷àåòðàçðàáîòêóèïîääåðæêóðåñóðñà . Íî , åñëèðàññìàòðèâàòü Midgard íåêàêóíèâåðñàëüíîåñðåäñòâîïîääåðæ- êèèíòåðíåò - ðåñóðñîâ , àêàêñðåäñòâîðàñøèðåíèÿâîçìîæíîñòåé PHP, îáåñïå÷èâàþùåååäèíûéèíòåðôåéñäëÿðåäàêòèðîâàíèÿèíôîðìàöè- îííîãîíàïîëíåíèÿèóïðàâëåíèåîòîáðàæåíèåìäàííûõ , òî Midgard- áåçóñëîâíî , î÷åíüóäà÷íîåðåøåíèå , îáëåã÷àþùååýêñïëóàòàöèþîäíà- æäûñîçäàííîãîèíòåðíåò - ðåñóðñà . Ñåðâåðïðèëîæåíèé Zope Ñåãîäíÿñóùåñòâóåòáîëååïðîäâèíóòîåðåøåíèåâîáëàñòèñåðâåðîâ ïðèëîæåíèé -ZObjectPublishingEnvironment(ZOPE).Zope ïðåäñòà- âëåòñîáîéìîùíóþè÷ðåçâû÷àéíîãèáêóþñðåäóðàçðàáîòêèèïîä- äåðæêè , êîòîðàÿñîäåðæèòêîííåêòîðûêïîäàâëÿþùåìóáîëüøèíñòâó ðàñïðîñòðàíåííûõáàçäàííûõ , ñðåäñòâààâòîìàòè÷åñêîãîêîíòðîëÿ âåðñèé , ìîùíóþñõåìóðàçäåëåíèÿäîñòóïà , âîçìîæíîñòüîò÷óæäåíèÿ èðåïëèêàöèèëþáûõôðàãìåíòîâñàéòîâ , âñòðîåííûåñðåäñòâàïîèñêà èèíäåêñèðîâàíèÿñîäåðæèìîãîèìíîãîåäðóãîå , ÷òîïîçâîëÿåòäåëàòü íàåãîîñíîâåâñå . Êñîæàëåíèþ , äëÿðîññèéñêîéäåéñòâèòåëüíîñòè , ïðàêòè÷åñêèíåðàçðåøèìàÿäëÿ Zope ïðîáëåìà - ðàçìåùåíèåñåðâåðà óõîñòèíã - ïðîâàéäåðà . Ïðîâåäåííûéîïðîñìîñêîâñêèõïðîâàéäåðîâäàëíåóòåøèòåëüíûå ðåçóëüòàòû : âòîòïåðèîä , êîãäà python óæåâõîäèëâäåñÿòêóïåðâûõ ïðîåêòîâíà Òåõíîëîãèèðàçðàáîòêè WEB- ïðîåêòîâñèñïîëüçîâàíèåìñåðâåðîâ ïðèëîæåíèé 141 âîïðîñîâîçìîæíîñòèèñïîëüçîâàíèå python ïîäàâëÿþùååáîëüøèí- ñòâîïðîâàéäåðîâäàëîîòâåòûòèïà :" íàâåðíîå , âàìíóæíà NT, àó íàñ LinuxRedHat6.1". Ïîõîæå , åäèíñòâåííûéâàðèàíòêîíòðàêòà c ïðîâàéäåðîì , äîïóñêàþùèìâîçìîæíîñòüèñïîëüçîâàíèÿ Zope- óñëó- ãà co-location, ÷òîïðèåìëèìîëèøüäëÿäîñòàòî÷íîêðóïíûõèäîðî- ãîñòîÿùèõïðîåêòîâ . Òåõíè÷åñêè Zope ïðåäñòàâëÿåòñîáîéîáúåêòíî - îðèåíòèðîâàííóþ ñðåäó , ðåàëèçóþùóþïîâåðõ Python âñåòóæåáàçîâóþèäåþçàïîë- íåíèÿñëîòîâòåìïëåéòàäàííûìè , èçâëå÷åííûìèïîçàïðîñóïîëüçî- âàòåëÿ . Âêà÷åñòâåÿçûêàòåìïëåéòîâèñïîëüçóåòñÿ DTML, êîòîðî- ãîâïîäàâëÿþùåìáîëüøèíñòâåñëó÷àåâäîñòàòî÷íîäëÿèçâëå÷åèÿè îòîáðàæåíèÿäàííûõ . Âîñòàëüíûõñëó÷àÿõìîæíîñîçäàâàòüìàñ- ñèâíûåïðîöåäóðûíà Python èèìïîðòèðîâàòüèõâ Zope. Êàêèâ ñëó÷àå Midgard, ïðîåêòèðîâàíèåèíòåðíåòðåñóðñàòðåáóåòõîðîøåé íà÷àëüíîéïðîðàáîòêèäëÿîïðåäåëåíèÿñïèñêàèñïîëüçóåìûõîáúåê- òîâèîòíîøåíèéíàñëåäîâàíèÿìåæäóíèìè : ëþáîåèíôîðìàöèîííîå íàïîëíåíèåâ Zope ïðåäñòàâëÿåòñÿêàêîáúåêòûîïðåäåëåííîãîòèïà , òàêèåêàê "DTML- äîêóìåíò ","DTML- ìåòîä "," Ðèñóíîê "," Êàòàëîã " èëèòèïû , îïðåäåëÿåìûåïîëüçîâàòåëåì ( ñêàæåì , äëÿëîãîòèïîâèëè áàííåðîâîòîáðàæàåìûõíàñòðàíèöàõ , ìîæíîîïðåäåëèòüòèïû "Logo" è "Banner"). Äàëååñëåäóåòíåìåíååñëîæíàÿñòàäèÿïðîãðàììèðîâà- íèÿèîïðåäåëåíèÿïîëüçîâàòåëüñêèõòèïîâ : íîðåçóëüòàòîïðàâäûâàåò çàòðà÷åííûåóñèëèÿ . Òèï Logo,Banner,ZDiscuss( äîñêàîáúâëåíèé )- ýòîãîòîâûå , ëåãêîòèðàæèðóåìûåðåøåíèÿ , çàòðàòûíàïîâòîðíîåèñ- ïîëüçîâàíèåêîòîðûõáëèçêèêíóëþ . Âûâîäû Èçëîæèâîáùèåäåêëàðàöèè , ïîïðîáóåìòî÷íîîòâåòèòüíàñëåäó- þùèéâîïðîñ : ÷òîäàåòèñïîëüçîâàíèåòàêîãîïîäõîäàêðàçðàáîòêå èíòåðíåò - ðåñóðñîâ ? 1. Äåêîìïîçèöèÿïðîåêòàíàèñïîëíÿåìûéêîä , äèçàéíèèíôîðìà- öèîííîåíàïîëíåíèå - îçíà÷àåòâïåðâóþî÷åðåäüòî , ÷òîâàøà ñåêðåòàðøàðåøèâèñïðàâèòüíàçâàíèåïîëÿâýëåìåíòåäèàëîãàñ " Îò :" íà " Îòïðàâèòåëü :" íåíàðóøèòðàáîòîñïîñîáíîñòüèíòåðíåò - ðåñóðñà , çàáûâïîñòàâèòüòî÷êóñçàïÿòîéïîñëåîïåðàòîðà ; 2. Âîçìîæíîñòüïîâòîðíîãîèñïîëüçîâàíèÿ - îçíà÷àåò , ÷òîêàæäûé ïîñëåäóþùèéðåñóðñáóäåòñîçäàâàòüñÿáûñòðåå , êà÷åñòâåííååè äåøåâëå÷åìïðåäûäóùèé , èáîìíîãèååãîñîñòàâëÿþùèåáóäóò óæåãîòîâû ; 142 Ðóêîâîäñòâîðàçðàáîò÷èêà 3. Àäåêâàòíîñòüðåøåíèéïîñòàâëåííîéçàäà÷å - îçíà÷àåò , ÷òîêëè- åíòëþáîãîóðîâíÿ , ïîëó÷èòðàáîòîñïîñîáíîåðåøåíèåèìåííîòåõ ïðîáëåì , êîòîðûååãîèíòåðåñóþòïîïðèåìëåìîéöåíå ; ÏÐÈËÎÆÅÍÈÅÀ Ïðèâåäåííûåâñòàòüåîáùèåðàçìûøëåíèÿìîæíîïðîèëëþñòðè- ðîâàòüðåàëèçàöèåéïðîñòîãîïðèìåðàñèñïîëüçîâàíèåìðàçëè÷íûõ ñðåäñòâ . Ïðèìåðîìáóäåòñïèñîêëîãîòèïîââûâîäèìûõâêàêîì - ëèáî ìåñòåñòðàíèöû - íàïðèìåð , âäîëüíèæíåãîêðàÿ . Êàæäûéëîãîòèï õàðàêòåðèçóåòñÿñëåäóþùèìèàòðèáóòàìè : 1. Èçîáðàæåíèå 2. Ññûëêà Âðåçóëüòàòåíóæíîïîëó÷èòüíàñòðàíèöåôðàãìåíò HTML- êîäà ïðèìåðíîñëåäóþùåãîñîäåðæàíèÿ : &#xP000;P AHREF=" ññûëêà �-1"IMGSRC="URL- èçîáðàæåíèÿ �-1"&#x/A00;/A ... íåñêîëüêîïîâòîðåíèé ... &#x/P00;/P Ïðè÷åìäîëæíàáûòüâîçìîæíîñòüëåãêîãîèçìåíåíèÿäèçàéíàïðè- âåäåííîãîôðàãìåíòàèñïèñêàëîãîòèïîâ . CGI- ñêðèïò &HTML::Template Çàîòñóòñòâèåìñåðüåçíûõàëüòåðíàòèâäëÿáîëååìàñøòàáíûõçàäà÷ , áóäåìõðàíèòüëîãîòèïûâáàçåäàííûõ MySQL âòàáëèöå , îïðåäåëÿå- ìîéñòðîêîé : CREATETABLElogo( idintprimarykeyauto_increment, imgvarchar(32), refvarchar(32) ); Äëÿîòîáðàæåíèÿáóäåìèñïîëüçîâàòüñëåäóþùèéôðàãìåíòêîäà HTML::Template: Òåõíîëîãèèðàçðàáîòêè WEB- ïðîåêòîâñèñïîëüçîâàíèåìñåðâåðîâ ïðèëîæåíèé 143 ..... êàêîå - òîíà÷àëî .... &#xP000;P TMPL-LOOPname="log&#xTMPL;-LO;&#xOP-4;0na;&#xme=";&#xlog1;&#xo_li;&#xst"0;o_list" AHREF="% -43;�HRE;="%;ref;&#x%"00;ref%"IMGSRC="%im&#xIMG-;аS;&#xRC=";&#x%im1;&#xg%"0;g%"/A0;/A /TMP&#x/TMP;L-L;&#xOOP0;L-LOOP &#x/P00;/P ..... êàêîé - òîêîíåö .... Äëÿïîëó÷åíèÿäàííûõèçáàçûñîçäàäèì perl- ìîäóëüïîäíàçâàíèåì LOGO, êîòîðûéáóäåòñîäåðàæàòüñëåäóþùèéôðàãìåíòêîäà : if�($self-query(logo_list)){ $self�-htmltable("selectref,imgfromlogo",logo_list,ref,img) } ( Ïîçæåìûïîÿñíèìïî÷åìóíóæåí " öåëûéìîäóëü " äëÿîäíîéñòðîêè êîäà ) Âñå , çàäà÷àïðàêòè÷åñêèðåøåíà : ïîñëåíåáîëüøîãîòåñòèðîâàíèÿ HTML::Template- êîäìîæíîîòäàòüäèçàéíåðó , êîòîðûéèçâûøåïðè- âåäåííîãîíåçàìûñëîâàòîãîôðàãìåíòàñäåëàåòêîíôåòêó . Êàêíåòðóä- íîâèäåòü , äèçàéíåðíåâûõîäèòçàïðåäåëûïðèâû÷íîéåìóêîíöåïöèè HTML- òåãîâ : ïðîñòîïîÿâèëèñüäâàíîâûõòåãà . Íàðóøèòüïðîãðàìì- íûéêîääèçàéíåðíåìîæåò , ò . ê . íåèìååòêíåìóäîñòóï . Íîçàýòèìèïîáåäíûìèñëîâàìèêðîåòñÿïîäâîäíûéêàìåíü : ïðè- âåäåííûéôðàãìåíòêîäàôóíêöèîíàëüíîíåïîëîí . Êàêðàçìåñòèòü íîâûåëîãîòèïûâñïèñêå ? Îòêðûòü Unix-shell, çàïóñòèòüêîíñîëüíûé êëèåíò MySQL èíà÷àòüïèñàòü SQL- çàïðîñû ? Âïîëíåâîçìîæíûé âàðèàíò , õîòÿíàñàìîìäåëå , âûøåóïîìÿíóòûé " öåëûéìîäóëü " ïðè- äåòñÿñóùåñòâåííîäîðàáîòàòü , äîáàâèâñðåäñòâàðåäàêòèðîâàíèÿòà- áëèöûëîãîòèïîâ . Ýòîíåòðóäíî - íîâûõîäèòçàðàìêèíàøåãîïðèìå- ðà . Ðåçóëüòàòîìáóäåòôóíêöèîíàëüíîïîëíîåðåøåíèå , ïîçâîëÿþùåå âñòàâëÿòüâ CGI- ñêðèïòâîçìîæíîñòüîòîáðàæàòüñòðîêóëîãîòèïîâ , íàïèñàâêîìàíäóâèäà : $logo=�LOGO-new(tablena�me="logo",edi�t="1"); 144 Ðóêîâîäñòâîðàçðàáîò÷èêà Êàêâèäèì , îáúåêòçäåñü - ñòðîêàëîãîòèïîâ , ìåòîäûêîòîðîãî - îòîáðàæåíèå , ðåäàêòèðîâíèåèò . ï . Midgard Õîòÿìîæíîõðàíèòüñïèñîêëîãîòèïîââòàáëèöåáàçûäàííûõ , íî , çäåñüåñòüëó÷øàÿàëüòåðíàòèâà : ñîçäàòüêàòàëîãâïðîñòðàñòâå " Ïóáëèêóåìûõìàòåðèàëîâ ", ñòàòüèêîòîðîãîáóäóòîïðåäåëåíèÿìè îòäåëüíûõëîãîòèïîâ . Ïóñòüýòîáóäåòêàòàëîã No.54( âíîâûõâåðñèÿõ Midgard âîçìîæíàññûëêàïîèìåíè ). Âêàòàëîãå 54 ðàçìåñòèìñòàòüè , ïðè÷åìâàòðèáóò extra1 ýòîéñòàòüèçàïèøåì url èçîáðàæåíèÿ , à âàòðèáóò extra2-url ññûëêè . ×áûîòëè÷àòüëîãîòèïûîòâñåõ äðóãèõñòàòåéâýòîìêàòàëîãå , ïðèñâîèìèìòèïíîìåð 12. Íåñìîòðÿ íàòî , ÷òîïðèýòîìèñïîëüçóåòñÿèíòåðôåéñ Midgard èêîòîðûé ïîçâîëÿåòñîçäàòüñòàòüèâêàòàëîãå , íàñàìîìäåëåâíîñÿòñÿäàííûå âàíàëîãè÷íóþòàáëèöó MySQL, íîååïîëÿáûëèïðåäîïðåäåëåíû ðàçðàáîò÷èêàìè ( åñëèíåõâàòèëîïðåäîïðåäåëåííûõïîëåé - òîîáýòîì îòäåëüíûéðàçãîâîð , íà÷èíàÿñâåðñèè Bifrost). Äëÿîòîáðàæåíèÿóêàçàíîãîñïèñêàëîãîòèïîâòðåáóåòñÿâàäðåñíîì ïðîñòðàíñòâåïîìåñòèòüñëåäóþùèéôðàãìåíòêîäà : &#xP000;P ? $article=mgd_list_topic_articles(54,"order",12); if($article) Òåõíîëîãèèðàçðàáîòêè WEB- ïðîåêòîâñèñïîëüçîâàíèåìñåðâåðîâ ïðèëîæåíèé 145 ? $article=mgd_list_topic_articles(54,"order",12); 146 Ðóêîâîäñòâîðàçðàáîò÷èêà [LOGO&#x[LOG;&#xO1_l;&#xist];_list] Âîò , âïðèíöèïåãîòîâî . Îáúÿñíèâäèçàéíåðóêàêèåýëåìåíòûìîæíî ðåäàêòèðîâàòüèçà÷åì , ìîæíîîæèäàòü÷òîäèçàéíåðñäåëàåòäèçàéí . Íåñìîòðÿíàòåõíîëîãè÷åñêèåçàòðóäíåíèÿïðèðàçäåëåíèèòðóäà ðàçðàáîò÷èêîâ , íåîáõîäèìîîòìåòèòüîòñóòñòâèåíåîáõîäèìîñòèñîçäà- íèÿîáâÿçêèäëÿäîñòèæåíèÿôóíêöèîíàëüíîéïîëíîòû . Âñåóæååñòü - êîíòåíò - ìåíåäæåðìîæåòñïîêîéíîïîëîæèòüñòàòüþâêàòàëîãèçà- áûòüîíåé . Ïðè÷åìèíòåðôåéñäëÿêîíòåíò - ìåíåäæåðàâïîëíåóäîá- íûé , ýòîíåêîìàíäíàÿñòðîêà mysql.... Zope Òåïåðüâñåòîæåñàìîå , òîëüêîâ Zope . Îïÿòü - òàêè , áóäåìõðàíèòü îáúåêòâðàìêàõñàìîãî Zope , ïðàâäà , íàýòîòðàçýòîáóäåòäåéñòâè- òåëüíîîáúåêò - îáúåêò , äëÿêîòîðîãîïîìèìîñâîéñòâîïðåäåëèììå- òîä :tag. Íåîñòàíàâëèâàÿñüíàïîäðîáíîñòÿõñîçäàíèÿîáúåêòà , ñêà- æåìëèøü÷òîêëàññîáúåêòàíàçûâàåòñÿ Logo. Âîòëè÷èåîòäâóõ ïðåäûäóùèõñëó÷àåâáóäåìõðàíèòüèçîáðàæåíèåâñàìîéáàçåäàí- íûõ , ïîðîäèâêëàññ Logo îòâñòðîåííîãîêëàññà image. Õîòÿìåòîä render ìîæíîíàïèñàòüíàÿçûêå Python, âäàííîìñëó÷àåáóäåòïðîùå âîñïîëüçîâàòüñÿñàìèì DTML. Íàçíà÷åíèåìåòîäà - âåðíóòüñòðîêó , îòîáðàæàþùóþëîãîòèï . Âîòîí : AHREF="dtml_varÑtm;&#xl_va;&#xr-43;�ref;Ñtm;&#xl_va;&#xr-43;�ref;ref"dtml_var"tag(borde tml;_va;&#xr-43;�"ta;&#xgbor;෡r;&#x=0"0;r=0)""&#x/A00;/A ( Íàìíåïîòðåáîâàëñÿòåã img, ïîòîìó÷òîñàìïîñåáåîáúåêò Image óæåäåëàåòîïåðàöèþîòîáðàæåíèÿèçîáðàæåíèÿèñïîëüçóÿìåòîä tag) Ñîçäàäèìäëÿîáúåêòà Logo âèäïîóìîë÷àíèþ , âûçûâàþùèéýòîò ìåòîä . Òåïåðüâêàòàëîãå Logo ñîçäàäèìíåñêîëüêîîáúåêòîâòèïà Logo, àâíóæíîììåñòåâñòàâèìñëåäóþùèé DTML- êîä : dtml-in"Logo.objec tml;&#x-1in;&#x-431;&#x"L1o;&#xgo.o; jec;tIt;ms";tItems()" dtml-varsequence-i tml;-va;&#xr-43;s1e;&#xquen;Î-i;tem;tem /dtml&#x/dtm;&#xl1-i;&#xn000;-in Âñå , ãîòîâî . Íàøåìóäèçàéíåðó , êàêèâ Midgard , íóæíîëåçòüâ ðàçíûåôðàãìåíòû , îäíàêîçäåñüïðèñîõðàíåíèèâñåõïðåèìóùåñòâ Òåõíîëîãèèðàçðàáîòêè WEB- ïðîåêòîâñèñïîëüçîâàíèåìñåðâåðîâ ïðèëîæåíèé 147 Midgard , ìûïîëó÷àåìåùåîäíî : èíêàïñóëÿöèþ . ×òîáóäåòåñëèâêà- òàëîã Logo ìûïîëîæèìîáúåêòêëàññà Image? Ìûïîëó÷èìêàðòèíêó áåçññûëêè . Àîáúåêòêëàññà DTML-document? Âñòàâëåííûéòåêñò äîêóìåíòà . Êðîìåòîãî , ìûìîæåìàíàëîãè÷íî Logo îïðåäåëèòüáîëåå ñëîæíûéòèï Banner, ïðè÷åì , ýòîïðîèñõîäèòíåçàìåòíîäëÿäèçàé- íåðà ( îíëèøüîïðåäåëÿåòìåòîä render()) èïðîçðà÷íî - äëÿêîíòåíò - ìåíåäæåðà ( âñïèñêåêëàññîâîáúåêòîâ , êîòîðûåîíìîæåòäîáàâèòüâ êàòàëîãïîÿâëÿåòñÿåùåîäèí ). Çàìåòèìåùåîäíóíåìàëîâàæíóþäå- òàëü : íåñêîëüêèìèìàíèïóëÿöèÿìèìûøüþìûìîæåìýêñïîðòèðîâàòü îïðåäåëåíèåîáúåêòàèñàìîáúåêòââèäåïåðåíîñèìîãîôîðìàòà (XML èëè ZEXP) èèìïîðòèðîâàòüâäðóãîéñàéò - âîòèïîâòîðíîåèñïîëüçî- âàíèå . Ôóíêöèîíàëüíàÿïîëíîòàîáåñïå÷èâàåòñÿçàñ÷åòíàñëåäîâàíèÿ ïðèñîçäàíèèòèïàîáúåêòà . ×àñòü V. Ðàçðàáîòêà ïðîãðàììäëÿ PalmOS ïîä PalmOS 150 Ðóêîâîäñòâîðàçðàáîò÷èêà Ãëàâà 21. Ââåäåíèå Âýòîéñòàòüåÿõîòåëáûîñòàíîâèòüñÿïîäðîáíååíàðàçðàáîòêåïðî- ãðàììäëÿ PalmOS â PalmOS . ßèñïîëüçóþäèñòðèáóòèâ ALTLinux Master 2.0 ñíàñòðîåííûìðåïîçèòàðèåìïàêåòîâ Sisyphus 4 , îòêóäàìîæíîëåã- êîóñòàíîâèòüáîëüøèíñòâîíåîáõîäèìûõïðîãðàìì . Êîíå÷íî , âñåèñ- ïîëüçóåìûåïðîãðàììûìîæíîñêà÷àòüâèíòåðíåòå , èèñïîëüçîâàòü áåñïëàòíî . ßíåáóäóïîäðîáíîîïèñûâàòüòåõíîëîãèþïðîãðàììèðîâàíèÿ â PalmOS  äëÿýòîãîìíîãîäîêóìåíòàöèèìîæíîíàéòèâÈí- òåðíåòå . Ãëàâíûìèñïðàâî÷íèêàìèðàçðàáîò÷èêàÿâëÿþòñÿ Palm OSCompanionandReference 5 . Íàòîìæåñàéòåâûìîæåòåíàéòè ìíîãîïîëåçíîéäîêóìåíòàöèè , ïðåäíàçíà÷åííîéäëÿðàçðàáîò- ÷èêîâ : http://www.palmos.com/dev/support/docs/ . Íåïëîõîé ôîðóì , ïîñâÿùåííûéðàçðàáîòêåïîä PalmOS ìîæíîíàéòèíàñàéòå http://pascal.sources.ru/cgi-bin/forum/YaBB.cgi?board=palmos . Èçêîíôåðåíöèé ( news-groups ) ìîãóïîðåêîìåíäîâàòüñåðâåð 4 http://www.altlinux.ru/index.php?module=sisyphus 5 http://www.palmos.com/dev/support/docs/palmos50-html.zip 9 Ãëàâà 21. Ââåäåíèå 151 guikachu ãðàôè÷åñêèéðåäàêòîððåñóðñîâ PalmOS ( íàáàçå gtk/gnome). Ïîçâî- ëÿåò  ðèñîâàòü  èíòåðôåéñïðèëîæåíèé PalmOS ddd ãðàôè÷åñêèé frontend êîòëàä÷èêó gdb, âêëþ÷àÿ m68k-palmos-gdb; gvim ðåäàêòîðèñõîäíûõòåêñòîâ . Ïîäîéäåòëþáîéïðèâû÷íûéðåäàêòîð èëèñðåäà ; 152 Ðóêîâîäñòâîðàçðàáîò÷èêà Ãëàâà 22.PalmOSSDK Äëÿðàáîòûñ gcc íàäîíàñòðàíèöå http://www.palmos.com/dev/tools/sdk/ ïåðåéòèâðàçäåëíóæ- íîéâåðñèè SDK èñêà÷àòüàðõèââðàçäåëå UnsupportedPalmOS SDK5.0forPRC-Tools. ßíàäåþñü , ÷òî rpm óñòàíîâèòôàéëûêóäà íàäî , àäëÿàðõèâà tar.gz íàäîäåëàòüòàê : 1. ñîçäàòüêàòàëîã /usr/local/palmdev/sdk35 èëèíêíàíå¼  /usr/local/palmdev/sdk ( ÷òî - áûëåãêîïåðåêëþ÷àòüñÿìåæäóâåð- ñèÿìè SDK): mkdir/usr/local/palmdev/sdk35 ln-s/usr/local/palmdev/sdk35/usr/local/palmdev/sdk 2. Èçàðõèâàñêîïèðîâàòüñîäåðæèìîåêàòàëîãà PalmOS3.5 Support/Incs âêàòàëîã /usr/local/palmdev/sdk35/include , è Palm OS3.5Support/GCCLibraries  â /usr/local/palmdev/sdk35/lib Äîêóìåíòàöèþìîæíîíàéòèíàâðàçíûõôîðìàòàõ . Íàìáîëüøå ïîäîéäåòâàðèàíòâ HTML èëè PDF. Ãëàâà 23.Prc-tools 153 Ãëàâà 23.Prc-tools Ñêà÷àòüïîñëåäíþþâåðñèþìîæíîñäîìàøíåéñòðàíèöû prc-tools 11 . Íàòåêóùèéìîìåíòýòîâåðñèÿ 2.2 , êîòîðàÿïîääåðæèâàåòïîñëåäíèå ìîäåëè Palm-based óñòðîéñòâíà ARM- ïðîöåññîðàõè PalmOSSDK5. Âïàêåò prc-tools âõîäÿòïðîãðàììû : build-prc ñòðîèòèçáèíàðíûõôàéëîâèðåñóðñîâôàéë .prc ãîòîâûéêóñòàíîâêèíà Palm; m68k-palmos-ar ïîçâîëÿåòñîçäàâàòüñâîèáèáëèîòåêè m68k-palmos-c++ äëÿ Palm ìîæíîïèñàòüïðîãðàììûíà C++ ( ýòî òåìàîòäåëüíîãîðàçãîâîðàèìíîãî÷èñëåííûõñïî- ðîâ ); m68k-palmos-gdb îòëàä÷èêïðîãðàìì . Ìîæíîèñïîëüçîâàòüëèíêñ ðåàëüíûìóñòðîéñòâîìèëèýìóëÿòîðîì POSE; Äðóãèåèíñòðóìåíòû prc-tools âîìíîãîìïîâòîðÿåòñòàíäàðòíûéïàêåò gcc , èèçíà÷àëüíî ÿâëÿëñÿõàêîì 2.95 âåðñèè gcc. Ïîýòîìóêîìàíäûèêëþ÷è prc-tools íåïîêàæóòñÿíåîáû÷íûìèïðîãðàììèñòó , ðàáîòàâøåìóñ gcc. Ñïå- öèôè÷íûåäëÿ PalmOS îïöèèìîæíîïîñìîòðåòüíà ñîîòâåòñâóþùåé 12 ñòðàíèöå . 11 154 Ðóêîâîäñòâîðàçðàáîò÷èêà Ãëàâà 24.POSE POSE ýòîýìóëÿòîð PalmOS -based ìàøèí . Ñóùåñòâóåòâåðñèÿäëÿ UNIX , MacOS , Windows . Èñõîäíèêèìîæíîíàéòèíà ñîîòâåòñòâóùåé 13 ñòðàíèöå . Äëÿäèñòðèáóòèâîâ ALTLinux äîñòàòî÷íîäàòüêîìàíäó 1. Óñòàíîâèòüèíàñòðîèòüïàêåò pilot-link( ñì . ñîîòâåòñâóþùèé ðàçäåëâ  Ðóêîâîäñòâåïîëüçîâàòåëÿ ); 2. Óñòàíîâèòüíà Palm ïðîãðàììó 3. Çàïóñòèòüíà  ïàëüìå  óñòàíîâëåííóþïðîãðàììó 4. Ïîëó÷åííûé pilot.rom ìîæíîçàãðóæàòüâ POSE. Çàìå÷àíèå Íàïîñëåäíèõìîäåëÿõ Palmgetrom2.prc èñïîëüçîâàòüíåëüçÿ . Äîñòàòî÷íîíàæàòüêíîïêóñèíõðîíèçàöèèèçàïóñòèòü pi- Òåïåðüìîæíîçàïóñòèòüèíàñòðîèòü POSE. Âîòêðûâøåìñÿîêíå POSE íàæàòèåìïðàâîéêíîïêèìûøèâûçûâàåòñÿìåíþ . Âûáåðèòå ïóíêò New èçàïîëíèòåïîëÿ : ˆ Âïîëå ROMle íàäîîòêðûòüïóíêò Other èâûáðàòüôàéë , ñêà÷àííûéñïîìîùüþ pi-getrom; ˆ Âïîëå Device ïîÿâèòüñÿíîìåðìîäåëè ; ˆ Âïîëå Skin âûáåðèòåøêóðêó ; 13 http://www.palmos.com/dev/tools/emulator/ 14 http://www.palmos.com/dev/tools/emulator/#roms Ãëàâà 24.POSE 155 ˆ Âïîëå RAMsize ðàçìåðïàìÿòèâàøåãîâèðòóàëüíîãî  ïàë- ìà ; Âîòêàêâûãëÿäèòóìåíÿ POSE, íàñòðîåííûéíà Palmm505: Ðèñóíîê 24.1.POSE, íàñòðîåííûéíà Palmm505 Òåïåðüìîæíîóñòàíàâëèâàòüèîòëàæèâàòüïðîãðàììû . 156 Ðóêîâîäñòâîðàçðàáîò÷èêà Ãëàâà 25.Guickachu è pilrc Ïðîãðàììàäëÿ PalmOS ñîñòîèòèçðåñóðñîâ . Ñàìêîäÿâëÿåòñÿñïå- öèôè÷íûìòèïîìðåñóðñà . Òàêæåêàêèòåêñòïðîãðàììû , ðåñóðñû îïèñûâàþòñÿòåêñòîâûìôàéëîì ( ñòàíäàðòíîåðàñøèðåíèå .rcp), êîòî- ðûéìîæíîðåäàêòèðîâàòüíàïðÿìóþâòåêñòîâîìðåäàêòîðå . Äëÿâèçóàëüíîãîðåäàêòèðîâàíèÿðåñóðñîâñóùåñòâóþòòàêèåïðî- ãðàììûêàê pilrcedit è guikachu. Pilrcedit 15  ýòî Java - ïðèëîæåíèå , èìíåïîêàçàëîñüíåñëèøêîìóäîáíûì .Guikachu íàïèñàíïîä Gtk+ / GNOME , èñïîëüçóåò XML, êàêôîðìàòñîõðàíÿåìûõôàéëîâ , èàêòèâíîðàçâèâàåòñÿ . Ïîñëåäíÿÿñòàáèëüíàÿâåðñèÿíàòåêóùèé ìîìåíò  1.2.3 . Ñêà÷àòüìîæíîñ äîìàøíåéñòðàíèöû 16 . Äëÿäèñ- òðèáóòèâîâ ALTLinux ,guikachu ìîæíîóñòàíîâèòüêîìàíäîé Ðèñóíîê 25.1. Guikachu ïîääåðæèâàåòñëåäóþùèåòèïûðåñóðñîâ : ˆ Ôîðìà ; ˆ Äèàëîã ; ˆ Ìåíþ ; ˆ Ñòðîêà ; ˆ Ñïèñêèñòðîê ; ˆ Òåêñòîâûåïîëÿ ; Âôîðìûìîæíîäîáàâëÿòü : ñòàòè÷åñêèéòåêñò , ïîëÿ , êíîïêè , ñïèñ- êè , òàáëèöû , ïîëüçîâàòåëüñêèåýëåìåíòû . Èíòåðôåéñäîñòàòî÷íîïî- íÿòåíèóäîáåí . 15 http://www.wn.com.au/rnielsen/pilrcedit/ 16 http://cactus.rulez.org/projects/guikachu Ãëàâà 25.Guickachu è pilrc 157 Ïîñëåïîëó÷åíèÿ rcp ôàéëà , åãîíåîáõîäèìîïðåîáðàçîâàòüâáè- íàðíûéôîðìàò . Äëÿýòîãîñëóæèòïðîãðàììà pilrc 17 ( ïîëüçîâàòåëè Sisyphus ìîãóòååóñòàíîâèòüêîìàíäîé Çàìå÷àíèå Âñåèäåíòèôèêàòîðûðåñóðñîââ PalmOS äîëæíûáûòü÷è- ñëîâûìè , íîâïðîãðàììåóäîáíååïîëüçîâàòüñÿãîâîðÿùè- ìèèìåíàìè . Êëþ÷ -H ïîçâîëÿåòàâòîìàòè÷åñêèñãåíåðèðî- âàòüçàãîëîâî÷íûéôàéëñ "#dene Èìÿ×èñëî ", äàâàÿâîç- ìîæíîñòüâïðîãðàììåèñïîëüçîâàòüêîíñòðóêöèèòèïà "case MY_BEST_BUTTON:" âìåñòî "case9991:". 17 http://www.ardiri.com/index.php?redir=palm&cat=pilrc 158 Ðóêîâîäñòâîðàçðàáîò÷èêà Ãëàâà 26. Îòëàä÷èê DDD m68k-palmos-gdb ÿâëÿåòñÿâåðñèåéñòàíäàðòíîãî gdb, ïðîïàò÷åííîãî ïîä Palm, ïîýòîìóìîæíîèñïîëüçîâàòüãðàôè÷åñêèåîáîëî÷êèê gdb. Çäåñüÿðàññêàæóïðîîòëàäêóïîä ddd. ×òîáûïðîãðàììàñîáðàëàñüñîòëàäî÷íîéèíôîðìàöèåé , íàäîäîáà- âèòüêëþ÷ -g ââûçîâå m68k-palmos-gcc. Ðàçìåðîêîí÷àòåëüíîãî .prc - ôàéëàóâåëè÷èòñÿìàëî  äîáàâèòüñÿòîëüêîçàãëóøêà , ïåðåäàþùàÿ óïðàâëåíèþâíåøíåìóîòëàä÷èêóíàõîñòå . Âñÿîòëàäî÷íàÿèíôîðìà- öèÿçàïèñûâàåòñÿâîáúåêòíûéìîäóëü , êîòîðûéèíàäîçàãðóæàòüâ îòëàä÷èê . Äëÿçàïóñêà ddd âêà÷åñòâå frontend ê m68k-palmos-gdb íàäîäàòü êëþ÷ --debuggerm68k-palmos-gdb : ddd--debuggerm68k-palmos-gdb Ïåðâûìäåëîìñòîèòçàãðóçèòü ( Ctrl - O ) îáúåêòíèêñîòëàäî÷íîé èíôîðìàöèåé ( òîòôàéë , êîòîðûéóêàçàíâîïöèè -om68k-palmos-gcc ). ×òîáûñòàðòîâàòüñåññèþîòëàäêèâîêíå gdb íàäîäàòüêîìàíäó Çàìå÷àíèå Äëÿóïðîùåíèÿ , ìîæíîñîçäàòüâ ddd êíîïêó . Äëÿýòîãî íàäîîòêðûòüìåíþ Commands ! EditButtons èâïóíêòå ConsoleButtons ââåñòè : targetpilotlocalhost:6414 . Ïîñëå ýòîãîíàäîêíîìîòëàä÷èêàïîÿâèòüñÿêíîïêàñââåäåííîéêî- ìàíäîé . Òåïåðüîòëàä÷èêæäåò , êîãäàíà pose çàïóñòÿòïðîãðàììó . Ïðèñòàð- òåâýìóëÿòîðåïðîãðàììû , óïðàâëåíèåíåìåäëåííîïåðåäàñòñÿâ ddd, èýêðàí POSE îñòàíåòñÿ÷åðíûé , ïîêàíåïîéäåòâûâîäèçïðîãðàììû . Òåïåðüìîæíîêàêîáû÷íîóñòàíàâëèâàòüòî÷êèïðåðûâàíèÿ , ïðîñìàò- ðèâàòüçíà÷åíèÿïåðåìåííûõèò . ä . Âîòêàêâûãëÿäèòñåññèÿîòëàäêè : Ãëàâà 26. Îòëàä÷èê DDD 159 Ðèñóíîê 26.1. 160 Ðóêîâîäñòâîðàçðàáîò÷èêà Ãëàâà 27. Ñðåäàðàçðàáîòêè Ïîä PalmOS ìîæíîñîáðàòüäëÿñåáÿýôôåêòèâíóþñðåäóðàçðîáîòêè . Âûáîðäîâîëüíîøèðîê :vi,emacs,Anjuta,KDevelop. Âñåýòèïðî- ãðàììûìîæíîíàñòðîèòüäëÿðàçðàáîòêèïîä PalmOS . Óíèâåðñàëüíûì èìîùíûìñðåäñòâîìðàáîòûÿâëÿåòñÿ make.. Ïåðåâîäíàðóññêèéÿçûêëèöåíçèè GNU íàñâîáîäíóþ äîêóìåíòàöèþ 161 Ïåðåâîäíàðóññêèé ÿçûêëèöåíçèè GNU íà ñâîáîäíóþ äîêóìåíòàöèþ Copyright © 2001 ã . ÅëåíàÒÿïêèíà Èñòîðèÿïåðåèçäàíèÿ Èçäàíèå 0.1 9Aug2001 Òåêñò GFDL íààíãëèéñêîìÿçûêåâûìîæåòåïðî÷èòàòüçäåñü : http://www.gnu.org/copyleft/fdl.html GNUFreeDocumentationLicense Copyright © 2000FreeSoftwareFoundation,Inc.59TemplePlace-Suite 330,Boston,MA02111-1307,USA Èñòîðèÿïåðåèçäàíèÿ Èçäàíèå 1.1 ìàðò 2001 ã . Êàæäûéâïðàâåêîïèðîâàòüèðàñïðîñòðàíÿòüýêçåìïëÿðûíàñòîÿ- ùåéËèöåíçèèáåçâíåñåíèÿèçìåíåíèéâååòåêñò . 0. Ïðåàìáóëà ÖåëüíàñòîÿùåéËèöåíçèè  ñäåëàòüñâîáîäíûìèñïðàâî÷íèê , ðóêî- âîäñòâîïîëüçîâàòåëÿèëèèíûåäîêóìåíòûâïèñüìåííîéôîðìå , ò . å . îáåñïå÷èòüêàæäîìóïðàâîñâîáîäíîêîïèðîâàòüèðàñïðîñòðàíÿòüêàê ñèçìåíåíèÿìè , òàêèáåçèçìåíåíèé , çàâîçíàãðàæäåíèåèëèáåñïëàòíî óêàçàííûåäîêóìåíòû . ÍàñòîÿùàÿËèöåíçèÿòàêæåïîçâîëÿåòàâòîðàì èëèèçäàòåëÿìäîêóìåíòàñîõðàíèòüñâîþðåïóòàöèþ , íåïðèíèìàÿíà ñåáÿîòâåòñòâåííîñòüçàèçìåíåíèÿ , ñäåëàííûåòðåòüèìèëèöàìè . 162 Ðóêîâîäñòâîðàçðàáîò÷èêà ÍàñòîÿùàÿËèöåíçèÿîòíîñèòñÿêêàòåãîðèè copyleft 19 . Ýòî îçíà÷àåò , ÷òîâñåïðîèçâåäåíèÿ , ïðîèçâîäíûåîòäîêóìåíòà , äîëæíû áûòüñâîáîäíûìèâñîîòâåòñòâèèñêîíöåïöèåé copyleft. Íàñòîÿùàÿ Ëèöåíçèÿäîïîëíÿåò GeneralPublicLicenseGNU, êîòîðàÿÿâëÿåòñÿ ëèöåíçèåé copyleft, ðàçðàáîòàííîéäëÿñâîáîäíîãîïðîãðàììíîãî îáåñïå÷åíèÿ . ÍàñòîÿùàÿËèöåíçèÿðàçðàáîòàíàäëÿïðèìåíåíèÿååêäîêóìåíòà- öèèíàñâîáîäíîåïðîãðàììíîåîáåñïå÷åíèå , ïîñêîëüêóñâîáîäíîåïðî- ãðàììíîåîáåñïå÷åíèåäîëæíîñîïðîâîæäàòüñÿñâîáîäíîéäîêóìåíòà- öèåé . Ïîëüçîâàòåëüäîëæåíîáëàäàòüòåìèæåïðàâàìèâîòíîøåíèè ðóêîâîäñòâàïîëüçîâàòåëÿ , êàêèìèîíîáëàäàåòâîòíîøåíèèñâîáîäíî- ãîïðîãðàììíîãîîáåñïå÷åíèÿ . ÏðèýòîìäåéñòâèåíàñòîÿùåéËèöåí- çèèíåðàñïðîñòðàíÿåòñÿòîëüêîíàðóêîâîäñòâîïîëüçîâàòåëÿ . Íàñòîÿ- ùàÿËèöåíçèÿìîæåòïðèìåíÿòüñÿêëþáîìóòåêñòîâîìóïðîèçâåäåíèþ íåçàâèñèìîîòåãîòåìûèëèîòòîãî , èçäàíîëèäàííîåïðîèçâåäåíèå ââèäåïå÷àòíîéêíèãèèëèíåò . ÍàñòîÿùóþËèöåíçèþðåêîìåíäóåòñÿ ïðèìåíÿòüäëÿïðîèçâåäåíèéñïðàâî÷íîãîèëèîáó÷àþùåãîõàðàêòåðà . 1. Ñôåðàäåéñòâèÿ , òåðìèíûèèõ îïðåäåëåíèÿ ÓñëîâèÿíàñòîÿùåéËèöåíçèèïðèìåíÿþòñÿêëþáîìóðóêîâîäñòâó ïîëüçîâàòåëÿèëèèíîìóïðîèçâåäåíèþ , êîòîðîåâñîîòâåòñòâèèñóâå- äîìëåíèåì , ïîìåùåííûìïðàâîîáëàäàòåëåì , ìîæåòðàñïðîñòðàíÿòüñÿ íàóñëîâèÿõíàñòîÿùåéËèöåíçèè . Äàëååïîäòåðìèíîì  Äîêóìåíò  ïîíèìàåòñÿëþáîåïîäîáíîåðóêîâîäñòâîïîëüçîâàòåëÿèëèïðîèçâå- äåíèå . Ëèöî , êîòîðîìóïåðåäàþòñÿïðàâàïîíàñòîÿùåéËèöåíçèè , â äàëüíåéøåìèìåíóåòñÿ  Ëèöåíçèàò .  ÌîäèôèöèðîâàííàÿâåðñèÿÄîêóìåíòà   ëþáîåïðîèçâåäåíèå , ñîäåðæàùååÄîêóìåíòèëèåãî÷àñòü , ñêîïèðîâàííûåêàêñèçìåíåíè- ÿìè , òàêèáåçíèõè / èëèïåðåâåäåííûåíàäðóãîéÿçûê . 19 Òåðìèí copyleft èñïîëüçóåòñÿàâòîðàìèïðîåêòà GNUFreeSoftware Foundation âêà÷åñòâåîäíîãîèçîñíîâíûõïîíÿòèéâêîíöåïöèèñâîáîäíîãîïðî- ãðàììíîãîîáåñïå÷åíèÿ (freesoftware). Äàííûéòåðìèíîáðàçóåòñÿçàñ÷åòçà- ìåíûâàíãëèéñêîìÿçûêåòåðìèíà copyright( àâòîðñêîåïðàâî ) íà copyleft. Êàêóêàçûâàþòàâòîðûïðîåêòà ,copyleft ýòîíàèáîëååîáùèéñïîñîáñäå- ëàòüïðîãðàììíîåîáåñïå÷åíèåñâîáîäíûìèîáåñïå÷èòüñîáëþäåíèåóñëîâèé , â ñîîòâåòñòâèèñêîòîðûìèâñåèçìåíåííûåèðàñïðîñòðàíÿåìûåâåðñèèïðîãðàìì- íîãîîáåñïå÷åíèåòàêæåñîõðàíÿëèáûñòàòóññâîáîäíîãîïðîãðàììíîãîîáåñïå- ÷åíèÿ . Áîëååïîäðîáíîîêîíöåïöèè copyleft âûìîæåòåïðî÷èòàòüçäåñü : http://www.gnu.org/copyleft/copyleft.html . ( ïðèì . ïåðåâ .) Ïåðåâîäíàðóññêèéÿçûêëèöåíçèè GNU íàñâîáîäíóþ äîêóìåíòàöèþ 163  Âòîðîñòåïåííûéðàçäåë   èìåþùååíàçâàíèåïðèëîæåíèåèëè ïðåäèñëîâèåêÄîêóìåíòó , âêîòîðîìîòðàæåíîèñêëþ÷èòåëüíîîòíî- øåíèåèçäàòåëåéèëèàâòîðîâÄîêóìåíòàêåãîñîäåðæàíèþâöåëîì , ëèáîêâîïðîñàì , ñâÿçàííûìññîäåðæàíèåìÄîêóìåíòà . Âòîðîñòåïåí- íûéðàçäåëíåìîæåòâêëþ÷àòüâñåáÿòî , ÷òîîòíîñèòñÿíåïîñðåä- ñòâåííîêñîäåðæàíèþÄîêóìåíòà .( Íàïðèìåð , åñëè÷àñòüÄîêóìåí- òàÿâëÿåòñÿó÷åáíèêîìïîìàòåìàòèêå , âîÂòîðîñòåïåííîìðàçäåëåíå ìîæåòñîäåðæàòüñÿ÷òî - ëèáîèìåþùååîòíîøåíèåíåïîñðåäñòâåííîê ìàòåìàòèêå ). ÂîÂòîðîñòåïåííûõðàçäåëàõìîãóòáûòüçàòðîíóòûâî- ïðîñûèñòîðèèòîãî , ÷òîñîñòàâëÿåòñîäåðæàíèåèëè÷òîñâÿçàíîññî- äåðæàíèåìÄîêóìåíòà , àòàêæåïðàâîâûå , êîììåð÷åñêèå , ôèëîñîô- ñêèå , ýòè÷åñêèåèëèïîëèòè÷åñêèåâçãëÿäûîòíîñèòåëüíîñîäåðæàíèÿ Äîêóìåíòà .  Íåèçìåíÿåìûåðàçäåëû   îïðåäåëåííûåÂòîðîñòåïåííûåðàçäå- ëû , íàçâàíèÿêîòîðûõïåðå÷èñëåíûêàêÍåèçìåíÿåìûåðàçäåëûâóâå- äîìëåíèèÄîêóìåíòà , îïðåäåëÿþùåìëèöåíçèîííûåóñëîâèÿ .  Òåêñò , ïîìåùàåìûéíàîáëîæêå   îïðåäåëåííûåêðàòêèåñòðî- êèòåêñòà , êîòîðûåïåðå÷èñëåíûâóâåäîìëåíèèÄîêóìåíòà , îïðåäå- ëÿþùåìëèöåíçèîííûåóñëîâèÿ , êàêòåêñò , ïîìåùàåìûéíàïåðâîéè ïîñëåäíåéñòðàíèöàõîáëîæêè .  Ïðîçðà÷íûé  ýêçåìïëÿðÄîêóìåíòà  ýêçåìïëÿðÄîêóìåíòàâìà- øèíî÷èòàåìîéôîðìå , ïðåäñòàâëåííûéâôîðìàòåñîáùåäîñòóïíîé ñïåöèôèêàöèåéïðèóñëîâèè , ÷òîäîêóìåíòìîæåòïðîñìàòðèâàòüñÿè ðåäàêòèðîâàòüñÿíåïîñðåäñòâåííîñïîìîùüþîáùåäîñòóïíûõòåêñòî- âûõðåäàêòîðîâèëèîáùåäîñòóïíûõïðîãðàììäëÿâåêòîðíîéèëèðà- ñòðîâîéãðàôèêè ( âñëó÷àå , åñëèâäîêóìåíòåñîäåðæàòñÿèçîáðàæåíèÿ âåêòîðíîéèëèðàñòðîâîéãðàôèêè ). Óêàçàííûéôîðìàòäîëæåíîáåñ- ïå÷èòüââîäòåêñòàÄîêóìåíòàâïðîãðàììûôîðìàòèðîâàíèÿòåêñòà èëèàâòîìàòè÷åñêèéïåðåâîäÄîêóìåíòàâðàçëè÷íûåôîðìàòû , ïîä- õîäÿùèåäëÿââîäàòåêñòàÄîêóìåíòàâïðîãðàììûôîðìàòèðîâàíèÿ òåêñòà . ÝêçåìïëÿðÄîêóìåíòà , ïðåäñòàâëåííûéâèíîìôîðìàòå , ðàç- ìåòêàêîòîðîãîçàòðóäíÿåòèëèïðåïÿòñòâóåòâíåñåíèþâÄîêóìåíò ïîñëåäóþùèõèçìåíåíèéïîëüçîâàòåëÿìè , íåÿâëÿåòñÿÏðîçðà÷íûì . Òàêîéýêçåìïëÿðäîêóìåíòàíàçûâàåòñÿ  Íåïðîçðà÷íûì  . Ôîðìàòû , âêîòîðûõìîæåòáûòüïðåäñòàâëåíÏðîçðà÷íûéýêçåì- ïëÿðÄîêóìåíòà , âêëþ÷àþòïðîñòîéôîðìàò ASCII áåçðàçìåòêè , ôîð- ìàòââîäà Texinfo, ôîðìàòââîäà LaTeX,SGML èëè XML ñèñïîëüçî- âàíèåìîáùåäîñòóïíîãî DTD, àòàêæåñîîòâåòñòâóþùèéñòàíäàðòàì ïðîñòîéôîðìàò HTML, ïðåäíàçíà÷åíèéäëÿâíåñåíèÿìîäèôèêàöèé ÷åëîâåêîì . Íåïðîçðà÷íûå  ôîðìàòûâêëþ÷àþòâñåáÿ PostScript, PDF, ôîðìàòû , êîòîðûåìîæíîïðî÷èòàòüèðåäàêòèðîâàòüòîëüêîñ 164 Ðóêîâîäñòâîðàçðàáîò÷èêà ïîìîùüþòåêñòîâûõðåäàêòîðîâ , ïðàâàíàèñïîëüçîâàíèåêîòîðûõñâî- áîäíîíåïåðåäàþòñÿ , ôîðìàòû SGML èëè XML, äëÿêîòîðûõ DTD èëè èíñòðóìåíòûäëÿîáðàáîòêèíåÿâëÿþòñÿîáùåäîñòóïíûìè , àòàêæå ãåíåðèðóåìûéìàøèíîé HTML, êîòîðûéâûðàáàòûâàåòñÿíåêîòîðûìè òåêñòîâûìèðåäàêòîðàìèèñêëþ÷èòåëüíîâöåëÿõâûâîäà .  Òèòóëüíûéëèñò   äëÿïå÷àòíîéêíèãèñîáñòâåííîòèòóëüíûé ëèñò , àòàêæåñëåäóþùèåçàíèìñòðàíèöû , êîòîðûåäîëæíûñîäåð- æàòüñâåäåíèÿ , ïîìåùàåìûåíàòèòóëüíîìëèñòåâñîîòâåòñòâèèñóñëî- âèÿìèíàñòîÿùåéËèöåíçèè . Äëÿïðîèçâåäåíèé , ôîðìàòêîòîðûõíå ïðåäïîëàãàåòíàëè÷èåòèòóëüíîãîëèñòà , ïîäÒèòóëüíûìëèñòîìïî- íèìàåòñÿòåêñò , êîòîðûéïîìåùåíïåðåäíà÷àëîìîñíîâíîãîòåêñòà ïðîèçâåäåíèÿ , ïîñëååãîíàçâàíèÿ , íàïå÷àòàííîãîíàèáîëååçàìåòíûì øðèôòîì . 2. Êîïèðîâàíèåáåçâíåñåíèÿèçìåíåíèé ËèöåíçèàòâïðàâåâîñïðîèçâîäèòüèðàñïðîñòðàíÿòüýêçåìïëÿðûÄî- êóìåíòàíàëþáîìíîñèòåëåçàâîçíàãðàæäåíèåèëèáåçâîçìåçäíîïðè óñëîâèè , ÷òîêàæäûéýêçåìïëÿðñîäåðæèòòåêñòíàñòîÿùåéËèöåíçèè , çíàêèîõðàíûàâòîðñêèõïðàâ , àòàêæåóâåäîìëåíèå , ÷òîýêçåìïëÿð ðàñïðîñòðàíÿåòñÿâñîîòâåòñòâèèñíàñòîÿùåéËèöåíçèåé , ïðèýòîì Ëèöåíçèàòíåâïðàâåïðåäóñìàòðèâàòüèíûåëèöåíçèîííûåóñëîâèÿäî- ïîëíèòåëüíîêòåì , êîòîðûåçàêðåïëåíûâíàñòîÿùåéËèöåíçèè . Ëè- öåíçèàòíåâïðàâåèñïîëüçîâàòüòåõíè÷åñêèåñðåäñòâàäëÿâîñïðåïÿò- ñòâîâàíèÿèëèêîíòðîëÿçà÷òåíèåìèëèïîñëåäóþùèìèçãîòîâëåíè- åìêîïèéñýêçåìïëÿðîâ , ðàñïðîñòðàíÿåìûõËèöåíçèàòîì . Ëèöåíçèàò âïðàâåïîëó÷àòüâîçíàãðàæäåíèåçàèçãîòîâëåíèåèðàñïðîñòðàíåíèå ýêçåìïëÿðîâÄîêóìåíòà . Ïðèðàñïðîñòðàíåíèèáîëüøîãîêîëè÷åñòâà ýêçåìïëÿðîâÄîêóìåíòàËèöåíçèàòîáÿçàíñîáëþäàòüóñëîâèÿïóíêòà 3 íàñòîÿùåéËèöåíçèè . ËèöåíçèàòâïðàâåñäàâàòüýêçåìïëÿðûÄîêóìåíòàâïðîêàòíàóñëî- âèÿõ , îïðåäåëåííûõâïðåäûäóùåìàáçàöå , èëèîñóùåñòâëÿòüïóáëè÷- íûéïîêàçýêçåìïëÿðîâÄîêóìåíòà . 3. Òèðàæèðîâàíèå ÅñëèËèöåíçèàòèçäàåòïå÷àòíûåýêçåìïëÿðûÄîêóìåíòàâêîëè÷å- ñòâåñâûøå 100, èâñîîòâåòñòâèèñóâåäîìëåíèåìÄîêóìåíòà , îïðåäå- ëÿþùåìëèöåíçèîííûåóñëîâèÿ , ÄîêóìåíòäîëæåíñîäåðæàòüÒåêñò , Ïåðåâîäíàðóññêèéÿçûêëèöåíçèè GNU íàñâîáîäíóþ äîêóìåíòàöèþ 165 ïîìåùàåìûéíàîáëîæêå , ËèöåíçèàòîáÿçàíèçäàâàòüýêçåìïëÿðûÄî- êóìåíòàâîáëîæêåñíàïå÷àòàííûìèíàíåéÿñíîèðàçáîð÷èâîñîîò- âåòñòâóþùèìèÒåêñòàìè , ïîìåùàåìûìèíàîáëîæêå : Òåêñòû , ïîìå- ùàåìûåíàïåðâîéñòðàíèöåîáëîæêè  íàïåðâîéñòðàíèöå , Òåêñòû , ïîìåùàåìûåíàïîñëåäíåéñòðàíèöå  ñîîòâåòñòâåííîíàïîñëåäíåé . ÒàêæåíàïåðâîéèïîñëåäíåéñòðàíèöåîáëîæêèýêçåìïëÿðàÄîêóìåí- òàäîëæíîáûòüÿñíîèðàçáîð÷èâîóêàçàíî , ÷òîËèöåíçèàòÿâëÿåòñÿ èçäàòåëåìäàííûõýêçåìïëÿðîâ . Íàïåðâîéñòðàíèöåîáëîæêèäîëæíî áûòüóêàçàíîïîëíîåíàçâàíèåÄîêóìåíòàáåçïðîïóñêîâèñîêðàùåíèé , âñåñëîâàâíàçâàíèèäîëæíûáûòüíàáðàíûøðèôòîìîäèíàêîâîãî ðàçìåðà . Ëèöåíçèàòâïðàâåïîìåñòèòüïðî÷èåñâåäåíèÿíàîáëîæêå ýêçåìïëÿðà . ÅñëèïðèèçäàíèèýêçåìïëÿðîâÄîêóìåíòàèçìåíÿþòñÿ òîëüêîñâåäåíèÿ , ïîìåùåííûåíàîáëîæêåýêçåìïëÿðà , çàèñêëþ÷åíèåì íàçâàíèÿÄîêóìåíòà , èïðèýòîìñîáëþäàþòñÿòðåáîâàíèÿíàñòîÿùåãî ïóíêòà , òàêèåäåéñòâèÿïðèðàâíèâàþòñÿêêîïèðîâàíèþáåçâíåñåíèÿ èçìåíåíèé . Åñëèîáúåìòåêñòà , êîòîðûéäîëæåíáûòüïîìåùåííàîáëîæêåýê- çåìïëÿðà , íåïîçâîëÿåòíàïå÷àòàòüåãîðàçáîð÷èâî , Ëèöåíçèàòîáÿ- çàíïîìåñòèòüðàçóìíóþ÷àñòüòåêñòàíåïîñðåäñòâåííîíàîáëîæêå , à îñòàëüíîéòåêñòíàñòðàíèöàõÄîêóìåíòà , ñëåäóþùèõñðàçóçàîáëîæ- êîé . ÅñëèËèöåíçèàòèçäàåòèëèðàñïðîñòðàíÿåòÍåïðîçðà÷íûåýêçåì- ïëÿðûÄîêóìåíòàâêîëè÷åñòâåñâûøå 100, Ëèöåíçèàòîáÿçàíêêàæ- äîìóòàêîìóýêçåìïëÿðóïðèëîæèòüÏðîçðà÷íûéýêçåìïëÿðýòîãîÄî- êóìåíòàâìàøèíî÷èòàåìîéôîðìåèëèóêàçàòüíàêàæäîìÍåïðîçðà÷- íîìýêçåìïëÿðåÄîêóìåíòààäðåñâêîìïüþòåðíîéñåòèîáùåãîïîëü- çîâàíèÿ , ãäåñîäåðæèòñÿÏðîçðà÷íûéýêçåìïëÿðáåçêàêèõ - ëèáîäî- áàâëåííûõìàòåðèàëîâ , ïîëíûéòåêñòêîòîðîãîêàæäûéïîëüçîâàòåëü êîìïüþòåðíîéñåòèîáùåãîïîëüçîâàíèÿâïðàâåáåñïëàòíî , íåíàçûâàÿ ñâîåãîèìåíèèíåðåãèñòðèðóÿñü , çàïèñàòüâïàìÿòüêîìïüþòåðàñèñ- ïîëüçîâàíèåìîáùåäîñòóïíûõñåòåâûõïðîòîêîëîâ . Âîâòîðîìñëó÷àå Ëèöåíçèàòîáÿçàíïðåäïðèíÿòüðàçóìíûåøàãèñòåì , ÷òîáûäîñòóï êÏðîçðà÷íîìóýêçåìïëÿðóÄîêóìåíòàïîóêàçàííîìóàäðåñóñîõðà- íÿëñÿïîêðàéíåéìåðåâòå÷åíèåîäíîãîãîäàïîñëåïîñëåäíåãîðàñ- ïðîñòðàíåíèÿÍåïðîçðà÷íîãîýêçåìïëÿðàÄîêóìåíòàäàííîãîòèðàæà , íåçàâèñèìîîòòîãî , áûëîëèðàñïðîñòðàíåíèåîñóùåñòâëåíîËèöåíçè- àòîìíåïîñðåäñòâåííîèëè÷åðåçàãåíòîâèëèðîçíè÷íûõïðîäàâöîâ . Ïðåæäå÷åìíà÷àòüðàñïðîñòðàíåíèåáîëüøîãîêîëè÷åñòâàýêçåìïëÿ- ðîâÄîêóìåíòàËèöåíçèàòóçàáëàãîâðåìåííîñëåäóåòñâÿçàòüñÿñàâòî- ðàìèÄîêóìåíòà , ÷òîáûîíèèìåëèâîçìîæíîñòüïðåäîñòàâèòüËèöåí- 166 Ðóêîâîäñòâîðàçðàáîò÷èêà çèàòóîáíîâëåííóþâåðñèþÄîêóìåíòà . Ëèöåíçèàòíåîáÿçàíâûïîë- íÿòüäàííîåóñëîâèå . 4. Âíåñåíèåèçìåíåíèé ËèöåíçèàòâïðàâåâîñïðîèçâîäèòüèðàñïðîñòðàíÿòüÌîäèôèöèðî- âàííûåâåðñèèÄîêóìåíòàâñîîòâåòñòâèèñóñëîâèÿìèïóíêòîâ 2 è 3 íàñòîÿùåéËèöåíçèè , ïðèóñëîâèè÷òîÌîäèôèöèðîâàííàÿâåðñèÿÄî- êóìåíòàïóáëèêóåòñÿâñîîòâåòñòâèèñíàñòîÿùåéËèöåíçèåé . Â÷àñò- íîñòè , Ëèöåíçèàòîáÿçàíïåðåäàòüêàæäîìóîáëàäàòåëþýêçåìïëÿðà ÌîäèôèöèðîâàííîéâåðñèèÄîêóìåíòàïðàâàíàðàñïðîñòðàíåíèåè âíåñåíèåèçìåíåíèéâäàííóþÌîäèôèöèðîâàííóþâåðñèþÄîêóìåíòà , àíàëîãè÷íîïðàâàìíàðàñïðîñòðàíåíèåèâíåñåíèåèçìåíåíèé , êîòîðûå ïåðåäàþòñÿîáëàäàòåëþýêçåìïëÿðàÄîêóìåíòà . Ïðèðàñïðîñòðàíåíèè ÌîäèôèöèðîâàííûõâåðñèéÄîêóìåíòàËèöåíçèàòîáÿçàí : A. ïîìåñòèòüíàÒèòóëüíîìëèñòåèíàîáëîæêåïðèååíàëè÷èèíàçâà- íèåÌîäèôèöèðîâàííîéâåðñèè , îòëè÷àþùååñÿîòíàçâàíèÿÄî- êóìåíòàèíàçâàíèéïðåäûäóùèõâåðñèé . Íàçâàíèÿïðåäûäóùèõ âåðñèéïðèèõíàëè÷èèäîëæíûáûòüóêàçàíûâÄîêóìåíòåâðàç- äåëå  Èñòîðèÿ . Ëèöåíçèàòâïðàâåèñïîëüçîâàòüíàçâàíèåïðåäû- äóùåéâåðñèèÄîêóìåíòàññîãëàñèÿèçäàòåëÿïðåäûäóùåéâåðñèè ; B. óêàçàòüíàÒèòóëüíîìëèñòåâêà÷åñòâåàâòîðîâòåõëèö , êîòîðûå ÿâëÿþòñÿàâòîðàìèèçìåíåíèéâÌîäèôèöèðîâàííîéâåðñèè , à òàêæåíåìåíååïÿòèîñíîâíûõàâòîðîâÄîêóìåíòàëèáîâñåõ àâòîðîâ , åñëèèõíåáîëååïÿòè ; C. óêàçàòüíàÒèòóëüíîìëèñòåíàèìåíîâàíèåèçäàòåëÿÌîäèôèöè- ðîâàííîéâåðñèè , ñóêàçàíèåì , ÷òîîíÿâëÿåòñÿèçäàòåëåìäàííîé Âåðñèè ; D. ñîõðàíèòüâñåçíàêèîõðàíûàâòîðñêîãîïðàâàÄîêóìåíòà ; E. ïîìåñòèòüñîîòâåòñòâóþùèéçíàêîõðàíûàâòîðñêîãîïðàâàíà âíåñåííûåËèöåíçèàòîìèçìåíåíèÿðÿäîìñïðî÷èìèçíàêàìè îõðàíûàâòîðñêîãîïðàâà ; F. ïîìåñòèòüíåïîñðåäñòâåííîïîñëåçíàêîâîõðàíûàâòîðñêîãîïðàâà óâåäîìëåíèå , âñîîòâåòñòâèèñêîòîðûìêàæäîìóïðåäîñòàâëÿåòñÿ ïðàâîèñïîëüçîâàòüÌîäèôèöèðîâàííóþÂåðñèþâñîîòâåòñòâèèñ óñëîâèÿìèíàñòîÿùåéËèöåíçèè . Òåêñòóâåäîìëåíèÿïðèâîäèòñÿ âÏðèëîæåíèèêíàñòîÿùåéËèöåíçèè ; G. ñîõðàíèòüâóâåäîìëåíèè , óêàçàííîìâïîäïóíêòå F, ïîëíûéñïè- ñîêÍåèçìåíÿåìûõðàçäåëîâèÒåêñòà , ïîìåùàåìîãîíàîáëîæêå , ïåðå÷èñëåííûõâóâåäîìëåíèèÄîêóìåíòà ; Ïåðåâîäíàðóññêèéÿçûêëèöåíçèè GNU íàñâîáîäíóþ äîêóìåíòàöèþ 167 H. âêëþ÷èòüâÌîäèôèöèðîâàííóþâåðñèþòåêñòíàñòîÿùèéËèöåí- çèèáåçêàêèõ - ëèáîèçìåíåíèé ; I. ñîõðàíèòüâÌîäèôèöèðîâàííîéâåðñèèðàçäåë  Èñòîðèÿ , âêëþ- ÷àÿåãîíàçâàíèå , èäîïîëíèòüåãîïóíêòîì , âêîòîðîìóêàçàòü òàêæå , êàêäàííûåñâåäåíèÿóêàçàíûíàÒèòóëüíîìëèñòå , íà- çâàíèå , ãîäïóáëèêàöèè , íàèìåíîâàíèÿíîâûõàâòîðîâèèçäàòåëÿ Ìîäèôèöèðîâàííîéâåðñèè . ÅñëèâÄîêóìåíòåîòñóòñòâóåòðàç- äåë  Èñòîðèÿ , ËèöåíçèàòîáÿçàíñîçäàòüâÌîäèôèöèðîâàííîé âåðñèèòàêîéðàçäåë , óêàçàòüâíåìíàçâàíèå , ãîäïóáëèêàöèè , àâ- òîðîâèèçäàòåëÿÄîêóìåíòàòàêæå , êàêäàííûåñâåäåíèÿóêàçàíû íàÒèòóëüíîìëèñòåÄîêóìåíòàèäîïîëíèòüýòîòðàçäåëïóíêòîì , ñîäåðæàíèåêîòîðîãîîïèñàíîâïðåäûäóùåìïðåäëîæåíèè ; J. ñîõðàíèòüâÌîäèôèöèðîâàííîéâåðñèèàäðåñâêîìïüþòåðíîé ñåòè , óêàçàííûéâÄîêóìåíòå , ïîêîòîðîìóêàæäûéâïðàâåîñó- ùåñòâèòüäîñòóïêÏðîçðà÷íîìóýêçåìïëÿðóÄîêóìåíòà , àòàêæå àäðåñâêîìïüþòåðíîéñåòè , óêàçàííûéâÄîêóìåíòå , ïîêîòîðî- ìóìîæíîïîëó÷èòüäîñòóïêïðåäûäóùèìâåðñèÿìÄîêóìåíòà . Àäðåñà , ïîêîòîðûìíàõîäÿòñÿïðåäûäóùèåâåðñèèÄîêóìåíòà , ìîæíîïîìåñòèòüâðàçäåë  Èñòîðèÿ . Ëèöåíçèàòâïðàâåíåóêà- çûâàòüàäðåñïðîèçâåäåíèÿâêîìïüþòåðíîéñåòè , êîòîðîåáûëî îïóáëèêîâàíîíåìåíåå÷åìçà÷åòûðåãîäàäîïóáëèêàöèèñàìîãî Äîêóìåíòà . Ëèöåíçèàòâïðàâåíåóêàçûâàòüàäðåñîïðåäåëåííîé âåðñèèâêîìïüþòåðíîéñåòèñðàçðåøåíèÿïåðâîíà÷àëüíîãîèçäà- òåëÿäàííîéâåðñèè ; K. ñîõðàíèòüáåçèçìåíåíèéíàçâàíèÿðàçäåëîâ  Áëàãîäàðíîñòè  èëè  Ïîñâÿùåíèÿ , àòàêæåñîäåðæàíèåèñòèëüêàæäîéáëàãîäàðíî- ñòèè / èëèïîñâÿùåíèÿ ; L. ñîõðàíèòüáåçèçìåíåíèéíàçâàíèÿèñîäåðæàíèåâñåõÍåèçìåíÿå- ìûõðàçäåëîâÄîêóìåíòà . Íóìåðàöèÿäàííûõðàçäåëîâèëèèíîé ñïîñîáèõïåðå÷èñëåíèÿíåâêëþ÷àåòñÿâñîñòàâíàçâàíèéðàçäå- ëîâ ; M. óäàëèòüñóùåñòâóþùèéðàçäåëÄîêóìåíòàïîäíàçâàíèåì  Îäî- áðåíèÿ . Òàêîéðàçäåëíåìîæåòáûòüâêëþ÷åíâÌîäèôèöèðî- âàííóþâåðñèþ ; N. íåïðèñâàèâàòüñóùåñòâóþùèìðàçäåëàìÌîäèôèöèðîâàííîéâåð- ñèèíàçâàíèå  Îäîáðåíèÿ  èëèòàêèåíàçâàíèÿ , êîòîðûåïîâòîðÿ- þòíàçâàíèåëþáîãîèçÍåèçìåíÿåìûõðàçäåëîâ . ÅñëèâÌîäèôèöèðîâàííóþâåðñèþâêëþ÷åíûíîâûåïðåäèñëîâèÿ èëèïðèëîæåíèÿ , êîòîðûåìîãóòáûòüîïðåäåëåíûêàêÂòîðîñòåïåííûå ðàçäåëûèêîòîðûåíåñîäåðæàòòåêñò , ñêîïèðîâàííûéèçÄîêóìåíòà , 168 Ðóêîâîäñòâîðàçðàáîò÷èêà Ëèöåíçèàòâïðàâåïîñâîåìóâûáîðóîïðåäåëèòüâñåèëèíåêîòîðûå èçýòèõðàçäåëîâêàêÍåèçìåíÿåìûå . Äëÿýòîãîñëåäóåòäîáàâèòüèõ íàçâàíèÿâñïèñîêÍåèçìåíÿåìûõðàçäåëîââóâåäîìëåíèèâÌîäèôè- öèðîâàííîéâåðñèè , îïðåäåëÿþùåìëèöåíçèîííûåóñëîâèÿ . Íàçâàíèÿ äàííûõðàçäåëîâäîëæíûîòëè÷àòüñÿîòíàçâàíèéâñåõîñòàëüíûõðàç- äåëîâ . ËèöåíçèàòâïðàâåäîïîëíèòüÌîäèôèöèðîâàííóþâåðñèþíîâûì ðàçäåëîì  Îäîáðåíèÿ  ïðèóñëîâèè , ÷òîâíåãîâêëþ÷åíûèñêëþ- ÷èòåëüíîîäîáðåíèÿÌîäèôèöèðîâàííîéâåðñèèÄîêóìåíòàòðåòüèìè ñòîðîíàìè , íàïðèìåðîöåíêèýêñïåðòîâèëèóêàçàíèÿ , ÷òîòåêñòÌî- äèôèöèðîâàííîéâåðñèèáûëîäîáðåíîðãàíèçàöèåéâêà÷åñòâåîôèöè- àëüíîãîîïðåäåëåíèÿñòàíäàðòà . ËèöåíçèàòâïðàâåäîïîëíèòåëüíîïîìåñòèòüíàîáëîæêåÌîäèôè- öèðîâàííîéâåðñèèÒåêñò , ïîìåùàåìûéíàîáëîæêå , íåïðåâûøàþùèé ïÿòèñëîâäëÿïåðâîéñòðàíèöûîáëîæêåè 25 ñëîâäëÿïîñëåäíåéñòðà- íèöûîáëîæêè . ÊÒåêñòó , ïîìåùàåìîìóíàîáëîæêå , êàæäûìëèöîì íåïîñðåäñòâåííîèëèîòèìåíèýòîãîëèöàíàîñíîâàíèèñîãëàøåíèÿ ñíèììîæåòáûòüäîáàâëåíîòîëüêîïîîäíîéñòðîêåíàïåðâîéèíà ïîñëåäíåéñòðàíèöàõîáëîæêè . ÅñëèíàîáëîæêåÄîêóìåíòàËèöåíçè- àòîìîòñâîåãîèìåíèèëèîòèìåíèëèöà , âèíòåðåñàõêîòîðîãîäåé- ñòâóåòËèöåíçèàò , óæåáûëïîìåùåíÒåêñò , ïîìåùàåìûéíàîáëîæêå , ËèöåíçèàòíåâïðàâåäîáàâèòüäðóãîéÒåêñò . Âýòîìñëó÷àåËèöåíçè- àòâïðàâåçàìåíèòüñòàðûéòåêñòíàíîâûéñðàçðåøåíèÿïðåäûäóùåãî èçäàòåëÿ , êîòîðûéâêëþ÷èëñòàðûéòåêñòâèçäàíèå . ÏîíàñòîÿùåéËèöåíçèèàâòîð ( û ) èèçäàòåëü ( è ) Äîêóìåíòàíåïåðå- äàþòïðàâîèñïîëüçîâàòüèõèìåíàè / èëèíàèìåíîâàíèÿâöåëÿõðå- êëàìûèëèçàÿâëåíèÿèëèïðåäïîëîæåíèÿ , ÷òîëþáàÿèçÌîäèôèöè- ðîâàííûõÂåðñèéïîëó÷èëàèõîäîáðåíèå . 5. Îáúåäèíåíèåäîêóìåíòîâ Ëèöåíçèàòññîáëþäåíèåìóñëîâèéï .4 íàñòîÿùåéËèöåíçèèâïðàâå îáúåäèíèòüÄîêóìåíòñäðóãèìèäîêóìåíòàìè , êîòîðûåîïóáëèêîâàíû íàóñëîâèÿõíàñòîÿùåéËèöåíçèè , ïðèýòîìËèöåíçèàòäîëæåíâêëþ- ÷èòüâïðîèçâåäåíèå , âîçíèêøååâðåçóëüòàòåîáúåäèíåíèÿ , âñåÍåèç- ìåíÿåìûåðàçäåëûèçâñåõïåðâîíà÷àëüíûõäîêóìåíòîâáåçâíåñåíèÿ âíèõèçìåíåíèé , àòàêæåóêàçàòüèõâêà÷åñòâåÍåèçìåíÿåìûõðàçäå- ëîâäàííîãîïðîèçâåäåíèÿâñïèñêåÍåèçìåíÿåìûõðàçäåëîâ , êîòîðûé ñîäåðæèòñÿâóâåäîìëåíèè , îïðåäåëÿþùåìëèöåíçèîííûåóñëîâèÿäëÿ ïðîèçâåäåíèÿ . Ïðîèçâåäåíèå , âîçíèêøååâðåçóëüòàòåîáúåäèíåíèÿ , äîëæíîñîäåð- æàòüòîëüêîîäèíýêçåìïëÿðíàñòîÿùåéËèöåíçèè . Ïîâòîðÿþùèåñÿâ Ïåðåâîäíàðóññêèéÿçûêëèöåíçèè GNU íàñâîáîäíóþ äîêóìåíòàöèþ 169 ïðîèçâåäåíèèîäèíàêîâûåÍåèçìåíÿåìûåðàçäåëûìîãóòáûòüçàìåíå- íûåäèíñòâåííîéêîïèåéòàêèõðàçäåëîâ . Åñëèïðîèçâåäåíèåñîäåðæèò íåñêîëüêîÍåèçìåíÿåìûõÐàçäåëîâñîäíèìèòåìæåíàçâàíèåì , íî ñðàçíûìñîäåðæàíèåì , Ëèöåíçèàòîáÿçàíñäåëàòüíàçâàíèåêàæäîãî òàêîãîðàçäåëàóíèêàëüíûìïóòåìäîáàâëåíèÿïîñëåíàçâàíèÿâñêîá- êàõóíèêàëüíîãîíîìåðàäàííîãîðàçäåëàèëèèìåíèïåðâîíà÷àëüíîãî àâòîðàèëèèçäàòåëÿäàííîãîðàçäåëà , åñëèàâòîðèëèèçäàòåëüèçâåñò- íûËèöåíçèàòó . Ëèöåíçèàòîáÿçàíñîîòâåòñòâåííîèçìåíèòüíàçâàíèÿ ÍåèçìåíÿåìûõðàçäåëîââñïèñêåÍåèçìåíÿåìûõðàçäåëîââóâåäîìëå- íèè , îïðåäåëÿþùåìëèöåíçèîííûåóñëîâèÿäëÿïðîèçâåäåíèÿ , âîçíèê- øåãîâðåçóëüòàòåîáúåäèíåíèÿ . Âïðîèçâåäåíèè , âîçíèêøåìâðåçóëüòàòåîáúåäèíåíèÿ , Ëèöåíçèàò îáÿçàíîáúåäèíèòüâñåðàçäåëû  Èñòîðèÿ  èçðàçëè÷íûõïåðâîíà÷àëü- íûõÄîêóìåíòîââîäèíîáùèéðàçäåë  Èñòîðèÿ . Ïîäîáíûìîáðàçîì Ëèöåíçèàòîáÿçàíîáúåäèíèòüâñåðàçäåëûñíàçâàíèåì  Áëàãîäàðíî- ñòè  è  Ïîñâÿùåíèÿ . Ëèöåíçèàòîáÿçàíèñêëþ÷èòüèçïðîèçâåäåíèÿ âñåðàçäåëûïîäíàçâàíèåì  Îäîáðåíèÿ . 6. Ñáîðíèêèäîêóìåíòîâ Ëèöåíçèàòâïðàâåèçäàòüñáîðíèê , ñîñòîÿùèéèçÄîêóìåíòàèäðó- ãèõäîêóìåíòîâ , ïóáëèêóåìûõâñîîòâåòñòâèèñóñëîâèÿìèíàñòîÿùåé Ëèöåíçèè . Âýòîìñëó÷àåËèöåíçèàòâïðàâåçàìåíèòüâñåýêçåìïëÿðû íàñòîÿùåéËèöåíçèèâäîêóìåíòàõîäíèìýêçåìïëÿðîì , âêëþ÷åííûì âñáîðíèê , ïðèóñëîâèè , ÷òîîñòàëüíîéòåêñòêàæäîãîäîêóìåíòàâêëþ- ÷åíâñáîðíèêññîáëþäåíèåìóñëîâèéïîîñóùåñòâëåíèþêîïèðîâàíèÿ áåçâíåñåíèÿèçìåíåíèé . Ëèöåíçèàòâïðàâåâûäåëèòüêàêîé - ëèáîäîêóìåíòèçñáîðíèêàèèç- äàòüåãîîòäåëüíîâñîîòâåòñòâèèñíàñòîÿùåéËèöåíçèåé , ïðèóñëîâèè , ÷òîËèöåíçèàòîìâäàííûéäîêóìåíòâêëþ÷åíòåêñòíàñòîÿùåéËèöåí- çèèèèìñîáëþäåíûóñëîâèÿËèöåíçèèïîîñóùåñòâëåíèþêîïèðîâàíèÿ áåçâíåñåíèÿèçìåíåíèéâîòíîøåíèèäàííîãîäîêóìåíòà . 7. Ïîäáîðêàäîêóìåíòàèñàìîñòîÿòåëüíûõ ïðîèçâåäåíèé ÐàçìåùåíèåÄîêóìåíòàèëèïðîèçâåäåíèé , ïðîèçâîäíûõîòÄîêó- ìåíòà , ñäðóãèìèñàìîñòîÿòåëüíûìèäîêóìåíòàìèèëèïðîèçâåäåíèÿ- ìèíàîäíîìóñòðîéñòâåäëÿõðàíåíèÿèíôîðìàöèèèëèíîñèòåëåíå 170 Ðóêîâîäñòâîðàçðàáîò÷èêà âëå÷åòçàñîáîéâîçíèêíîâåíèÿÌîäèôèöèðîâàííîéâåðñèèÄîêóìåí- òà , ïðèóñëîâèè , ÷òîËèöåíçèàòíåçàÿâëÿåòàâòîðñêèõïðàâíàîñó- ùåñòâëåííûéèìïîäáîðèëèðàñïîëîæåíèåäîêóìåíòîâïðèèõðàçìå- ùåíèè . Òàêîåðàçìåùåíèåíàçûâàåòñÿ  Ïîäáîðêîé  , ïðèýòîìóñëîâèÿ íàñòîÿùåéËèöåíçèèíåïðèìåíÿþòñÿêñàìîñòîÿòåëüíûìïðîèçâåäå- íèÿì , ðàçìåùåííûìâûøåóêàçàííûìñïîñîáîìâìåñòåñÄîêóìåíòîì , ïðèóñëîâèè , ÷òîîíèíåÿâëÿþòñÿïðîèçâåäåíèÿìè , ïðîèçâîäíûìèîò Äîêóìåíòà . Åñëèóñëîâèÿïóíêòà 3 íàñòîÿùåéËèöåíçèèîòíîñèòåëüíîÒåêñòà , ïîìåùàåìîãîíàîáëîæêå , ìîãóòáûòüïðèìåíåíûêýêçåìïëÿðàìÄî- êóìåíòàâÏîäáîðêå , òîâýòîìñëó÷àåÒåêñòñîáëîæêèÄîêóìåíòà ìîæåòáûòüïîìåùåííàîáëîæêåòîëüêîñîáñòâåííîÄîêóìåíòàâíó- òðèïîäáîðêèïðèóñëîâèè , ÷òîÄîêóìåíòçàíèìàåòìåíåå÷åòâåðòîé ÷àñòèîáúåìàâñåéÏîäáîðêè . ÅñëèÄîêóìåíòçàíèìàåòáîëåå÷åòâåð- òîé÷àñòèîáúåìàÏîäáîðêè , âýòîìñëó÷àåÒåêñòñîáëîæêèÄîêóìåíòà äîëæåíáûòüïîìåùåííàîáëîæêåâñåéÏîäáîðêè . 8. Ïåðåâîä ÏåðåâîäÿâëÿåòñÿîäíèìèçñïîñîáîâìîäèôèêàöèèÄîêóìåíòà , âñè- ëó÷åãîËèöåíçèàòâïðàâåðàñïðîñòðàíÿòüýêçåìïëÿðûïåðåâîäàÄîêó- ìåíòàâñîîòâåòñòâèèñïóíêòîì 4 íàñòîÿùåéËèöåíçèè . ÇàìåíàÍåèç- ìåíÿåìûõðàçäåëîâèõïåðåâîäàìèìîæåòáûòüîñóùåñòâëåíàòîëüêî ñðàçðåøåíèÿñîîòâåòñòâóþùèõïðàâîîáëàäàòåëåé , îäíàêîËèöåíçèàò âïðàâåâäîïîëíåíèåêîðèãèíàëüíûìâåðñèÿìòàêèõÍåèçìåíÿåìûõ ðàçäåëîââêëþ÷èòüâòåêñòýêçåìïëÿðàïåðåâîäâñåõèëè÷àñòèòàêèõ Ðàçäåëîâ . Ëèöåíçèàòâïðàâåâêëþ÷èòüâòåêñòýêçåìïëÿðàïåðåâîä íàñòîÿùåéËèöåíçèèïðèóñëîâèè , ÷òîâíåãîâêëþ÷åíòàêæåèîðè- ãèíàëüíûéòåêñòíàñòîÿùåéËèöåíçèèíààíãëèéñêîìÿçûêå . Âñëó- ÷àåðàçíîãëàñèéâòîëêîâàíèèòåêñòàïåðåâîäàèòåêñòàíààíãëèéñêîì ÿçûêåïðåäïî÷òåíèåîòäàåòñÿòåêñòóËèöåíçèèíààíãëèéñêîìÿçûêå . 9. Ðàñòîðæåíèåëèöåíçèè Ëèöåíçèàòâïðàâåâîñïðîèçâîäèòü , ìîäèôèöèðîâàòü , ðàñïðîñòðà- íÿòüèëèïåðåäàâàòüïðàâàíàèñïîëüçîâàíèåÄîêóìåíòàòîëüêîíà óñëîâèÿõíàñòîÿùåéËèöåíçèè . Ëþáîåâîñïðîèçâåäåíèå , ìîäèôèêà- öèÿ , ðàñïðîñòðàíåíèåèëèïåðåäà÷àïðàâíàèíûõóñëîâèÿõÿâëÿþòñÿ íåäåéñòâèòåëüíûìèèàâòîìàòè÷åñêèâåäóòêðàñòîðæåíèþíàñòîÿùåé ËèöåíçèèèïðåêðàùåíèþâñåõïðàâËèöåíçèàòà , ïðåäîñòàâëåííûõåìó Ïåðåâîäíàðóññêèéÿçûêëèöåíçèè GNU íà ñâîáîäíóþäîêóìåíòàöèþ 171 íàñòîÿùåéËèöåíçèåé . Ïðèýòîìïðàâàòðåòüèõëèö , êîòîðûìËèöåí- çèàòâñîîòâåòñòâèèñíàñòîÿùåéËèöåíçèåéïåðåäàëýêçåìïëÿðûÄî- êóìåíòàèëèïðàâàíàíåãî , ñîõðàíÿþòñÿâñèëåïðèóñëîâèèïîëíîãî ñîáëþäåíèÿèìèíàñòîÿùåéËèöåíçèè . 10. Ïåðåñìîòðóñëîâèéëèöåíçèè FreeSoftwareFoundation ìîæåòïóáëèêîâàòüíîâûåèñïðàâëåííûå âåðñèè GFDL. Òàêèåâåðñèèìîãóòáûòüäîïîëíåíûðàçëè÷íûìè íîðìàìè , ðåãóëèðóþùèìèïðàâîîòíîøåíèÿ , êîòîðûåâîçíèêëèïî- ñëåîïóáëèêîâàíèÿïðåäûäóùèõâåðñèé , îäíàêîâíèõáóäóòñîõðàíå- íûîñíîâíûåïðèíöèïû , çàêðåïëåííûåâíàñòîÿùåéâåðñèè ( ñìîòðè http://www/gnu.org/copyleft/ ). Êàæäîéâåðñèèïðèñâàèâàåòñÿñâîéñîáñòâåííûéíîìåð . Åñëèóêà- çàíî , ÷òîÄîêóìåíòðàñïðîñòðàíÿåòñÿâñîîòâåòñòâèèñîïðåäåëåííîé âåðñèåé , ò . å . óêàçàíååíîìåð , èëèëþáîéáîëååïîçäíåéâåðñèåéíà- ñòîÿùåéËèöåíçèè , Ëèöåíçèàòâïðàâåïðèñîåäèíèòüñÿêëþáîéèçýòèõ âåðñèéËèöåíçèè , îïóáëèêîâàííûõ FreeSoftwareFoundation( ïðèóñëî- âèè , ÷òîíèîäíàèçâåðñèéíåÿâëÿåòñÿïðîåêòîìËèöåíçèè ). Åñëè ÄîêóìåíòíåñîäåðæèòòàêîãîóêàçàíèÿíàíîìåðâåðñèèËèöåíçèè ËèöåíçèàòâïðàâåïðèñîåäèíèòüñÿêëþáîéèçâåðñèéËèöåíçèè , îïóá- ëèêîâàííûõêîãäà - ëèáî FreeSoftwareFoundation( ïðèóñëîâèè , ÷òîíè îäíàèçâåðñèéíåÿâëÿåòñÿÏðîåêòîìËèöåíçèè ). Ïîðÿäîêïðèìåíåíèÿóñëîâèéíàñòîÿùåé Ëèöåíçèèêâàøåéäîêóìåíòàöèè ×òîáûïðèìåíèòüóñëîâèÿíàñòîÿùåéËèöåíçèèêñîçäàííîìóâàìè äîêóìåíòó , âàìñëåäóåòâêëþ÷èòüâäîêóìåíòòåêñòíàñòîÿùåéËèöåí- çèè , àòàêæåçíàêîõðàíûàâòîðñêîãîïðàâàèóâåäîìëåíèå , îïðåäåëÿ- þùååëèöåíçèîííûåóñëîâèÿ , ñðàçóïîñëåòèòóëüíîãîëèñòàäîêóìåíòà âñîîòâåòñòâèèñíèæåïðèâåäåííûìîáðàçöîì : © èìÿ ( íàèìåíîâàíèå ) àâòîðàèëèèíîãîïðàâîîáëàäàòåëÿ , ãîä - ïåðâîãîîïóáëèêîâàíèÿäîêóìåíòà Êàæäûéèìååòïðàâîâîñïðîèçâîäèòü , ðàñïðîñòðàíÿòüè / èëè - âíîñèòü èçìåíåíèÿâíàñòîÿùèéÄîêóìåíòâñîîòâåòñòâèèñóñëîâèÿìè - GNUFree DocumentationLicense, Âåðñèåé 1.1 èëèëþáîéáîëååïîçäíåé - âåðñèåé , 172 Ðóêîâîäñòâîðàçðàáîò÷èêà îïóáëèêîâàííîé FreeSoftwareFoundation; ÄàííûéÄîêóìåíòñîäåðæèòñëåäóþùèåÍåèçìåíÿåìûåðàçäåëû - ( óêàçàòü íàçâàíèÿÍåèçìåíÿåìûõðàçäåëîâ ); äàííûéäîêóìåíòñîäåðæèò - ñëåäóþùèé Òåêñò , ïîìåùàåìûéíàïåðâîéñòðàíèöåîáëîæêè ( ïåðå÷èñëèòü ), äàííûéäîêóìåíòñîäåðæèòñëåäóþùèéÒåêñò , ïîìåùàåìûéíà - ïîñëåäíåé ñòðàíèöåîáëîæêè ( ïåðå÷èñëèòü ). ÊîïèÿíàñòîÿùåéËèöåíçèèâêëþ÷åíàâðàçäåëïîäíàçâàíèåì - "GNUFree DocumentationLicense". ÅñëèäîêóìåíòíåñîäåðæèòÍåèçìåíÿåìûõðàçäåëîâ , óêàæèòå  Äàí- íûéäîêóìåíòíåñîäåðæèòÍåèçìåíÿåìûõðàçäåëîâ . Åñëèäîêóìåíò íåñîäåðæèòÒåêñòà , ïîìåùàåìîãîíàïåðâîéèëèïîñëåäíåéñòðàíè- öàõîáëîæêè , óêàæèòå  ÄàííûéäîêóìåíòíåñîäåðæèòÒåêñòà , ïîìå- ùàåìîãîíàïåðâîéñòðàíèöåîáëîæêè , ñîîòâåòñòâåííîóêàæèòåäëÿ ïîñëåäíåéñòðàíèöûîáëîæêè . Åñëèâàøäîêóìåíòñîäåðæèòèìåþùèåñóùåñòâåííîåçíà÷åíèåïðè- ìåðûïðîãðàììíîãîêîäà , ìûðåêîìåíäóåìâàìâûïóñòèòüèõîòäåëüíî âñîîòâåòñòâèèñóñëîâèÿìèîäíîéèçëèöåíçèéíàñâîáîäíîåïðîãðàìì- íîåîáåñïå÷åíèå , íàïðèìåð GNUGeneralPublicLicense, ÷òîáûèõìîæ- íîáûëîèñïîëüçîâàòüêàêñâîáîäíîåïðîãðàììíîåîáåñïå÷åíèå . ALTLinuxMaster2.2 173 Ñîäåðæàíèå I.ALTPackaging :::::::::::::::::::::::::::::::::::::::::::::::: 1 1.ALTspecleconventions ::::::::::::::::::::::::::::::::::: 2 Îáîñíîâàíèå ::::::::::::::::::::::::::::::::::::::::::::::: 2 Spec- ôàéëû :::::::::::::::::::::::::::::::::::::::::::::::: 2 Óñòàðåâøèåêîíñòðóêöèè ::::::::::::::::::::::::::::::: 2 Ôèãóðíûåñêîáêè ::::::::::::::::::::::::::::::::::::::: 2 Âûðàâíèâàíèå ::::::::::::::::::::::::::::::::::::::::::: 2 Ïîðÿäîêòýãîâ ::::::::::::::::::::::::::::::::::::::::::: 3 Çíà÷åíèÿòýãîâ :::::::::::::::::::::::::::::::::::::::::: 3 Ãðóïïû :::::::::::::::::::::::::::::::::::::::::::::::::: 3 ChangeLog ::::::::::::::::::::::::::::::::::::::::::::::: 3 Ôàéëûëîêàëèçàöèè ::::::::::::::::::::::::::::::::::::: 3 Âíóòðèïàêåòíûåçàâèñèìîñòè ::::::::::::::::::::::::::: 4 Ðàçäåëÿåìûåáèáëèîòåêè :::::::::::::::::::::::::::::::: 4 Ñòàòè÷åñêèåáèáëèîòåêè :::::::::::::::::::::::::::::::: 4 Ïåðåèìåíîâàíèåïàêåòîâ :::::::::::::::::::::::::::::::: 4 Ïàò÷è :::::::::::::::::::::::::::::::::::::::::::::::::::::: 5 Íàèìåíîâàíèåïàò÷åé ::::::::::::::::::::::::::::::::::: 5 Èñõîäíûéêîä :::::::::::::::::::::::::::::::::::::::::::::: 7 Ôîðìàòõðàíåíèÿ ::::::::::::::::::::::::::::::::::::::: 7 2.ALTLinuxRPM: îñîáåííîñòèâåðñèè rpm-4.0.4-alt5 ::::::: 8 Îáîñíîâàíèå ::::::::::::::::::::::::::::::::::::::::::::::: 8 Íîâûåòýãè ::::::::::::::::::::::::::::::::::::::::::::::::: 8 BuildHost :::::::::::::::::::::::::::::::::::::::::::::::: 8 Óñòàðåâøèåòýãè ::::::::::::::::::::::::::::::::::::::::::: 8 BuildRoot ::::::::::::::::::::::::::::::::::::::::::::::: 8 Íîâûåìàêðîñû :::::::::::::::::::::::::::::::::::::::::::: 8 Âñòðîåííûåìàêðîñû :::::::::::::::::::::::::::::::::::: 8 Ìàêðîñûäëÿ÷àñòîèñïîëüçóåìûõêàòàëîãîâ ::::::::::: 9 Óïðàâëåíèåîïöèÿìèêîìïèëÿòîðà gcc :::::::::::::::: 9 Ìàêðîñû - íàäñòðîéêèíàäóòèëèòîé make :::::::::::: 10 Ðåãèñòðàöèÿðàçäåëÿåìûõáèáëèîòåê :::::::::::::::::: 11 Ðåãèñòðàöèÿäîêóìåíòàöèèâôîðìàòå info ::::::::::: 11 Ðåãèñòðàöèÿìåíþ ::::::::::::::::::::::::::::::::::::: 11 Ðåãèñòðàöèÿêàòàëîãîâ scrollkeeper :::::::::::::::::::: 12 Âñïîìîãàòåëüíûåìàêðîñû %congure :::::::::::::::: 12 Ñåðâåðíûåìàêðîñû :::::::::::::::::::::::::::::::::::: 12 Ìàêðîñû , îïðåäåëÿþùèåíåêîòîðûåàñïåêòû packaging policy ::::::::::::::::::::::::::::::::::::::::::::::::::: 12 174 Ðóêîâîäñòâîðàçðàáîò÷èêà Âûçîââñïîìîãàòåëüíûõïðîãðàìì ::::::::::::::::::::: 14 Óïðàâëåíèåïðîöåññîìñáîðêè ::::::::::::::::::::::::: 15 Âåðñèèíåêîòîðûõóñòàíîâëåííûõâñèñòåìåïàêåòîâ :: 15 Óïðàâëåíèåïðîöåññîìîáðàáîòêè spec- ôàéëîâ ::::::::: 16 Ïðî÷èåìàêðîñû ::::::::::::::::::::::::::::::::::::::: 17 Íîâû e ïàðàìåòðû rpm :::::::::::::::::::::::::::::::::::: 17 Íîâûåâîçìîæíîñòè rpm ïîñáîðêåïàêåòîâ ::::::::::::: 18 Àâòîìàòè÷åñêîåóäàëåíèåíåíóæíûõôàéëîâ :::::::::: 18 Àâòîìàòè÷åñêèéïîèñêèèñïðàâëåíèåêîíôèãóðàöèîííûõ ôàéëîâ , èñïîëüçóåìûõïðåæäåâñåãîïðèðàçðàáîòêåÏÎ 19 Àâòîìàòè÷åñêîåèñïðàâëåíèåïðàâäîñòóïàêôàéëàìèêà- òàëîãàì :::::::::::::::::::::::::::::::::::::::::::::::: 19 Àâòîìàòè÷åñêîåñæàòèå man- è info- äîêóìåíòàöèèñïîä- äåðæêîéðàçëè÷íûõìåòîäîâñæàòèÿ ::::::::::::::::::: 20 Àâòîìàòè÷åñêàÿïðîâåðêà ELF- ôàéëîâñïîääåðæêîéðàç- ëè÷íûõñòðàòåãèé ::::::::::::::::::::::::::::::::::::: 21 Àâòîìàòè÷åñêîåóäàëåíèåîòëàäî÷íîéèíôîðìàöèèèç ELF- ôàéëîâñïîääåðæêîéðàçëè÷íûõñòðàòåãèéâûáîðàôàéëîâ , ïîäëåæàùèõîáðàáîòêå :::::::::::::::::::::::::::::::: 21 Àâòîìàòè÷åñêàÿïåðåêîìïèëÿöèÿ python- ìîäóëåé ::::: 22 Àâòîìàòè÷åñêèéïîèñêòðåáóåìûõèïðåäîñòàâëÿåìûõçàâè- ñèìîñòåé ::::::::::::::::::::::::::::::::::::::::::::::: 23 Èçìåíåíèåñåìàíòèêèòýãîâ , óïðàâëÿþùèõïîèñêîìçàâèñè- ìîñòåé :::::::::::::::::::::::::::::::::::::::::::::::::: 23 Àâòîìàòè÷åñêàÿî÷èñòêà BuildRoot :::::::::::::::::: 24 Óïðîùåíèåñåêöèè %les ::::::::::::::::::::::::::::::: 24 Ñáîðêàïàêåòîâïðèâèëåãèðîâàííûìïîëüçîâàòåëåì ::: 24 3.ALTSecurePackagingPolicy ::::::::::::::::::::::::::::: 26 Ìàññîâûåîïåðàöèèíàäôàéëàìèèêàòàëîãàìè ( ñåêöèè : %setup,%build,%install,%pre*,%post*,%trigger*) :::::: 26 Îïåðàöèèñâðåìåííûìèôàéëàìè :::::::::::::::::::::::: 26 ×óæèåèñèñòåìíûåêàòàëîãèèôàéëû ( ñåêöèè :%install, %les) :::::::::::::::::::::::::::::::::::::::::::::::::::: 27 Àòðèáóòûôàéëîâèêàòàëîãîâ ( ñåêöèè :%install,%les)27 Ïðàâàäîñòóïàíàïðèâèëåãèðîâàííûåèñïîëíÿåìûåôàéëû 27 Ðàçäåëû , ïðåäíàçíà÷åííûåäëÿèñïîëüçîâàíèÿ readonly27 Ôàéëûèêàòàëîãè , äîñòóïíûåäëÿçàïèñè ::::::::::::: 28 Âëàäåëüöûôàéëîâ ::::::::::::::::::::::::::::::::::::: 28 Âëàäåëüöûêàòàëîãîâ :::::::::::::::::::::::::::::::::: 28 ALTLinuxMaster2.2 175 Áëîêèðîâêè ( ñåêöèè :%build,%install,%les) ::::::::::: 28 II. Ðàáîòàñ CVS ::::::::::::::::::::::::::::::::::::::::::::::: 31 4. Îáçîð ::::::::::::::::::::::::::::::::::::::::::::::::::::: 32 ×òîòàêîå CVS? :::::::::::::::::::::::::::::::::::::::::: 32 ×åìíåÿâëÿåòñÿ CVS? :::::::::::::::::::::::::::::::::::: 33 Ïðèìåððàáîòûñ CVS :::::::::::::::::::::::::::::::::::: 35 Ïîëó÷åíèåèñõîäíîãîêîäà ::::::::::::::::::::::::::::: 36 Ôèêñèðîâàíèåèçìåíåíèé :::::::::::::::::::::::::::::: 36 Óáîðêàçàñîáîé :::::::::::::::::::::::::::::::::::::::: 37 Ïðîñìîòðèçìåíåíèé ::::::::::::::::::::::::::::::::::: 38 5. Ðåïîçèòîðèé :::::::::::::::::::::::::::::::::::::::::::::: 40 Êàêñîîáùèòü CVS, ãäåíàõîäèòñÿðåïîçèòîðèé :::::::::: 40 Êàêäàííûåõðàíÿòñÿâðåïîçèòîðèè ::::::::::::::::::::: 41 Ãäåõðàíÿòñÿôàéëûâðåïîçèòîðèè :::::::::::::::::::: 41 Ïðàâàäîñòóïàêôàéëàì ::::::::::::::::::::::::::::::: 43 Ñïåöèôè÷åñêèåäëÿ Windows ïðàâàäîñòóïà ::::::::::: 45 ×åðäàê ::::::::::::::::::::::::::::::::::::::::::::::::: 45 Êàòàëîã CVS âðåïîçèòîðèè ::::::::::::::::::::::::::: 46 Áëîêèðîâêèâðåïîçèòîðèè ::::::::::::::::::::::::::::: 46 Êàêâêàòàëîãå CVSROOT õðàíÿòñÿôàéëû ::::::::::: 47 Êàêäàííûåõðàíÿòñÿâðàáî÷åìêàòàëîãå :::::::::::::::: 48 Àäìèíèñòðàòèâíûåôàéëû ::::::::::::::::::::::::::::::: 52 Ðåäàêòèðîâàíèåàäìèíèñòðàòèâíûõôàéëîâ ::::::::::: 53 Íåñêîëüêîðåïîçèòîðèåâ :::::::::::::::::::::::::::::::::: 53 Ñîçäàíèåðåïîçèòîðèÿ :::::::::::::::::::::::::::::::::::: 54 Ðåçåðâíîåêîïèðîâàíèåðåïîçèòîðèÿ :::::::::::::::::::::: 55 Ïåðåìåùåíèåðåïîçèòîðèÿ :::::::::::::::::::::::::::::::: 56 Ñåòåâûåðåïîçèòîðèè ::::::::::::::::::::::::::::::::::::: 56 Òðåáîâàíèÿêñåðâåðó :::::::::::::::::::::::::::::::::: 56 Ñîåäèíåíèåñïîìîùüþ rsh ::::::::::::::::::::::::::::: 57 Ïðÿìîåñîåäèíåíèåñïàðîëüíîéàóòåíòèôèêàöèåé :::: 59 Íàñòðîéêàñåðâåðàäëÿïàðîëüíîéàóòåíòèôèêàöèè 59 Èñïîëüçîâàíèåêëèåíòàñïàðîëüíîéàóòåíòèôèêàöèåé 62 Âîïðîñûáåçîïàñíîñòèïðèïàðîëüíîéàóòåíòèôèêàöèè 64 Ïðÿìîåñîåäèíåíèåñèñïîëüçîâàíèåì GSSAPI ::::::::: 64 Ïðÿìîåñîåäèíåíèåñïîìîùüþ Kerberos ::::::::::::::: 65 Èñïîëüçîâàíèåïàðàëëåëüíîãî cvsserver äëÿñîåäèíåíèÿ 66 Äîñòóïêðåïîçèòîðèþòîëüêîäëÿ÷òåíèÿ :::::::::::::::: 67 Âðåìåííûåêàòàëîãèíàñåðâåðå :::::::::::::::::::::::::: 68 176 Ðóêîâîäñòâîðàçðàáîò÷èêà 6. Íà÷èíàåìïðîåêòïîä CVS :::::::::::::::::::::::::::::::: 70 Ïîìåùåíèåôàéëîââðåïîçèòîðèé :::::::::::::::::::::::: 70 Ñîçäàíèåäåðåâàêàòàëîãîâèçíåñêîëüêèõôàéëîâ ::::::: 70 Ñîçäàíèåôàéëîâèçäðóãèõñèñòåìêîíòðîëÿâåðñèé ::::: 71 Ñîçäàíèåäåðåâàêàòàëîãîâñíóëÿ :::::::::::::::::::::::: 72 Îïðåäåëåíèåìîäóëÿ :::::::::::::::::::::::::::::::::::::: 73 7. Ðåâèçèè ::::::::::::::::::::::::::::::::::::::::::::::::::: 74 Íîìåðàðåâèçèé ::::::::::::::::::::::::::::::::::::::::::: 74 Âåðñèèèðåâèçèè ::::::::::::::::::::::::::::::::::::::::: 74 Íàçíà÷åíèåíîìåðîâðåâèçèé ::::::::::::::::::::::::::::: 74 Ìåòêèðåâèçèé :::::::::::::::::::::::::::::::::::::::::::: 75 ×òîïîìåòèòüâðàáî÷åìêàòàëîãå :::::::::::::::::::::::: 78 Êàêïîìå÷àòüïîäàòåèëèðåâèçèè ::::::::::::::::::::::: 79 Óäàëåíèå , ïåðåìåùåíèåèóäàëåíèåìåòîê :::::::::::::::: 79 Ïîìåòêèïðèäîáàâëåíèèèóäàëåíèèôàéëîâ ::::::::::::: 80 Ëèïêèåìåòêè :::::::::::::::::::::::::::::::::::::::::: 81 8. Ñîçäàíèåèñëèÿíèåâåòâåé ::::::::::::::::::::::::::::::: 84 Äëÿ÷åãîõîðîøèâåòâè ? :::::::::::::::::::::::::::::::::: 84 Ñîçäàíèåâåòâè ::::::::::::::::::::::::::::::::::::::::::: 84 Äîñòóïêâåòêàì :::::::::::::::::::::::::::::::::::::::::: 85 Âåòêèèðåâèçèè :::::::::::::::::::::::::::::::::::::::::: 87 Âîëøåáíûåíîìåðàâåòîê ::::::::::::::::::::::::::::::::: 88 Ñëèÿíèåâåòîê :::::::::::::::::::::::::::::::::::::::::::: 89 ìíîãîêðàòíîåñëèÿíèåèçâåòêè ::::::::::::::::::::::::::: 90 Ñëèÿíèåèçìåíåíèéìåæäóäâóìÿðåâèçèÿìè ::::::::::::: 91 Ïðèñëèÿíèèìîæíîäîáàâëÿòüèóäàëÿòüôàéëû :::::::: 92 9. Ðåêóðñèâíîåïîâåäåíèå ::::::::::::::::::::::::::::::::::: 93 10. Äîáàâëåíèå , óäàëåíèåèïåðåèìåíîâàíèåôàéëîâèêàòàëîãîâ 95 Äîáàâëåíèåôàéëîââêàòàëîã :::::::::::::::::::::::::::: 95 Óäàëåíèåôàéëîâ ::::::::::::::::::::::::::::::::::::::::: 96 Óäàëåíèåêàòàëîãîâ :::::::::::::::::::::::::::::::::::::: 98 Ïåðåìåùåíèåèïåðåèìåíîâàíèåôàéëîâ :::::::::::::::::: 99 Îáû÷íûéñïîñîáïåðåèìåíîâàíèÿ ::::::::::::::::::::::::: 99 Ïåðåìåùåíèåôàéëàñðåâèçèÿìè ::::::::::::::::::::::::: 99 Êîïèðîâàíèåôàéëàñðåâèçèÿìè :::::::::::::::::::::::: 100 Ïåðåìåùåíèåèïåðåèìåíîâàíèåêàòàëîãîâ :::::::::::::: 101 III.LAN-Crypto Áèáëèîòåêàðàçðàáîò÷èêàïðîãðàììíîãîîáåñïå- ÷åíèÿçàùèòûèíôîðìàöèè ::::::::::::::::::::::::::::::::::: 103 11. Ââåäåíèå ::::::::::::::::::::::::::::::::::::::::::::::: 105 12. Èíòåðôåéñðàçðàáîòêèïðèëîæåíèé (API) Áèáëèîòåêè 111 ALTLinuxMaster2.2 177 13. Îñíîâíàÿáèáëèîòåêà (ctBaseLib) :::::::::::::::::::::: 113 14. Áèáëèîòåêàñåðòèôèêàòîâèñîîáùåíèé (ctMsgLib) :::: 117 15. Áèáëèîòåêàõðàíåíèÿñåðòèôèêàòîâ (ctStoreLib) ::::::: 120 IV. Ðåäàêòîðøðèôòîâ Pfaedit :::::::::::::::::::::::::::::::: 123 16. Âñòóïëåíèå ::::::::::::::::::::::::::::::::::::::::::::: 124 17. Âèäûîêîí :::::::::::::::::::::::::::::::::::::::::::::: 125 Îêíîøðèôòà :::::::::::::::::::::::::::::::::::::::::::: 125 Îêíîñèìâîëà :::::::::::::::::::::::::::::::::::::::::::: 125 Èíñòðóìåíòû :::::::::::::::::::::::::::::::::::::::::::: 127 Îêíîìåòðèê ::::::::::::::::::::::::::::::::::::::::::::: 129 18. Ñîçäàíèåøðèôòà :::::::::::::::::::::::::::::::::::::: 130 19. Ñîçäàíèåñèìâîëà :::::::::::::::::::::::::::::::::::::: 132 Êîïèðîâàíèåñèìâîëà ; àêöåíòèðîâàííûåñèìâîëû ::::::: 132 Îêîíòóðèâàíèåâðó÷íóþ :::::::::::::::::::::::::::::::: 132 Àâòîòðàññèðîâêà :::::::::::::::::::::::::::::::::::::::: 133 Ìîäèôèêàöèÿñèìâîëîâ ::::::::::::::::::::::::::::::::: 133 Äðóãèåñïîñîáûñîçäàíèÿñèìâîëîâ ::::::::::::::::::::: 133 Îáðàáîòêàñèìâîëîâ ::::::::::::::::::::::::::::::::::::: 134 20. Ñêðèïòû :::::::::::::::::::::::::::::::::::::::::::::::: 135 Òåõíîëîãèèðàçðàáîòêè WEB- ïðîåêòîâñèñïîëüçîâàíèåìñåðâåðîâ ïðèëîæåíèé ::::::::::::::::::::::::::::::::::::::::::::::::::: 137 Îáùèåïðèíöèïû ::::::::::::::::::::::::::::::::::::::::::: 137 Èñïîëüçóåìûåèíñòðóìåíòàëüíûåñðåäñòâà :::::::::::::::: 137 Ïàêåò CGI- ñêðèïòîâ , îáåñïå÷èâàþùèõíåîáõîäèìóþôóíêöè- îíàëüíîñòü ::::::::::::::::::::::::::::::::::::::::::::::: 138 Ñåðâåðïðèëîæåíèé Midgard :::::::::::::::::::::::::::: 139 Ñåðâåðïðèëîæåíèé Zope :::::::::::::::::::::::::::::::: 140 Âûâîäû :::::::::::::::::::::::::::::::::::::::::::::::::::: 141 ÏÐÈËÎÆÅÍÈÅÀ ::::::::::::::::::::::::::::::::::::::::: 142 CGI- ñêðèïò &HTML::Template :::::::::::::::::::::::::: 142 Midgard :::::::::::::::::::::::::::::::::::::::::::::::::: 144 Zope ::::::::::::::::::::::::::::::::::::::::::::::::::::: 146 V. Ðàçðàáîòêàïðîãðàììäëÿ PalmOS ïîä PalmOS ::::::::::: 149 21. Ââåäåíèå ::::::::::::::::::::::::::::::::::::::::::::::: 150 22.PalmOSSDK ::::::::::::::::::::::::::::::::::::::::::: 152 23.Prc-tools :::::::::::::::::::::::::::::::::::::::::::::::: 153 24.POSE ::::::::::::::::::::::::::::::::::::::::::::::::::: 154 25.Guickachu è pilrc :::::::::::::::::::::::::::::::::::::::: 156 26. Îòëàä÷èê DDD ::::::::::::::::::::::::::::::::::::::::: 158 27. Ñðåäàðàçðàáîòêè :::::::::::::::::::::::::::::::::::::: 160 178 Ðóêîâîäñòâîðàçðàáîò÷èêà Ïåðåâîäíàðóññêèéÿçûêëèöåíçèè GNU íàñâîáîäíóþäîêóìåíòà- öèþ ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 161 GNUFreeDocumentationLicense ::::::::::::::::::::::::::: 161 0. Ïðåàìáóëà :::::::::::::::::::::::::::::::::::::::::::: 161 1. Ñôåðàäåéñòâèÿ , òåðìèíûèèõîïðåäåëåíèÿ :::::::::: 162 2. Êîïèðîâàíèåáåçâíåñåíèÿèçìåíåíèé ::::::::::::::::: 164 3. Òèðàæèðîâàíèå ::::::::::::::::::::::::::::::::::::::: 164 4. Âíåñåíèåèçìåíåíèé ::::::::::::::::::::::::::::::::::: 166 5. Îáúåäèíåíèåäîêóìåíòîâ ::::::::::::::::::::::::::::: 168 6. Ñáîðíèêèäîêóìåíòîâ ::::::::::::::::::::::::::::::::: 169 7. Ïîäáîðêàäîêóìåíòàèñàìîñòîÿòåëüíûõïðîèçâåäåíèé 169 8. Ïåðåâîä ::::::::::::::::::::::::::::::::::::::::::::::: 170 9. Ðàñòîðæåíèåëèöåíçèè :::::::::::::::::::::::::::::::: 170 10. Ïåðåñìîòðóñëîâèéëèöåíçèè :::::::::::::::::::::::: 171 ÏîðÿäîêïðèìåíåíèÿóñëîâèéíàñòîÿùåéËèöåíçèèêâàøåé äîêóìåíòàöèè :::::::::::::::::::::::::::::::::::::::::::: 171 ALTLinuxMaster2.2 179 Ñïèñîêèëëþñòðàöèé 17.1. Îêíîøðèôòà ::::::::::::::::::::::::::::::::::::::::::: 125 17.2. Îêíîðåäàêòèðóåìîãîñèìâîëà ( êîíòóð ) ::::::::::::::::: 125 17.3. Îêíîðåäàêòèðóåìîãîñèìâîëà "( ðàñòðîâûéøðèôò ) :::: 126 17.4. Îêíîìåòðèê :::::::::::::::::::::::::::::::::::::::::::: 129 18.1. Èíôîðìàöèÿîøðèôòå :::::::::::::::::::::::::::::::::: 130 24.1.POSE, íàñòðîåííûéíà Palmm505 :::::::::::::::::::::: 154 25.1. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 156 26.1. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 158 180 Ðóêîâîäñòâîðàçðàáîò÷èêà Ñïèñîêòàáëèö 11.1. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 106 11.2. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 106 11.3. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 106 12.1. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 111 ALTLinuxMaster2.2 181 Ñïèñîêïðèìåðîâ 3.1. Ïðàâèëüíîåèñïîëüçîâàíèå nd ::::::::::::::::::::::::::: 26

Приложенные файлы

  • pdf 6992416
    Размер файла: 2 MB Загрузок: 0

Добавить комментарий