aboutsummaryrefslogtreecommitdiff
path: root/ru_RU.KOI8-R
diff options
context:
space:
mode:
Diffstat (limited to 'ru_RU.KOI8-R')
-rw-r--r--ru_RU.KOI8-R/Makefile16
-rw-r--r--ru_RU.KOI8-R/Makefile.inc3
-rw-r--r--ru_RU.KOI8-R/articles/Makefile37
-rw-r--r--ru_RU.KOI8-R/articles/Makefile.inc8
-rw-r--r--ru_RU.KOI8-R/articles/committers-guide/Makefile25
-rw-r--r--ru_RU.KOI8-R/articles/committers-guide/article.xml3352
-rw-r--r--ru_RU.KOI8-R/articles/contributing/Makefile25
-rw-r--r--ru_RU.KOI8-R/articles/contributing/article.xml535
-rw-r--r--ru_RU.KOI8-R/articles/cups/Makefile21
-rw-r--r--ru_RU.KOI8-R/articles/cups/article.xml360
-rw-r--r--ru_RU.KOI8-R/articles/explaining-bsd/Makefile27
-rw-r--r--ru_RU.KOI8-R/articles/explaining-bsd/article.xml643
-rw-r--r--ru_RU.KOI8-R/articles/fonts/Makefile23
-rw-r--r--ru_RU.KOI8-R/articles/fonts/article.xml931
-rw-r--r--ru_RU.KOI8-R/articles/freebsd-questions/Makefile23
-rw-r--r--ru_RU.KOI8-R/articles/freebsd-questions/article.xml611
-rw-r--r--ru_RU.KOI8-R/articles/geom-class/Makefile22
-rw-r--r--ru_RU.KOI8-R/articles/geom-class/article.xml813
-rw-r--r--ru_RU.KOI8-R/articles/gjournal-desktop/Makefile22
-rw-r--r--ru_RU.KOI8-R/articles/gjournal-desktop/article.xml718
-rw-r--r--ru_RU.KOI8-R/articles/hubs/Makefile22
-rw-r--r--ru_RU.KOI8-R/articles/hubs/article.xml745
-rw-r--r--ru_RU.KOI8-R/articles/ipsec-must/Makefile23
-rw-r--r--ru_RU.KOI8-R/articles/ipsec-must/article.xml355
-rw-r--r--ru_RU.KOI8-R/articles/mailing-list-faq/Makefile31
-rw-r--r--ru_RU.KOI8-R/articles/mailing-list-faq/article.xml497
-rw-r--r--ru_RU.KOI8-R/articles/new-users/Makefile23
-rw-r--r--ru_RU.KOI8-R/articles/new-users/article.xml916
-rw-r--r--ru_RU.KOI8-R/articles/pam/Makefile38
-rw-r--r--ru_RU.KOI8-R/articles/pam/article.xml1388
-rw-r--r--ru_RU.KOI8-R/articles/pr-guidelines/Makefile23
-rw-r--r--ru_RU.KOI8-R/articles/pr-guidelines/article.xml1100
-rw-r--r--ru_RU.KOI8-R/articles/problem-reports/Makefile24
-rw-r--r--ru_RU.KOI8-R/articles/problem-reports/article.xml1244
-rw-r--r--ru_RU.KOI8-R/articles/releng/Makefile34
-rw-r--r--ru_RU.KOI8-R/articles/releng/article.xml1123
-rw-r--r--ru_RU.KOI8-R/articles/releng/extra.css21
-rw-r--r--ru_RU.KOI8-R/articles/solid-state/Makefile22
-rw-r--r--ru_RU.KOI8-R/articles/solid-state/article.xml479
-rw-r--r--ru_RU.KOI8-R/articles/vm-design/Makefile26
-rw-r--r--ru_RU.KOI8-R/articles/vm-design/article.xml981
-rw-r--r--ru_RU.KOI8-R/books/Makefile15
-rw-r--r--ru_RU.KOI8-R/books/Makefile.inc7
-rw-r--r--ru_RU.KOI8-R/books/arch-handbook/driverbasics/chapter.xml591
-rw-r--r--ru_RU.KOI8-R/books/arch-handbook/locking/chapter.xml347
-rw-r--r--ru_RU.KOI8-R/books/arch-handbook/sound/chapter.xml698
-rw-r--r--ru_RU.KOI8-R/books/design-44bsd/Makefile21
-rw-r--r--ru_RU.KOI8-R/books/design-44bsd/book.xml2259
-rw-r--r--ru_RU.KOI8-R/books/design-44bsd/fig1.eps340
-rw-r--r--ru_RU.KOI8-R/books/design-44bsd/fig2.eps1476
-rw-r--r--ru_RU.KOI8-R/books/developers-handbook/Makefile49
-rw-r--r--ru_RU.KOI8-R/books/developers-handbook/book.xml503
-rw-r--r--ru_RU.KOI8-R/books/developers-handbook/chapters.ent40
-rw-r--r--ru_RU.KOI8-R/books/developers-handbook/introduction/chapter.xml236
-rw-r--r--ru_RU.KOI8-R/books/developers-handbook/kerneldebug/chapter.xml885
-rw-r--r--ru_RU.KOI8-R/books/developers-handbook/policies/chapter.xml459
-rw-r--r--ru_RU.KOI8-R/books/developers-handbook/secure/chapter.xml553
-rw-r--r--ru_RU.KOI8-R/books/faq/Makefile34
-rw-r--r--ru_RU.KOI8-R/books/faq/book.xml7543
-rw-r--r--ru_RU.KOI8-R/books/fdp-primer/Makefile56
-rw-r--r--ru_RU.KOI8-R/books/fdp-primer/book.xml263
-rw-r--r--ru_RU.KOI8-R/books/fdp-primer/doc-build/chapter.xml491
-rw-r--r--ru_RU.KOI8-R/books/fdp-primer/overview/chapter.xml293
-rw-r--r--ru_RU.KOI8-R/books/fdp-primer/see-also/chapter.xml131
-rw-r--r--ru_RU.KOI8-R/books/fdp-primer/sgml-markup/chapter.xml2731
-rw-r--r--ru_RU.KOI8-R/books/fdp-primer/the-website/chapter.xml211
-rw-r--r--ru_RU.KOI8-R/books/fdp-primer/tools/chapter.xml295
-rw-r--r--ru_RU.KOI8-R/books/fdp-primer/writing-style/chapter.xml487
-rw-r--r--ru_RU.KOI8-R/books/handbook/Makefile265
-rw-r--r--ru_RU.KOI8-R/books/handbook/advanced-networking/Makefile18
-rw-r--r--ru_RU.KOI8-R/books/handbook/advanced-networking/chapter.xml4251
-rw-r--r--ru_RU.KOI8-R/books/handbook/audit/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/handbook/audit/chapter.xml817
-rw-r--r--ru_RU.KOI8-R/books/handbook/basics/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/handbook/basics/chapter.xml3941
-rw-r--r--ru_RU.KOI8-R/books/handbook/bibliography/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/handbook/bibliography/chapter.xml626
-rw-r--r--ru_RU.KOI8-R/books/handbook/book.xml307
-rw-r--r--ru_RU.KOI8-R/books/handbook/boot/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/handbook/boot/chapter.xml1011
-rw-r--r--ru_RU.KOI8-R/books/handbook/bsdinstall/Makefile15
-rw-r--r--ru_RU.KOI8-R/books/handbook/bsdinstall/chapter.xml2652
-rw-r--r--ru_RU.KOI8-R/books/handbook/chapters.ent72
-rw-r--r--ru_RU.KOI8-R/books/handbook/colophon.xml23
-rw-r--r--ru_RU.KOI8-R/books/handbook/config/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/handbook/config/chapter.xml3016
-rw-r--r--ru_RU.KOI8-R/books/handbook/cutting-edge/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/handbook/cutting-edge/chapter.xml2239
-rw-r--r--ru_RU.KOI8-R/books/handbook/desktop/Makefile18
-rw-r--r--ru_RU.KOI8-R/books/handbook/desktop/chapter.xml1092
-rw-r--r--ru_RU.KOI8-R/books/handbook/disks/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/handbook/disks/chapter.xml4183
-rw-r--r--ru_RU.KOI8-R/books/handbook/eresources/Makefile18
-rw-r--r--ru_RU.KOI8-R/books/handbook/eresources/chapter.xml2127
-rw-r--r--ru_RU.KOI8-R/books/handbook/filesystems/Makefile16
-rw-r--r--ru_RU.KOI8-R/books/handbook/filesystems/chapter.xml580
-rw-r--r--ru_RU.KOI8-R/books/handbook/firewalls/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/handbook/firewalls/chapter.xml2459
-rw-r--r--ru_RU.KOI8-R/books/handbook/geom/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/handbook/geom/chapter.xml787
-rw-r--r--ru_RU.KOI8-R/books/handbook/install/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/handbook/install/chapter.xml4900
-rw-r--r--ru_RU.KOI8-R/books/handbook/introduction/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/handbook/introduction/chapter.xml960
-rw-r--r--ru_RU.KOI8-R/books/handbook/kernelconfig/Makefile18
-rw-r--r--ru_RU.KOI8-R/books/handbook/kernelconfig/chapter.xml1541
-rw-r--r--ru_RU.KOI8-R/books/handbook/l10n/Makefile18
-rw-r--r--ru_RU.KOI8-R/books/handbook/l10n/chapter.xml1028
-rw-r--r--ru_RU.KOI8-R/books/handbook/linuxemu/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/handbook/linuxemu/chapter.xml3405
-rw-r--r--ru_RU.KOI8-R/books/handbook/mac/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/handbook/mac/chapter.xml2172
-rw-r--r--ru_RU.KOI8-R/books/handbook/mail/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/handbook/mail/chapter.xml2105
-rw-r--r--ru_RU.KOI8-R/books/handbook/mirrors/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/handbook/mirrors/chapter.xml909
-rw-r--r--ru_RU.KOI8-R/books/handbook/multimedia/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/handbook/multimedia/chapter.xml1725
-rw-r--r--ru_RU.KOI8-R/books/handbook/network-servers/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/handbook/network-servers/chapter.xml5122
-rw-r--r--ru_RU.KOI8-R/books/handbook/pgpkeys/Makefile21
-rw-r--r--ru_RU.KOI8-R/books/handbook/pgpkeys/chapter.xml45
-rw-r--r--ru_RU.KOI8-R/books/handbook/ports/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/handbook/ports/chapter.xml1909
-rw-r--r--ru_RU.KOI8-R/books/handbook/ppp-and-slip/Makefile18
-rw-r--r--ru_RU.KOI8-R/books/handbook/ppp-and-slip/chapter.xml3180
-rw-r--r--ru_RU.KOI8-R/books/handbook/preface/preface.xml656
-rw-r--r--ru_RU.KOI8-R/books/handbook/printing/Makefile18
-rw-r--r--ru_RU.KOI8-R/books/handbook/printing/chapter.xml4828
-rw-r--r--ru_RU.KOI8-R/books/handbook/security/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/handbook/security/chapter.xml4902
-rw-r--r--ru_RU.KOI8-R/books/handbook/serialcomms/Makefile18
-rw-r--r--ru_RU.KOI8-R/books/handbook/serialcomms/chapter.xml2863
-rw-r--r--ru_RU.KOI8-R/books/handbook/txtfiles.ent79
-rw-r--r--ru_RU.KOI8-R/books/handbook/vinum/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/handbook/vinum/chapter.xml1380
-rw-r--r--ru_RU.KOI8-R/books/handbook/x11/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/handbook/x11/chapter.xml1808
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/Makefile83
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/appendices/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/appendices/chapter.xml76
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/book.xml81
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/chapters.ent22
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/keeping-up/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/keeping-up/chapter.xml167
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/makefiles/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/makefiles/chapter.xml4536
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/new-port/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/new-port/chapter.xml52
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/pkg-files/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/pkg-files/chapter.xml213
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/plist/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/plist/chapter.xml298
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/porting-dads/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/porting-dads/chapter.xml743
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/porting-samplem/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/porting-samplem/chapter.xml111
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/porting-why/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/porting-why/chapter.xml26
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/quick-porting/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/quick-porting/chapter.xml420
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/security/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/security/chapter.xml509
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/slow-porting/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/slow-porting/chapter.xml447
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/special/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/special/chapter.xml5012
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/testing/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/testing/chapter.xml214
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/upgrading/Makefile17
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/upgrading/chapter.xml311
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/uses.xml833
-rw-r--r--ru_RU.KOI8-R/books/porters-handbook/versions.xml4805
-rw-r--r--ru_RU.KOI8-R/flyer/Makefile20
-rw-r--r--ru_RU.KOI8-R/flyer/flyer.tex187
-rw-r--r--ru_RU.KOI8-R/htdocs/FAQ/Makefile19
-rw-r--r--ru_RU.KOI8-R/htdocs/FAQ/index.html20
-rw-r--r--ru_RU.KOI8-R/htdocs/Makefile98
-rw-r--r--ru_RU.KOI8-R/htdocs/Makefile.inc6
-rw-r--r--ru_RU.KOI8-R/htdocs/about.xml122
-rw-r--r--ru_RU.KOI8-R/htdocs/applications.xml152
-rw-r--r--ru_RU.KOI8-R/htdocs/art.xml135
-rw-r--r--ru_RU.KOI8-R/htdocs/availability.xml35
-rw-r--r--ru_RU.KOI8-R/htdocs/commercial/Makefile24
-rw-r--r--ru_RU.KOI8-R/htdocs/commercial/commercial.xml80
-rw-r--r--ru_RU.KOI8-R/htdocs/commercial/includes.xml21
-rw-r--r--ru_RU.KOI8-R/htdocs/community.xsl140
-rw-r--r--ru_RU.KOI8-R/htdocs/community/Makefile19
-rw-r--r--ru_RU.KOI8-R/htdocs/community/irc.xml39
-rw-r--r--ru_RU.KOI8-R/htdocs/community/mailinglists.xml135
-rw-r--r--ru_RU.KOI8-R/htdocs/community/newsgroups.xml43
-rw-r--r--ru_RU.KOI8-R/htdocs/community/social.xsl63
-rw-r--r--ru_RU.KOI8-R/htdocs/community/webresources.xml64
-rw-r--r--ru_RU.KOI8-R/htdocs/copyright/Makefile23
-rw-r--r--ru_RU.KOI8-R/htdocs/copyright/copyright.xml38
-rw-r--r--ru_RU.KOI8-R/htdocs/copyright/daemon.xml79
-rw-r--r--ru_RU.KOI8-R/htdocs/copyright/freebsd-doc-license.xml100
-rw-r--r--ru_RU.KOI8-R/htdocs/copyright/freebsd-license.xml73
-rw-r--r--ru_RU.KOI8-R/htdocs/copyright/license.xml155
-rw-r--r--ru_RU.KOI8-R/htdocs/copyright/trademarks.xml91
-rw-r--r--ru_RU.KOI8-R/htdocs/developers.xml219
-rw-r--r--ru_RU.KOI8-R/htdocs/developers/Makefile15
-rw-r--r--ru_RU.KOI8-R/htdocs/developers/cvs.xml76
-rw-r--r--ru_RU.KOI8-R/htdocs/doc/Makefile47
-rw-r--r--ru_RU.KOI8-R/htdocs/docproj/Makefile30
-rw-r--r--ru_RU.KOI8-R/htdocs/docproj/current.xml254
-rw-r--r--ru_RU.KOI8-R/htdocs/docproj/doc-set.xml57
-rw-r--r--ru_RU.KOI8-R/htdocs/docproj/docproj.xml93
-rw-r--r--ru_RU.KOI8-R/htdocs/docproj/handbook.xml471
-rw-r--r--ru_RU.KOI8-R/htdocs/docproj/handbook3.xml275
-rw-r--r--ru_RU.KOI8-R/htdocs/docproj/sgml.xml177
-rw-r--r--ru_RU.KOI8-R/htdocs/docproj/submitting.xml152
-rw-r--r--ru_RU.KOI8-R/htdocs/docproj/translations.xml524
-rw-r--r--ru_RU.KOI8-R/htdocs/docproj/who.xml49
-rw-r--r--ru_RU.KOI8-R/htdocs/docs.xml32
-rw-r--r--ru_RU.KOI8-R/htdocs/docs/Makefile15
-rw-r--r--ru_RU.KOI8-R/htdocs/docs/books.xml404
-rw-r--r--ru_RU.KOI8-R/htdocs/docs/man.xml104
-rw-r--r--ru_RU.KOI8-R/htdocs/docs/webresources.xml118
-rw-r--r--ru_RU.KOI8-R/htdocs/donations/Makefile14
-rw-r--r--ru_RU.KOI8-R/htdocs/donations/donors.xml2201
-rw-r--r--ru_RU.KOI8-R/htdocs/donations/index.xml234
-rw-r--r--ru_RU.KOI8-R/htdocs/donations/wantlist.xml597
-rw-r--r--ru_RU.KOI8-R/htdocs/events/2003/Makefile19
-rw-r--r--ru_RU.KOI8-R/htdocs/events/2003/bsdcon-devsummit.xml213
-rw-r--r--ru_RU.KOI8-R/htdocs/events/Makefile45
-rw-r--r--ru_RU.KOI8-R/htdocs/events/Makefile.inc11
-rw-r--r--ru_RU.KOI8-R/htdocs/events/events.css25
-rw-r--r--ru_RU.KOI8-R/htdocs/events/rss.xsl145
-rw-r--r--ru_RU.KOI8-R/htdocs/features.xml264
-rw-r--r--ru_RU.KOI8-R/htdocs/gnome/Makefile42
-rw-r--r--ru_RU.KOI8-R/htdocs/gnome/Makefile.inc9
-rw-r--r--ru_RU.KOI8-R/htdocs/gnome/TODO18
-rw-r--r--ru_RU.KOI8-R/htdocs/gnome/contact.xml54
-rw-r--r--ru_RU.KOI8-R/htdocs/gnome/docs/Makefile28
-rw-r--r--ru_RU.KOI8-R/htdocs/gnome/docs/bugging.xml113
-rw-r--r--ru_RU.KOI8-R/htdocs/gnome/docs/develfaq.xml230
-rw-r--r--ru_RU.KOI8-R/htdocs/gnome/docs/example-Makefile.xml81
-rw-r--r--ru_RU.KOI8-R/htdocs/gnome/docs/faq2.xml1079
-rw-r--r--ru_RU.KOI8-R/htdocs/gnome/docs/gnome2_porting.xml321
-rw-r--r--ru_RU.KOI8-R/htdocs/gnome/docs/gnome_porting.xml204
-rw-r--r--ru_RU.KOI8-R/htdocs/gnome/docs/knownissues.xml81
-rw-r--r--ru_RU.KOI8-R/htdocs/gnome/docs/porting.xml310
-rw-r--r--ru_RU.KOI8-R/htdocs/gnome/docs/volunteer.xml54
-rw-r--r--ru_RU.KOI8-R/htdocs/gnome/includes.xml16
-rw-r--r--ru_RU.KOI8-R/htdocs/gnome/includes.xsl42
-rw-r--r--ru_RU.KOI8-R/htdocs/gnome/index.xsl216
-rw-r--r--ru_RU.KOI8-R/htdocs/gnome/news.xml927
-rw-r--r--ru_RU.KOI8-R/htdocs/gnome/newsflash.xsl68
-rw-r--r--ru_RU.KOI8-R/htdocs/gnome/screenshots.xml59
-rw-r--r--ru_RU.KOI8-R/htdocs/handbook/Makefile14
-rw-r--r--ru_RU.KOI8-R/htdocs/handbook/index.xml32
-rw-r--r--ru_RU.KOI8-R/htdocs/index.xsl343
-rw-r--r--ru_RU.KOI8-R/htdocs/internal/Makefile38
-rw-r--r--ru_RU.KOI8-R/htdocs/internal/README.mirror33
-rw-r--r--ru_RU.KOI8-R/htdocs/internal/about.xml143
-rw-r--r--ru_RU.KOI8-R/htdocs/internal/bylaws.xml96
-rw-r--r--ru_RU.KOI8-R/htdocs/internal/core-vote.xml113
-rw-r--r--ru_RU.KOI8-R/htdocs/internal/developer.xml106
-rw-r--r--ru_RU.KOI8-R/htdocs/internal/doceng.xml92
-rw-r--r--ru_RU.KOI8-R/htdocs/internal/expire-bits.xml47
-rw-r--r--ru_RU.KOI8-R/htdocs/internal/fortunes.xml64
-rw-r--r--ru_RU.KOI8-R/htdocs/internal/homepage.xml27
-rw-r--r--ru_RU.KOI8-R/htdocs/internal/internal.xml88
-rw-r--r--ru_RU.KOI8-R/htdocs/internal/machines.xml399
-rw-r--r--ru_RU.KOI8-R/htdocs/internal/mirror.xml77
-rw-r--r--ru_RU.KOI8-R/htdocs/internal/new-account.xml136
-rw-r--r--ru_RU.KOI8-R/htdocs/internal/photos.xml117
-rw-r--r--ru_RU.KOI8-R/htdocs/internal/policies.xml71
-rw-r--r--ru_RU.KOI8-R/htdocs/internal/releng.xml35
-rw-r--r--ru_RU.KOI8-R/htdocs/internal/rtp.xml204
-rw-r--r--ru_RU.KOI8-R/htdocs/internal/statistic.xml51
-rw-r--r--ru_RU.KOI8-R/htdocs/internet.xml162
-rw-r--r--ru_RU.KOI8-R/htdocs/java/Makefile27
-rw-r--r--ru_RU.KOI8-R/htdocs/java/Makefile.inc7
-rw-r--r--ru_RU.KOI8-R/htdocs/java/advocacy.xml41
-rw-r--r--ru_RU.KOI8-R/htdocs/java/dists/Makefile16
-rw-r--r--ru_RU.KOI8-R/htdocs/java/dists/index.xml70
-rw-r--r--ru_RU.KOI8-R/htdocs/java/docs/Makefile20
-rw-r--r--ru_RU.KOI8-R/htdocs/java/docs/faq.xml122
-rw-r--r--ru_RU.KOI8-R/htdocs/java/docs/howtoports.xml47
-rw-r--r--ru_RU.KOI8-R/htdocs/java/docs/newbies.xml36
-rw-r--r--ru_RU.KOI8-R/htdocs/java/docs/performance.xml209
-rw-r--r--ru_RU.KOI8-R/htdocs/java/docs/tutorials.xml32
-rw-r--r--ru_RU.KOI8-R/htdocs/java/howhelp.xml120
-rw-r--r--ru_RU.KOI8-R/htdocs/java/index.xml105
-rw-r--r--ru_RU.KOI8-R/htdocs/java/install.xml107
-rw-r--r--ru_RU.KOI8-R/htdocs/java/links/Makefile25
-rw-r--r--ru_RU.KOI8-R/htdocs/java/links/api.xml127
-rw-r--r--ru_RU.KOI8-R/htdocs/java/links/development.xml106
-rw-r--r--ru_RU.KOI8-R/htdocs/java/links/documentation.xml38
-rw-r--r--ru_RU.KOI8-R/htdocs/java/links/freebsd.xml53
-rw-r--r--ru_RU.KOI8-R/htdocs/java/links/index.xml48
-rw-r--r--ru_RU.KOI8-R/htdocs/java/links/resources.xml49
-rw-r--r--ru_RU.KOI8-R/htdocs/java/links/servlets.xml71
-rw-r--r--ru_RU.KOI8-R/htdocs/java/links/tools.xml39
-rw-r--r--ru_RU.KOI8-R/htdocs/java/links/tutorials.xml40
-rw-r--r--ru_RU.KOI8-R/htdocs/java/links/vendor.xml56
-rw-r--r--ru_RU.KOI8-R/htdocs/java/newsflash.xml690
-rw-r--r--ru_RU.KOI8-R/htdocs/java/press.xml33
-rw-r--r--ru_RU.KOI8-R/htdocs/logo.xml126
-rw-r--r--ru_RU.KOI8-R/htdocs/mailto.xml56
-rw-r--r--ru_RU.KOI8-R/htdocs/marketing/Makefile19
-rw-r--r--ru_RU.KOI8-R/htdocs/marketing/os-comparison.xml633
-rw-r--r--ru_RU.KOI8-R/htdocs/news/1996/Makefile16
-rw-r--r--ru_RU.KOI8-R/htdocs/news/1996/index.xml56
-rw-r--r--ru_RU.KOI8-R/htdocs/news/1997/Makefile16
-rw-r--r--ru_RU.KOI8-R/htdocs/news/1997/index.xml251
-rw-r--r--ru_RU.KOI8-R/htdocs/news/1998/Makefile19
-rw-r--r--ru_RU.KOI8-R/htdocs/news/1998/index.xml237
-rw-r--r--ru_RU.KOI8-R/htdocs/news/1998/press.xml479
-rw-r--r--ru_RU.KOI8-R/htdocs/news/1999/Makefile19
-rw-r--r--ru_RU.KOI8-R/htdocs/news/1999/index.xml384
-rw-r--r--ru_RU.KOI8-R/htdocs/news/1999/press.xml913
-rw-r--r--ru_RU.KOI8-R/htdocs/news/2000/Makefile19
-rw-r--r--ru_RU.KOI8-R/htdocs/news/2000/index.xml452
-rw-r--r--ru_RU.KOI8-R/htdocs/news/2000/press.xml623
-rw-r--r--ru_RU.KOI8-R/htdocs/news/2001/Makefile18
-rw-r--r--ru_RU.KOI8-R/htdocs/news/2001/news.xml965
-rw-r--r--ru_RU.KOI8-R/htdocs/news/2001/press.xml350
-rw-r--r--ru_RU.KOI8-R/htdocs/news/2002/Makefile22
-rw-r--r--ru_RU.KOI8-R/htdocs/news/2002/news.xml826
-rw-r--r--ru_RU.KOI8-R/htdocs/news/2002/press.xml412
-rw-r--r--ru_RU.KOI8-R/htdocs/news/2003/Makefile23
-rw-r--r--ru_RU.KOI8-R/htdocs/news/2003/news.xml632
-rw-r--r--ru_RU.KOI8-R/htdocs/news/2003/press.xml661
-rw-r--r--ru_RU.KOI8-R/htdocs/news/Makefile47
-rw-r--r--ru_RU.KOI8-R/htdocs/news/Makefile.inc7
-rw-r--r--ru_RU.KOI8-R/htdocs/news/news.xml87
-rw-r--r--ru_RU.KOI8-R/htdocs/news/press-rel-1.xml71
-rw-r--r--ru_RU.KOI8-R/htdocs/news/press-rel-2.xml110
-rw-r--r--ru_RU.KOI8-R/htdocs/news/press-rel-3.xml102
-rw-r--r--ru_RU.KOI8-R/htdocs/news/press-rel-4.xml254
-rw-r--r--ru_RU.KOI8-R/htdocs/news/press-rel-5.xml148
-rw-r--r--ru_RU.KOI8-R/htdocs/news/pressreleases.xml79
-rw-r--r--ru_RU.KOI8-R/htdocs/news/sou1999.xml396
-rw-r--r--ru_RU.KOI8-R/htdocs/news/status/Makefile17
-rw-r--r--ru_RU.KOI8-R/htdocs/news/status/status.xml112
-rw-r--r--ru_RU.KOI8-R/htdocs/platforms/Makefile33
-rw-r--r--ru_RU.KOI8-R/htdocs/platforms/Makefile.inc9
-rw-r--r--ru_RU.KOI8-R/htdocs/platforms/alpha.xml59
-rw-r--r--ru_RU.KOI8-R/htdocs/platforms/amd64.xml93
-rw-r--r--ru_RU.KOI8-R/htdocs/platforms/amd64/Makefile19
-rw-r--r--ru_RU.KOI8-R/htdocs/platforms/amd64/motherboards.xml712
-rw-r--r--ru_RU.KOI8-R/htdocs/platforms/arm.xml79
-rw-r--r--ru_RU.KOI8-R/htdocs/platforms/i386.xml62
-rw-r--r--ru_RU.KOI8-R/htdocs/platforms/ia64.xml29
-rw-r--r--ru_RU.KOI8-R/htdocs/platforms/ia64/Makefile17
-rw-r--r--ru_RU.KOI8-R/htdocs/platforms/ia64/index.xml70
-rw-r--r--ru_RU.KOI8-R/htdocs/platforms/ia64/machines.xml135
-rw-r--r--ru_RU.KOI8-R/htdocs/platforms/ia64/refs.xml90
-rw-r--r--ru_RU.KOI8-R/htdocs/platforms/ia64/todo.xml114
-rw-r--r--ru_RU.KOI8-R/htdocs/platforms/index.xml82
-rw-r--r--ru_RU.KOI8-R/htdocs/platforms/mips.xml91
-rw-r--r--ru_RU.KOI8-R/htdocs/platforms/pc98.xml71
-rw-r--r--ru_RU.KOI8-R/htdocs/platforms/ppc.xml264
-rw-r--r--ru_RU.KOI8-R/htdocs/platforms/sparc.xml166
-rw-r--r--ru_RU.KOI8-R/htdocs/platforms/x86-64.xml34
-rw-r--r--ru_RU.KOI8-R/htdocs/platforms/xbox.xml66
-rw-r--r--ru_RU.KOI8-R/htdocs/portmgr/Makefile19
-rw-r--r--ru_RU.KOI8-R/htdocs/portmgr/charter.xml107
-rw-r--r--ru_RU.KOI8-R/htdocs/portmgr/index.xml126
-rw-r--r--ru_RU.KOI8-R/htdocs/portmgr/policies.xml237
-rw-r--r--ru_RU.KOI8-R/htdocs/portmgr/qa.xml201
-rw-r--r--ru_RU.KOI8-R/htdocs/ports/Makefile98
-rw-r--r--ru_RU.KOI8-R/htdocs/ports/Makefile.inc23
-rw-r--r--ru_RU.KOI8-R/htdocs/ports/Makefile.inc020
-rwxr-xr-xru_RU.KOI8-R/htdocs/ports/categories100
-rw-r--r--ru_RU.KOI8-R/htdocs/ports/categories.descriptions13
-rw-r--r--ru_RU.KOI8-R/htdocs/ports/growth/Makefile11
-rw-r--r--ru_RU.KOI8-R/htdocs/ports/index.xml74
-rw-r--r--ru_RU.KOI8-R/htdocs/ports/installing.xml43
-rwxr-xr-xru_RU.KOI8-R/htdocs/ports/packages25
-rwxr-xr-xru_RU.KOI8-R/htdocs/ports/portindex393
-rw-r--r--ru_RU.KOI8-R/htdocs/ports/ports.ent23
-rw-r--r--ru_RU.KOI8-R/htdocs/ports/references.xml98
-rw-r--r--ru_RU.KOI8-R/htdocs/ports/searching.xml48
-rw-r--r--ru_RU.KOI8-R/htdocs/ports/updating.xml60
-rw-r--r--ru_RU.KOI8-R/htdocs/projects/Makefile26
-rw-r--r--ru_RU.KOI8-R/htdocs/projects/Makefile.inc11
-rw-r--r--ru_RU.KOI8-R/htdocs/projects/busdma/Makefile24
-rw-r--r--ru_RU.KOI8-R/htdocs/projects/busdma/index.xml1281
-rw-r--r--ru_RU.KOI8-R/htdocs/projects/busdma/style.css38
-rw-r--r--ru_RU.KOI8-R/htdocs/projects/cvsweb.xml147
-rw-r--r--ru_RU.KOI8-R/htdocs/projects/newbies.xml283
-rw-r--r--ru_RU.KOI8-R/htdocs/projects/projects.xml588
-rw-r--r--ru_RU.KOI8-R/htdocs/projects/summerofcode.xml436
-rw-r--r--ru_RU.KOI8-R/htdocs/prstats/Makefile13
-rw-r--r--ru_RU.KOI8-R/htdocs/prstats/index.xml48
-rw-r--r--ru_RU.KOI8-R/htdocs/publish.xml655
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.3R/Makefile45
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.3R/announce.xml275
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.3R/docbook.css160
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.3R/errata.html346
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.3R/hardware-alpha.html5916
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.3R/hardware-amd64.html5091
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.3R/hardware-i386.html6387
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.3R/hardware-ia64.html2713
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.3R/hardware-pc98.html4833
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.3R/hardware-sparc64.html1962
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.3R/hardware.xml44
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.3R/installation-alpha.html1155
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.3R/installation-amd64.html1131
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.3R/installation-i386.html1576
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.3R/installation-ia64.html860
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.3R/installation-pc98.html972
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.3R/installation-sparc64.html913
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.3R/installation.xml44
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.3R/migration-guide.html919
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.3R/readme.html436
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.3R/relnotes-alpha.html2259
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.3R/relnotes-amd64.html2302
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.3R/relnotes-i386.html2455
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.3R/relnotes-ia64.html2275
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.3R/relnotes-pc98.html2336
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.3R/relnotes-sparc64.html2285
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.3R/relnotes.xml44
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.4R/Makefile46
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.4R/announce.xml282
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.4R/docbook.css160
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.4R/errata.html126
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.4R/hardware-alpha.html5921
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.4R/hardware-amd64.html5446
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.4R/hardware-i386.html6950
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.4R/hardware-ia64.html2673
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.4R/hardware-pc98.html4970
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.4R/hardware-sparc64.html1912
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.4R/hardware.xml43
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.4R/installation-alpha.html1200
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.4R/installation-amd64.html1174
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.4R/installation-i386.html1622
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.4R/installation-ia64.html902
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.4R/installation-pc98.html1016
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.4R/installation-sparc64.html955
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.4R/installation.xml44
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.4R/migration-guide.html937
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.4R/readme.html435
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.4R/relnotes-alpha.html918
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.4R/relnotes-amd64.html931
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.4R/relnotes-i386.html945
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.4R/relnotes-ia64.html921
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.4R/relnotes-pc98.html915
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.4R/relnotes-sparc64.html940
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/5.4R/relnotes.xml42
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/Makefile25
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/Makefile.inc7
-rw-r--r--ru_RU.KOI8-R/htdocs/releases/index.xml826
-rw-r--r--ru_RU.KOI8-R/htdocs/releng/Makefile18
-rw-r--r--ru_RU.KOI8-R/htdocs/releng/charter.xml80
-rw-r--r--ru_RU.KOI8-R/htdocs/releng/index.xml522
-rw-r--r--ru_RU.KOI8-R/htdocs/relnotes.xml170
-rw-r--r--ru_RU.KOI8-R/htdocs/relnotes/Makefile20
-rw-r--r--ru_RU.KOI8-R/htdocs/search/Makefile23
-rw-r--r--ru_RU.KOI8-R/htdocs/search/index-site.xsl63
-rw-r--r--ru_RU.KOI8-R/htdocs/search/search-mid.xml49
-rw-r--r--ru_RU.KOI8-R/htdocs/search/search.xml664
-rw-r--r--ru_RU.KOI8-R/htdocs/search/searchhints.xml63
-rw-r--r--ru_RU.KOI8-R/htdocs/search/sitemap.xml1165
-rw-r--r--ru_RU.KOI8-R/htdocs/security/Makefile46
-rw-r--r--ru_RU.KOI8-R/htdocs/security/advisories.xml37
-rw-r--r--ru_RU.KOI8-R/htdocs/security/errata-rss.xsl26
-rw-r--r--ru_RU.KOI8-R/htdocs/security/mkindex.xsl31
-rw-r--r--ru_RU.KOI8-R/htdocs/security/notices.xml31
-rw-r--r--ru_RU.KOI8-R/htdocs/security/security-rdf.xsl23
-rw-r--r--ru_RU.KOI8-R/htdocs/security/security-rss.xsl26
-rw-r--r--ru_RU.KOI8-R/htdocs/security/security.xml485
-rw-r--r--ru_RU.KOI8-R/htdocs/send-pr.xml185
-rw-r--r--ru_RU.KOI8-R/htdocs/snapshots/Makefile19
-rw-r--r--ru_RU.KOI8-R/htdocs/snapshots/Makefile.inc11
-rw-r--r--ru_RU.KOI8-R/htdocs/snapshots/index.xml174
-rw-r--r--ru_RU.KOI8-R/htdocs/support.xml1177
-rw-r--r--ru_RU.KOI8-R/htdocs/support/Makefile14
-rw-r--r--ru_RU.KOI8-R/htdocs/support/bugreports.xml77
-rw-r--r--ru_RU.KOI8-R/htdocs/support/webresources.xml120
-rw-r--r--ru_RU.KOI8-R/htdocs/tutorials/Makefile21
-rw-r--r--ru_RU.KOI8-R/htdocs/tutorials/index.xml29
-rw-r--r--ru_RU.KOI8-R/htdocs/where.xml250
-rw-r--r--ru_RU.KOI8-R/man/FRDP.man.dist87
-rw-r--r--ru_RU.KOI8-R/man/Makefile18
-rw-r--r--ru_RU.KOI8-R/man/Makefile.inc5
-rw-r--r--ru_RU.KOI8-R/man/man1/Makefile232
-rw-r--r--ru_RU.KOI8-R/man/man1/apply.1132
-rw-r--r--ru_RU.KOI8-R/man/man1/apropos.167
-rw-r--r--ru_RU.KOI8-R/man/man1/basename.1111
-rw-r--r--ru_RU.KOI8-R/man/man1/biff.1131
-rw-r--r--ru_RU.KOI8-R/man/man1/brandelf.1107
-rw-r--r--ru_RU.KOI8-R/man/man1/bsdiff.167
-rw-r--r--ru_RU.KOI8-R/man/man1/bspatch.165
-rw-r--r--ru_RU.KOI8-R/man/man1/builtin.1332
-rw-r--r--ru_RU.KOI8-R/man/man1/c89.1172
-rw-r--r--ru_RU.KOI8-R/man/man1/c99.1185
-rw-r--r--ru_RU.KOI8-R/man/man1/cat.1203
-rw-r--r--ru_RU.KOI8-R/man/man1/chgrp.1147
-rw-r--r--ru_RU.KOI8-R/man/man1/chkey.126
-rw-r--r--ru_RU.KOI8-R/man/man1/ckdist.1128
-rw-r--r--ru_RU.KOI8-R/man/man1/cmp.1125
-rw-r--r--ru_RU.KOI8-R/man/man1/colrm.192
-rw-r--r--ru_RU.KOI8-R/man/man1/column.1104
-rw-r--r--ru_RU.KOI8-R/man/man1/comm.1126
-rw-r--r--ru_RU.KOI8-R/man/man1/cp.1286
-rw-r--r--ru_RU.KOI8-R/man/man1/crontab.1135
-rw-r--r--ru_RU.KOI8-R/man/man1/cut.1164
-rw-r--r--ru_RU.KOI8-R/man/man1/df.1170
-rw-r--r--ru_RU.KOI8-R/man/man1/domainname.165
-rw-r--r--ru_RU.KOI8-R/man/man1/du.1150
-rw-r--r--ru_RU.KOI8-R/man/man1/echo.195
-rw-r--r--ru_RU.KOI8-R/man/man1/enigma.1127
-rw-r--r--ru_RU.KOI8-R/man/man1/example.1150
-rw-r--r--ru_RU.KOI8-R/man/man1/expand.1122
-rw-r--r--ru_RU.KOI8-R/man/man1/expr.1276
-rw-r--r--ru_RU.KOI8-R/man/man1/false.168
-rw-r--r--ru_RU.KOI8-R/man/man1/fdformat.1172
-rw-r--r--ru_RU.KOI8-R/man/man1/file2c.176
-rw-r--r--ru_RU.KOI8-R/man/man1/find.1971
-rw-r--r--ru_RU.KOI8-R/man/man1/finger.1253
-rw-r--r--ru_RU.KOI8-R/man/man1/fold.191
-rw-r--r--ru_RU.KOI8-R/man/man1/from.199
-rw-r--r--ru_RU.KOI8-R/man/man1/fsync.163
-rw-r--r--ru_RU.KOI8-R/man/man1/gcore.1103
-rw-r--r--ru_RU.KOI8-R/man/man1/groups.164
-rw-r--r--ru_RU.KOI8-R/man/man1/head.172
-rw-r--r--ru_RU.KOI8-R/man/man1/hostname.172
-rw-r--r--ru_RU.KOI8-R/man/man1/id.1164
-rw-r--r--ru_RU.KOI8-R/man/man1/intro.186
-rw-r--r--ru_RU.KOI8-R/man/man1/ipcrm.186
-rw-r--r--ru_RU.KOI8-R/man/man1/ipcs.1170
-rw-r--r--ru_RU.KOI8-R/man/man1/join.1217
-rw-r--r--ru_RU.KOI8-R/man/man1/kbdmap.1150
-rw-r--r--ru_RU.KOI8-R/man/man1/kenv.176
-rw-r--r--ru_RU.KOI8-R/man/man1/keylogin.133
-rw-r--r--ru_RU.KOI8-R/man/man1/keylogout.146
-rw-r--r--ru_RU.KOI8-R/man/man1/kill.1154
-rw-r--r--ru_RU.KOI8-R/man/man1/killall.1163
-rw-r--r--ru_RU.KOI8-R/man/man1/ldd.173
-rw-r--r--ru_RU.KOI8-R/man/man1/ln.1224
-rw-r--r--ru_RU.KOI8-R/man/man1/locale.1101
-rw-r--r--ru_RU.KOI8-R/man/man1/lock.185
-rw-r--r--ru_RU.KOI8-R/man/man1/lockf.1141
-rw-r--r--ru_RU.KOI8-R/man/man1/logins.1110
-rw-r--r--ru_RU.KOI8-R/man/man1/logname.176
-rw-r--r--ru_RU.KOI8-R/man/man1/look.1122
-rw-r--r--ru_RU.KOI8-R/man/man1/lorder.193
-rw-r--r--ru_RU.KOI8-R/man/man1/lsvfs.154
-rw-r--r--ru_RU.KOI8-R/man/man1/makewhatis.1143
-rw-r--r--ru_RU.KOI8-R/man/man1/man.1299
-rw-r--r--ru_RU.KOI8-R/man/man1/manpath.1101
-rw-r--r--ru_RU.KOI8-R/man/man1/minigzip.178
-rw-r--r--ru_RU.KOI8-R/man/man1/mkdir.1107
-rw-r--r--ru_RU.KOI8-R/man/man1/mkfifo.1103
-rw-r--r--ru_RU.KOI8-R/man/man1/mkstr.1131
-rw-r--r--ru_RU.KOI8-R/man/man1/mptable.177
-rw-r--r--ru_RU.KOI8-R/man/man1/mv.1158
-rw-r--r--ru_RU.KOI8-R/man/man1/ncplist.182
-rw-r--r--ru_RU.KOI8-R/man/man1/ncplogin.1242
-rw-r--r--ru_RU.KOI8-R/man/man1/ncplogout.157
-rw-r--r--ru_RU.KOI8-R/man/man1/newgrp.199
-rw-r--r--ru_RU.KOI8-R/man/man1/nfsstat.1109
-rw-r--r--ru_RU.KOI8-R/man/man1/nice.1126
-rw-r--r--ru_RU.KOI8-R/man/man1/nohup.1124
-rw-r--r--ru_RU.KOI8-R/man/man1/od.1266
-rw-r--r--ru_RU.KOI8-R/man/man1/pagesize.158
-rw-r--r--ru_RU.KOI8-R/man/man1/passwd.1256
-rw-r--r--ru_RU.KOI8-R/man/man1/pkg_info.1288
-rw-r--r--ru_RU.KOI8-R/man/man1/pkill.1284
-rw-r--r--ru_RU.KOI8-R/man/man1/printenv.187
-rw-r--r--ru_RU.KOI8-R/man/man1/pwd.1104
-rw-r--r--ru_RU.KOI8-R/man/man1/rcp.1153
-rw-r--r--ru_RU.KOI8-R/man/man1/realpath.167
-rw-r--r--ru_RU.KOI8-R/man/man1/rev.151
-rw-r--r--ru_RU.KOI8-R/man/man1/rm.1232
-rw-r--r--ru_RU.KOI8-R/man/man1/rmdir.198
-rw-r--r--ru_RU.KOI8-R/man/man1/rup.194
-rw-r--r--ru_RU.KOI8-R/man/man1/ruptime.198
-rw-r--r--ru_RU.KOI8-R/man/man1/rusers.1102
-rw-r--r--ru_RU.KOI8-R/man/man1/rwall.182
-rw-r--r--ru_RU.KOI8-R/man/man1/rwho.183
-rw-r--r--ru_RU.KOI8-R/man/man1/script.1159
-rw-r--r--ru_RU.KOI8-R/man/man1/sh.12253
-rw-r--r--ru_RU.KOI8-R/man/man1/shar.1114
-rw-r--r--ru_RU.KOI8-R/man/man1/sleep.1125
-rw-r--r--ru_RU.KOI8-R/man/man1/split.1170
-rw-r--r--ru_RU.KOI8-R/man/man1/tail.1191
-rw-r--r--ru_RU.KOI8-R/man/man1/talk.1162
-rw-r--r--ru_RU.KOI8-R/man/man1/tcopy.1126
-rw-r--r--ru_RU.KOI8-R/man/man1/tee.184
-rw-r--r--ru_RU.KOI8-R/man/man1/test.1328
-rw-r--r--ru_RU.KOI8-R/man/man1/tftp.1186
-rw-r--r--ru_RU.KOI8-R/man/man1/time.1141
-rw-r--r--ru_RU.KOI8-R/man/man1/true.168
-rw-r--r--ru_RU.KOI8-R/man/man1/truncate.1153
-rw-r--r--ru_RU.KOI8-R/man/man1/truss.196
-rw-r--r--ru_RU.KOI8-R/man/man1/tsort.1100
-rw-r--r--ru_RU.KOI8-R/man/man1/tty.188
-rw-r--r--ru_RU.KOI8-R/man/man1/ul.1108
-rw-r--r--ru_RU.KOI8-R/man/man1/uname.1104
-rw-r--r--ru_RU.KOI8-R/man/man1/uniq.1160
-rw-r--r--ru_RU.KOI8-R/man/man1/unvis.163
-rw-r--r--ru_RU.KOI8-R/man/man1/uptime.163
-rw-r--r--ru_RU.KOI8-R/man/man1/users.163
-rw-r--r--ru_RU.KOI8-R/man/man1/vidcontrol.1530
-rw-r--r--ru_RU.KOI8-R/man/man1/vis.1147
-rw-r--r--ru_RU.KOI8-R/man/man1/w.1155
-rw-r--r--ru_RU.KOI8-R/man/man1/wall.185
-rw-r--r--ru_RU.KOI8-R/man/man1/wc.1161
-rw-r--r--ru_RU.KOI8-R/man/man1/what.191
-rw-r--r--ru_RU.KOI8-R/man/man1/which.186
-rw-r--r--ru_RU.KOI8-R/man/man1/who.1154
-rw-r--r--ru_RU.KOI8-R/man/man1/whoami.161
-rw-r--r--ru_RU.KOI8-R/man/man1/write.1119
-rw-r--r--ru_RU.KOI8-R/man/man1/xstr.1169
-rw-r--r--ru_RU.KOI8-R/man/man1/yes.158
-rw-r--r--ru_RU.KOI8-R/man/man1/ypmatch.179
-rw-r--r--ru_RU.KOI8-R/man/man1/ypwhich.1103
-rw-r--r--ru_RU.KOI8-R/man/man3/Makefile13
-rw-r--r--ru_RU.KOI8-R/man/man3/setbuf.3204
-rw-r--r--ru_RU.KOI8-R/man/man3/strcpy.3192
-rw-r--r--ru_RU.KOI8-R/man/man5/Makefile6
-rw-r--r--ru_RU.KOI8-R/man/man5/finger.conf.592
-rw-r--r--ru_RU.KOI8-R/man/man8/Makefile15
-rw-r--r--ru_RU.KOI8-R/man/man8/bsdlabel.8504
-rw-r--r--ru_RU.KOI8-R/man/man8/fdisk.8448
-rw-r--r--ru_RU.KOI8-R/man/man8/gjournal.8253
-rw-r--r--ru_RU.KOI8-R/man/man8/intro.893
-rw-r--r--ru_RU.KOI8-R/man/man8/mount_ntfs.8170
-rw-r--r--ru_RU.KOI8-R/man/man8/nanobsd.8313
-rw-r--r--ru_RU.KOI8-R/share/xml/catalog.xml40
-rw-r--r--ru_RU.KOI8-R/share/xml/entities.ent30
-rw-r--r--ru_RU.KOI8-R/share/xml/events.xml65
-rw-r--r--ru_RU.KOI8-R/share/xml/events2003.xml260
-rw-r--r--ru_RU.KOI8-R/share/xml/events2004.xml454
-rw-r--r--ru_RU.KOI8-R/share/xml/events2005.xml293
-rw-r--r--ru_RU.KOI8-R/share/xml/events2006.xml511
-rw-r--r--ru_RU.KOI8-R/share/xml/events2007.xml619
-rw-r--r--ru_RU.KOI8-R/share/xml/events2008.xml548
-rw-r--r--ru_RU.KOI8-R/share/xml/events2009.xml498
-rw-r--r--ru_RU.KOI8-R/share/xml/events2010.xml493
-rw-r--r--ru_RU.KOI8-R/share/xml/events2011.xml255
-rw-r--r--ru_RU.KOI8-R/share/xml/events2012.xml75
-rw-r--r--ru_RU.KOI8-R/share/xml/events2013.xml47
-rw-r--r--ru_RU.KOI8-R/share/xml/freebsd-xhtml.xsl21
-rw-r--r--ru_RU.KOI8-R/share/xml/glossary.ent1732
-rw-r--r--ru_RU.KOI8-R/share/xml/header.l10n.ent108
-rw-r--r--ru_RU.KOI8-R/share/xml/l10n.ent64
-rw-r--r--ru_RU.KOI8-R/share/xml/libcommon.xsl110
-rw-r--r--ru_RU.KOI8-R/share/xml/mailing-lists.ent586
-rw-r--r--ru_RU.KOI8-R/share/xml/mirrors-local.xsl28
-rw-r--r--ru_RU.KOI8-R/share/xml/navibar.l10n.ent165
-rw-r--r--ru_RU.KOI8-R/share/xml/news.xml1233
-rw-r--r--ru_RU.KOI8-R/share/xml/newsgroups.ent16
-rw-r--r--ru_RU.KOI8-R/share/xml/press.xml805
-rw-r--r--ru_RU.KOI8-R/share/xml/release.l10n.ent117
-rw-r--r--ru_RU.KOI8-R/share/xml/teams.ent55
-rw-r--r--ru_RU.KOI8-R/share/xml/templates.events.xsl357
-rw-r--r--ru_RU.KOI8-R/share/xml/templates.usergroups.xsl27
-rw-r--r--ru_RU.KOI8-R/share/xml/trademarks.ent429
-rw-r--r--ru_RU.KOI8-R/share/xml/translators.ent39
-rw-r--r--ru_RU.KOI8-R/share/xml/transtable-local.xsl19
-rw-r--r--ru_RU.KOI8-R/share/xml/transtable.xml367
-rw-r--r--ru_RU.KOI8-R/share/xml/urls.ent25
659 files changed, 0 insertions, 300835 deletions
diff --git a/ru_RU.KOI8-R/Makefile b/ru_RU.KOI8-R/Makefile
deleted file mode 100644
index 77723ed149..0000000000
--- a/ru_RU.KOI8-R/Makefile
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# The FreeBSD Russian Documentation Project
-#
-# $FreeBSD$
-# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/Makefile,v 1.3 2004/02/21 15:25:00 andy Exp $
-#
-# Original revision: r5542
-#
-
-SUBDIR = articles
-SUBDIR+= books
-
-COMPAT_SYMLINK = ru
-
-DOC_PREFIX?= ${.CURDIR}/..
-.include "${DOC_PREFIX}/share/mk/doc.project.mk"
diff --git a/ru_RU.KOI8-R/Makefile.inc b/ru_RU.KOI8-R/Makefile.inc
deleted file mode 100644
index 453700a49b..0000000000
--- a/ru_RU.KOI8-R/Makefile.inc
+++ /dev/null
@@ -1,3 +0,0 @@
-# $FreeBSD$
-
-DOC_PREFIX?= ${.CURDIR}/../..
diff --git a/ru_RU.KOI8-R/articles/Makefile b/ru_RU.KOI8-R/articles/Makefile
deleted file mode 100644
index b88cf43fe7..0000000000
--- a/ru_RU.KOI8-R/articles/Makefile
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# The FreeBSD Russian Documentation Project
-#
-# $FreeBSD$
-# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/Makefile,v 1.37 2006/03/22 17:06:02 marck Exp $
-#
-# Original revision: r21216
-#
-
-SUBDIR =
-SUBDIR+= committers-guide
-SUBDIR+= contributing
-#SUBDIR+= contributors
-SUBDIR+= cups
-SUBDIR+= explaining-bsd
-#SUBDIR+= filtering-bridges
-SUBDIR+= fonts
-SUBDIR+= freebsd-questions
-SUBDIR+= geom-class
-SUBDIR+= gjournal-desktop
-SUBDIR+= hubs
-SUBDIR+= ipsec-must
-SUBDIR+= mailing-list-faq
-SUBDIR+= new-users
-SUBDIR+= pam
-SUBDIR+= pr-guidelines
-SUBDIR+= problem-reports
-SUBDIR+= releng
-#SUBDIR+= serial-uart
-SUBDIR+= solid-state
-#SUBDIR+= vinum
-SUBDIR+= vm-design
-
-# ROOT_SYMLINKS+= new-users
-
-DOC_PREFIX?= ${.CURDIR}/../..
-.include "${DOC_PREFIX}/share/mk/doc.project.mk"
diff --git a/ru_RU.KOI8-R/articles/Makefile.inc b/ru_RU.KOI8-R/articles/Makefile.inc
deleted file mode 100644
index e435b6f579..0000000000
--- a/ru_RU.KOI8-R/articles/Makefile.inc
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# $FreeBSD$
-# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/Makefile.inc,v 1.4 2001/07/25 10:26:26 phantom Exp $
-#
-# Original revision: r5542
-#
-
-DESTDIR?= ${DOCDIR}/ru_RU.KOI8-R/articles/${.CURDIR:T}
diff --git a/ru_RU.KOI8-R/articles/committers-guide/Makefile b/ru_RU.KOI8-R/articles/committers-guide/Makefile
deleted file mode 100644
index 661c4d5b69..0000000000
--- a/ru_RU.KOI8-R/articles/committers-guide/Makefile
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# The FreeBSD Russian Documentation Project
-#
-# $FreeBSD$
-# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/committers-guide/Makefile,v 1.2 2004/09/21 08:24:32 marck Exp $
-#
-# Original revision: r21980
-#
-# Article: The FreeBSD Committers Guide
-
-
-DOC?= article
-
-FORMATS?= html
-WITH_ARTICLE_TOC?= YES
-
-INSTALL_COMPRESSED?= gz
-INSTALL_ONLY_COMPRESSED?=
-
-SRCS= article.xml
-
-URL_RELPREFIX?= ../../../..
-DOC_PREFIX?= ${.CURDIR}/../../..
-
-.include "${DOC_PREFIX}/share/mk/doc.project.mk"
diff --git a/ru_RU.KOI8-R/articles/committers-guide/article.xml b/ru_RU.KOI8-R/articles/committers-guide/article.xml
deleted file mode 100644
index cf8dfd4e81..0000000000
--- a/ru_RU.KOI8-R/articles/committers-guide/article.xml
+++ /dev/null
@@ -1,3352 +0,0 @@
-<?xml version="1.0" encoding="koi8-r"?>
-<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
- "http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
-<!--
- The FreeBSD Russian Documentation Project
-
- $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/committers-guide/article.xml,v 1.30 2007/05/09 06:08:23 gad Exp $
-
- Original revision: r30088
--->
-<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="ru">
- <info><title>Справочник коммиттера</title>
-
-
- <authorgroup>
- <author><personname><surname>The FreeBSD Documentation Project</surname></personname></author>
- <author><personname><firstname>Дмитрий</firstname><surname>Морозовский</surname></personname><contrib>Перевод на русский язык: </contrib></author>
- </authorgroup>
-
- <copyright>
- <year>1999</year>
- <year>2000</year>
- <year>2001</year>
- <year>2002</year>
- <year>2003</year>
- <year>2004</year>
- <year>2005</year>
- <year>2006</year>
- <year>2007</year>
- <holder>The FreeBSD Documentation Project</holder>
- </copyright>
-
- <legalnotice xml:id="trademarks" role="trademarks">
- &tm-attrib.freebsd;
- &tm-attrib.cvsup;
- &tm-attrib.ibm;
- &tm-attrib.intel;
- &tm-attrib.sparc;
- &tm-attrib.general;
- </legalnotice>
-
- <pubdate>$FreeBSD$</pubdate>
-
- <releaseinfo>$FreeBSD$</releaseinfo>
-
- <abstract>
- <para>Данный документ содержит информацию для сообщества коммиттеров
- FreeBSD. Все новые коммиттеры должны изучить его перед началом работы;
- прочим коммиттерам также рекомендуется время от времени просматривать
- его.</para>
- </abstract>
- </info>
-
- <sect1 xml:id="admin">
- <title>Административные детали</title>
-
- <informaltable frame="none" orient="port" pgwide="1">
- <tgroup cols="2">
- <tbody>
- <row>
- <entry><emphasis>Хост основного репозитория</emphasis></entry>
- <entry><systemitem class="fqdomainname">ncvs.FreeBSD.org</systemitem></entry>
- </row>
-
- <row>
- <entry><emphasis>Способ авторизации</emphasis></entry>
- <entry>&man.ssh.1;, только протокол 2</entry>
- </row>
-
- <row>
- <entry><emphasis>Основной корень репозитория (CVSROOT)</emphasis></entry>
- <entry>
- <systemitem class="fqdomainname">ncvs.FreeBSD.org</systemitem><literal>:</literal><filename>/home/ncvs</filename> (см. также <xref linkend="cvs.operations"/>).
- </entry>
- </row>
-
- <row>
- <entry><emphasis>&a.cvsadm;</emphasis></entry>
- <entry>&a.peter.email; и &a.markm.email;, а также &a.joe.email; и &a.marcus.email; для
- иерархии <filename>ports/</filename></entry>
- </row>
-
- <row>
- <entry><emphasis>Списки рассылки</emphasis></entry>
- <entry>&a.doc-developers;, &a.doc-committers;;
- &a.ports-developers;, &a.ports-committers;;
- &a.src-developers;, &a.src-committers;. (Каждому репозиторию
- проекта соответствуют отдельные списки рассылки с суффиксами
- -developers и -committers. Архивы этих списков хранятся в файлах
- <filename>/home/mail/<replaceable>repository-name</replaceable>-developers-archive</filename>
- и
- <filename>/home/mail/<replaceable>repository-name</replaceable>-committers-archive</filename>
- на машинах кластера <systemitem class="fqdomainname">FreeBSD.org</systemitem>).
- </entry>
- </row>
-
-
- <row>
- <entry><emphasis>Отчеты Правления</emphasis></entry>
- <entry><filename>/home/core/public/monthly-report</filename>
- на машинах кластера <systemitem class="fqdomainname">FreeBSD.org</systemitem>.
- </entry>
- </row>
-
- <row>
- <entry><emphasis>Наиболее значимые метки CVS</emphasis></entry>
- <entry><literal>RELENG_4</literal> (ветвь 4.X-STABLE),
- <literal>RELENG_5</literal> (ветвь 5.X-STABLE),
- <literal>RELENG_6</literal> (ветвь 6.X-STABLE),
- <literal>HEAD</literal> (ветвь -CURRENT)</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Для авторизации на машины проекта вы должны использовать протоколы
- &man.ssh.1; или &man.telnet.1; с включенным Kerberos 5. В случае
- &man.ssh.1;, допустим только протокол версии 2.
- Эти протоколы являются значительно более защищенными по сравнению с
- &man.telnet.1; или &man.rlogin.1;, поскольку информация об авторизации
- передается в зашифрованном виде. По умолчанию, протокол &man.ssh.1;
- также шифрует весь трафик. Учитывая наличие таких утилит, как
- &man.ssh-agent.1; и &man.scp.1;, протокол &man.ssh.1; значительно
- удобнее прочих в использовании. Если вы ничего не знаете об &man.ssh.1;,
- загляните в раздел <xref linkend="ssh.guide"/>.</para>
- </sect1>
-
- <sect1 xml:id="committer.types">
- <title>Типы коммит битов</title>
-
- <para>CVS Репозиторий FreeBSD состоит из нескольких разделов, охватывающих
- исходные тексты базовой операционной системы, документацию, инфраструктуру
- построения внешних приложений (портов), а также различные служебные
- утилиты. Право записи в репозиторий (<quote>коммит бит</quote>)
- подразумевает указание области дерева, в которое оно может быть применено.
- Как правило, области напрямую связаны с группой, подтвердившей право
- коммиттера на бит. В дальнейшем, область действия коммит бита
- может быть расширена; в этом случае, коммиттер должен следовать
- стандартным правилам нового для коммиттера в данной области, в частности,
- получая подтверждения на каждый коммит и, возможно, в течение какого-то
- времени работу с ментором.</para>
-
- <informaltable frame="none" pgwide="1">
- <tgroup cols="3">
- <tbody>
- <row>
- <entry><emphasis>Тип коммит бита</emphasis></entry>
- <entry><emphasis>Ответственные</emphasis></entry>
- <entry><emphasis>Области репозитория</emphasis></entry>
- </row>
-
- <row>
- <entry>src</entry>
- <entry>core@</entry>
- <entry>src/ и соответствующие части doc/</entry>
- </row>
-
- <row>
- <entry>doc</entry>
- <entry>doceng@</entry>
- <entry>doc/, www/, документация дерева src/</entry>
- </row>
-
- <row>
- <entry>ports</entry>
- <entry>portmgr@</entry>
- <entry>ports/</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Биты, выделенные до разделения дерева на области могут использоваться
- во всех частях дерева. Однако, с точки зрения здравого смысла, коммиттер,
- не имеющий опыта работы в какой-либо части дерева, должен предоставлять
- предлагаемые изменения для рассмотрения другими коммиттерами, получать
- подтверждения от ответственных за различные части репозитория, а также,
- возможно, работать совместно с ментором. Поскольку правила ведения
- различных областей кода различаются, указанные нормы скорее направлены
- на благо коммиттера, не имеющего достаточного опыта работы в данной
- области.</para>
-
- <para>Вне зависимости от области приложения усилий, запросы коммиттеров
- на рассмотрение предлагаемых изменений в процессе разработки могут
- только приветствоваться.</para>
-
- <sect2>
- <title>Правила для коммиттеров документации (<filename>doc/</filename>)
- при работе с деревом исходных текстов
- (<filename>src/</filename>)</title>
-
- <itemizedlist>
- <listitem><para>Коммиттеры документации могут самостоятельно изменять
- документацию к исходным текстам, например, страницы справочника, файлы
- README, базы данных утилиты fortune, календарей, а также исправлять
- комментарии в исходных текстах без дополнительного согласования с
- коммиттерами исходных текстов, при условии сохранения здравого смысла
- и манеры коммитов.</para></listitem>
-
- <listitem><para>Коммиттеры документации могут вносить незначительные
- изменения и исправления в исходные тексты (такие как исправления к
- процессу сборки, добавление малых дополнительных возможностей и т.п.)
- при наличии одобрения от коммиттера исходных
- текстов.</para></listitem>
-
- <listitem><para>Коммиттер документации может расширить область действия
- своего бита на область исходных текстов (и стать, таким образом,
- коммиттером исходных текстов), найдя себе ментора, который предложит
- это расширение Правлению (Core). После одобрения, строка с его именем
- пользователя вносится в файл 'access', и применяются обычные правила
- периода работы с ментором, подразумевающие получение одобрения на
- каждый коммит.</para></listitem>
-
- <listitem><para>Одобрение коммита ("Approved by") может производиться
- только "полновесным" (не работающим с ментором) коммиттером исходных
- текстов; последние могут рассматривать предлагаемые изменения и
- указываться в строке "Reviewed by".</para></listitem>
- </itemizedlist>
- </sect2>
-
- </sect1>
-
- <sect1 xml:id="cvs.operations">
- <title>Работа с CVS</title>
-
- <para>Подразумевается, что вы уже имеете опыт базовой работы с CVS.</para>
-
- <para>&a.cvsadm; являются <quote>владельцами</quote> репозитория CVS и
- ответственны за все прямые его изменения (в целях чистки или исправления
- каких-либо вопиющих ошибок коммиттеров при работе с CVS). Если в
- результате ваших действий с частью репозитория произошел несчастный
- случай, например, после неверной операции <command>cvs import</command>
- или <command>cvs tag</command>, пошлите письмо соответствующей подгруппе
- &a.cvsadm; (см. следующую таблицу) и сообщите о проблеме. В наиболее
- серьезных случаях, касающихся не только какой-либо части репозитория, а
- дерева CVS в целом, вы можете написать &a.cvsadm;. Пожалуйста,
- <emphasis>не надо</emphasis> писать группе &a.cvsadm; по поводу
- репозиторного копирования и прочих вопросов, которые может решить
- соответствующая подгруппа.</para>
-
- <para><anchor xml:id="repomeisters"/>Напрямую изменять содержимое репозитория может только группа
- CVS-мастеров; для обеспечения этого, только CVS-мастера имеют учетные
- записи на машинах, поддерживающих основной репозиторий.</para>
-
- <note><para>Адреса, на которые следует посылать запросы, зависят от области
- репозитория, которую требуется поправить:</para>
-
- <itemizedlist>
- <listitem><para>ncvs@ - репозиторий <filename>
- /home/ncvs</filename>, основные исходные тексты
- </para></listitem>
-
- <listitem><para>pcvs@ - репозиторий <filename>
- /home/pcvs</filename>, порты</para></listitem>
-
- <listitem><para>dcvs@ - репозиторий <filename>
- /home/dcvs</filename>, документация</para></listitem>
-
- <listitem><para>projcvs@ - репозиторий <filename>
- /home/projcvs</filename>, прочие проекты</para></listitem>
- </itemizedlist>
- </note>
-
- <para>Дерево CVS в настоящее время разделено на четыре независимых
- репозитория: <literal>doc</literal>, <literal>ports</literal>,
- <literal>projects</literal> и <literal>src</literal>. Для удобства
- работы пользователей при распространении через
- <application>CVSup</application> различные деревья комбинируются в
- одно, с одним служебным каталогом <literal>CVSROOT</literal>.</para>
-
- <note><para>Обратите внимание, что модуль <literal>www</literal>, содержащий
- исходные тексты
- <link xlink:href="http://www.FreeBSD.org">веб-сайта FreeBSD</link>, расположен
- в репозитории <literal>doc</literal>.</para></note>
-
- <para>В настоящее время, все репозитории CVS располагаются на одной машине,
- <systemitem class="fqdomainname">ncvs.FreeBSD.org</systemitem>, однако, для обеспечения
- возможности в будущем разнести их по физически различным машинам, для
- каждой поддерживается отдельное имя хоста. Их и следует использовать
- коммиттерам. Наконец, каждый репозиторий расположен в отдельном каталоге.
- В итоге, общая картина выглядит так:</para>
-
- <table frame="none" xml:id="cvs-repositories-and-hosts">
- <title>Репозитории CVS &os;, хосты и каталоги</title>
-
- <tgroup cols="3">
- <thead>
- <row>
- <entry>Репозиторий</entry>
- <entry>Хост</entry>
- <entry>Каталог</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry>doc</entry>
- <entry>dcvs.FreeBSD.org</entry>
- <entry>/home/dcvs</entry>
- </row>
-
- <row>
- <entry>ports</entry>
- <entry>pcvs.FreeBSD.org</entry>
- <entry>/home/pcvs</entry>
- </row>
-
- <row>
- <entry>projects</entry>
- <entry>projcvs.FreeBSD.org</entry>
- <entry>/home/projcvs</entry>
- </row>
-
- <row>
- <entry>src</entry>
- <entry>ncvs.FreeBSD.org</entry>
- <entry>/home/ncvs</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <para>Операции с CVS производятся удаленно, путем установки переменной
- окружения <envar>CVSROOT</envar> (она должна указывать на соответствующий
- хост и каталог верхнего уровня, например
- <systemitem class="fqdomainname">ncvs.FreeBSD.org</systemitem><literal>:</literal><filename>/home/ncvs</filename>)
- и последующего выполнения команд выгрузки и коммита. Многие коммиттеры
- определяют команды-синонимы, разворачивающиеся в запуск
- <application>cvs</application> с правильными параметрами. В частности,
- пользователи оболочки &man.tcsh.1; могут добавить следующие строки в
- свой скрипт начальной загрузки <filename>.cshrc</filename>:</para>
-
- <programlisting>alias dcvs cvs -d <replaceable>user</replaceable>@dcvs.FreeBSD.org:/home/dcvs
-alias pcvs cvs -d <replaceable>user</replaceable>@pcvs.FreeBSD.org:/home/pcvs
-alias projcvs cvs -d <replaceable>user</replaceable>@projcvs.FreeBSD.org:/home/projcvs
-alias scvs cvs -d <replaceable>user</replaceable>@ncvs.FreeBSD.org:/home/ncvs</programlisting>
-
- <para>Теперь все операции с CVS могут выполняться на локальной машине,
- а для внесения изменений в официальное дерево CVS следует использовать
- команду <command><replaceable>X</replaceable>cvs commit</command>.
- Если вам нужно добавить в проект что-либо совершенно новое (например,
- исходные тексты сторонних разработчиков), нужно использовать команду
- <command>cvs import</command>; обратитесь к странице справочника по
- &man.cvs.1; за подробностями.</para>
-
- <note>
- <para>Пожалуйста, <emphasis>не используйте</emphasis> команды
- <command>cvs checkout</command> или
- <command>cvs update</command> для синхронизации ваших исходных текстов.
- Протокол CVS не оптимизирован для удаленной работы и требует
- значительных накладных расходов со стороны сервера. Пожалуйста,
- используйте метод синхронизации посредством <command>cvsup</command>,
- а основной хост используйте только для собственно коммитов.
- Наша распределенная сеть серверов cvsup достаточно развита. При
- необходимости синхронизации с самыми свежими изменениями вы можете
- пользоваться машиной <systemitem>cvsup-master</systemitem>, которая обладает
- достаточными ресурсами для удаленной работы с CVS; за нее отвечает
- &a.kuriyama.email;.
- </para>
- </note>
-
- <para>Если вам нужно использовать команды CVS <command>add</command> и
- <command>delete</command>, так чтобы в реальности переместить часть
- исходных текстов подобно действию команды &man.mv.1;, нужно запросить
- операцию <quote>репозиторного копирования</quote> (repository copy).
- При этом кто-либо из <link linkend="repomeisters">CVS-мастеров</link>
- скопирует необходимые файлы внутри репозитория на нужное место и даст вам
- знать об этом. Репозиторное копирование производится для сохранения
- истории (журналов изменения). Возможность отследить историю изменений
- очень ценна для всего проекта FreeBSD.</para>
-
- <para>Документация по CVS, учебные материалы и FAQ можно найти по адресу:
- <uri xlink:href="http://www.cvshome.org/docs/">http://www.cvshome.org/docs/</uri>.
- Очень полезна также книга Карла Фогеля (Karl Fogel)
- <link xlink:href="http://cvsbook.red-bean.com/cvsbook.html">Open Source
- Development with CVS</link>.
- Некоторая полезная информация о CVS на русском языке может быть найдена
- <link xlink:href="http://alexm.here.ru/cvs-ru/">здесь</link>.</para>
-
- <para>&a.des.email; написал такой <quote>мини-пример</quote> работы с CVS:</para>
-
- <orderedlist>
- <listitem>
- <para>Извлечение нужного модуля из репозитория: команда
- <command>co</command> или <command>checkout</command>.</para>
-
- <screen>&prompt.user; <userinput>cvs checkout shazam</userinput></screen>
-
- <para>Эта команда извлечет копию модуля <filename>shazam</filename>.
- Если модуль с таким именем не существует (не описан в файле modules),
- будет произведена попытка извлечь директорию верхнего уровня
- <filename>shazam</filename>.</para>
-
- <table frame="none">
- <title>Полезные опции команды <command>cvs checkout</command></title>
-
- <tgroup cols="2">
- <tbody>
- <row>
- <entry><option>-P</option></entry>
- <entry>Не создавать (точнее, удалить после завершения
- выполнения) пустые каталоги</entry>
- </row>
-
- <row>
- <entry><option>-l</option></entry>
- <entry>Извлекать один уровень каталогов (без
- подкаталогов)</entry>
- </row>
-
- <row>
- <entry><option>-r<replaceable>rev</replaceable></option></entry>
- <entry>Извлечь ревизию, ветвь или тег
- <replaceable>rev</replaceable> для указанного модуля</entry>
- </row>
-
- <row>
- <entry><option>-D<replaceable>date</replaceable></option></entry>
- <entry>Извлечь состояние модуля в репозитории на момент
- <replaceable>date</replaceable></entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <para>Примеры в применении к FreeBSD:</para>
-
- <itemizedlist>
- <listitem>
- <para>Извлечь модуль <filename>miscfs</filename>, расположенный в
- каталоге репозитория <filename>src/sys/miscfs</filename>:</para>
-
- <screen>&prompt.user; <userinput>cvs co miscfs</userinput></screen>
-
- <para>После выполнения вы получите каталог
- <filename>miscfs</filename>, содержащий подкаталоги
- <filename>CVS</filename>, <filename>deadfs</filename>,
- <filename>devfs</filename> и т.д. Один из них
- (<filename>linprocfs</filename>) будет пустым.</para>
- </listitem>
-
- <listitem>
- <para>Извлечь те же файлы, но с полным путем:</para>
-
- <screen>&prompt.user; <userinput>cvs co src/sys/miscfs</userinput></screen>
-
- <para>Теперь у вас есть каталог <filename>src</filename>,
- содержащий подкаталоги <filename>CVS</filename> и
- <filename>sys</filename>. Каталог <filename>src/sys</filename>
- содержит подкаталоги <filename>CVS</filename> и
- <filename>miscfs</filename> и т.д.</para>
- </listitem>
-
- <listitem>
- <para>Извлечь те же файлы, удалив при этом пустые
- подкаталоги:</para>
-
- <screen>&prompt.user; <userinput>cvs co -P miscfs</userinput></screen>
-
- <para>Вы получите каталог
- <filename>miscfs</filename> с подкаталогами
- <filename>CVS</filename>, <filename>deadfs</filename>,
- <filename>devfs</filename>... однако без подкаталога
- <filename>linprocfs</filename>, поскольку он не содержит файлов.</para>
- </listitem>
-
- <listitem>
- <para>Извлечь каталог <filename>miscfs</filename> без
- подкаталогов:</para>
-
- <screen>&prompt.user; <userinput>cvs co -l miscfs</userinput></screen>
-
- <para>Теперь в каталоге <filename>miscfs</filename> будет только
- один подкаталог <filename>CVS</filename>.</para>
- </listitem>
-
- <listitem>
- <para>Извлечь модуль <filename>miscfs</filename> из ветви
- 6.X:</para>
-
- <screen>&prompt.user; <userinput>cvs co -rRELENG_6 miscfs</userinput></screen>
-
- <para>Теперь вы можете изменить исходные тексты и произвести коммит
- в эту ветвь.</para>
- </listitem>
-
- <listitem>
- <para>Извлечь модуль <filename>miscfs</filename> по состоянию на
- момент выхода 6.0-RELEASE:</para>
-
- <screen>&prompt.user; <userinput>cvs co -rRELENG_6_0_0_RELEASE miscfs</userinput></screen>
-
- <para>В этом случае вы не сможете внести изменения в репозиторий,
- поскольку <literal>RELENG_6_0_0_RELEASE</literal> описывает
- момент времени, а не ветвь разработки.</para>
- </listitem>
-
- <listitem>
- <para>Извлечь модуль <filename>miscfs</filename> по состоянию на
- 15 января 2000 г:</para>
-
- <screen>&prompt.user; <userinput>cvs co -D'01/15/2000' miscfs</userinput></screen>
-
- <para>Как и в предыдущем случае, изменения не могут быть
- записаны.</para>
- </listitem>
-
- <listitem>
- <para>Извлечь модуль <filename>miscfs</filename>, каким он был
- неделю назад:</para>
-
- <screen>&prompt.user; <userinput>cvs co -D'last week' miscfs</userinput></screen>
-
- <para>И вновь, изменения не могут быть записаны.</para>
- </listitem>
- </itemizedlist>
-
- <para>Обратите внимание, что мета-данные хранятся в подкаталогах
- <filename>CVS</filename>.</para>
-
- <para>Аргументы опций <option>-D</option> and <option>-r</option>
- сохраняются (являются <quote>клейкими</quote>, sticky), например,
- при последующем использовании команды
- <command>cvs update</command>.</para>
- </listitem>
-
- <listitem>
- <para>Проверка состояния извлеченных файлов: команда
- <command>status</command>.</para>
-
- <screen>&prompt.user; <userinput>cvs status shazam</userinput></screen>
-
- <para>Эта команда покажет статус файла <filename>shazam</filename>
- или каждого файла в директории <filename>shazam</filename>.
- Для каждого из файлов статус может быть одним из:</para>
-
- <informaltable frame="none" pgwide="1">
- <tgroup cols="2">
- <tbody>
- <row>
- <entry>Up-to-date</entry>
- <entry>Файл соответствует репозиторию и не
- модифицировался</entry>
- </row>
-
- <row>
- <entry>Needs Patch</entry>
- <entry>Файл не изменялся, но репозиторий содержит обновленную
- версию</entry>
- </row>
-
- <row>
- <entry>Locally Modified</entry>
- <entry>Файл соответствует репозиторию, но был изменен
- локально</entry>
- </row>
-
- <row>
- <entry>Needs Merge</entry>
- <entry>Файл изменен локально; вместе с тем, файл изменен и в
- репозитории</entry>
- </row>
-
- <row>
- <entry>File had conflicts on merge</entry>
- <entry>После последнего обновления возникли конфликты, и они
- все еще не устранены</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Кроме того, будут показаны локальная версия и дата модификации,
- версия и дата последней из доступных (если вы применяли
- <quote>клейкие</quote> дату, тег или ветвь, последняя доступная версия
- может отличаться от вашей), а также клейкие теги, временные метки
- и опции.</para>
- </listitem>
-
- <listitem>
- <para>Обновление извлеченного модуля: команда
- <command>update</command>.</para>
-
- <screen>&prompt.user; <userinput>cvs update shazam</userinput></screen>
-
- <para>Эта команда обновит состояние файла <filename>shazam</filename>
- или файлов в каталоге <filename>shazam</filename> до наиболее
- свежих версий выбранной вами при извлечении ветви. Если выбирался
- <quote>момент времени</quote>, не произойдет ничего, если только
- за истекшее время в репозитории не был перемещен тег или не
- произошло чего-нибудь еще непредвиденного.</para>
-
- <para>Полезные опции в дополнение к уже описанным для команды
- <command>checkout</command>:</para>
-
- <informaltable frame="none" pgwide="1">
- <tgroup cols="2">
- <tbody>
- <row>
- <entry><option>-d</option></entry>
- <entry>Извлечь вновь появившиеся или пропущенные ранее
- подкаталоги</entry>
- </row>
-
- <row>
- <entry><option>-A</option></entry>
- <entry>Обновиться до текущего состояния головной ветви</entry>
- </row>
-
- <row>
- <entry><option>-j<replaceable>rev</replaceable></option></entry>
- <entry>магическая опция (см. ниже)</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Если вы извлекали модуль с опциями <option>-r</option> или
- <option>-D</option>, выполнение команды <command>cvs update</command>
- с другими параметрами <option>-r</option> или <option>-D</option>
- или с опцией <option>-A</option> приведет к выбору новой ветви,
- ревизии или даты. Использование опции <option>-A</option>
- удаляет использованные ранее клейкие свойства; опции
- <option>-r</option> и <option>-D</option>, наоборот, фиксируют
- их.</para>
-
- <para>Теоретически использование <literal>HEAD</literal> в качестве
- аргумента опции <option>-r</option> должно дать тот же результат, что
- и указание опции <option>-A</option>, однако это верно лишь
- в теории.</para>
-
- <para>Опция <option>-d</option> полезна, если:</para>
- <itemizedlist>
- <listitem>
- <para>после извлечения вами модуля кем-либо еще в него были
- добавлены дополнительные каталоги;</para>
- </listitem>
-
- <listitem>
- <para>вы извлекали верхний уровень модуля при помощи опции
- <option>-l</option>, а в дальнейшем решили извлечь и
- подкаталоги;</para>
- </listitem>
-
- <listitem>
- <para>вы удалили какие-либо подкаталоги и теперь хотите
- вновь извлечь их.</para>
- </listitem>
- </itemizedlist>
-
- <para><emphasis>Обращайте внимание на вывод команды <command>cvs
- update</command>.</emphasis> Действие, произведенное с файлом,
- обозначается буквой перед его именем:</para>
-
- <informaltable frame="none" pgwide="1">
- <tgroup cols="2">
- <tbody>
- <row>
- <entry><literal>U</literal></entry>
- <entry>Файл был успешно обновлен.</entry>
- </row>
-
- <row>
- <entry><literal>P</literal></entry>
- <entry>Файл был успешно обновлен (произведен успешный патч
- из удаленного репозитория).</entry>
- </row>
-
- <row>
- <entry><literal>M</literal></entry>
- <entry>Файл был изменен, и при этом обновлен успешно.</entry>
- </row>
-
- <row>
- <entry><literal>C</literal></entry>
- <entry>Файл был изменен, и при объединении изменений возникли
- конфликты.</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Объединение (merging) производится, если вы выгрузили рабочую
- копию какого-то модуля, изменили его, затем кто-либо еще произвел
- коммит собственных изменений, и, наконец, вы выполняете команду
- <command>cvs update</command>. CVS знает, что производились локальные
- изменения, и пытается объединить ваши изменения с теми, что произошли
- в репозитории (от состоянии версии, которую вы выгружали, до версии,
- до которой вы пытаетесь обновиться). Если изменения происходили с
- различными частями файла, объединение почти всегда произойдет успешно
- (хотя результат при этом может не быть синтаксически или семантически
- корректным).</para>
-
- <para>CVS выводит букву <literal>M</literal> перед именем всех локально
- измененных файлов, даже если у них нет новых версий в репозитории,
- так что команда <command>cvs update</command> удобна для быстрого
- получения списка файлов, которые вы изменяли.</para>
-
- <para>Если в результате вы видите букву <literal>C</literal>, ваши
- изменения конфликтуют с изменениями, внесенными в репозиторий
- (изменения были в одних и тех же или рядом расположенных строках,
- либо вы изменили файл настолько, что при сравнении
- <command>cvs</command> не смогла удержать контекст и приложить
- изменения из репозитория). Вам необходимо устранить конфликты,
- вручную редактируя файл. Конфликтующие фрагменты помечаются
- строками из знаков <literal>&lt;</literal>, <literal>=</literal> и
- <literal>&gt;</literal>. В начале каждого из конфликтов присутствует
- строка из семи знаков <literal>&lt;</literal> и имени файла, затем
- идет фрагмент, содержащий внесенные вами изменения, разделитель
- из семи знаков <literal>=</literal>, соответствующий фрагмент из
- версии файла, содержащейся в репозитории, и, наконец, строка из семи
- знаков <literal>&gt;</literal> совместно с номером версии, до которой
- вы обновляли файл.</para>
-
- <para>Опция <option>-j</option> содержит некоторое количество черной
- магии. При ее наличии локальный файл обновляется до указанной версии
- так же, как и при использовании опции <option>-r</option>, но
- отслеживаемые номер версии или ветвь не изменяются. Эта опция умеет
- смысл лишь при парном использовании: при этом делается попытка
- применить изменения между двумя указанными версиями к локальной
- копии файла.</para>
-
- <para>К примеру, вы внесли изменения и произвели коммит в файл
- <filename>shazam/shazam.c</filename> в &os.current;, а позднее
- хотите перенести обновления в &os.stable; (Merge-From-Current, MFC).
- Версия, которая требует переноса&nbsp;&mdash; 1.15:</para>
-
- <itemizedlist>
- <listitem>
- <para>Извлеките текущую версию модуля <filename>shazam</filename>
- для ветви &os.stable;:</para>
-
- <screen>&prompt.user; <userinput>cvs co -rRELENG_6 shazam</userinput></screen>
- </listitem>
-
- <listitem>
- <para>Приложите изменения между версиями 1.14 и 1.15:</para>
-
- <screen>&prompt.user; <userinput>cvs update -j1.14 -j1.15 shazam/shazam.c</userinput></screen>
- </listitem>
- </itemizedlist>
-
- <para>Почти наверняка вы получите конфликт в строках, содержащих
- идентификатор файла (<literal>$Id: article.xml,v 1.19 2007-05-09 06:08:50 bvs Exp $</literal> или, в случае FreeBSD,
- <literal>$FreeBSD$</literal>).
- Вам потребуется отредактировать файл для устранения конфликта
- (в данном случае достаточно убрать строки-разделители и вторую строку
- <literal>$Id: article.xml,v 1.19 2007-05-09 06:08:50 bvs Exp $</literal>, оставив лишь строку с <literal>$Id: article.xml,v 1.19 2007-05-09 06:08:50 bvs Exp $</literal>
- для &os.stable;).</para>
- </listitem>
-
- <listitem>
- <para>Просмотр изменение между локальной версией и версией из
- репозитория: команда <command>diff</command>.</para>
-
- <screen>&prompt.user; <userinput>cvs diff shazam</userinput></screen>
-
- <para>Эта команда покажет все отличия локального состояния файла (или
- файлов модуля) <filename>shazam</filename> от состояния, сохраненного
- в репозитории.</para>
-
- <table frame="none">
- <title>Полезные опции команды <command>cvs diff</command></title>
-
- <tgroup cols="2">
- <tbody>
- <row>
- <entry><option>-u</option></entry>
- <entry>Использовать унифицированный (unified) формат.</entry>
- </row>
-
- <row>
- <entry><option>-c</option></entry>
- <entry>Использовать контекстный (context) формат.</entry>
- </row>
-
- <row>
- <entry><option>-N</option></entry>
- <entry>Показывать отсутствующие или созданные файлы.</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <para>Всегда имеет смысл пользоваться опцией <option>-u</option>,
- поскольку унифицированный формат гораздо удобнее и лучше читаем,
- чем почти все другие (в некоторых случаях контекстный формат,
- генерируемый опцией <option>-c</option> может быть несколько лучше,
- но он гораздо более громоздок). Унифицированный формат различий
- состоит из серии фрагментов, каждый из которых начинается со строки,
- состоящей из двух символов <literal>@</literal> и номеров строк,
- описывающих положение изменившегося участка. Затем следует группа
- строк: те, что начинаются с пробела, описывают контекст, начинающиеся
- с символа <literal>-</literal> определяют удаленные строки, наконец,
- начинающиеся с символа <literal>+</literal>&nbsp;&mdash;
- добавленные.</para>
-
- <para>Вы можете сравнивать текущее состояние с версией, отличающейся
- от той, с которой вы извлекали файл, указав опцию <option>-r</option>
- или <option>-D</option> подобно командам <command>checkout</command>
- и <command>update</command>, или даже получить список изменений между
- любыми двумя версиями (вне зависимости от того, что лежит в вашей
- локальной копии), указав <emphasis>две</emphasis> версии при помощи
- опций <option>-r</option> или <option>-D</option>.</para>
- </listitem>
-
- <listitem>
- <para>Просмотр журнала изменений: команда <command>log</command>.</para>
-
- <screen>&prompt.user; <userinput>cvs log shazam</userinput></screen>
-
- <para>Если <filename>shazam</filename> является обычным файлом, эта
- команда выдаст на экран <emphasis>заголовок</emphasis> с информацией
- о файле, в частности, его местоположении в репозитории, какая версия
- соответствует текущему состоянию (<literal>HEAD</literal>), в каких
- ветвях разработки файл присутствует, а также перечислит теги, которыми
- он помечен. Затем, для каждой версии файла выводится соответствующее
- ей журнальное сообщение, включающее дату, время и автора коммита,
- количество добавленных и удаленных строк и собственно журнального
- сообщения, написанного коммиттером.</para>
-
- <para>Если <filename>shazam</filename> является каталогом, вышеописанная
- процедура выполняется для каждого файла в каталоге. Если при этом
- команде <command>log</command> не был указан флаг <option>-l</option>,
- процедура рекурсивно повторяется для всех подкаталогов.</para>
-
- <para>Команда <command>log</command> используется для просмотра истории
- одного или нескольких файлов в том виде, как она сохранена в
- репозитории CVS. Используя опцию
- <option>-r<replaceable>rev</replaceable></option>, вы можете
- посмотреть журнальное сообщение к одной определенной версии:</para>
-
- <screen>&prompt.user; <userinput>cvs log -r1.2 shazam</userinput></screen>
-
- <para>Эта команда покажет журнальное сообщение для версии
- <literal>1.2</literal> файла <filename>shazam</filename> (или для
- версий <literal>1.2</literal> каждого из файлов в каталоге
- <filename>shazam</filename>).</para>
- </listitem>
-
- <listitem>
- <para>Кто что делал: команда <command>annotate</command>.
- Эта команда показывает перед каждой строкой указанного файла (файлов)
- имя пользователя, вносившего последние изменения в эту строку.</para>
-
- <screen>&prompt.user; <userinput>cvs annotate shazam</userinput></screen>
- </listitem>
-
- <listitem>
- <para>Добавление новых файлов: команда <command>add</command>.</para>
-
- <para>Создайте файл, выполните для него команду
- <command>cvs add</command>, затем произведите запись в репозиторий
- (коммит): <command>cvs commit</command>.</para>
-
- <para>Точно так же, новые каталоги добавляются в репозиторий путем
- создания и последующего выполнения команды <command>cvs add</command>.
- Заметьте, что выполнять коммит после добавления каталога не
- надо.</para>
- </listitem>
-
- <listitem>
- <para>Удаление устаревших файлов: команда
- <command>remove</command>.</para>
-
- <para>Удалите файл, затем выполните команду <command>cvs rm</command>
- с его именем в качестве параметра, наконец, выполните для него
- <command>cvs commit</command>.</para>
- </listitem>
-
- <listitem>
- <para>Внесение изменений в репозиторий: команда
- <command>commit</command> или <command>checkin</command>.</para>
-
- <table frame="none">
- <title>Useful <command>cvs commit</command> options</title>
-
- <tgroup cols="2">
- <tbody>
- <row>
- <entry><option>-f</option></entry>
- <entry>Форсировать внесение изменений для не модифицированного
- файла.</entry>
- </row>
-
- <row>
- <entry><option>-m<replaceable>msg</replaceable></option></entry>
- <entry>Указать сообщение для журнала в командной строке (не
- запускать текстовый редактор).</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <para>Опцию <option>-f</option> следует использовать, если вы поняли,
- что забыли указать какую-либо важную информацию в журнале
- изменений.</para>
-
- <para>Хорошие журнальные сообщения очень важны. Они дают возможность
- другим узнать, зачем вы производили изменения, причем не только в
- момент их произведения, но и месяцы или годы спустя, когда кто-либо
- заинтересуется, почему выглядящий нелогично или неэффективно фрагмент
- кода попал в каши исходные тексты. Кроме того, это очень помогает
- в оценке того, нужно ли переносить соответствующий код в &os.stable;
- (MFC).</para>
-
- <para>Сообщения должны быть ясными, краткими, четкими, и представлять
- из себя разумную аннотацию, какие изменения были произведены и
- почему.</para>
-
- <para>Сообщения должны достаточно ясно показывать сторонним
- разработчикам, насколько их касаются изменения и нужно ли
- им исследовать изменения подробно.</para>
-
- <para>Избегайте внесения нескольких не связанных друг с другом
- изменений за один раз. Это затрудняет объединение изменений,
- а также, при обнаружении ошибок, усложняет поиск ответственного
- за ошибки участка.</para>
-
- <para>Избегайте смешивания в одном коммите изменений функциональности
- со стилистическими правками или исправлениями в пробелах.
- Это усложняет объединение, и, кроме того, затрудняет понимание того,
- какие именно функциональные изменения были внесены. В случае коммита
- в файлы документации, это затруднит работу групп поддержки перевода,
- поскольку становится сложнее отделить изменения, требующие
- перевода.</para>
-
- <para>Избегайте коммита большой группы файлов за один раз с одним
- общим и невнятным сообщением. Напротив, вносите изменения в отдельные
- файлы (или небольшие группы связанных файлов) с адекватными
- сообщениями для журналирования.</para>
-
- <para>Перед коммитом, <emphasis>обязательно</emphasis>:</para>
-
- <itemizedlist>
- <listitem>
- <para>проверьте, что вы будете выполнять коммит в правильную ветвь,
- посредством команды <command>cvs status</command>.</para>
- </listitem>
-
- <listitem>
- <para>проверьте ваши изменения при помощи команды
- <command>cvs diff</command></para>
- </listitem>
- </itemizedlist>
-
- <para>Кроме того, ВСЕГДА указывайте, в какие именно файлы вы вносите
- изменения, так чтобы не включить в этот список лишних файлов.
- Команда <command>cvs commit</command> без аргументов включит
- все измененные файлы в текущем каталоге и всех подкаталогах.
- </para>
- </listitem>
- </orderedlist>
-
- <para>Еще несколько полезных советов:</para>
-
- <orderedlist>
- <listitem>
-
- <para>Часто используемые опции можно занести в файл
- <filename>~/.cvsrc</filename>, например:</para>
-
- <programlisting>cvs -z3
-diff -Nu
-update -Pd
-checkout -P</programlisting>
-
- <para>Для данного случая:</para>
-
- <itemizedlist>
- <listitem>
- <para>всегда использовать компрессию уровня 3 для связи с удаленным
- сервером CVS. В случае медленного соединения это избавит вас от
- лишней головной боли.</para>
- </listitem>
-
- <listitem>
- <para>всегда использовать опции <option>-N</option> (показывать
- добавленные или удаленные файлы) и <option>-u</option>
- (унифицированный формат) для &man.diff.1;.</para>
- </listitem>
-
- <listitem>
- <para>всегда использовать опции <option>-P</option> (удалять пустые
- каталоги) и <option>-d</option> (добавлять новые каталоги)
- при обновлении.</para>
- </listitem>
-
- <listitem>
- <para>всегда использовать опцию <option>-P</option> (удалять пустые
- каталоги) при извлечении файлов и модулей.</para>
- </listitem>
- </itemizedlist>
- </listitem>
-
- <listitem>
- <para>Пользуйтесь скриптом Эйвинда Эклунда (Eivind Eklund)
- <command>cdiff</command> для просмотра изменению унифицированного
- формата. Он является оберткой для &man.less.1;, добавляющей
- цветовые коды ANSI для выделения заголовком, добавленных и удаленных
- строк; прочие строки не модифицируются. Помимо этого, скрипт
- корректно разворачивает табуляции (которые часто выглядят неправильно
- в изменениях из-за дополнительного символа в начале строки).</para>
-
- <para><package>textproc/cdiff</package></para>
-
- <para>Просто используйте его вместо &man.more.1; или &man.less.1;:</para>
-
- <screen>&prompt.user; <userinput>cvs diff -Nu shazam | cdiff</userinput></screen>
-
- <para>Помимо этого, некоторые текстовые редакторы, такие как &man.vim.1;
- (<package>editors/vim</package>) поддерживают
- цветовую синтаксическую разметку многих типов файлов, в том числе
- файлов изменений и журналов CVS/RCS.</para>
-
- <screen>&prompt.user; <userinput>echo "syn on" &gt;&gt; ~/.vimrc </userinput>
-&prompt.user; <userinput>cvs diff -Nu shazam | vim -</userinput>
-&prompt.user; <userinput>cvs log shazam | vim -</userinput> </screen>
- </listitem>
-
- <listitem>
- <para>CVS&nbsp;&mdash; старая, загадочная и порой слабо предсказуемая
- в своем поведении программа. <!-- XXX
- exhibits non-deterministic behavior which some claim as proof
- that it is actually merely the Newtonian manifestation of a
- sentient transdimensional entity. -->
- Ни один человек не способен удержать в голове все тонкости ее работы,
- так что не бойтесь спрашивать совета у Искусственного Интеллекта
- (а именно &a.cvsadm;).</para>
- </listitem>
-
- <listitem>
- <para>Не оставляйте компьютер в процессе работы команды
- <command>cvs commit</command> (в редакторе при написании журнального
- сообщения) слишком надолго (более чем на 2&ndash;3 минуты). Эта
- команда блокирует каталог репозитория, в котором она запущена, и не
- позволяет другим разработчикам изменять его содержимое. Если вам
- нужно написать длинное журнальное сообщение, подготовьте его заранее
- и вставьте в редакторе во время выполнения команды
- <command>cvs commit</command>, либо запишите его в файл и используйте
- опцию CVS <option>-F</option>:</para>
-
- <screen>&prompt.user; <userinput>vi logmsg</userinput>
-&prompt.user; <userinput>cvs ci -F logmsg shazam</userinput></screen>
-
- <para>Это самый быстрый способ передать журнальное сообщение CVS;
- однако, вы должны быть внимательны при редактировании файла
- <filename>logmsg</filename>, поскольку при выполнении коммита
- у вас не будет шансов его поправить.</para>
- </listitem>
-
- <listitem>
- <para>Вы можете существенно ускорить скорость работы CVS с центральным
- репозиторием, используя постоянное соединение с репозиторием.
- Для этого добавьте в файл <filename>~/.ssh/config</filename> строки
- </para>
-
- <programlisting>Host ncvs.FreeBSD.org
- ControlPath /home/<replaceable>user</replaceable>/.ssh/cvs.cpath
-Host dcvs.FreeBSD.org
- ControlPath /home/<replaceable>user</replaceable>/.ssh/cvs.cpath
-Host projcvs.FreeBSD.org
- ControlPath /home/<replaceable>user</replaceable>/.ssh/cvs.cpath
-Host pcvs.FreeBSD.org
- ControlPath /home/<replaceable>user</replaceable>/.ssh/cvs.cpath</programlisting>
-
- <para>Затем откройте постоянное соединение с машиной repoman:</para>
-
- <screen>&prompt.user; <userinput>ssh -fNM ncvs.FreeBSD.org</userinput></screen>
-
- <para>Теперь команды CVS должны выполняться быстрее, поскольку
- используют существующее соединение с репозиторием. Учтите, что
- регистр в именах хостов имеет значение.</para>
-
- </listitem>
-
- </orderedlist>
-
- </sect1>
-
- <sect1 xml:id="conventions">
- <title>Соглашения и традиции</title>
-
- <para>Став коммиттером, вы должны прежде всего произвести некоторые
- стандартные действия.</para>
-
- <itemizedlist>
- <listitem>
- <para>Добавьте себя в список <quote>SGML сущностей</quote> авторов
- в файл
- <filename>doc/en_US.ISO8859-1/share/xml/authors.ent</filename>;
- это изменение должно быть сделано прежде прочих, поскольку в
- противном случае следующий ваш коммит неизбежно разрушит
- процесс построения дерева doc/.</para>
-
- <para>Это довольно простая задача, но при этом она является неплохим
- первым тестом ваших навыков работы с CVS.</para>
- </listitem>
-
- <listitem>
- <para>Также добавьте свою <quote>SGML сущность</quote> в
- <filename>www/en/developers.xml</filename>.</para>
- </listitem>
-
- <listitem>
- <para>Добавьте себя в раздел <quote>Разработчики</quote> статьи
- <link xlink:href="&url.articles.contributors;/index.html">Участники проекта
- FreeBSD</link>
- (<filename>doc/en_US.ISO8859-1/articles/contributors/contrib.committers.xml</filename>)
- и удалите свою запись из раздела <quote>Прочие участники</quote>
- (<filename>doc/en_US.ISO8859-1/articles/contributors/contrib.additional.xml</filename>).</para>
- </listitem>
-
- <listitem>
- <para>Добавьте новость о новом коммиттере в файл
- <filename>www/share/xml/news.xml</filename>. Используйте существующие
- записи вида <quote>Новый коммиттер</quote> как шаблон.</para>
- </listitem>
-
- <listitem>
- <para>Вам нужно добавить ваш PGP или GnuPG ключ в каталог
- <filename>doc/share/pgpkeys</filename> (а если у вас нет ключа,
- вам нужно его создать). Не забудьте изменить и произвести коммит
- в файл <filename>doc/share/pgpkeys/pgpkeys.ent</filename>.</para>
-
- <para>&a.des.email; написал скрипт для упрощения этого процесса.
- Дополнительную информацию можно прочесть в файле <link xlink:href="http://cvsweb.FreeBSD.org/doc/share/pgpkeys/README">README</link>.</para>
-
- <note>
- <para>Очень важно, чтобы в Руководстве пользователя был записан
- актуальный PGP/GnuPG ключ, поскольку он может потребоваться
- для идентификации коммиттера (например, его будет проверять группа
- &a.admins; для аварийного восстановления учетной записи). Полный
- набор актуальных ключей пользователей домена <systemitem class="fqdomainname">FreeBSD.org</systemitem> можно найти по адресу <link xlink:href="&url.base;/doc/pgpkeyring.txt">http://www.FreeBSD.org/doc/pgpkeyring.txt</link>.</para>
- </note>
- </listitem>
-
- <listitem>
- <para>Добавьте себя в файл <filename>src/share/misc/committers-<replaceable>репозиторий</replaceable>.dot</filename>,
- где репозиторием будет являться либо doc, либо ports, либо src в зависимости от полученных вами коммиттерских
- привилегий.</para>
- </listitem>
-
- <listitem>
- <para>Некоторые коммиттеры добавляют информацию о своем местоположении
- в файл
- <filename>ports/astro/xearth/files/freebsd.committers.markers</filename>.</para>
- </listitem>
-
- <listitem>
- <para>Некоторые добавляют данные о дне своего рождения в файл
- <filename>src/usr.bin/calendar/calendars/calendar.freebsd</filename>.</para>
- </listitem>
-
- <listitem>
- <para>Представьтесь другим коммиттерам, иначе никто не будет знать,
- кто вы и чем занимаетесь. От вас не требуется писать подробное
- резюме или биографию: будут достаточны один-два абзаца о себе и
- областях FreeBSD, в которых вы планируете работать. Пошлите это
- письмо в &a.developers;&nbsp;&mdash; и все!</para>
- </listitem>
-
- <listitem>
- <para>Зайдите на машину <systemitem>hub.FreeBSD.org</systemitem> и создайте
- файл <filename>/var/forward/<replaceable>user</replaceable></filename>
- (замените <replaceable>user</replaceable> на ваше имя пользователя).
- Этот файл должен содержать адрес электронной почты, на который
- будет переправляться вся почта на адрес
- <replaceable>yourusername</replaceable>@FreeBSD.org, в том числе
- сообщения о коммитах и другая почта на адреса &a.committers; и
- &a.developers;. Слишком большие почтовые ящики на машине
- <systemitem>hub</systemitem> могут быть <quote>нечаянно</quote> удалены
- или обрезаны без предупреждения, так что, чтобы не потерять почту,
- регулярно читайте ее либо перенаправьте куда-нибудь еще.</para>
-
- <para>Из-за ощутимой загрузки, возникающей на серверах, обрабатывающих
- списки рассылки, из-за большого количества незапрошенной почты
- (спама), сервер, принимающий почту для домена FreeBSD.org,
- производит некоторые основные проверки и на основании их отвергает
- некоторые письма. На настоящий момент единственным проверяемым
- параметром является корректность информации DNS для хоста,
- доставляющего почту, но в будущем список может вырасти. Эти
- проверки временами обвиняют в том, что они отвергают правильную
- почту. Если вы хотите отключить проверки для своего адреса,
- создайте файл <filename>~/.spam_lover</filename> в своей
- домашней директории на машине
- <systemitem class="fqdomainname">freefall.FreeBSD.org</systemitem>.</para>
- </listitem>
-
- <listitem>
- <para>Если вы были подписаны на &a.cvsall;, вам, скорее всего,
- следует отписаться от него, чтобы не получать дубликатов
- каждого сообщения о коммитах.</para>
- </listitem>
- </itemizedlist>
-
- <para>Все новые коммиттеры первоначально работают под руководством
- ментора. Ваш ментор отвечает за обучение вас правилам и соглашениям,
- принятым в проекте, и помогает вам сделать первые шаги в среде
- коммиттеров. Он(а) также персонально отвечает за ваши действия
- в этот начальный период. До тех пор, пока ваш ментор не решит
- (и не анонсирует это посредством форсированного коммита файла
- <filename>access</filename>), что вы достаточно освоились и готовы
- работать самостоятельно, перед любым коммитом вы должны получить
- одобрение (approval) ментора и указать это в журнальном сообщении
- коммита строкой <literal>Approved by:</literal>.</para>
-
- <para>Все коммиты в дерево <filename>src</filename> сначала должны
- производиться в ветвь &os.current; и лишь затем интегрироваться
- в &os.stable;. Никакие серьезные изменения, новые возможности
- или рискованные модификации не должны производиться напрямую
- в ветви &os.stable;.</para>
- </sect1>
-
- <sect1 xml:id="pref-license">
- <title>Предпочтительная лицензия для новых файлов</title>
-
- <para>В настоящее время Проект &os; считает предпочтительной формой
- лицензии на исходные тексты следующий текст:</para>
-
-<programlisting>/*-
-* Copyright (c) [year] [your name]
-* All rights reserved.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions
-* are met:
-* 1. Redistributions of source code must retain the above copyright
-* notice, this list of conditions and the following disclaimer.
-* 2. Redistributions in binary form must reproduce the above copyright
-* notice, this list of conditions and the following disclaimer in the
-* documentation and/or other materials provided with the distribution.
-*
-* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-* SUCH DAMAGE.
-*
-* [id for your version control system, if any]
-*/</programlisting>
-
-<!-- XXX дать перевод *вместе* с оригинальным английским текстом -->
-
- <para>Проект &os; крайне не рекомендует так называемый <quote>третий
- пункт</quote>, или <quote>пункт о рекламе</quote> в лицензии на новый
- исходный код. В связи с большим количеством участников проекта &os;,
- выполнение этого пункта большинством коммерческих производителей все
- более затруднительно. Если ваш код в дереве исходников содержит
- <quote>пункт о рекламе</quote>, рассмотрите возможность его удаления.
- На самом деле, рассмотрите возможность перехода на приведенную
- лицензию.</para>
-
- <para>Проект &os; не рекомендует использование полностью новых лицензий
- или вариаций стандартных лицензий. Новые лицензии перед использованием
- в репозитории проекта требуют утверждения группой
- <email>core@FreeBSD.org</email>. Большое число различных лицензий
- затрудняет использование кода, в основном из-за ненамеренных
- неверных выводов из плохо сформулированных формулировок лицензии.</para>
-
- <para>Политика проекта требует, чтобы код под НЕ-BSD лицензиями располaгался
- только в определённых местах репозитория, а в некоторых случаях компиляция
- должна быть условной по умолчанию или вообще отключена. К примеру, ядро
- GENERIC должно состоять только из лицензий идентичных или в значительной степени
- схожих с BSD лицензией. Программное обеспечение под лицензиями GPL, APSL, CDDL
- и др. не должно включаться в состав GENERIC.</para>
-
- <para>Разработчикам напоминается, что в open source правильное понимание "open"
- также важно, как правильное понимание "source", ибо некорректное использование
- интеллектуальной собственности имеет серьезные последствия. Какие-либо вопросы
- или беспокойства на этот счёт должны быть немедленно вынесены на обсуждение
- главной команде разработчиков (core team).</para>
-
- </sect1>
-
- <sect1 xml:id="developer.relations">
- <title>Взаимодействие между разработчиками</title>
-
- <para>Если вы работаете над собственным исходным кодом, либо в области,
- в которой вы уже определены как ответственная персона, вам, скорее всего,
- не потребуется согласовывать коммит с кем-либо еще из разработчиков.
- Те же правила действуют, если вы нашли ошибку в той части системы,
- которой явно давно никто не занимается (к нашему стыду, существует
- несколько таких областей). Если же вы собираетесь модифицировать
- что-либо активно поддерживаемое (по-хорошему, узнать это можно только
- исследуя архивы списка рассылки <literal>cvs-committers</literal>),
- стоит послать предполагаемый патч ответственному за этот участок кода,
- как вы бы поступали, пока не были коммиттером. В случае портов нужно
- обращаться по адресу, указанному в строке <varname>MAINTAINER</varname>
- в файле <filename>Makefile</filename>. Для других частей репозитория,
- в случае если вам не очевидно, кто ведет данный участок кода, может
- помочь исследование вывода команды <command>cvs log</command>.
- &a.fenner.email; написал отличный скрипт для определения разработчиков,
- наиболее активно производивших коммиты, выводящий для каждого из
- указанных файлов имя пользователя вместе с количеством произведенных
- им коммитов в данный файл. Скрипт можно найти на машине
- <systemitem>freefall</systemitem> в файле <filename>~fenner/bin/whodid</filename>.
- Если найденная вами персона не отвечает на ваши вопросы или иным образом
- демонстрирует отсутствие интереса к проблеме, смело производите коммит
- самостоятельно.</para>
-
- <para>Если вы по каким-либо причинам не уверены в своих изменениях,
- предложите их для оценки в списке рассылки <literal>-hackers</literal>
- перед коммитом. Будет лучше, если вас обругают там и тогда, чем
- когда предлагаемое изменение уже будет частью репозитория. Если
- случилось так, что ваш коммит встретил сопротивление, возможно,
- стоит его откатить (back out) до тех пор, пока не будет достигнут
- консенсус. Помните&nbsp;&mdash; с помощью CVS всегда можно вернуться
- к предыдущему состоянию.</para>
-
- <para>Не принимайте в штыки мнения других разработчиков, с которыми вы не
- согласны. Если они предлагают иное решение проблемы чем вы, или даже
- иначе воспринимают проблему, это не значит, что они глупы, имеют
- сомнительное происхождение, хотят разрушить вашу работу, очернить
- ваше доброе имя, или развалить проект FreeBSD. Просто они смотрят на
- мир под иным углом. Различные взгляды&nbsp;&mdash; благо.</para>
-
- <para>Будьте честны в спорах. Оценивайте свою позицию по заслугам, честно
- относитесь к ее слабым сторонам и будьте готовы принять другие точки
- зрения и пути решения. Будьте открыты.</para>
-
- <para>Будьте терпимы, если вас поправляют. Все мы совершаем ошибки.
- Если вы ошиблись, извинитесь. Не обвиняйте ни себя, ни, тем более,
- других в ошибке. Не теряйте времени на смущение или упреки, просто
- исправьте ошибку и двигайтесь дальше.</para>
-
- <para>Спрашивайте и просите о помощи. Предлагайте ваши изменения для
- рассмотрения коллегам и рассматривайте их изменения. Одним из
- преимуществ программного обеспечения с открытыми исходными текстами
- является открытость разработки. Если никто не будет исследовать
- чужой код, это преимущество исчезнет.</para>
-
- </sect1>
-
- <sect1 xml:id="gnats">
- <title>GNATS</title>
-
- <para>Для отслеживания ошибок и запросов на изменения проект FreeBSD
- использует <application>GNATS</application>. Если вы исправили ошибку
- или внесли изменения, описанные в одном из сообщений об ошибках (PR),
- не забудьте закрыть это сообщение, используя команду
- <command>edit-pr <replaceable>pr-number</replaceable></command> на машине
- <systemitem>freefall</systemitem>. Хорошо будет, если вы потратите немного
- времени на поиск и закрытие других PR по этой теме. Вы и сами можете
- пользоваться &man.send-pr.1; для предложения изменений, которые, по
- вашему мнению, могут потребовать более подробного обсуждения с
- коллегами.</para>
-
- <para>Более подробно о <application>GNATS</application> можно прочитать
- по адресам:</para>
-
- <itemizedlist>
- <listitem>
- <para><uri xlink:href="http://www.cs.utah.edu/csinfo/texinfo/gnats/gnats.html">http://www.cs.utah.edu/csinfo/texinfo/gnats/gnats.html</uri></para>
- </listitem>
-
- <listitem>
- <para><link xlink:href="&url.base;/support.html">http://www.FreeBSD.org/support.html</link></para>
- </listitem>
-
- <listitem>
- <para>&man.send-pr.1;</para>
- </listitem>
- </itemizedlist>
-
- <para>Вы можете пользоваться локальной копией GNATS, поддерживая ее
- синхронность при помощи CVSup. При этом вы можете использовать
- команды GNATS локально, а также пользоваться другими интерфейсами,
- такими как <command>tkgnats</command>, что позволит вам работать с
- базой сообщений об ошибках без соединения с Интернет.</para>
-
- <procedure>
- <title>Использование локальной копии GNATS</title>
-
- <step>
- <para>Если вы еще не поддерживаете зеркало дерева GNATS, добавьте в ваш
- <filename>supfile</filename> строку</para>
-
- <programlisting>gnats release=current prefix=/usr</programlisting>
-
- <para>Учтите, что эта строка должна предшествовать любым строкам,
- содержащим параметр <quote>tag=</quote>, поскольку дерево GNATS не
- находится под управлением CVS и не имеет символьных меток.</para>
-
- <para>После запуска cvsup в каталоге <filename>/usr/gnats</filename>
- будет создана копия дерева GNATS FreeBSD. Вы можете использовать
- файл <emphasis>refuse</emphasis> для копирования отдельных категорий.
- Например, если вас интересуют только сообщения категории
- <literal>docs</literal>, добавьте в файл
- <filename>/usr/local/etc/cvsup/sup/refuse</filename><footnote>
- <para>Точный путь к файлу зависит от установок <literal>*default
- base</literal> в вашем файле
- <filename>supfile</filename>.</para>
- </footnote> строку</para>
-
- <programlisting>gnats/[a-ce-z]*</programlisting>
-
- <para>Прочие примеры в этом разделе подразумевают, что вы
- синхронизируете только категорию <literal>docs</literal>.</para>
- </step>
-
- <step>
- <para>Установите порт GNATS из
- <filename>ports/databases/gnats</filename>. После установки вы
- обнаружите различные служебные каталоги в дереве
- <filename>$PREFIX/share/gnats</filename>.</para>
- </step>
-
- <step>
- <para>Создайте символьные ссылки на синхронизированные каталоги GNATS
- в служебный каталог GNATS:</para>
-
- <screen>&prompt.root; <userinput>cd /usr/local/share/gnats/gnats-db</userinput>
-&prompt.root; <userinput>ln -s /usr/gnats/docs</userinput></screen>
-
- <para>Проделайте эту операцию для всех синхронизируемых категорий.</para>
- </step>
-
- <step>
- <para>Обновите служебный файл GNATS <filename>categories</filename>,
- расположенный в каталоге
- <filename>$PREFIX/share/gnats/gnats-db/gnats-adm</filename>:</para>
-
- <programlisting># This category is mandatory
-pending:Category for faulty PRs:gnats-admin:
-#
-# FreeBSD categories
-#
-docs:Documentation Bug:freebsd-doc:</programlisting>
- </step>
-
- <step>
- <para>Запустите <filename>$PREFIX/libexec/gnats/gen-index</filename>
- для создания индекса. Вывод этой команды должен быть перенаправлен
- в файл
- <filename>$PREFIX/share/gnats/gnats-db/gnats-adm/index</filename>.
- Эту операцию можно выполнять периодически при помощи &man.cron.8;
- или запускать &man.cvsup.1; из скрипта, который затем сгенерирует
- новый индекс:</para>
-
- <screen>&prompt.root; <userinput>/usr/local/libexec/gnats/gen-index \
- &gt; /usr/local/share/gnats/gnats-db/gnats-adm/index</userinput></screen>
- </step>
-
- <step>
- <para>Протестируйте созданную конфигурацию запросом к базе данных
- GNATS. Следующая команда выведет список открытых сообщений об
- ошибках в категории <literal>docs</literal>:</para>
-
- <screen>&prompt.root; <userinput>query-pr -c docs -s open</userinput></screen>
-
- <para>Другие интерфейсы, например, порт
- <package>databases/tkgnats</package> также должны
- работать.</para>
- </step>
-
- <step>
- <para>Выберите PR и закройте его.</para>
- </step>
- </procedure>
-
- <note>
- <para>Описанная процедура позволяет вам выбирать и просматривать
- сообщения об ошибках локально. Для редактирования или закрытия вам
- потребуется зайти на машину <systemitem>freefall</systemitem>.</para>
- </note>
- </sect1>
-
- <sect1 xml:id="people">
- <title>Кто есть кто</title>
-
- <para>Помимо мастеров репозитория, существует еще несколько участников и
- групп проекта FreeBSD, с которыми вам как коммиттеру может потребоваться
- общаться. Краткий и ни в коем случае не полный список приводится ниже.
- </para>
-
- <variablelist>
-
- <varlistentry>
- <term>&a.jhb.email;</term>
-
- <listitem>
- <para>Джон возглавляет проект SMPng и отвечает за архитектуру,
- дизайн и реализацию перехода на многонитевое ядро. Джон также
- является редактором статьи "Архитектура SMPng". Если вы работаете
- с тонкими блокировками многопроцессорного ядра, координируйте свою
- работу с Джоном.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>&a.doceng;</term>
-
- <listitem>
- <para>doceng&nbsp;&mdash; группа, отвечающая за инфраструктуру
- построения документации, прием новых коммиттеров документации и
- актуальность информации относительно CVS на веб-сайте и FTP-сайте
- FreeBSD. Эта группа не разбирает конфликты. Большая часть
- обсуждений, связанных с документацией, происходит в &a.doc;.
- Дополнительную информацию о деятельности группы можно найти в ее
- <link xlink:href="http://www.FreeBSD.org/internal/doceng.html">собственном
- документе</link>.
- Коммиттеры, заинтересованные в обновлении документации, должны
- ознакомиться с <link xlink:href="&url.books.fdp-primer;/index.html">Учебником по Проекту
- Документирования FreeBSD для новых участников</link>.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>&a.ru.email;</term>
-
- <listitem>
- <para>Руслан великолепно знает тонкости &man.mdoc.7;. Если вы
- пишете справочную страницу и нуждаетесь в совете по ее структуре
- или разметке, обратитесь к Руслану.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>&a.bde.email;</term>
-
- <listitem>
- <para>Брюс занимается общим стилем кода проекта. Если ваш коммит
- мог бы быть лучше оформлен, Брюс укажет вам на это. Радуйтесь,
- что такой человек вообще есть. Брюс также является знатоком
- различных стандартов, применимых к FreeBSD.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>&a.murray.email;</term>
- <term>&a.dwhite.email;</term>
- <term>&a.rwatson.email;</term>
- <term>&a.kensmith.email;</term>
- <term>&a.hrs.email;</term>
- <term>&a.mux.email;</term>
- <term>&a.bmah.email;</term>
-
- <listitem>
- <para>Таков состав группы &a.re;. Эта группа отвечает за сроки
- и процесс выпуска релизов. В период заморозки кода, выпускающие
- инженеры принимают окончательные решения по поводу всех изменений
- системы в ветви, готовящейся к очередному релизу. Если вы хотите
- интегрировать какие-либо изменения из &os.current; в
- &os.stable; (какими бы они ни были в данный конкретный момент),
- вам предстоит общаться с этой группой.</para>
-
- <para>Хироки, кроме того, ведет раздел документации к релизам
- (<filename>src/release/doc/*</filename>). Если ваши изменения
- стоят того, чтобы быть упомянутыми в информации о релизе,
- сообщите об этом Хироки. Еще лучше, если вы пошлете патч
- с предлагаемыми изменениями к документу.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>&a.cperciva.email;</term>
-
- <listitem>
- <para>Колин&nbsp;&mdash;
- <link xlink:href="&url.base;/security/">FreeBSD Security
- Officer</link>
- и отвечает за деятельность группы &a.security-officer;.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>&a.wollman.email;</term>
-
- <listitem>
- <para>Если вам нужен совет по поводу темных мест сетевой части ядра,
- или вы не уверены в планируемом изменении сетевой подсистемы,
- мудрым решением будет обратиться к Гарретту. Помимо того, он
- хорошо разбирается в различных стандартах, применимых к
- FreeBSD.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>&a.committers;</term>
-
- <listitem>
- <para>cvs-committers&nbsp;&mdash; адрес, используемый CVS для посылки
- сообщений о коммитах. Вы <emphasis>никогда</emphasis> не должны
- посылать письма напрямую на этот адрес; следует лишь отвечать на
- него, когда вам нужно послать короткие комментарии, непосредственно
- относящиеся к коммиту.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>&a.developers;</term>
-
- <listitem>
- <para>Все коммиттеры подписаны на список рассылки -developers.
- Этот список создан для обсуждения вопросов, касающихся
- <quote>сообщества</quote> коммиттеров FreeBSD, таких как выборы
- Правления, анонсы и т.п.</para>
-
- <para>&a.developers; служит для только для использования FreeBSD
- коммиттерами. Коммиттеры должны иметь возможность публично
- обсуждать вещи, которые должны быть разрешены, перед тем, как
- они будут публично объявлены. Данные дискуссии
- не предназначены для широкой публики и могут нанести вред
- FreeBSD.</para>
-
- <para>Все FreeBSD коммиттеры должны соблюдать авторские права
- оригинального автора или авторов писем из этого списка рассылки. Не
- публикуйте и не пересылайте сообщения из &a.developers; вне
- подписчиков данного списка рассылки без согласия всех авторов.</para>
-
- <para>Нарушители авторских прав будут удалены из списка
- подписчиков &a.developers;, и будут приостановлены их коммиттерские
- привилегии. Повторяющиеся или вопиющие нарушения приведут к
- полному лишению коммиттерских прав.</para>
-
- <para>Этот список <emphasis>не</emphasis>
- предназначен для обсуждения кода, и <emphasis>не
- является</emphasis> заменой списков &a.arch; или &a.audit;.
- На самом деле, такое его использование вредит проекту, поскольку
- открытые обсуждения вопросов, касающихся всего сообщества
- пользователей FreeBSD в закрытом списке недопустимы. И, наконец:
- <emphasis>никогда, действительно никогда не пишите в &a.developers;
- с копией в другой список рассылки FreeBSD</emphasis>. Никогда не
- пишите в какой-либо другой список рассылки с копией в
- &a.developers;. Подобные действия серьезно подрывают смысл
- существования данного списка рассылки.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </sect1>
-
- <sect1 xml:id="ssh.guide">
- <title>SSH: быстрый старт</title>
-
- <procedure>
- <step>
- <para>Если вы используете FreeBSD версии 4.0 или более позднюю,
- OpenSSH включен в базовую поставку системы. Для более ранних версий
- обновите и установите OpenSSH из порта
- <package>security/openssh</package>.</para>
- </step>
-
- <step>
- <para>Для тех, кто не хочет набирать свой пароль каждый раз при
- использовании &man.ssh.1; и использует для авторизации ключи
- RSA или DSA, удобной будет утилита &man.ssh-agent.1;. Если вы
- собираетесь использовать ее, убедитесь, что она запущена раньше
- прочих приложений. Пользователи X Window, например, обычно
- запускают ее из файлов <filename>.xsession</filename> или
- <filename>.xinitrc</filename>. Подробнее смотрите в справочной
- странице &man.ssh-agent.1;.</para>
- </step>
-
- <step>
- <para>Создайте пару ключей при помощи &man.ssh-keygen.1;. Ключи
- появятся в каталоге
- <filename>$HOME/.ssh/</filename>.</para>
- </step>
-
- <step>
- <para>Пошлите ваш публичный ключ (содержимое файла
- <filename>$HOME/.ssh/id_dsa.pub</filename>
- или <filename>$HOME/.ssh/id_rsa.pub</filename>)
- вашему будущему ментору, чтобы он мог быть помещен в файл
- <filename><replaceable>yourlogin</replaceable></filename> в каталоге
- <filename>/c/ssh-keys/</filename> на машине
- <systemitem>freefall</systemitem>.
- </para>
- </step>
- </procedure>
-
- <para>Теперь вы можете пользоваться утилитой &man.ssh-add.1; для
- авторизации один раз за сессию. Утилита запросит кодовую фразу
- для вашего секретного ключа и затем сохранит ее в агенте авторизации
- (&man.ssh-agent.1;). Если вы хотите удалить сохраненный секретный
- ключ из агента, используйте команду <command>ssh-add -d</command>.</para>
-
- <para>Для теста используйте команду типа <command>ssh
- freefall.FreeBSD.org ls /usr</command>.</para>
-
- <para>За дополнительной информацией обращайтесь к
- <package>security/openssh</package>, &man.ssh.1;,
- &man.ssh-add.1;, &man.ssh-agent.1;, &man.ssh-keygen.1; и
- &man.scp.1;.</para>
- </sect1>
-
- <sect1 xml:id="rules">
- <title>Большой Список Правил Коммиттера FreeBSD</title>
-
- <orderedlist>
- <listitem>
- <para>Уважайте других коммиттеров.</para>
- </listitem>
-
- <listitem>
- <para>Уважайте других участников проекта.</para>
- </listitem>
-
- <listitem>
- <para>Обсудите любые значимые изменения
- <emphasis>до</emphasis> коммита.</para>
- </listitem>
-
- <listitem>
- <para>Уважайте существующих мейнтейнеров (указанных в поле
- <varname>MAINTAINER</varname> файлов <filename>Makefile</filename>
- или в файле <filename>MAINTAINER</filename> в корневом каталоге
- репозитория).</para>
- </listitem>
-
- <listitem>
- <para>Любое спорное изменение необходимо откатить (back out) в ожидании
- решения, если того требует мейнтейнер. Вопросы безопасности могут
- перекрывать мнение мейнтейнера, если так решит Security Officer.
- </para>
- </listitem>
-
- <listitem>
- <para>Изменения вносятся в ветвь &os.current; до &os.stable;, за
- исключением случаев, прямо разрешенных выпускающими инженерами или
- неприменимости изменения к &os.current;. Любое нетривиальное и
- не срочное изменение должно быть выдержано в &os.current; в течение
- по крайней мере 3 дней перед переносом, чтобы его могли адекватно
- протестировать. Выпускающие инженеры обладают той же властью в
- ветви &os.stable;, что и мейнтейнеры (см. правило 5).</para>
- </listitem>
-
- <listitem>
- <para>Не пререкайтесь с другими коммиттерами публично: это дурно
- выглядит. Если вам необходимо с чем-либо <quote>категорически не
- согласиться</quote>, делайте это личной почтой.</para>
- </listitem>
-
- <listitem>
- <para>Соблюдайте все периоды заморозки кода (core freeze), а также
- своевременно читайте списки рассылки <literal>committers</literal> и
- <literal>developers</literal>, чтобы быть в курсе расписания таких
- периодов.</para>
- </listitem>
-
- <listitem>
- <para>Если вы сомневаетесь в какой-либо процедуре, сначала
- спросите!</para>
- </listitem>
-
- <listitem>
- <para>Тестируйте свои изменения перед коммитом.</para>
- </listitem>
-
- <listitem>
- <para>Не производите коммит в деревья
- <filename>src/contrib</filename>,
- <filename>src/crypto</filename> и
- <filename>src/sys/contrib</filename> без
- <emphasis>прямого</emphasis> разрешения (approval) соответствующего
- мейнтейнера(ов).</para>
- </listitem>
- </orderedlist>
-
- <para>Невыполнение этих правил может служить основанием для приостановки
- или, в случае рецидивов, полного лишения коммиттерских прав. Члены
- Правления (Core) имеют право временно приостановить права коммиттера
- до момента, когда Правление в целом сможет решить вопрос.
- В <quote>аварийном</quote> случае (коммиттер разрушает репозиторий)
- такие права имеют также ответственные за репозиторий. Для приостановки
- прав коммиттера более чем на неделю или для полного лишения таковых прав
- требуется квалифицированное большинство (2/3) голосов Правления. Это
- правило существует не потому, что Правление состоит из злобных
- диктаторов, разбрасывающихся коммиттерами словно банками из-под колы,
- но ради предоставления проекту аварийного выключателя. Если кто-то
- выходит из-под контроля, важно иметь возможность справиться с ситуацией
- немедленно, а не быть втянутыми в дебаты. В любом случае, коммиттер,
- чьи права приостановлены, имеет право на <quote>слушания
- Правления</quote>, на которых определяется срок приостановки или
- лишения коммиттерских прав. Коммиттер, права которого приостановлены
- может запросить пересмотр своего вопроса через 30 дней и каждые
- последующие 30 дней (если общий период приостановки превышает 30 дней).
- Коммиттер, полностью лишенный прав, может запросить пересмотр по
- истечении 6 месяцев. Правила пересмотра являются <emphasis>полностью
- неформальными</emphasis> и во всех случаях Правление имеет право
- отвергнуть запрос на пересмотр, если считает свое первоначальное решение
- верным.</para>
-
- <para>Во всех прочих аспектах деятельности проекта, Правление является
- подмножеством коммиттеров и ограничено <emphasis>теми же
- правилами</emphasis>. Само по себе членство в Правлении не дает права
- преступать описанные правила. Правление обладает <quote>особой
- силой</quote> только в случае деятельность как целое, а не на
- индивидуальной основе. Члены Правления&nbsp;&mdash; в первую очередь
- коммиттеры.</para>
-
- <sect2>
- <title>Подробности</title>
-
- <orderedlist>
- <listitem xml:id="respect">
- <para>Уважайте других коммиттеров.</para>
-
- <para>Вы должны относиться к другим коммиттерам как к коллегам по
- разработке (кем они и являются). Несмотря на возникающие временами
- попытки утверждать обратное, никто не стал коммиттером по своей или
- чьей-либо еще глупости, и мало что обижает сильнее, чем подобные
- обвинения от коллег. Вне зависимости от того, всегда ли мы
- чувствуем уважение друг к другу или нет (у каждого бывают не лучшие
- дни), мы всегда должны <emphasis>выказывать</emphasis> уважение к
- другим коммиттерам, как в публичных форумах, так и в личной почте.
- </para>
-
- <para>Способность совместной работы в течение длительного
- времени&nbsp;&mdash; одно из главных достижений проекта, много
- более важное, чем любой набор изменений в коде, и никакие аргументы
- относительно кода не стоят потерь в возможности гармонично работать
- вместе.</para>
-
- <para>Чтобы не противоречить этому правилу, никогда не посылайте
- писем, когда вы злы или каким-либо иным образом можете
- спровоцировать других на конфронтацию. Сначала успокойтесь,
- затем подумайте о том, как наиболее эффективно убедить оппонента(ов)
- в правильности ваших аргументов; не подливайте масла в огонь ради
- краткого мига злорадства, если ценой будет долгая ругань.
- Это не просто крайне <quote>энергетически неэффективно</quote>:
- повторяющиеся прецеденты публичной агрессии, влияющие на нашу
- способность работать вместе, будут всерьез рассмотрены лидерами
- проекта, и могут привести к приостановке или потере прав
- коммиттера. Во внимание будут приниматься как публичные
- высказывания, так и личная переписка; это не означает, что Правление
- будет требовать раскрытия тайны переписки, однако, все
- предоставленные затронутыми коммиттерами материалы будут
- рассмотрены.</para>
-
- <para>Описанные процедуры никого не могут порадовать даже в малом,
- однако <quote>целостность проекта превыше всего</quote>. Никакой
- объем кода не стоит потери целостности.</para>
- </listitem>
-
- <listitem>
- <para>Уважайте других участников проекта.</para>
-
- <para>Вы не всегда были коммиттером. В свое время вы были простым
- сторонним участником (contributor). Помните об этом все время.
- Помните, сколь важно было добиться внимания и помощи. Не забывайте,
- насколько ваше участие было важным для вас. Помните свои ощущения.
- Не препятствуйте другим участникам и не унижайте их. Относитесь к
- ним с уважением. Возможно, они наши будущие коммиттеры, и они
- настолько же важны для проекта, как и коммиттеры. Их вклад в
- проект настолько же ценен и важен, как и ваш. В конце концов,
- вам пришлось приложить немало усилий для проекта, чтобы стать
- коммиттером. Всегда помните об этом.</para>
-
- <para>Обдумайте первое правило <xref linkend="respect"/> и применяйте
- его и к другим участникам проекта.</para>
- </listitem>
-
- <listitem>
- <para>Обсудите любые значимые изменения
- <emphasis>до</emphasis> коммита.</para>
-
- <para>Репозиторий CVS&nbsp;&mdash; не место для анонса изменений или
- обсуждения их. Все изменения должны обсуждаться в списках
- рассылки, и лишь после достижения консенсуса вносится в
- репозиторий. Это не означает, что вы должны спрашивать разрешения
- на исправление очевидной синтаксической ошибки в коде или опечатки
- в странице справочника. Вы должны ощутить, когда предполагаемое
- изменение требует предварительного обсуждения и обратной связи.
- Как правило, никто не станет возражать против обширных изменений,
- если результат очевидно лучше предыдущего состояния, однако
- никто не любит, когда эти изменения <emphasis>неожиданны</emphasis>.
- Лучший способ убедиться, что вы на правильном пути&nbsp;&mdash;
- дать ваш код просмотреть кому-либо еще из коммиттеров.</para>
-
- <para>Если вы сомневаетесь, просите отзыва!</para>
- </listitem>
-
- <listitem>
- <para>Уважайте существующих мейнтейнеров.</para>
-
- <para>Многие части кода FreeBSD не являются чьей-либо
- <quote>собственностью</quote>: ситуация, когда некто подпрыгнет
- и завопит, если вы внесете изменения в <quote>его</quote> код,
- редка; однако, всегда стоит предварительно проверить. Одним из
- используемых соглашений было добавление строки MAINTAINER в файл
- <filename>Makefile</filename> пакета или части дерева, которая
- активно поддерживается одним или несколькими коммиттерами; см.
- также соответствующий раздел <link xlink:href="&url.books.developers-handbook;/policies.html">
- http://www.FreeBSD.org/doc/ru_RU.KOI8-R/books/developers-handbook/policies.html</link>.
- В случае, если какой-то участок системы
- имеет несколько мейнтейнеров, изменение его одним из них должно
- быть одобрено по крайней мере одним из других. В случаях, когда
- <quote>принадлежность</quote> кода неясна, вы можете взглянуть
- на историю коммитов, чтобы понять, кто наиболее активно либо в
- последнее время работал в этой области.</para>
-
- <para>Отдельные области FreeBSD попадают под контроль коммиттеров,
- занимающихся поддержкой целых категорий на пути эволюции FreeBSD,
- таких как локализация или сетевая подсистема. Для дополнительной
- информации смотрите <link xlink:href="&url.articles.contributors;/staff-who.html">
- http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/contributors/staff-who.html</link>
- </para>
- </listitem>
-
- <listitem>
- <para>Любое спорное изменение необходимо откатить в ожидании
- решения, если того требует мейнтейнер. Вопросы безопасности могут
- перекрывать мнение мейнтейнера, если так решит Security Officer.
- </para>
-
- <para>Это может быть нелегко, особенно в период конфликта (когда
- каждый участник уверен, что прав именно он). К счастью, CVS
- дает возможность, вместо того чтобы вести бушующую перебранку,
- просто откатить внесенные изменения, успокоиться всем участникам
- конфликта, а затем попробовать найти взаимоприемлемый путь.
- Если в конце концов окажется, что изменение стоит того, оно
- может быть легко применено вновь. В противном случае,
- пользователям не придется жить с неправильным состоянием дерева
- исходных текстов, пока стороны заняты выяснением отношений.
- Запросы на откаты возникают <emphasis>крайне</emphasis> редко, поскольку обсуждение обычно
- выявляет неверные или спорные моменты до коммита; однако, если
- такой запрос все же возник, он должен быть безусловно удовлетворен,
- чтобы мы могли спокойно выяснить, было изменение неверным или
- нет.</para>
- </listitem>
-
- <listitem>
- <para>Изменения вносятся в ветвь &os.current; до &os.stable;, за
- исключением случаев, прямо разрешенных выпускающими инженерами или
- неприменимости изменения к &os.current;. Любое нетривиальное и
- не срочное изменение должно быть выдержано в &os.current; в течение
- по крайней мере 3 дней перед переносом, чтобы его могли адекватно
- протестировать. Выпускающие инженеры обладают той же властью в
- ветви &os.stable;, что и мейнтейнеры (см. правило 5).</para>
-
- <para>Это еще одно <quote>не обсуждаемое</quote> правило: выпускающий
- инженер безусловно отвечает за последствия, если выясняется что
- внесенные изменения неверны. Уважайте эти права, и помогайте
- группе выпуска релизов в работе с ветвью &os.stable;. На первый
- взгляд может показаться, что ветвь &os.stable; развивается
- чересчур консервативно. Не забывайте, однако, что разумный
- консерватизм&nbsp;&mdash; отличительное свойство &os.stable;,
- и что эта ветвь развивается по законам, отличным от законов
- &os.current;. Кроме того, нет смысла тестировать изменения в
- &os.current;, если они немедленно переносятся в &os.stable;.
- Разработчики &os.current; должны иметь возможность протестировать
- внесенные изменения, так что оставьте время для такого
- тестирования, если только речь не идет о критическом исправлении
- или о чем-либо очевидно не требующем тестирования (например,
- исправления опечаток в страницах справочника, очевидных ошибок или
- опечаток в исходных текстах и т.п.) Иными словами, исходите из
- соображений здравого смысла.</para>
-
- <para>Изменения в ветви поддержки безопасности (security branches,
- например, <literal>RELENG_6_0</literal>) должны быть одобрены
- членом группы &a.security-officer; или, в некоторых случаях, одним
- из выпускающих инженеров (&a.re;).</para>
- </listitem>
-
- <listitem>
- <para>Не пререкайтесь с другими коммиттерами публично: это дурно
- выглядит. Если вам необходимо с чем-либо <quote>категорически не
- согласиться</quote>, делайте это личной почтой.</para>
-
- <para>Для всех участников проекта очень важно поддержание его
- публичного образа; особенно это важно, если мы хотим продолжать
- привлекать новых участников. Случается, что, несмотря на все
- усилия по сохранению власти над собой, люди срываются и грубят
- друг другу. Лучшее, что здесь можно сделать&nbsp;&mdash;
- минимизировать эффект, пока все участники не успокоятся.
- Следовательно, вы не должны озвучивать свою ярость публично,
- а равно и пересылать частную переписку в общедоступные списки
- рассылки. Выражения, употребляющиеся в переписке один на один
- зачастую гораздо менее сдержанны, чем те, которые каждый участник
- употребил бы публично, так что подобной переписке нет места в
- публичных рассылках: это лишь усугубит и без того неприятную
- ситуацию. Если кто-либо, говорящий вам нелицеприятные слова,
- делает это в частной переписке, соблюдайте приличия и вы:
- отвечайте приватно. Если, по вашему мнению, кто-либо из
- разработчиков поступает с вами нечестно, и это настолько
- мучит вас, обратитесь к Правлению, а не выносите конфликт
- наружу. Правление приложит все силы к разрешению ситуации,
- выступая в роли третейского судьи. В случаях, когда спор
- затрагивает какие-либо части кода, и участники не могут прийти к
- взаимно приемлемому соглашению, Правление может привлечь
- независимого участника для разрешения вопроса. В этом случае
- все участники конфликта должны согласиться принять решение,
- вынесенное третьей стороной.</para>
- </listitem>
-
- <listitem>
- <para>Соблюдайте все периоды заморозки кода (core freeze), а также
- своевременно читайте списки рассылки <literal>committers</literal> и
- <literal>developers</literal>, чтобы быть в курсе расписания таких
- периодов.</para>
-
- <para>Внесение не одобренных изменений в период заморозки кода
- является довольно большой ошибкой. Коммиттеры должны быть
- в курсе событий, прежде чем внести 10 мегабайт изменений
- после долгого отсутствия. Нарушающие это правило будут
- подвергаться заморозке коммиттерского бита до прохождения курса
- в Счастливом Лагере Повышения Квалификации FreeBSD, который
- организован в Гренландии.</para>
- </listitem>
-
- <listitem>
- <para>Если вы сомневаетесь в какой-либо процедуре, сначала
- спросите!</para>
-
- <para>Множество ошибок совершается, когда кто-либо совершает
- поспешные действия, думая, что поступает правильно. Делая
- что-либо впервые, вы, скорее всего, не знаете принятых мелочей
- и тонкостей, и лучше всего будет сначала спросить, не то вы
- имеете шансы выставить себя не в лучшем свете. Не стоит
- стыдиться спросить <quote>Как, черт возьми, это надо
- делать?</quote> Мы и так знаем, что вы умны: иначе вы не стали
- бы коммиттером.</para>
- </listitem>
-
- <listitem>
- <para>Тестируйте свои изменения перед коммитом.</para>
-
- <!-- XXX Needs update re sparc64 + pc98
- Also, needs more details on which machines are available for testing
- -->
- <para>Это правило может показаться очевидным. Впрочем, если бы оно
- действительно было очевидно для всех, мы не так часто сталкивались
- со случаями явного его нарушения. Если ваши изменения затрагивают
- ядро, убедитесь, что после него нормально собираются ядра GENERIC
- и LINT. Если вы изменяете другую часть исходного кода, убедитесь,
- что код собирается (успешно завершается make buildworld). Если
- вы изменяете код в какой-либо ветви, убедитесь, что вы тестируете
- его на машине, которая работает именно на этой ветви кода. Если
- ваши изменения могут затронуть другие архитектуры, проверьте его
- на всех поддерживаемых архитектурах. Список доступных ресурсов
- можно найти на странице <uri xlink:href="&url.base;/internal/">&url.base;/internal/</uri>. По мере расширения списка поддерживаемых платформ
- в кластер будут добавляться соответствующие машины для
- тестирования.</para>
- </listitem>
-
- <listitem>
- <para>Не производите коммит в деревья
- <filename>src/contrib</filename>,
- <filename>src/crypto</filename> и
- <filename>src/sys/contrib</filename> без
- <emphasis>прямого</emphasis> разрешения (approval) соответствующего
- мейнтейнера(ов).</para>
-
- <para>Описанные деревья содержат исходный код сторонних
- производителей, который, как правило, импортируется в
- соответствующие ветви. Любой коммит, даже не выводящий файл из
- ветви производителя, может стать головной болью для ответственных
- за эту часть проекта разработчиков. Так что, если у вас нет
- <emphasis>прямого</emphasis> разрешения от мейнтейнера,
- <emphasis>ничего</emphasis> не делайте с этой частью
- репозитория (если, конечно, вы не поддерживаете этот код
- сами).</para>
-
- <para>Отметим, что только что сказанное вовсе не означает, что вы не
- должны пытаться улучшить упомянутый код, наоборот, этому будут
- только рады. Лучше всего, если вы передадите ваши исправления
- вендору. Если изменения специфичны для FreeBSD, обсудите вопрос
- с мейнтейнером, возможно, он посчитает разумным применить их
- локально. Тем не менее, что бы вы ни делали,
- <emphasis>не</emphasis> производите коммит сами!</para>
-
- <para>Если вы хотите стать ответственным за <quote>ничей</quote>
- участок дерева исходников, свяжитесь с &a.core;.</para>
- </listitem>
- </orderedlist>
- </sect2>
-
- <sect2>
- <title>Правила работы с различными архитектурами</title>
-
- <para>Начиная с версии 5.0 проект FreeBSD начал поддерживать несколько
- новых вычислительных архитектур, и более не является
- <quote>&i386;-центричным</quote>. Для упрощения поддержки FreeBSD
- на базе всех этих платформ Правлением было сформулировано следующее
- заявление:</para>
-
- <blockquote>
- <para>Основной 32-битной платформой разработки является i386;
- основная 64-битная платформа&nbsp;&mdash; Sparc64. Крупные
- изменения в дизайне (в том числе основные изменения в API и ABI)
- до попадания в репозиторий должны быть отлажены по крайней мере
- на одной 32 и одной 64-битной платформе, желательно на основных
- поддерживаемых платформах.</para>
- </blockquote>
-
- <para>Платформы i386 и Sparc64 были выбраны по причине широкой
- распространенности доступности для разработчиков; кроме того, они
- представляют принципиально разные подходы к дизайну процессора и
- системы в целом: порядок байт в слове, организация регистров,
- реализация DMA, кэша, страничной адресации и т.д.</para>
-
- <para>Процессор Alpha, конечно, является 64-битным, однако он
- представляет более традиционный дизайн и потому не может служить
- достаточно хорошей тестовой платформой для отработки тонкостей,
- с которыми разработчик может столкнуться на других 64-битных
- платформах. Платформа ia64 во многом сложна так же, как и
- Sparc64, однако ее доступность для разработчиков пока оставляет
- желать лучшего.</para>
-
- <para>Мы будем переформулировать эти правила по мере того, как будут
- меняться цены и доступность 64-битных платформ.</para>
-
- <!-- XXX ??? XXX -->
- <para>Кроме того, разработчики должны быть в курсе наших правил классов
- поддержки (Tier Policy) различных аппаратных архитектур. Эти правила
- предназначены для общего описание процесса разработки, и потому
- отличаются от вышеописанных требований к возможностям и архитектурам.
- Правила классов поддержки на период выпуска релизов много жестче, чем
- ограничения на изменения в процессе разработки.</para>
- </sect2>
-
- <sect2>
- <title>Другие рекомендации</title>
-
- <para>Перед коммитом в области документации используйте какие-либо
- средства проверки орфографии. Для документов SGML, кроме того,
- при помощи команды <command>make lint</command> следует проверить
- корректность форматирования.</para>
-
- <para>Для страниц справочника, при помощи утилиты из коллекции портов
- <command>manck</command> проверяйте корректность перекрестных ссылок
- и ссылок на файлы, а также наличие всех необходимых ссылок на синонимы
- (переменная <varname>MLINK</varname>).</para>
-
- <para>Не смешивайте функциональные изменения со стилистическими
- (не изменяющими функциональных свойств кода). Такое смешивание
- затрудняет вычленение изменений при использовании команды
- <command>cvs diff</command> и, таким образом, может скрыть появившиеся
- ошибки. Не смешивайте в коммите в деревья <filename>doc/</filename> и
- <filename>www/</filename> изменения текста и переформатирование: это
- затрудняет работу переводчиков. Производите все стилистические
- изменения или переформатирования отдельными коммитами, и четко
- обозначайте их как таковые в журнальных сообщениях к коммиту.</para>
- </sect2>
-
- <sect2>
- <title>Удаление возможностей</title>
-
- <para>При необходимости удаления какой-либо функциональной возможности
- из утилит базовой системы следует использовать следующую схему
- действий:</para>
-
- <orderedlist>
- <listitem>
- <para>В странице справочника и, возможно, в комментариях к релизу
- опция, утилита или интерфейс объявляются устаревающими и не
- рекомендованными к использованию (deprecated); их использование
- выводит предупреждение.</para>
- </listitem>
-
- <listitem>
- <para>Опция, утилита или интерфейс сохраняются до очередного
- основного релиза (релиз X.0).</para>
- </listitem>
-
- <listitem>
- <para>Опция, утилита или интерфейс удаляются, в том числе из
- документации: теперь они являются устаревшими. Как правило,
- об этом стоит упомянуть в комментариях к релизу.</para>
- </listitem>
- </orderedlist>
- </sect2>
- </sect1>
-
- <sect1 xml:id="archs">
- <title>Поддержка различных архитектур</title>
-
- <para>FreeBSD является хорошо портируемой операционной системой и
- предназначена для работы на самых разнообразных аппаратных
- архитектурах. Важной частью процесса обеспечения гибкости в
- поддержке современных тенденций развития оборудования является
- деление кода на машинно-зависимый (Machine Dependent, MD) и
- машинно-независимый (Machine Independent, MI), а также, по возможности,
- минимизация машинно-зависимой части кода. Каждая новая аппаратная
- архитектура, которую начинает поддерживать FreeBSD, ощутимо увеличивает
- работу по поддержке кода, инструментария и процесса выпуска релизов.
- Кроме того, становится значительно сложнее эффективно тестировать
- изменения в коде ядра. Все это делает необходимым введение различных
- классов поддержки для различных архитектур, при сохранении максимальной
- стабильности малого числа "основных платформ".</para>
-
- <sect2>
- <title>Основные намерения</title>
-
- <para>Проект FreeBSD предназначен для работы на рабочих станциях,
- серверах и высокопроизводительных встроенных системах. Сохраняя
- ориентир на малое количество архитектур в интересах таких систем,
- проект FreeBSD остается способен поддерживать высокий уровень
- надежности, стабильности и производительности, а также уменьшить
- нагрузку на различные группы поддержки проекта, такие как группы
- поддержки портов, документации, безопасности и выпуска релизов.
- Разнообразие поддерживаемых аппаратных платформ расширяет область
- применимости FreeBSD за счет поддержки новых возможностей (например,
- поддержка 64-битных процессоров, использование во встроенных системах
- и т.п.); тем не менее, расширение этого списка всегда должно быть
- тщательно оценено с позиций увеличения затрат на поддержку
- дополнительной аппаратной платформы.</para>
-
- <para>Проект FreeBSD делит различные аппаратные платформы на 4 класса.
- Для каждого класса описывается набор требований, необходимых для
- присвоения платформе данного класса, и обязательства разработчиков
- по отношению к платформе. Кроме того, определяется порядок смены
- класса для архитектуры.</para>
- </sect2>
-
- <sect2>
- <title>Класс 1: Полностью поддерживаемые архитектуры</title>
-
- <para>Платформы 1 класса полностью поддерживаются группой безопасности,
- группой выпуска релизов и мейнтейнерами инструментария. Новые
- возможности, добавляемые в код системы, должны быть полностью
- функциональны для всех архитектур первого класса для каждого из
- релизов (исключением могут быть архитектурно-зависимые возможности,
- такие как драйвера аппаратуры). Как правило, все платформы 1 класса
- должны поддерживаться системами сборки либо расположенными
- непосредственно в кластере FreeBSD.org, либо легко доступными для
- всех разработчиков.</para>
-
- <para>Архитектуры первого класса должны быть готовыми к эксплуатации
- под управлением FreeBSD во всех аспектах, включая процесс установки
- и среду разработки.</para>
-
- <para>В настоящее время платформами 1 класса являются i386, Sparc64,
- AMD64, and PC98.</para>
- </sect2>
-
- <sect2>
- <title>Класс 2: Архитектуры для разработчиков</title>
-
- <para>Платформы 2 класса не поддерживаются группами безопасности и
- выпуска релизов. Поддержка инструментария оставляется на усмотрение
- его мейнтейнеров. Новые возможности, реализуемые в FreeBSD, должны
- быть реализуемы на этих платформах, однако непосредственная реализация
- на момент добавления кода в дерево исходных текстов не требуется.
- Реализация порта на архитектуру 2 класса может быть добавлена в
- репозиторий, если она не входит в противоречие с текущим состоянием
- систем первого класса и не влияет в существенной степени на прочие
- платформы 2 класса. Для добавления архитектуры 2 класса в дерево
- исходных текстов FreeBSD система должна быть способна загрузиться
- хотя бы в однопользовательский режим на реальной аппаратуре.
- Некоторые исключения из последнего правила могут быть сделаны для
- новой аппаратуры, находящейся в состоянии разработки и временно
- не доступной для проекта.</para>
-
- <para>Обычно архитектурами 2 класса являются те, которые планируются
- к переходу в 1 класс, но пока находятся в состоянии разработки.
- Также во втором классе могут находится платформы, перешедшие из
- 1 класса по причине потери актуальности, по мере того как уменьшается
- количество ресурсов, доступных для поддержки системы в состоянии
- готовности к промышленной эксплуатации.</para>
-
- <para>В настоящее время платформами 2 класса являются PowerPC
- и ia64.</para>
- </sect2>
-
- <sect2>
- <title>Класс 3: Экспериментальные архитектуры</title>
-
- <para>Платформы 3 класса не поддерживаются группами безопасности и
- выпуска релизов. Поддержка инструментария оставляется на усмотрение
- его мейнтейнеров. Архитектурами третьего класса могут быть: те, для
- которых нет и в ближайшее время не предвидится доступного проекту
- оборудования; имеющие менее трех активных разработчиков; не способные
- загрузиться в однопользовательский режим на реальной аппаратуре (или
- под управлением эмулятора, если реальная аппаратура недоступна);
- наконец, системы, которые оцениваются как исчезающие, чья дальнейшая
- распространенность сомнительна. Поддержка систем 3 класса не вносится
- в основное дерево исходных текстов FreeBSD, однако работа над такими
- архитектурами может производиться в репозитории Perforce FreeBSD, для
- облегчения контроля версий и дальнейшей интеграции с основной массой
- кода.</para>
-
- <para>В настоящее время единственной платформой 3 класса является
- &s390;.</para>
- </sect2>
-
- <sect2>
- <title>Класс 4: не поддерживаемые архитектуры</title>
-
- <para>Системы 4 класса никак не поддерживаются проектом.</para>
-
- <para>К 4 классу относятся все архитектуры, не перечисленные выше.</para>
- </sect2>
-
- <sect2>
- <title>Правила смены класса для архитектуры</title>
-
- <para>Для переноса платформы из класса в класс требуется решение,
- утвержденное Правлением, которое, в свою очередь, согласует его
- с группами безопасности, выпуска релизов и поддержки инструментария.
- </para>
- </sect2>
- </sect1>
-
- <sect1 xml:id="ports">
- <title>FAQ по работе с портами</title>
-
- <qandaset>
- <qandadiv>
- <title>Добавление нового порта</title>
-
- <qandaentry>
- <question>
- <para>Как добавить новый порт?</para>
- </question>
-
- <answer>
- <para>Для начала прочитайте раздел, посвященный репозиторному
- копированию.</para>
-
- <para>Самым простым будет использовать скрипт
- <command>addport</command> на машине
- <systemitem>freefall</systemitem>. Он добавит порт из указанного вами
- каталоге, определив нужную категорию из файла
- <filename>Makefile</filename>, добавит строку в файл
- <filename>CVSROOT/modules</filename> и в файл
- <filename>Makefile</filename> для нужной категории.
- Скрипт был написан &a.mharo.email; и &a.will.email;; вопросы и исправления
- по поводу <command>addport</command> следует отправлять Уиллу,
- как текущему мейнтейнеру.</para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>Что еще следует сделать, добавляя новый порт?</para>
- </question>
-
- <answer>
- <para>Проверьте его. Желательно убедиться в том, что порт и
- соответствующий пакет корректно собираются. Рекомендуемая
- последовательность действий такова:</para>
-
- <screen>&prompt.root; <userinput>make install</userinput>
-&prompt.root; <userinput>make package</userinput>
-&prompt.root; <userinput>make deinstall</userinput>
-&prompt.root; <userinput>pkg_add <replaceable>имя собранного пакета</replaceable></userinput>
-&prompt.root; <userinput>make deinstall</userinput>
-&prompt.root; <userinput>make reinstall</userinput>
-&prompt.root; <userinput>make package</userinput>
- </screen>
-
- <para>Более подробные инструкции можно найти в
- <link xlink:href="&url.books.porters-handbook;/index.html">Руководстве
- FreeBSD по созданию портов</link>.</para>
-
- <para>Пользуйтесь &man.portlint.1; для проверки корректности порта.
- Не обязательно добиваться полного отсутствия предупреждений,
- но по крайней мере исправьте простейшие из них.</para>
-
- <para>Если новый порт прислал человек, еще не упомянутый в
- <link xlink:href="&url.articles.contributors;/contrib-additional.html">Списке
- прочих участников</link>, добавьте его имя туда.</para>
-
- <para>Закройте PR, если новый порт пришел в виде PR. Для этого
- воспользуйтесь командой
- <userinput>edit-pr <replaceable>PR#</replaceable></userinput>
- на машине <systemitem>freefall</systemitem> и измените значение в строке
- <varname>state</varname> с <constant>open</constant> на
- <constant>closed</constant>. Затем опишите причину смены
- статуса, и на этом работа закончена.</para>
- </answer>
- </qandaentry>
- </qandadiv>
-
- <qandadiv>
- <title>Удаление порта</title>
-
- <qandaentry>
- <question>
- <para>Как удалить существующий порт?</para>
- </question>
-
- <answer>
- <para>Для начала прочтите раздел о репозиторном копировании.
- Прежде чем удалить порт, вы должны проверить, что удаление не
- затронет другие порты коллекции.</para>
- <itemizedlist>
- <listitem>
- <para>Убедитесь, что другие порты не зависят от удаляемого:</para>
- <itemizedlist>
- <listitem>
- <para>Имя пакета (PKGNAME) должно встречаться в свежем
- файле INDEX ровно один раз.</para>
- </listitem>
- <listitem>
- <para>В файлах Makefile* других портов не должно
- встречаться ни одной ссылки на каталог удаляемого
- порта или имя его пакета (PKGNAME).</para>
- </listitem>
- </itemizedlist>
- </listitem>
- <listitem>
- <para>Удалите порт:</para>
-
- <procedure>
- <step>
- <para>Удалите файлы порта командой
- <command>cvs remove</command>.</para>
- </step>
-
- <step>
- <para>Удалите строку <varname>SUBDIR</varname> для
- удаляемого порта из файла <filename>Makefile</filename>
- категории.</para>
- </step>
-
- <step>
- <para>Удалите запись для порта из файла модулей
- <filename>CVSROOT/modules</filename>.</para>
- </step>
-
- <step>
- <para>Добавьте соответствующую строку в файл
- <filename>ports/MOVED</filename>.</para>
- </step>
-
- <step>
- <para>Если порт упоминается в файле
- <filename>ports/LEGAL</filename>, удалите его оттуда.
- </para>
- </step>
- </procedure>
- </listitem>
- </itemizedlist>
-
- <para>Вы можете воспользоваться скриптом <command>rmport</command>
- из каталога <filename>ports/Tools/scripts</filename>.
- Этот скрипт написал &a.vd.email;, и он же его поддерживает, так что
- вопросы, исправления и замечания по поводу <command>rmport</command>
- следует посылать непосредственно ему.</para>
- </answer>
- </qandaentry>
- </qandadiv>
-
- <qandadiv>
- <title>Репозиторное копирование</title>
-
- <qandaentry>
- <question>
- <para>Когда требуется репозиторное копирование?</para>
- </question>
-
- <answer>
- <para>При необходимости добавления порта, имеющего отношение
- к другому, уже находящемуся в репозитории в другом каталоге,
- необходимо произвести репозиторное копирование. В данном
- случае <wordasword>имеющий отношение</wordasword> означает
- другую версию или небольшую модификацию. Примерами могут
- служить различные версии
- <filename>print/ghostscript*</filename> и английская и
- локализованные версии
- <filename>x11-wm/windowmaker*</filename>.</para>
-
- <para>Другим примером является необходимость перенести порт из
- одного подкаталога в другой, или переименовать каталог, когда
- автор меняет имя своей программы.</para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>Когда репозиторное копирование <emphasis>не</emphasis>
- требуется?</para>
- </question>
-
- <answer>
- <para>Если нет истории, которую стоило бы сохранять. Для порта,
- добавленного в неправильную категорию и сразу же перемещенного,
- будет вполне достаточно выполнить команды
- <command>cvs remove</command> для старого варианта и
- <command>addport</command> для нового.</para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>Что нужно делать?</para>
- </question>
-
- <answer>
- <para>Создайте в <application>GNATS</application> PR, описав
- причины репозиторного копирования. Поменяйте ответственного
- на <literal>portmgr</literal> и установите статус
- (<varname>state</varname>) в состояние
- <literal>repocopy</literal>. Если ваш запрос будет одобрен
- группой &a.portmgr;, он будет переадресован на
- <literal>pcvs</literal>. &a.portmgr; может произвести
- копирование каталогов самостоятельно; в противном случае
- группа &a.pcvs; произведет собственно
- копирование и вернет вам ваш PR. После этого, вам необходимо
- проделать следующее:</para>
-
- <itemizedlist>
- <listitem>
- <para>После репозиторного копирования порта:</para>
-
- <procedure>
- <step>
- <para>Обновите новый вариант порта до новой версии.
- Не забудьте изменить строку <varname>LATEST_LINK</varname>,
- чтобы не получить двух портов с одним именем. В
- некоторых исключительных случаях может быть необходимо
- изменить переменную <varname>PORTNAME</varname> вместо
- <varname>LATEST_LINK</varname>, но это должно быть сделано
- только тогда когда это действительно нужно. Например,
- при использовании существующего порта в качестве основы для
- весьма похожей программы с другим именем или при обновлении
- порта до новой основной версии программы, при котором изменяется
- имя самого дистрибутива, как в случае перехода с
- <filename>textproc/libxml</filename> на
- <filename>textproc/libxml2</filename>. В большинстве случаев
- изменение <varname>LATEST_LINK</varname> должно быть достаточно.</para>
- </step>
-
- <step>
- <para>Добавьте новый каталог в список
- <varname>SUBDIR</varname> в родительском файле
- <filename>Makefile</filename>.
- Для проверки вы можете воспользоваться
- командой <command>make checksubdirs</command>.</para>
- </step>
-
- <step>
- <para>Если порт менял категорию, измените строку
- <varname>CATEGORIES</varname> в файле
- <filename>Makefile</filename>.</para>
- </step>
-
- <step>
- <para>Добавьте строку для нового модуля в
- <filename>CVSROOT/modules</filename>.</para>
- </step>
-
- <step>
- <para>Добавьте строку в файл
- <filename>ports/MOVED</filename>, в случае
- если вы удалили первоначальный порт.</para>
- </step>
- </procedure>
- </listitem>
-
- <listitem>
- <para>При удалении порта:</para>
-
- <procedure>
- <step>
- <para>Тщательно проверьте коллекцию на предмет портов,
- зависящих от удаляемого и обновите их при необходимости.
- Выполнение команды <command>grep</command> по содержимому
- файла <filename>INDEX</filename> недостаточно, поскольку
- некоторые порты могут быть сконфигурированы на этапе
- сборки. Рекомендуется использовать полный поиск при
- помощи команды <command>grep -r</command>.</para>
- </step>
-
- <step>
- <para>Удалите старый порт, запись <varname>SUBDIR</varname>
- и строку, описывающую модуль.</para>
- </step>
-
- <step>
- <para>Добавьте строку в файл
- <filename>ports/MOVED</filename>.</para>
- </step>
- </procedure>
- </listitem>
-
- <listitem>
- <para>После репозиторного перемещения (операции
- <quote>переименования</quote>, когда после копирования
- старый вариант удаляется):</para>
-
- <procedure>
- <step>
- <para>Используйте процедуры из предыдущих двух пунктов для
- активации нового порта и удаления старого.</para>
- </step>
- </procedure>
- </listitem>
- </itemizedlist>
- </answer>
- </qandaentry>
- </qandadiv>
-
- <qandadiv>
- <title>Заморозка портов</title>
-
- <qandaentry>
- <question>
- <para>Что такое <quote>заморозка портов</quote>?</para>
- </question>
-
- <answer>
- <para>Перед выпуском релиза для сохранения целостности различных
- частей системы требуется на некоторое время ограничить
- коммиты в дерево портов. Этот процесс и называется
- <quote>заморозкой портов</quote>.</para>
-
- <para>За дополнительной информацией по поводу правил поведения
- во время заморозки обращайтесь к документу
- <link xlink:href="&url.base;/ru/portmgr/qa.html">Задачи контроля
- качества для Группы управления портами</link>.</para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>Сколько длится заморозка?</para>
- </question>
-
- <answer>
- <para>Обычно неделю или две.</para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>Что это значит для меня?</para>
- </question>
-
- <answer>
- <para>Во время заморозки вы не можете производить какие-либо
- коммиты в дерево портов без прямого разрешения группы порт-менеджеров.
- <quote>Прямое разрешение</quote> здесь означает, что вы послали
- свой патч группе порт-менеджеров и получили ответ
- <quote>Вперед, производите коммит</quote>.
- </para>
-
- <para>В период заморозки не все изменения могут быть внесены
- в дерево. За подробностями обращайтесь к документу
- <link xlink:href="&url.base;/ru/portmgr/qa.html">Задачи контроля
- качества для Группы управления портами</link>.
- </para>
-
- <para>Отметим, что у вас нет подразумеваемого разрешения
- исправлять неработающий порт в период заморозки только потому,
- что порт не работает.</para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>Откуда я узнаю о начале периода заморозки?</para>
- </question>
-
- <answer>
- <para>Обычно за 2-3 недели до начала периода заморозки
- кто-либо из группы порт-менеджеров посылает письмо с предупреждением об этом в
- &a.ports; и &a.committers;. Точное время начала периода
- заморозки определяется за несколько дней до собственно
- релиза, поскольку фиксируемое дерево портов должно быть
- синхронизировано с релизом, а точная дата выпуска
- определяется по ходу дела.</para>
-
- <para>Разумеется, после начала периода заморозки в
- &a.committers; будет отправлено еще одно предупреждение.</para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>Как узнать, когда период заморозки портов закончился?</para>
- </question>
-
- <answer>
- <para>Завершение периода заморозки анонсируется группой порт-менеджеров
- посылкой письма в &a.ports; и &a.committers; через несколько
- часов после релиза. Отметим, что факт выпуска релиза не
- означает автоматического завершения заморозки. Нам потребуется
- убедиться, что в последние минуты не произошло ничего
- непредвиденного, что заставило бы перевыпускать релиз.</para>
- </answer>
- </qandaentry>
- </qandadiv>
-
- <qandadiv>
- <title>Создание новой категории</title>
-
- <qandaentry>
- <question>
- <para>Какова процедура создания новой категории портов?</para>
- </question>
-
- <answer>
- <para>Разработчик, предлагающий новую категорию, должен
- подготовить детальное обоснование ее создания, в том числе
- описание причин, по которым текущий список категорий
- недостаточен, а также список портов, переносимых в новую
- категорию.</para>
-
- <para>Прежде чем отправлять запрос, помните, что процесс потребует
- приложения немалых сил от многих участников, затронет всякого,
- кто поддерживает актуальное состояние дерева портов целиком, и,
- наконец, что подобные предложения неизбежно вызовут споры и
- расхождения во мнениях.</para>
-
- <!-- XXX change to url.ru.books after merging 5.3.4 -->
- <para>Обратитесь к разделу
- <link xlink:href="&url.books.porters-handbook;/makefile-categories.html#PROPOSING-CATEGORIES">
- Proposing a New Category</link> Руководства по созданию портов.
- После передачи PR группе &a.portmgr; решение о создании категории
- остается за ней. В случае утверждения новой категории кто-либо
- из &a.portmgr; делает следующее:</para>
-
- <procedure>
- <step>
- <para>Производит нужные репозиторные копирования.</para>
- </step>
-
- <step>
- <para>Обновляет определения <varname>VALID_CATEGORIES</varname>
- в файле <filename>ports/Mk/bsd.port.mk</filename>.
- </para>
- </step>
-
- <step>
- <para>Возвращает PR вам.</para>
- </step>
- </procedure>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>Как устроен процесс?</para>
- </question>
-
- <answer>
- <para>Процедура является надстройкой над уже описанной процедурой
- репозиторного копирования отдельного порта.</para>
-
- <procedure>
- <step>
- <para>Обновите файлы <filename>Makefile</filename> для всех
- перенесенных портов. Пока не добавляйте новую категорию
- в процесс построения индекса.</para>
-
- <para>Для этого вам необходимо:</para>
- <procedure>
- <step>
- <para>Сменить для всех портов значение переменной
- <varname>CATEGORIES</varname> (это и было нашей
- целью, не правда ли?) Новая категория должна быть
- указано в списке <emphasis>первой</emphasis>, это
- поможет проверить, правильно ли установлена
- переменная <varname>PKGORIGIN</varname>.</para>
- </step>
-
- <step>
- <para>Выполните команду <command>make
- describe</command>. Поскольку процедура построения
- главного индекса <command>make index</command>,
- которую вам предстоит выполнить несколько позже,
- использует именно <command>make describe</command>,
- обнаружение ошибок сейчас сэкономит вам немало
- времени в будущем.</para>
- </step>
-
- <step>
- <para>Если вы хотите быть совсем честным, самое время
- запустить &man.portlint.1;.</para>
- </step>
- </procedure>
- </step>
-
- <step>
- <para>Проверьте корректность переменных
- <varname>PKGORIGIN</varname>. Система работы с портами
- использует значение переменной
- <varname>CATEGORIES</varname> для установки переменной
- <varname>PKGORIGIN</varname>, которая затем используется
- для связи установленных пакетов с каталогами дерева
- портов. Если эта связь установлена неправильно, перестанут
- правильно функционировать утилиты работы с портами, такие
- как &man.pkg.version.1; и &man.portupgrade.1;.</para>
-
- <para>Для проверки следует использовать скрипт
- <filename>chkorigin.sh</filename>: <command>env
- PORTSDIR=<replaceable>/path/to/ports</replaceable>
- sh -e <replaceable>/path/to/ports</replaceable>/Tools/scripts/chkorigin.sh
- </command>. Эта команда проверит
- <emphasis>каждый</emphasis> порт в дереве, в том числе и
- те, что не включены в процесс сборки, так что ее можно
- использовать сразу после репозиторного копирования.
- Совет: не забудьте проверить <varname>PKGORIGIN</varname>
- для зависимых от изменяемых вами портов!</para>
- </step>
-
- <step>
- <para>Протестируйте изменения локально, на вашей машине:
- закомментируйте строки <varname>SUBDIR</varname> для
- старых портов, затем разрешите обработку новой
- категории в файле <filename>ports/Makefile</filename>.
- Запустите <command>make checksubdirs</command> в
- затрагиваемых категориях. Наконец, выполните в каталоге
- <filename>ports/</filename> команду
- <command>make index</command>. Ее выполнение может занять
- до 40 минут даже на современной машине, однако, это
- необходимые затраты для того, чтобы не создать проблем
- для других.</para>
- </step>
-
- <step>
- <para>После завершения этой операции вы можете вносить в
- репозиторий изменения <filename>ports/Makefile</filename>
- для включения новой категории в процесс сборки, а также
- производить коммит изменений <filename>Makefile</filename>
- для старых категорий.</para>
- </step>
-
- <step>
- <para>Добавьте в файл <filename>CVSROOT-ports/modules</filename>
- строку
- <programlisting>ports_<replaceable>categoryname</replaceable>&nbsp;&nbsp;&nbsp;<replaceable>categoryname</replaceable></programlisting>
- </para>
-
- <para>Поля должны быть разделены табуляцией.</para>
-
- <para>Если <replaceable>categoryname</replaceable>
- содержит дефисы, замените их на подчеркивания.</para>
- </step>
-
- <step>
- <para>Поменяйте строки для затронутых модулей в файле
- <filename>CVSROOT-ports/modules</filename>.</para>
- </step>
-
- <step>
- <para>Добавьте нужные строки в файл
- <filename>ports/MOVED</filename>.</para>
- </step>
-
- <step>
- <para>Обновите инструкции для &man.cvsup.1;:</para>
-
- <itemizedlist>
- <listitem>
- <para>
- Добавьте категорию в файл
- <filename>distrib/cvsup/sup/README</filename>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Добавьте в каталог
- <filename>distrib/cvsup/sup/ports-<replaceable>categoryname</replaceable></filename>
- два файла:
- <filename>list.cvs</filename> и
- <filename>releases</filename>.</para>
- </listitem>
-
- <listitem>
- <para>
- Добавьте категорию в файл
- <filename>src/share/examples/cvsup/ports-supfile</filename>
- </para>
- </listitem>
- </itemizedlist>
-
- <para>
- (Обратите внимание: эти
- файлы расположены в репозитории src, а не ports).
- Если вы не являетесь коммиттером src, вам потребуется
- создать PR.</para>
- </step>
-
- <step>
- <para>Обновите список категорий, используемый в &man.sysinstall.8;
- в <filename>src/usr.sbin/sysinstall</filename>.</para>
- </step>
-
- <step>
- <para>Обновите документацию:</para>
-
- <itemizedlist>
- <listitem>
- <para>
- <link xlink:href="&url.books.porters-handbook;/makefile-categories.html#PORTING-CATEGORIES">
- Руководство FreeBSD по созданию портов</link></para>
- </listitem>
-
- <listitem>
- <para>
- Файл <filename>www/en/ports/categories</filename>.
- Обратите внимание, что строки в них сгруппированы по
- категориям, описанным в файле
- <filename>www/en/ports/categories.descriptions</filename>.
- </para>
- </listitem>
-
- <listitem>
- <para>Раздел Руководства, перечисляющий
- <link xlink:href="&url.books.handbook;/cvsup.html#CVSUP-COLLEC">
- cvsup коллекции</link>.</para>
- </listitem>
- </itemizedlist>
- <para>(Внимание: все эти файлы находятся в репозитории
- документации. Если вы не являетесь коммиттером в этой области,
- создайте PR в категории документации (doc).</para>
- </step>
-
- <step>
- <para>Старые варианты портов могут быть удалены из
- репозитория только после того, как все описанные процедуры
- будут завершены, и никто не жалуется на новую структуру.</para>
- </step>
- </procedure>
-
- <para>Специально обновлять <link xlink:href="&url.base;/ports/index.html">веб-страницу портов</link>
- при добавлении новой категории не нужно: изменение файла
- <filename>www/en/ports/categories</filename> будет учтено при
- ежедневной перестройке списка портов
- (<filename>INDEX</filename>) автоматически.
- </para>
- </answer>
- </qandaentry>
- </qandadiv>
-
- <qandadiv>
- <title>Прочие вопросы</title>
-
- <qandaentry>
- <question>
- <para>Как мне проверить, что мой порт корректно собирается?</para>
- </question>
-
- <answer>
- <para>В первую очередь проверьте свой порт по адресу
- <uri xlink:href="http://pointyhat.FreeBSD.org/errorlogs/">http://pointyhat.FreeBSD.org/errorlogs/</uri>.
- Там вы найдете журналы сборки пакетов на всех поддерживаемых
- архитектурах для большинства последних ветвей разработки.</para>
-
- <para>Впрочем, отсутствие вашего порта среди журналов с ошибками
- еще не значит, что он успешно собирается (например, может не
- собираться один из зависимых портов). Необходимую информацию вы
- можете найти на машине <systemitem>pointyhat</systemitem> в каталогах
- <filename>/a/portbuild/&lt;arch&gt;/&lt;major_version&gt;</filename>.
- Каждая пара архитектуры и базовой версии содержит следующие
- подкаталоги:</para>
-
-<programlisting>errors журналы ошибок последней сборки версии &lt;major_version&gt; на платформе &lt;arch&gt;
-logs все журналы последней сборки версии &lt;major_version&gt; на платформе &lt;arch&gt;
-packages свежесобранные пакеты для версии &lt;major_version&gt; на платформе &lt;arch&gt;
-bak/errors журналы ошибок последней полной сборки версии &lt;major_version&gt; на платформе &lt;arch&gt;
-bak/logs все журналы последней полной сборки версии &lt;major_version&gt; на платформе &lt;arch&gt;
-bak/packages пакеты последней полной сборки версии &lt;major_version&gt; на платформе &lt;arch&gt;</programlisting>
-
- <para>Общее правило: пакет, присутствующий в каталоге
- <filename>packages</filename> или каталоге
- <filename>logs</filename>, и при этом отсутствующий в
- <filename>errors</filename>, собрался успешно. (Именно каталоги
- <filename>errors</filename> вы видите на веб-сервере
- <systemitem>pointyhat</systemitem>).</para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>Я добавил новый порт. Нужно ли добавлять его в файл
- <filename>INDEX</filename>?</para>
- </question>
-
- <answer>
- <para>Нет. <filename>INDEX</filename> больше не хранится
- в CVS репозитории. Данный файл может быть сгенерирован
- с помощью команды <command>make index</command> или
- уже сгенерированная версия может быть загружена с помощью
- <command>make fetchindex</command>.</para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>Какие еще файлы я не должен трогать?</para>
- </question>
-
- <answer>
- <para>Любой файл в на верхнем уровне <filename>ports/</filename>,
- а также все файлы в каталогах, имена которых начинаются с
- прописной буквы (например, <filename>Mk/</filename>,
- <filename>Tools/</filename> и т.п.). В частности, упаси вас
- Бог трогать файлы <filename>ports/Mk/bsd.port*.mk</filename>,
- если вы не хотите привести порт-менеджеров в ярость!</para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>Каков корректный порядок обновления порта, когда его
- исходный архив поменялся, но не сменил имя?</para>
- </question>
-
- <answer>
- <para>При возникновении ситуации, когда автор обновляет
- дистрибутивный архив без изменения идентификатора версии,
- сообщение о коммите должно содержать аннотацию различий между
- предыдущим и обновленным состоянием архива, чтобы можно было
- убедиться, что архив не испорчен и не подменен злоумышленником.
- Если текущая версия порта существовала достаточное время, копии
- архива будут доступны на ftp-серверах проекта; в противном
- случае следует связаться с автором или мейнтейнером порта для
- выяснения причин замены архива.</para>
- </answer>
- </qandaentry>
- </qandadiv>
- </qandaset>
- </sect1>
-
- <sect1 xml:id="perks">
- <title>Пряники и прочие льготы</title>
-
- <para>Увы, льгот, возникающих от того, что вы являетесь коммиттером,
- не так уж много. Пожалуй, единственным несомненным долговременным
- преимуществом будет признание вас как компетентного специалиста.
- Тем не менее, кое-какие льготы все же существуют:</para>
-
- <variablelist>
-
- <varlistentry>
- <term>Прямой доступ к машине <systemitem>cvsup-master</systemitem></term>
-
- <listitem>
- <para>Будучи коммиттером, вы можете обратиться к &a.kuriyama.email;, чтобы
- получить доступ к машине
- <systemitem class="fqdomainname">cvsup-master.FreeBSD.org</systemitem>, приложив
- вывод команды <command>cvpasswd
- <replaceable>yourusername</replaceable>@FreeBSD.org
- freefall.FreeBSD.org</command>. Обратите внимание: в командной
- строке вы должны указать <systemitem>freefall.FreeBSD.org</systemitem>,
- хотя реальным сервером будет <systemitem>cvsup-master</systemitem>.
- Доступом к <systemitem>cvsup-master</systemitem> не следует злоупотреблять:
- это весьма загруженная машина.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Бесплатная подписка на комплект из 4 CD или DVD</term>
-
- <listitem>
- <para>Компания <link xlink:href="http://www.freebsdmall.com">FreeBSD Mall,
- Inc.</link> предоставляет для всех коммиттеров FreeBSD возможность
- бесплатной подписки на выпуски FreeBSD. Порядок подписки появляется
- в списке рассылки <email>developers@FreeBSD.org</email> после
- каждого релиза.</para>
- </listitem>
- </varlistentry>
-
- </variablelist>
- </sect1>
-
- <sect1 xml:id="misc">
- <title>Прочие вопросы</title>
-
- <qandaset>
- <qandaentry>
- <question>
- <para>Почему не следует вносить малозначимые изменения в ветви
- разработчика (vendor branches)?</para>
- </question>
-
- <answer>
- <itemizedlist>
- <listitem>
- <para>После этого действия каждый новый релиз от разработчика
- требует ручного приложения и объединения патчей.</para>
- </listitem>
-
- <listitem>
- <para>Что хуже, каждый новый релиз от разработчика требует
- ручной <emphasis>проверки</emphasis> приложенных патчей.</para>
- </listitem>
-
- <listitem>
- <para>Опция CVS <option>-j</option> не всегда хорошо работает.
- Можете спросить &a.obrien.email;, он расскажет вам жутких
- историй.</para>
- </listitem>
- </itemizedlist>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>Как мне добавить файл в ветвь CVS?</para>
- </question>
-
- <answer>
- <para>Для добавления файла в ветви просто обновите исходные файлы
- до нужной ветви, а затем используйте команду
- <command>cvs add</command>. Например, если мы хотите перенести
- файл <filename>src/sys/alpha/include/smp.h</filename> из ветви
- HEAD в ветвь RELENG_6, в которой он пока не существует, можно
- использовать следующую последовательность действий:</para>
-
- <example>
- <title>MFC для нового файла</title>
-
- <screen>&prompt.user; <userinput>cd sys/alpha/include</userinput>
-&prompt.user; <userinput>cvs update -rRELENG_6</userinput>
-cvs update: Updating .
-U clockvar.h
-U console.h
-...
-&prompt.user; <userinput>cvs update -kk -Ap smp.h &gt; smp.h</userinput>
-===================================================================
-Checking out smp.h
-RCS: /usr/cvs/src/sys/alpha/include/smp.h,v
-VERS: 1.1
-***************
-&prompt.user; <userinput>cvs add smp.h</userinput>
-cvs add: scheduling file `smp.h' for addition on branch `RELENG_6'
-cvs add: use 'cvs commit' to add this file permanently
-&prompt.user; <userinput>cvs commit</userinput>
- </screen>
- </example>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>Какую <quote>мета-информацию</quote> я должен включать в
- сообщения для коммита?</para>
- </question>
-
- <answer>
- <para>Помимо информативного описания содержания коммита вам может
- потребоваться включить в сообщение дополнительную
- информацию.</para>
-
- <para>Она состоит из одной или нескольких строк вида: ключевое слово
- или словосочетание, двоеточие, табуляции для форматирования,
- собственно дополнительная информация.</para>
-
- <para>Ключевыми словами могут быть:</para>
-
- <informaltable frame="none" pgwide="1">
- <tgroup cols="2">
- <tbody>
- <row>
- <entry><literal>PR:</literal></entry>
- <entry>Идентификатор сообщения об ошибке, затрагиваемого
- (как правило, закрываемого) данным коммитом.</entry>
- </row>
-
- <row>
- <entry><literal>Submitted by:</literal></entry>
- <entry>Имя и e-mail адрес приславшего исправление; для
- коммиттеров&nbsp;&mdash; просто имя пользователя в
- кластере FreeBSD.</entry>
- </row>
-
- <row>
- <entry><literal>Reviewed by:</literal></entry>
- <entry>Имя и e-mail адрес того или тех, кто рецензировал
- изменения; для коммиттеров&nbsp;&mdash; имя пользователя в
- кластере FreeBSD. Если изменения были посланы в список
- рассылки на рецензию и получили одобрение, имя списка
- рассылки.</entry>
- </row>
-
- <row>
- <entry><literal>Approved by:</literal></entry>
- <entry>Имя и e-mail адрес того или тех, кто одобрил
- изменение; как и прежде, для коммиттеров просто имя
- пользователя в кластере. Обычной практикой является
- получение одобрения для коммитов в новые для вас области
- дерева. Кроме того, в период перед каждым релизом все
- коммиты <emphasis>должны</emphasis> быть одобрены группой
- выпускающих инженеров. В случае ваших первых коммитов
- вы должны получить одобрение на них у вашего ментора, и
- упомянуть его в виде
- <quote><replaceable>username-of-mentor</replaceable>
- <literal>(mentor)</literal></quote>.
- </entry>
- </row>
-
- <row>
- <entry><literal>Obtained from:</literal></entry>
- <entry>Имя проекта, из исходного кода которого было взято
- изменение.</entry>
- </row>
-
- <row>
- <entry><literal>MFC after:</literal></entry>
-
- <entry>Если вы хотите получать по почте напоминания об
- <acronym>MFC</acronym>, укажите число дней, недель или
- месяцев с момента изначального коммита, через которое
- вы планируете произвести <acronym>MFC</acronym>.</entry>
- </row>
-
- <row>
- <entry><literal>Security:</literal></entry>
-
- <entry>Если ваши изменения затрагивают вопросы безопасности
- или исправляют какие-либо уязвимости, укажите ссылки на
- опубликованные отчеты или описание проблемы.</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <example>
- <title>Сообщение для коммита, основанного на PR</title>
-
- <para>Вы собираетесь внести коммит, основанный на PR, присланном
- John Smith и содержащим патч для исправления проблемы. Ваше
- сообщение должно заканчиваться примерно такими строками:</para>
-
- <programlisting>...
-
-PR: foo/12345
-Submitted by: John Smith &lt;John.Smith@example.com&gt;</programlisting>
- </example>
-
- <example>
- <title>Сообщение для коммита, требующего рецензии</title>
-
- <para>Вы собираетесь изменить подсистему работы с виртуальной
- памятью. Вы опубликовали предполагаемые изменения в
- соответствующем списке рассылки (в данном случае
- <literal>freebsd-arch</literal>), и изменения были
- одобрены.</para>
-
- <programlisting>...
-
-Reviewed by: -arch</programlisting>
- </example>
-
- <example>
- <title>Сообщение для коммита, требующего одобрения</title>
-
- <para>Вы намерены произвести коммит в область дерева, для которой
- определен ведущий (MAINTAINER). Вы скоординировали усилия с
- мейнтейнером, и он отреагировал <quote>Отлично. Производи
- коммит.</quote></para>
-
- <programlisting>...
-
-Approved by: <replaceable>abc</replaceable></programlisting>
-
- <para>Где <replaceable>abc</replaceable> имя пользователя,
- одобрившего ваш коммит.</para>
- </example>
-
- <example>
- <title>Сообщение для коммита, использующего код OpenBSD</title>
-
- <para>Вы собираетесь внести изменение, основанное на коде,
- использованном проектом OpenBSD.</para>
-
- <programlisting>...
-
-Obtained from: OpenBSD</programlisting>
- </example>
-
- <example>
- <title>Сообщение для коммита, планирующего интеграцию из
- &os.current; в &os.stable; через некоторое время</title>
-
- <para>Вы хотите внести изменения, которые должны быть интегрированы
- из &os.current; в ветвь &os.stable; через две недели.</para>
-
- <programlisting>...
-
-MFC after: <replaceable>2 weeks</replaceable></programlisting>
-
- <para>Где <replaceable>2</replaceable> является количеством дней,
- недель или месяцев, через которое вы планируете интегрировать
- (<acronym>MFC</acronym>) в &os.stable;. В качестве
- <replaceable>weeks</replaceable> может быть использовано
- <literal>week</literal>, <literal>weeks</literal>,
- <literal>month</literal>, <literal>months</literal>, либо
- этот параметр может быть опущен (при этом подразумевается
- <replaceable>X</replaceable> дней).</para>
- </example>
-
- <para>В отдельных случаях вам потребуется комбинировать приведенные
- примеры.</para>
-
- <para>Рассмотрим ситуацию, когда некто прислал сообщение об ошибке,
- содержащее код из проекта NetBSD. Вы заинтересовались этим
- случаем, но он расположен в той части дерева, в которой вы обычно
- не работаете, так что вы решаете выдать изменения на рассмотрение
- списка рассылки <literal>arch</literal>. Поскольку изменения были
- достаточно сложны, вы решаете интегрировать их
- (<acronym>MFC</acronym>) через месяц, чтобы обеспечить адекватное
- время для тестирования.</para>
-
- <para>В описанном случае сообщения для коммита может выглядеть
- примерно так:</para>
-
- <programlisting>PR: foo/54321
-Submitted by: John Smith &lt;John.Smith@example.com&gt;
-Reviewed by: -arch
-Obtained from: NetBSD
-MFC after: 1 month</programlisting>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>Как мне получить доступ к <systemitem class="fqdomainname">people.FreeBSD.org</systemitem> для того чтобы разместить
- там персональную информацию или информацию о моих проектах?</para>
- </question>
-
- <answer>
- <para><systemitem class="fqdomainname">people.FreeBSD.org</systemitem>&nbsp;&mdash;
- синоним для <systemitem class="fqdomainname">freefall.FreeBSD.org</systemitem>.
- Просто создайте каталог <filename>public_html</filename>. Все,
- что вы разместите в нем, будет автоматически доступно по адресу
- <uri xlink:href="http://people.FreeBSD.org/">http://people.FreeBSD.org/</uri>.</para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>Где расположены архивы списков рассылки?</para>
- </question>
-
- <answer>
- <para>Списки рассылки архивируются в иерархию каталогов
- <filename>/g/mail</filename>, видимую на всех машинах кластера как
- <filename>/hub/g/mail</filename> (см. &man.pwd.1;).</para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>Мне бы хотелось стать ментором для нового коммиттера. Какого
- технологического процесса я должен придерживаться?</para>
- </question>
-
- <answer>
- <para>Обратитесь к документу <link xlink:href="http://www.freebsd.org/internal/new-account.html">Процедура
- создания нового аккаунта</link>.</para>
- </answer>
- </qandaentry>
- </qandaset>
- </sect1>
-</article>
diff --git a/ru_RU.KOI8-R/articles/contributing/Makefile b/ru_RU.KOI8-R/articles/contributing/Makefile
deleted file mode 100644
index 7154591fa3..0000000000
--- a/ru_RU.KOI8-R/articles/contributing/Makefile
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# The FreeBSD Russian Documentation Project
-#
-# $FreeBSD$
-# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/contributing/Makefile,v 1.1 2005/05/25 17:54:31 andy Exp $
-#
-# Article: Contributing to FreeBSD
-#
-# Original revision: r39631
-#
-
-DOC?= article
-
-FORMATS?= html
-WITH_ARTICLE_TOC?= YES
-
-INSTALL_COMPRESSED?=gz
-INSTALL_ONLY_COMPRESSED?=
-
-SRCS= article.xml
-
-URL_RELPREFIX?= ../../../..
-DOC_PREFIX?= ${.CURDIR}/../../..
-
-.include "${DOC_PREFIX}/share/mk/doc.project.mk"
diff --git a/ru_RU.KOI8-R/articles/contributing/article.xml b/ru_RU.KOI8-R/articles/contributing/article.xml
deleted file mode 100644
index 5c26fa85b0..0000000000
--- a/ru_RU.KOI8-R/articles/contributing/article.xml
+++ /dev/null
@@ -1,535 +0,0 @@
-<?xml version="1.0" encoding="koi8-r"?>
-<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
- "http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
-<!--
- The FreeBSD Russian Documentation Project
-
- $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/contributing/article.xml,v 1.3 2006/03/28 16:40:29 gad Exp $
-
- Original revision: r43184
--->
-<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="ru">
- <info><title>Участие в проекте FreeBSD</title>
-
-
- <abstract>
- <para>В этой статье описаны различные способы, которыми отдельные лица и
- организаций могут принять участие в Проекте FreeBSD.</para>
- </abstract>
-
- <authorgroup>
- <author><personname><firstname>Джордан</firstname><surname>Хаббард</surname></personname><contrib>Текст предоставил </contrib></author>
- </authorgroup>
-
- <legalnotice xml:id="trademarks" role="trademarks">
- &tm-attrib.freebsd;
-
- &tm-attrib.ieee;
-
- &tm-attrib.general;
- </legalnotice>
-
- <pubdate>$FreeBSD$</pubdate>
-
- <releaseinfo>$FreeBSD$</releaseinfo>
- </info>
-
- <indexterm><primary>участие</primary></indexterm>
-
- <para>Итак, вы хотите внести свой вклад во FreeBSD? Это великолепно!
- Жизнеспособность FreeBSD <emphasis>основана</emphasis> на помощи её
- пользователей. Ваша помощь не только принимается, она жизненно необходима
- для продолжения роста FreeBSD.</para>
-
- <para>Несмотря на уверения некоторых людей, вам не нужно быть гениальным
- программистом или персоной, лично связанной с руководящей группой FreeBSD,
- чтобы ваша помощь была принята. FreeBSD разрабатывает большое и
- увеличивающееся количество участников со всего мира, самого разного
- возраста и разных областей технической экспертизы. Работы, которую
- необходимо сделать, всегда больше, чем разработчиков, могущих её выполнить,
- и дополнительная помощь всегда приветствуется.</para>
-
- <para>Проект FreeBSD занимается операционной системой в целом, а не только
- ядром или несколькими отдельными утилитами. Таким образом, в нашем
- <filename>TODO</filename>-списке широкий спектр задач: от документации,
- бета-тестирования и презентаций до программы установки системы и
- специфических разработок уровня ядра. Люди любого уровня практически в
- любой области определённо смогут помочь проекту.</para>
-
- <para>Коммерческие структуры, связанные с использованием FreeBSD, также
- приглашаются к диалогу. Нужны ли вам особые расширения, для работы вашего
- продукта? Вы увидите, что мы отвечаем на ваши запросы, если они не слишком
- необычны. Вы работаете над дополнительными продуктами? Дайте нам знать!
- Мы сможем работать вместе над некоторыми его аспектами. Мир свободного
- программного обеспечения ставит под сомнение многие существующие
- представления о том, как программного обеспечение разрабатывается,
- продаётся и поддерживается, и мы настоятельно просим вас посмотреть на
- него ещё раз.</para>
-
- <sect1 xml:id="contrib-what">
- <title>Что нужно</title>
-
- <para>В следующем перечне представлены задачи и подпроекты, являющиеся
- некоторым отражением различных списков <filename>TODO</filename> и
- запросов пользователей.</para>
-
- <sect2 xml:id="non-programmer-tasks">
- <title>Текущие задачи не для программистов</title>
-
- <para>Многие люди, связанные с FreeBSD, не являются программистами. В
- Проекте участвуют создатели документации, Web-дизайнеры и специалисты
- по поддержке пользователей. Все, что им нужно для участия, это своё
- время и желание учиться.</para>
-
- <orderedlist>
- <listitem>
- <para>Периодически читайте FAQ и Руководство. Если что-то описано
- плохо, устарело или даже полностью неправильно, дайте нам знать.
- Ещё лучше, если вы пришлёте нам исправление (выучить Docbook не так
- сложно, но и против посланий в формате ASCII никто возражать не
- будет).</para>
- </listitem>
-
- <listitem>
- <para>Помогите перевести документацию FreeBSD на ваш родной язык.
- Если документация на вашем языке уже существует, вы можете помочь
- перевести дополнительные документы или проверить, не устарели ли
- переводы. Первым делом взгляните на <link xlink:href="&url.books.fdp-primer;/translations.html">FAQ по
- переводам</link> в Учебнике проекта документирования FreeBSD. Вас
- не призывают перевести все документы FreeBSD &mdash; как
- доброволец, вы можете делать столько переводов, сколько захотите.
- Если кто-то начал перевод, другие всегда присоединятся. Если у вас
- есть время и желание перевести одну часть документации, пожалуйста,
- переведите инструкции по установке.</para>
- </listitem>
-
- <listitem>
- <para>Время от времени (или даже регулярно) читайте &a.questions; и
- &ng.misc;. Вам может понравиться делиться своим опытом и помогать
- людям решать их проблемы; иногда вы сможете узнать для себя что-то
- новое! Эти форумы могут также стать источником идей, над которыми
- вам стоит поработать.</para>
- </listitem>
- </orderedlist>
- </sect2>
-
- <sect2 xml:id="ongoing-programmer-tasks">
- <title>Текущие задачи для программистов</title>
-
- <para>Большинство задач, перечисленных здесь, требуют либо значительных
- затрат времени, либо глубоких знаний ядра FreeBSD, либо того и другого.
- Однако имеется также много полезных задач, которые подойдут для
- <quote>воскресных хакеров</quote>.</para>
-
- <orderedlist>
- <listitem>
- <para>Если вы работаете с FreeBSD-CURRENT и обладаете хорошим
- подключением к Internet, то существует машина <systemitem class="fqdomainname">current.FreeBSD.org</systemitem>, которая строит полный
- релиз ежедневно&mdash;сейчас и всегда. Попробуйте установить
- самый последний релиз с этой машины и сообщите обо всех
- обнаруженных при этом ошибках.</para>
- </listitem>
-
- <listitem>
- <para>Читайте &a.bugs;. Здесь может встретиться проблема, которую
- вы сможете конструктивно прокомментировать или патчи, которые вы
- можете протестировать. Либо вы можете даже попытаться исправить
- какую-то проблему самостоятельно.</para>
- </listitem>
-
- <listitem>
- <para>Если вы знаете о существовании каких-либо исправлений ошибок,
- успешно применённых к -CURRENT, но ещё не перенесённых в -STABLE
- после достаточно большого интервала времени (обычно несколько
- недель), направьте коммиттеру вежливое напоминание.</para>
- </listitem>
-
- <listitem>
- <para>Перенос стороннего программного обеспечения в каталог
- <filename>src/contrib</filename> дерева
- исходных текстов.</para>
- </listitem>
-
- <listitem>
- <para>Проверка актуальности кода в каталоге
- <filename>src/contrib</filename>.</para>
- </listitem>
-
- <listitem>
- <para>Построение из дерева исходных текстов (или её части) с
- включением режима дополнительных предупреждений, избавление от
- них.</para>
- </listitem>
-
- <listitem>
- <para>Исправление предупреждений от портов, которые используют
- недопустимые вызовы типа <function>gets()</function> или включают
- файл объявлений <filename>malloc.h</filename>.</para>
- </listitem>
-
- <listitem>
- <para>Если вы создавали порты и вам приходилось делать специфичные
- для &os; исправления, пошлите ваши патчи авторам оригинального
- программного обеспечения (это упростит вам жизнь при выпуске
- следующей версии).</para>
- </listitem>
-
- <listitem>
- <para>Найдите копии официальных стандартов, например, &posix;. Вы
- можете найти несколько ссылок на них на странице Web-сайта <link xlink:href="&url.base;/projects/c99/index.html">Проекта соответствия
- FreeBSD стандартам C99 &amp; POSIX</link>. Сравните поведение FreeBSD
- с тем, что определено стандартом. Если реакция отличается,
- особенно в незначительных или непонятных разделах спецификации,
- направьте об этом PR. Если можете, найдите, как исправить это и
- включите в PR патч. Если вы полагаете, что в стандарте есть
- ошибка, направьте запрос его разработчикам.</para>
- </listitem>
-
- <listitem>
- <para>Предложите дополнительные задачи для этого списка!</para>
- </listitem>
- </orderedlist>
- </sect2>
-
- <sect2>
- <title>Работа с базой сообщений об ошибках PR</title>
-
- <indexterm>
- <primary>база сообщений об ошибках</primary>
- </indexterm>
-
- <para><link xlink:href="http://www.FreeBSD.org/cgi/query-pr-summary.cgi">Список
- сообщений об ошибках FreeBSD</link> содержит все актуальные
- сообщения о проблемах и запросы на улучшения, которые были посланы
- пользователями FreeBSD. База данных PR содержит задачи как для
- программистов, так и не для них. Просмотрите открытые PR, найдите те,
- что привлекут ваше внимание.
- Некоторые из них могут быть очень простыми, требующими лишь ещё одной
- пары глаз, чтобы посмотреть и подтвердить, что предлагаемое в PR
- исправление достаточно. Другие могут быть гораздо сложнее и даже вовсе
- не содержать исправления.</para>
-
- <para>Начните с тех PR, которые никому ещё не назначены. Если PR уже
- за кем-то закреплено, но содержит проблему, которую вы можете решить,
- направьте по электронной почте письмо человеку, которому назначено это
- PR, и спросите, можете ли вы поработать над ней&mdash;у них уже может
- готов патч для тестирования или какие-то идеи, которые можно вместе
- обсудить.</para>
- </sect2>
-
- <sect2>
- <title>Выберите один из пунктов со странички <quote>идей</quote></title>
-
- <para><link xlink:href="http://wiki.freebsd.org/IdeasPage">Список проектов
- и идей для добровольцев</link> также доступен для людей,
- желающих помочь проекту &os;. Список постоянно обновляется и
- содержит пункты, как для программистов, так и для не
- программистов, с информацией о каждом проекте.</para>
- </sect2>
-
- </sect1>
-
- <sect1 xml:id="contrib-how">
- <title>Как принять участие в работе</title>
-
- <para>Характер участия в работе над системой обычно подпадает под одну или
- несколько из следующих 5 категорий:</para>
-
- <sect2 xml:id="contrib-general">
- <title>Сообщения об ошибках и отзывы общего характера</title>
-
- <para>Идеи или пожелания <emphasis>общего</emphasis> технического
- характера должны направляться по электронной почте в адрес &a.hackers;.
- Подобным же образом тот, кто интересуется такими вещами (и устойчив к
- <emphasis>большому</emphasis> потоку почты!) может подписаться на
- список рассылки &a.hackers;. Обратитесь к <link xlink:href="&url.books.handbook;/eresources.html#ERESOURCES-MAIL">Руководству
- FreeBSD</link> для получения дополнительной информации об этом и
- других списках рассылки.</para>
-
- <para>Если вы нашли ошибку или предлагаете внести какое-то конкретное
- исправление, пожалуйста, отправьте сообщение при помощи программы
- &man.send-pr.1; или её <link xlink:href="&url.base;/send-pr.html">
- Web-эквивалента</link>. Постарайтесь заполнить все поля в сообщении
- об ошибке. Если его размер оно не превышает 65 Кбайт, включите все
- патчи непосредственно в сообщение. Если патч предназначен для дерева
- исходных текстов, поместите <literal>[PATCH]</literal> в теме
- сообщения. При включении патчей <emphasis>не используйте</emphasis>
- технику cut-and-paste, потому что при этом символы табуляции
- преобразуются в пробелы и патч становится непригодным к использованию.
- Если объём патчей превышает 20 Кбайт, лучше включать их в сообщение
- в сжатом виде, для чего упакуйте их (например, при помощи
- &man.gzip.1; или &man.bzip2.1;) и обработайте архив утилитой
- &man.uuencode.1;.</para>
-
- <para>После отправки сообщения вы должны получить подтверждение и номер
- для отслеживания. Сохраните этот номер, чтобы использовать его в
- дальнейшем при направлении подробностей о проблеме по электронной почте
- на адрес &a.bugfollowup;. Используйте номер в качестве темы письма, например,
- <literal>"Re: kern/3377"</literal>. Дополнительная информация о любом
- сообщении об ошибке должна направляться этим способом.</para>
-
- <para>Если вы не получили подтверждения в течение разумного периода
- времени (от 3 дней до недели, в зависимости от вашего подключения к
- электронной почты) или по какой-то причине не можете воспользоваться
- командой &man.send-pr.1;, то можете попросить кого-нибудь направить
- сообщение за вас на адрес &a.bugs;.</para>
-
- <para>Прочтите также <link xlink:href="&url.articles.problem-reports;/article.html">эту статью</link>,
- чтобы узнать, как писать хорошие сообщения о проблемах.</para>
- </sect2>
-
- <sect2>
- <title>Изменения в документации</title>
-
- <indexterm>
- <primary>посылка документации</primary>
- </indexterm>
-
- <para>Изменения в документации обсуждаются в &a.doc;. Пожалуйста,
- посмотрите <link xlink:href="&url.books.fdp-primer;/index.html">Учебник
- Проекта документирования FreeBSD</link> для получения полных
- инструкций. Посылайте свои пожелания и изменения (принимаются даже
- самые небольшие!) при помощи &man.send-pr.1;, как это описано в разделе
- о <link linkend="contrib-general">сообщениях об ошибках и общих
- пожеланиях</link>.</para>
- </sect2>
-
- <sect2>
- <title>Изменения к имеющемуся исходному коду</title>
-
- <indexterm><primary>FreeBSD-CURRENT</primary></indexterm>
-
- <para>Добавление нового исходного кода или внесение изменений в
- существующий является не такой простой задачей, и зависит во многом от
- того, насколько вы далеки от текущего состояния разработок во FreeBSD.
- Существуют специальные промежуточные релизы FreeBSD, известные как
- <quote>FreeBSD-CURRENT</quote>, которые доступны несколькими разными
- способами, удобными разработчикам, активно работающим над системой.
- Обратитесь к <link xlink:href="&url.books.handbook;/current-stable.html">
- Руководству FreeBSD</link> для получения дополнительной информации
- о получении и использовании FreeBSD-CURRENT.</para>
-
- <para>Если вы работаете с несколько устаревшими исходными текстами, то
- ваши изменения иногда могут оказаться уже ненужными или слишком
- большими, чтобы повторно интегрировать их во FreeBSD. Уменьшить такой
- риск можно, подписавшись на списки рассылки &a.announce; и &a.current;,
- в которых обсуждается текущее состояние системы.</para>
-
- <para>Предположим, что вы смогли получить актуальные исходные
- тексты, на базе которых делали свои изменения. Тогда следующим шагом
- является создание набора файлов, отражающих ваши изменения для их
- посылки тем, кто отвечает за поддержку FreeBSD. Это делается при
- помощи команды &man.diff.1;.</para>
-
- <para>Предпочтительным форматом &man.diff.1; для посылки патчей является
- унифицированная выдача, создаваемая командой <command>diff
- -u</command>.</para>
-
- <indexterm>
- <primary><command>diff</command></primary>
- </indexterm>
-
- <para>К примеру:</para>
-
- <screen>&prompt.user; <userinput>diff -u oldfile newfile</userinput></screen>
-
- <para>или</para>
-
- <screen>&prompt.user; <userinput>diff -u -r -N olddir newdir</userinput></screen>
-
- <para>создаст набор патчей в унифицированном формате для конкретного
- файла с исходным текстом или для иерархии каталогов.</para>
-
- <para>Дополнительную информацию можно найти в &man.diff.1;.</para>
-
- <para>После того, как вы получили набор diff-файлов (которые вы можете
- протестировать командой &man.patch.1;), вы должны прислать их для
- включения во FreeBSD. Воспользуйтесь программой &man.send-pr.1;, как
- это описано в разделе о <link linkend="contrib-general">сообщениях об
- ошибках и общих замечаниях</link>. <emphasis>Не посылайте</emphasis>
- diff-файлы в список рассылки &a.hackers;, они будут потеряны! Нам
- очень нужна ваша помощь (это добровольный проект!); из-за нашей
- занятости мы не сможем рассмотреть его сразу, и он будет находиться в
- базе данных PR, пока мы не сделаем это. Укажите на вашу посылку,
- включив строку <literal>[PATCH]</literal> в тему сообщения.</para>
-
- <indexterm>
- <primary><command>uuencode</command></primary>
- </indexterm>
-
- <para>Если вы считаете, что это нужно (к примеру, вы добавляли, удаляли
- или переименовывали файлы), то объедините ваши изменения в
- <command>tar</command>-файл и обработайте его программой
- &man.uuencode.1;. Принимаются также и архивы, созданные программой
- &man.shar.1;.</para>
-
- <para>Если ваше изменение потенциально может оказаться сомнительным,
- например, вы не уверены в отсутствии лицензионных ограничений
- относительно его распространения, то вы должны послать его напрямую
- в список
- рассылки &a.core;, а не через &man.send-pr.1;. В списке рассылки
- &a.core; участвует гораздо меньшее количество людей, которые выполняют
- основную ежедневную работу над FreeBSD. Заметьте, что эта группа
- также <emphasis>очень занята</emphasis>, так что сюда письма нужно
- посылать только в случае действительной необходимости.</para>
-
- <para>Пожалуйста, обратитесь к справке по &man.intro.9; и &man.style.9;
- для получения некоторой информации о стиле кодирования. Мы надеемся,
- что вы хотя бы примете эту информацию к сведению перед тем, как
- прислать нам свой код.</para>
- </sect2>
-
- <sect2>
- <title>Новый код или большие дополнительные пакеты</title>
-
- <para>В случае значительного объёма присланного вами кода и
- соответствующей работы, либо добавления к FreeBSD важной новой функции,
- становится практически всегда необходимо посылать изменения в виде
- tar-файлов, обработанных uuencode, или передавать их на Web-сайт или
- FTP-сервер для получения другими людьми. Если у вас нет доступа к
- Web- или FTP-серверам, попросите в соответствующем списке рассылке
- FreeBSD кого-нибудь разместить изменения за вас.</para>
-
- <para>При работе с большим объёмом кода неизбежно возникает вопрос о
- соблюдении авторских прав. Допустимыми лицензионными соглашениями для
- кода, включаемого во FreeBSD, являются следующие:</para>
-
- <orderedlist>
- <listitem>
- <para>Лицензионное соглашение BSD<indexterm><primary>лицензионное
- соглашение BSD</primary></indexterm>. Оно является самым
- предпочтительным из-за <quote>отсутствия дополнительных
- условий</quote> и общей привлекательности для коммерческих
- компаний. Проект FreeBSD далёк от того, чтобы выступать против
- коммерческого использования, но активно популяризирует такое
- пересечение коммерческих интересов, которое позволит постепенно
- запустить механизм инвестиций во FreeBSD.</para>
- </listitem>
-
- <listitem>
- <para>
- <indexterm>
- <primary>GPL</primary>
- <see>GNU General Public License</see>
- </indexterm>
-
- <indexterm><primary>GNU General Public License</primary></indexterm>
-
- GNU General Public License, или <quote>GPL</quote>. Это
- лицензионное соглашение не очень популярно у нас из-за объёма
- требований, которые нужно выполнять всем, кто собирается
- использовать код в коммерческих целях. Однако, учитывая абсолютное
- превосходство объёма этого кода (компилятор, ассемблер, инструменты
- форматирования текста и так далее) было бы глупо отказываться от
- дополнительных разработок, подпадающих под действие этой лицензии.
- Код, распространяемый по условиям лицензионного соглашения GPL
- также размещается в отдельной части дерева исходных текстов, в
- <filename>/sys/gnu</filename> или
- <filename>/usr/src/gnu</filename>, и поэтому
- легко идентифицируется всяким, для кого GPL представляет
- проблему.</para>
- </listitem>
- </orderedlist>
-
- <para>Разработки, подпадающие под действие других типов лицензионных
- соглашений, должны быть тщательно просмотрены перед принятием
- решения об их включении во FreeBSD. Разработки, на которые
- распространяются жёсткие ограничения коммерческих лицензионных
- соглашений, обычно отвергаются, а авторам всегда предлагается
- распространять подобные изменения по собственным каналам.</para>
-
- <para>Для того, чтобы на вашу работу распространялись условия
- лицензионного ограничения <quote>в стиле BSD</quote>, разместите
- следующий текст в самом начале каждого файла с исходными текстами,
- которые вы хотите защитить, заменив текст между <literal>%%</literal>
- соответствующей информацией:</para>
-
- <programlisting>Copyright (c) %%полные_номера_годов%%
- %%ваше_имя%%, %%ваш_штат%% %%ваш_почтовый_индекс%%.
- All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer as
- the first lines of this file unmodified.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY %%your_name_here%% ``AS IS'' AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL %%your_name_here%% BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- &dollar;&os;&dollar;</programlisting>
-
- <para>Для вашего удобства копия этого текста размещена в файле
- <filename>/usr/share/examples/etc/bsd-style-copyright</filename>.
- </para>
- </sect2>
-
- <sect2>
- <title>Деньги, оборудование или Internet-доступ</title>
-
- <para>Мы всегда с удовольствием примем материальную помощь, нужную для
- дальнейшего существования Проекта FreeBSD, а в добровольном проекте,
- типа нашего маленькая помощь может послужить долго! Безвозмездная
- передача вычислительной техники также очень важна для расширения списка
- поддерживаемого периферийного оборудования, так как обычно у нас нет
- средств для самостоятельного его приобретения.</para>
-
- <sect3 xml:id="donations">
- <title>Финансовая помощь</title>
-
- <para>The FreeBSD Foundation является некоммерческой организацией,
- освобождённой от уплаты налогов, созданной с целью реализации целей
- Проекта FreeBSD. Как организация типа 501(c)3, Фонд обычно
- освобождается от федерального налога США на прибыль. Суммы
- безвозмездных пожертвований таким организациям часто вычитаются
- из общей суммы налогооблагаемой прибыли.</para>
-
- <para>Финансовая помощь может быть направлена в виде чеков на адрес:
- <address>
- The FreeBSD Foundation
- <street>P.O. Box 20247</street>
- <city>Boulder</city>,
- <state>CO</state> <postcode>80308</postcode>
- <country>USA</country>
- </address>
- </para>
-
- <para>The FreeBSD Foundation теперь может принимать помощь через Web
- по системе PayPal. Для направления помощи, пожалуйста, посетите
- <link xlink:href="http://www.freebsdfoundation.org">Web-сайт</link>
- Фонда.</para>
-
- <para>Дополнительную информацию о Фонде FreeBSD можно найти на
- странице, содержащей <link xlink:href="http://people.FreeBSD.org/~jdp/foundation/announcement.html">
- вводную информации о Фонде FreeBSD</link>. Для того, чтобы
- обратиться в Фонд по электронной почте, напишите письмо на адрес
- <email>bod@FreeBSDFoundation.org</email>.</para>
- </sect3>
-
- <sect3>
- <title>Помощь в виде оборудования</title>
-
- <indexterm><primary>безвозмездная помощь</primary></indexterm>
-
- <para>Проект FreeBSD с удовольствие примет помощь в виде оборудования,
- которому он найдёт хорошее применение. Если вы заинтересованы в
- передаче оборудования, пожалуйста, обратитесь к <link xlink:href="&url.base;/donations/">Руководству Центра
- пожертвований</link>.</para>
- </sect3>
- </sect2>
- </sect1>
-
- <index/>
-</article>
diff --git a/ru_RU.KOI8-R/articles/cups/Makefile b/ru_RU.KOI8-R/articles/cups/Makefile
deleted file mode 100644
index e6a7dd26e5..0000000000
--- a/ru_RU.KOI8-R/articles/cups/Makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# The FreeBSD Russian Documentation Project
-#
-# $FreeBSD$
-#
-# Article: CUPS on FreeBSD
-#
-# Original revision: r39631
-#
-
-DOC?= article
-
-FORMATS?= html
-
-INSTALL_COMPRESSED?=gz
-INSTALL_ONLY_COMPRESSED?=
-
-SRCS= article.xml
-
-DOC_PREFIX?= ${.CURDIR}/../../..
-.include "${DOC_PREFIX}/share/mk/doc.project.mk"
diff --git a/ru_RU.KOI8-R/articles/cups/article.xml b/ru_RU.KOI8-R/articles/cups/article.xml
deleted file mode 100644
index 2f08d736ac..0000000000
--- a/ru_RU.KOI8-R/articles/cups/article.xml
+++ /dev/null
@@ -1,360 +0,0 @@
-<?xml version="1.0" encoding="koi8-r"?>
-<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
- "http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
-<!--
- The FreeBSD Russian Documentation Project
-
- $FreeBSD$
-
- Original revision: r46469
--->
-<!--
-Translation: Taras Korenko,
- Alexander Nedotsukov
- -->
-<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="ru">
- <info><title>Универсальная Система Печати Unix на FreeBSD</title>
-
-
- <authorgroup>
- <author><personname><firstname>Chess</firstname><surname>Griffin</surname></personname><affiliation>
- <address><email>chess@chessgriffin.com</email></address>
- </affiliation></author>
- </authorgroup>
-
- <legalnotice xml:id="trademarks" role="trademarks">
- &tm-attrib.freebsd;
- &tm-attrib.general;
- </legalnotice>
-
- <pubdate>$FreeBSD$</pubdate>
-
- <releaseinfo>$FreeBSD$</releaseinfo>
-
- <abstract>
- <para>Эта статья посвящена конфигурированию Универсальной Системы Печати
- UNIX (CUPS) на &os;.</para>
- </abstract>
- </info>
-
- <sect1 xml:id="printing-cups">
- <title>Знакомимся с Универсальной Системой Печати UNIX (CUPS)</title>
-
- <indexterm><primary>printing</primary></indexterm>
- <indexterm><primary>CUPS</primary></indexterm>
-
- <para>Универсальная Система Печати UNIX (Common Unix Printing System, или
- сокращенно <application>CUPS</application>), предоставляет переносимую
- среду печати для &unix; и &unix;-подобных операционных систем. Она была
- разработана компанией Easy Software Products, чтобы предоставить
- стандартное решение в печати для всех разработчиков и пользователей
- &unix;.</para>
-
- <para>Универсальная Система Печати UNIX использует протокол межсетевой
- печати (Internet Printing Protocol, <acronym>IPP</acronym>) как
- основу для управления заданиями на печать и очередями. Также
- частично поддерживаются следующие протоколы: <acronym>LPD</acronym>,
- <acronym>SMB</acronym> и AppSocket (также известный как JetDirect).
- <application>CUPS</application> дает возможность обзора сетевых
- принтеров и использования опций, базирующихся на ПостСкрипт Описании
- Принтеров (PostScript Printer Definition, <acronym>PPD</acronym>),
- чтобы поддерживать в &unix; общепринятые традиции печати. В результате
- <application>CUPS</application> идеально подходит для совместного
- использования принтеров в смешанной среде из &os;, &linux;,
- &macos;&nbsp;X или &windows;.</para>
-
- <para>Официальный сайт Универсальной Системы Печати UNIX &mdash;
- <uri xlink:href="http://www.cups.org/">http://www.cups.org/</uri>.</para>
- </sect1>
-
- <sect1 xml:id="printing-cups-install">
- <title>Установка сервера печати CUPS</title>
-
- <para>Для установки <application>CUPS</application> используя пакет,
- запустите на выполнение такую команду:</para>
-
- <screen>&prompt.root; <userinput>pkg install cups</userinput></screen>
-
- <para>Другие необязательные, но рекомендуемые к установке
- пакеты это <package>print/gutenprint-cups</package>
- и <package>print/hplip</package>, каждый из которых
- добавляет драйвера и утилиты для разнообразных принтеров. После
- установки файлы конфигурации <application>CUPS</application> могут быть
- найдены в директории <filename>/usr/local/etc/cups</filename>.</para>
- </sect1>
-
- <sect1 xml:id="printing-cups-configuring-server">
- <title>Настройка сервера печати CUPS</title>
-
- <para>Чтобы настроить сервер <application>CUPS</application> необходимо
- отредактировать несколько конфигурационных файлов. Для начала создайте
- или исправьте файл <filename>/etc/devfs.rules</filename> и добавьте
- следующую информацию для того, чтобы установить соответствующие права
- на все потенциальные файлы устройств принтеров и связать принтеры
- с группой пользователей <systemitem class="groupname">cups</systemitem>:</para>
-
- <programlisting>[system=10]
-add path 'unlpt*' mode 0660 group cups
-add path 'ulpt*' mode 0660 group cups
-add path 'lpt*' mode 0660 group cups
-add path 'usb/<replaceable>X</replaceable>.<replaceable>Y</replaceable>.<replaceable>Z</replaceable>' mode 0660 group cups</programlisting>
-
- <note>
- <para>Замените <replaceable>X</replaceable>,
- <replaceable>Y</replaceable> и <replaceable>Z</replaceable> номерами
- соответствующего принтеру целевого устройства USB, отображаемого
- в каталоге <filename>/dev/usb</filename>. Чтобы
- найти требуемые значения, просмотрите вывод &man.dmesg.8; и найдите
- связанное с вашим принтером имя специального устройства
- <filename>ugen<replaceable>X</replaceable>.<replaceable>Y</replaceable></filename>,
- последнее будет символической ссылкой на искомое устройство в каталоге
- <filename>/dev/usb</filename>.</para>
- </note>
-
- <para>Затем, добавьте следующие две записи в
- <filename>/etc/rc.conf</filename>:</para>
-
- <programlisting>cupsd_enable="YES"
-devfs_system_ruleset="system"</programlisting>
-
- <para>Эти две записи будут запускать сервер печати
- <application>CUPS</application> во время загрузки системы и
- применять локальное правило devfs, созданное выше.</para>
-
- <para>Для того, чтобы печать <application>CUPS</application> стала
- доступна для некоторых &microsoft.windows; клиентов, необходимо
- раскомментировать следующую запись в
- <filename>/usr/local/etc/cups/mime.types</filename> и
- <filename>/usr/local/etc/cups/mime.convs</filename>:</para>
-
- <programlisting>application/octet-stream</programlisting>
-
- <para>По окончанию внесения изменений службы &man.devfs.8; и
- <application>CUPS</application> необходимо перезапустить, для чего
- перезагрузите операционную систему или выполните от пользователя
- <systemitem class="username">root</systemitem> следующие две команды:</para>
-
- <screen>&prompt.root; <userinput>/etc/rc.d/devfs restart</userinput>
-&prompt.root; <userinput>/usr/local/etc/rc.d/cupsd restart</userinput></screen>
- </sect1>
-
- <sect1 xml:id="printing-cups-configuring-printers">
- <title>Настройка принтеров на сервере печати CUPS</title>
-
- <para>После того, как система <application>CUPS</application> была
- установлена и сконфигурирована, системный администратор может начать
- конфигурирование локальных принтеров, подключенных к серверу печати
- <application>CUPS</application>. Эта часть процесса очень похожа,
- если не идентична настройке принтеров <application>CUPS</application>
- в других &unix;-подобных операционных системах, таких как
- дистрибутивы &linux;.</para>
-
- <para>Основным способом управления и администрирования сервера
- <application>CUPS</application> является веб-интерфейс,
- на который можно попасть запустив веб-браузер и набрав
- <uri xlink:href="http://localhost:631">http://localhost:631</uri> в его адресной строке.
- Если сервер <application>CUPS</application> находится на другой
- машине в сети, замените <systemitem>localhost</systemitem> на
- <acronym>IP</acronym> адрес сервера. Веб-интерфейс
- <application>CUPS</application> достаточно очевиден, там есть разделы
- для управления принтерами и заданиями на печать, авторизацией
- пользователей и т.п. Кроме того, в правой части страницы
- администрирования есть несколько флажков (check-box), дающих
- удобный доступ к часто меняемым установкам, таким как разрешение
- публичного доступа к подключенным к системе принтерам, предоставление
- удаленного управления сервером <application>CUPS</application>,
- изменение уровня доступа пользователей к принтерам и их заданиям
- на печать.</para>
-
- <para>Добавление принтера в общем такое же простое, как нажатие
- <quote>Add Printer</quote> на странице администрирования
- веб-интерфейса сервера <application>CUPS</application> или как нажатие
- одной из кнопок <quote>New Printers Found</quote> на той же
- странице администрирования. Когда перед вами предстанет выпадающий
- список <quote>Device</quote>, просто выберите требуемый локально
- подключенный принтер, а дальше следуйте подсказкам интерфейса.
- В случае если были установлены порты или пакеты
- <package>print/gutenprint-cups</package> или
- <package>print/hplip</package>, как указывалось выше,
- дополнительные драйвера печати будут доступны на последующих
- страницах, что может обеспечить большую надежность и расширенные
- возможности.</para>
- </sect1>
-
- <sect1 xml:id="printing-cups-clients">
- <title>Конфигурирование клиентов CUPS</title>
-
- <para>После того, как сервер <application>CUPS</application> был настроен,
- принтеры добавлены и сделаны доступными в сети, следующий шаг &mdash;
- это настройка клиентов или машин, которые будут иметь доступ к серверу
- <application>CUPS</application>. Если у вас единственный настольный
- компьютер, который работает одновременно и сервером и клиентом,
- то в большинстве этой информации вы не нуждаетесь.</para>
-
- <sect2 xml:id="printing-cups-clients-unix">
- <title>&unix; клиенты</title>
-
- <para>На &unix; клиентах также потребуется установить
- <application>CUPS</application>. После установки системы
- печати на клиенте, <application>CUPS</application>-принтеры,
- присутствующие в сети, чаще всего автоматически находятся
- менеджерами принтеров разных графических оболочек, таких как
- <application>GNOME</application> или <application>KDE</application>.
- В качестве альтернативы, вы можете воспользоваться веб-интерфейсом
- <application>CUPS</application> на клиентской машине по адресу
- <uri xlink:href="http://localhost:631">http://localhost:631</uri> и на странице
- администрирования выбрать <quote>Add Printer</quote>. Когда
- перед вами предстанет выпадающий список <quote>Device</quote>,
- просто выберите сетевой <application>CUPS</application> принтер, если
- он был обнаружен автоматически, или выберите <literal>ipp</literal>
- или <literal>http</literal> и введите <acronym>IPP</acronym> или
- <acronym>HTTP</acronym> адрес (<acronym>URI</acronym>) сетевого
- <application>CUPS</application> принтера:</para>
-
- <programlisting>ipp://<replaceable>server-name-or-ip</replaceable>/printers/<replaceable>printername</replaceable></programlisting>
-
- <programlisting>http://<replaceable>server-name-or-ip</replaceable>:631/printers/<replaceable>printername</replaceable></programlisting>
-
- <para>Если <application>CUPS</application> клиент не находит в сети
- принтеры, доступные через сервер <application>CUPS</application>,
- то иногда помогает создание или изменение файла
- <filename>/usr/local/etc/cups/client.conf</filename> с добавлением
- единственной записи, подобной следующей:</para>
-
- <programlisting>ServerName <replaceable>server-ip</replaceable></programlisting>
-
- <para>В этом случае <replaceable>server-ip</replaceable> необходимо
- заменить на <acronym>IP</acronym> адрес сервера
- <application>CUPS</application> в сети.</para>
- </sect2>
-
- <sect2 xml:id="printing-cups-clients-windows">
- <title>&windows;-клиенты</title>
-
- <para>Версии &windows;, предшествующие XP, не имели встроенной
- поддержки протокола <acronym>IPP</acronym>. Однако &windowsxp;
- и более поздние версии уже обладают такой возможностью. Следовательно,
- добавить <application>CUPS</application> принтер в этих версиях
- &windows; довольно просто. В большинстве случаев, администратору
- &windows; потребуется запустить мастера установки принтера
- (<literal>Add Printer</literal>) выбрать сетевой принтер
- (<literal>Network Printer</literal>), а затем ввести
- <acronym>URI</acronym> следующего формата:</para>
-
- <programlisting>http://<replaceable>server-name-or-ip</replaceable>:631/printers/<replaceable>printername</replaceable></programlisting>
-
- <para>Если используется версия &windows; без поддержки протокола
- <acronym>IPP</acronym>, то общим случаем подключения к
- <application>CUPS</application>-принтеру будет совместное
- использование <application>CUPS</application> и
- <package>net/samba3</package>. Описание этой
- возможности выходит за рамки данной статьи.</para>
- </sect2>
- </sect1>
-
- <sect1 xml:id="printing-cups-troubleshooting">
- <title>Устранение неполадок с CUPS</title>
-
- <para>Проблемы c <application>CUPS</application> часто возникают
- из-за неверных прав доступа. Сначала дважды проверьте права доступа
- в &man.devfs.8; (сверьтесь с уже описанными выше). Затем, проверьте
- реальные права устройств, созданных в файловой системе. Также бывает
- полезным удостовериться, что ваш пользователь входит в группу
- <systemitem class="groupname">cups</systemitem>. Если у вас складывается впечатление,
- что флажки прав доступа на странице администрирования веб-интерфейса
- <application>CUPS</application> не работают, то иным решением
- может быть резервное копирование конфигурационного файла
- <filename>/usr/local/etc/cups/cupsd.conf</filename> и редактирование
- разных опций конфигурации с подбором их комбинаций.
- Ниже приведено содержимое тестового файла конфигурации
- <filename>/usr/local/etc/cups/cupsd.conf</filename>.
- Пожалуйста, обратите внимание на то, что безопасность в этом примере
- <filename>cupsd.conf</filename> была пожертвована в угоду простоте
- настройки; как только администратор успешно подсоединится к серверу
- <application>CUPS</application> и сконфигурирует клиентов,
- рекомендуется пересмотреть данную конфигурацию и добавить разграничение
- доступа.</para>
-
- <programlisting># Log general information in error_log - change "info" to "debug" for
-# troubleshooting...
-LogLevel info
-
-# Administrator user group...
-SystemGroup wheel
-
-# Listen for connections on Port 631.
-Port 631
-#Listen localhost:631
-Listen /var/run/cups.sock
-
-# Show shared printers on the local network.
-Browsing On
-BrowseOrder allow,deny
-#BrowseAllow @LOCAL
-BrowseAllow 192.168.1.* # change to local LAN settings
-BrowseAddress 192.168.1.* # change to local LAN settings
-
-# Default authentication type, when authentication is required...
-DefaultAuthType Basic
-DefaultEncryption Never # comment this line to allow encryption
-
-# Allow access to the server from any machine on the LAN
-&lt;Location /&gt;
- Order allow,deny
- #Allow localhost
- Allow 192.168.1.* # change to local LAN settings
-&lt;/Location&gt;
-
-# Allow access to the admin pages from any machine on the LAN
-&lt;Location /admin&gt;
- #Encryption Required
- Order allow,deny
- #Allow localhost
- Allow 192.168.1.* # change to local LAN settings
-&lt;/Location&gt;
-
-# Allow access to configuration files from any machine on the LAN
-&lt;Location /admin/conf&gt;
- AuthType Basic
- Require user @SYSTEM
- Order allow,deny
- #Allow localhost
- Allow 192.168.1.* # change to local LAN settings
-&lt;/Location&gt;
-
-# Set the default printer/job policies...
-&lt;Policy default&gt;
- # Job-related operations must be done by the owner or an adminstrator...
- &lt;Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs \
-Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription \
-Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job \
-CUPS-Move-Job&gt;
- Require user @OWNER @SYSTEM
- Order deny,allow
- &lt;/Limit&gt;
-
- # All administration operations require an adminstrator to authenticate...
- &lt;Limit Pause-Printer Resume-Printer Set-Printer-Attributes Enable-Printer \
-Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs \
-Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer \
-Promote-Job Schedule-Job-After CUPS-Add-Printer CUPS-Delete-Printer CUPS-Add-Class \
-CUPS-Delete-Class CUPS-Accept-Jobs CUPS-Reject-Jobs CUPS-Set-Default&gt;
- AuthType Basic
- Require user @SYSTEM
- Order deny,allow
- &lt;/Limit&gt;
-
- # Only the owner or an administrator can cancel or authenticate a job...
- &lt;Limit Cancel-Job CUPS-Authenticate-Job&gt;
- Require user @OWNER @SYSTEM
- Order deny,allow
- &lt;/Limit&gt;
-
- &lt;Limit All&gt;
- Order deny,allow
- &lt;/Limit&gt;
-&lt;/Policy&gt;</programlisting>
- </sect1>
-
- <index/>
-</article>
diff --git a/ru_RU.KOI8-R/articles/explaining-bsd/Makefile b/ru_RU.KOI8-R/articles/explaining-bsd/Makefile
deleted file mode 100644
index abdb5630fc..0000000000
--- a/ru_RU.KOI8-R/articles/explaining-bsd/Makefile
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# The FreeBSD Russian Documentation Project
-#
-# $FreeBSD$
-# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/explaining-bsd/Makefile,v 1.6 2005/05/28 13:32:41 andy Exp $
-#
-# Article: Explaining BSD
-#
-# Original revision: r39631
-#
-
-MAINTAINER=kappa@FreeBSD.org.ua
-
-DOC?= article
-
-FORMATS?= html
-WITH_ARTICLE_TOC?= YES
-
-INSTALL_COMPRESSED?= gz
-INSTALL_ONLY_COMPRESSED?=
-
-SRCS= article.xml
-
-URL_RELPREFIX?= ../../../..
-DOC_PREFIX?= ${.CURDIR}/../../..
-
-.include "${DOC_PREFIX}/share/mk/doc.project.mk"
diff --git a/ru_RU.KOI8-R/articles/explaining-bsd/article.xml b/ru_RU.KOI8-R/articles/explaining-bsd/article.xml
deleted file mode 100644
index ced328d306..0000000000
--- a/ru_RU.KOI8-R/articles/explaining-bsd/article.xml
+++ /dev/null
@@ -1,643 +0,0 @@
-<?xml version="1.0" encoding="koi8-r"?>
-<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
- "http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
-<!--
- The FreeBSD Russian Documentation Project
-
- $FreeBSD$
- $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/explaining-bsd/article.xml,v 1.11 2007/01/06 18:28:16 gad Exp $
-
- Original revision: r46457
--->
-<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="ru">
- <info><title>Что такое BSD</title>
-
-
- <author><personname><firstname>Greg</firstname><surname>Lehey</surname></personname><affiliation>
- <address><email>grog@FreeBSD.org</email></address>
- </affiliation></author>
-
- <legalnotice xml:id="trademarks" role="trademarks">
- &tm-attrib.freebsd;
- &tm-attrib.amd;
- &tm-attrib.apple;
- &tm-attrib.intel;
- &tm-attrib.linux;
- &tm-attrib.opengroup;
- &tm-attrib.sparc;
- &tm-attrib.sun;
- &tm-attrib.unix;
- &tm-attrib.general;
- </legalnotice>
-
- <pubdate>$FreeBSD$</pubdate>
-
- <releaseinfo>$FreeBSD$</releaseinfo>
-
- <abstract>
- <para>В мире программ с открытыми исходниками, слово
- <quote>Linux</quote> практически стало синонимом слова
- <quote>Операционная Система</quote>, хотя это далеко не
- единственная операционная система &unix;, исходные коды которой
- доступны широкой публике. Согласно данным <link xlink:href="http://www.leb.net/hzo/ioscount/data/r.9904.txt">Internet
- Operating System Counter</link>, в апреле 1999-го 31,3% всех
- подключённых к Internet машин работали под Linux. 14,6%
- использовали BSD &unix;. Некоторые из мировых лидеров в области
- Web-услуг, например <link xlink:href="http://www.yahoo.com/">Yahoo!</link>,
- работают под BSD. Самый загруженный в мире FTP-сервер 1999 года
- (сейчас он не работает), <link xlink:href="ftp://ftp.cdrom.com/">
- ftp.cdrom.com</link>, функционировал под управлением BSD и передавал
- 1,4 Тбайта данных в день. Очевидно, что это
- не узкий, специализированный рынок: можно сказать, что BSD &mdash;
- это тщательно скрываемая тайна.</para>
-
- <para>Так в чём же секрет? Почему известность BSD оставляет
- желать лучшего? Эта публикация ставить целью ответить на эти и
- другие вопросы.</para>
-
- <para>На протяжении всего текста обращайте внимание на
- <emphasis>выделенные</emphasis> отличия BSD от Linux.</para>
- </abstract>
- </info>
-
- <sect1 xml:id="what-is-bsd">
- <title>Что такое BSD?</title>
-
- <para>BSD означает <quote>Berkeley Software Distribution</quote>.
- Так называлось программное обеспечение, распространявшееся в
- исходных кодах Калифорнийским Университетом в Беркли, которое
- сначала представляло из себя дополнения к операционной системе
- &unix; компании AT&amp;T. На основе версии 4.4BSD-Lite были
- созданы несколько операционных систем с открытыми исходными
- кодами. В их состав включены разработки других проектов, среди
- которых особо следует выделить Проект GNU. Вот что такое
- собственно операционная система BSD:</para>
-
- <itemizedlist>
- <listitem>
- <para>Ядро BSD, отвечающее за планировку процессов, управление
- памятью, поддержку многопроцессорных систем (SMP), работу с
- устройствами и так далее.</para>
-
- <para><emphasis>В отличие от Linux, существует несколько
- ядер BSD, отличающихся возможностями.</emphasis></para>
- </listitem>
-
- <listitem>
- <para>Библиотека C, основной системный интерфейс
- программирования.</para>
-
- <para><emphasis>Библиотека C в BSD основывается на коде из
- Беркли, а не из Проекта GNU.</emphasis></para>
- </listitem>
-
- <listitem>
- <para>Оболочки, файловые утилиты, компиляторы, редакторы
- связей и другие утилиты пользователя.</para>
-
- <para><emphasis>Некоторые из них базируются на коде GNU, а
- некоторые -- нет.</emphasis></para>
- </listitem>
-
- <listitem>
- <para>Система X Window, отвечающая за графический интерфейс.</para>
-
- <para>Система X Window, которая используется в большинстве версий BSD,
- поддерживается <link xlink:href="http://www.X.org/">проектом X.Org</link>.
- &os; дает пользователю возможность выбирать из множества
- графических оболочек, таких как <application>Gnome</application>,
- <application>KDE</application> или <application>Xfce</application>;
- а также из множества легких оконных менеджеров наподобие
- <application>Openbox</application>,
- <application>Fluxbox</application> или
- <application>Awesome</application>.</para>
- </listitem>
-
- <listitem>
- <para>Множество разных других прикладных и системных программ.</para>
- </listitem>
- </itemizedlist>
- </sect1>
-
- <sect1 xml:id="what-a-real-unix">
- <title>Что, настоящий &unix;?</title>
-
- <para>Операционные системы BSD не являются клонами друг друга.
- Они лишь потомки общего предка, ОС &unix; от AT&amp;T
- Research, которая также дала начало современной ОС &unix; System
- V. Это факт может удивить, если вспомнить, что AT&amp;T никогда
- не открывала исходные коды своих разработок.</para>
-
- <para>Действительно, &unix; никогда не был программным обеспечением
- с открытым исходным кодом, и в законном смысле BSD определённо
- <emphasis>НЕ</emphasis> &unix;. Но с другой стороны, в AT&amp;T
- активно использовали чужие разработки, например программное
- обеспечение, разрабатываемое Группой по Исследованиям в области
- Информатики (CSRG) Калифорнийского Университета в Беркли. С
- 1976 CSRG выпускала свой код на магнитных лентах под названием
- <emphasis>Berkely Software Distribution</emphasis>, сокращённо
- <emphasis>BSD</emphasis>.</para>
-
- <para>Изначально дистрибутивы BSD представляли собой наборы
- пользовательских программ, и так было до тех пор, пока CSRG не
- заключила контракт с Агентством по Перспективным Проектам при
- Министерстве Обороны США (DARPA). Целью контракта было
- обновление коммуникационных протоколов, на которых держалась
- компьютерная сеть агентства -- ARPANET. Новое семейство протоколов
- получило имя <emphasis>Internet Protocols</emphasis> или
- <emphasis>TCP/IP</emphasis>, по названиям двух основных
- протоколов. Их первая широко известная реализация была выпущена
- в составе 4.2BSD в 1982 году.</para>
-
- <para>В течение восьмидесятых годов образовалось несколько
- компаний по производству рабочих станций. Многие из них
- предпочли купить лицензию на &unix;, нежели разрабатывать своё ПО
- с нуля. Следует отметить компанию Sun, которая поступила именно
- таким образом и на основе 4.2BSD выпустила свою операционную
- систему &sunos;. Когда AT&amp;T тоже решила заняться коммерческой
- продажей своей ОС &unix;, появилась на свет несколько аскетичная
- реализация под названием System III, за которой в скором времени
- последовала System V. Интересно, что эти версии не содержали в
- себе собственной поддержки работы в сети и использовали код
- BSD, в том числе реализацию TCP/IP и набор утилит, среди которых
- следует выделить оболочку <emphasis>csh</emphasis> и текстовый
- редактор <emphasis>vi</emphasis>. Все эти
- <quote>добавки</quote> совместно получили название
- <emphasis>Berkely Extensions</emphasis>.</para>
-
- <para>Дистрибутив BSD содержал код, принадлежавший AT&amp;T, и,
- следовательно, требовал лицензии. К 1990 году финансирование
- CSRG прекратилось, и группа была распущена. Кое-кто из бывших
- членов группы решил опубликовать код BSD отдельно от закрытого
- кода AT&amp;T. В концe концов это удалось, и так появилась на
- свет версия <emphasis>Networking Tape 2</emphasis> или
- <emphasis>Net/2</emphasis>. Net/2 не была законченной, цельной
- операционной системой: около 20% кода ядра отсутствовало. Один
- из членов CSRG, William F. Jolitz, дописал недостающий код и
- опубликовал результат в начале 1992 года под именем
- <emphasis>386BSD</emphasis>. В то же самое время другая группа
- бывших членов CSRG организовала коммерческую компанию <link xlink:href="http://www.bsdi.com/">Berkeley Software Design Inc.</link>
- и выпустила бета-версию операционной системы <link xlink:href="http://www.bsdi.com/">BSD/386</link>, которая базировалась
- на том же самом коде. Позже это название было изменено на
- BSD/OS.</para>
-
- <para>386BSD так никогда и не стала полноценной операционной
- системой. Зато в 1993 году из неё выделились два проекта: <link xlink:href="http://www.NetBSD.org/">NetBSD</link> и <link xlink:href="&url.base;/index.html">FreeBSD</link>. Изначально
- разработчики разделились на два лагеря из-за расхождений во
- мнениях относительно того, сколько же ещё можно ждать улучшений
- в 386BSD. В начале года образовалась NetBSD, а первая версия
- FreeBSD была готова только к его концу. Время шло, и
- технические различия возрастали. Вдобавок проекты поставили
- перед собой разные цели, как будет показано ниже. В 1996 году
- от NetBSD отделился ещё один проект &mdash; <link xlink:href="http://www.OpenBSD.org/">OpenBSD</link>, а в 2003 году от FreeBSD
- отделилась <link xlink:href="http://www.dragonflybsd.org/">DragonFlyBSD</link>.</para>
- </sect1>
-
- <sect1 xml:id="why-is-bsd-not-better-known">
- <title>Почему BSD недостаточно известна?</title>
-
- <para>Действительно, существует ряд причин этому недоразумению:</para>
-
- <orderedlist>
- <listitem>
- <para>Разработчики BSD часто больше заинтересованы в качестве
- своего кода и заняты его <quote>шлифовкой</quote>, а не
- рекламой.</para>
- </listitem>
-
- <listitem>
- <para>По большому счёту Linux своей популярностью обязан
- прежде всего внешним по отношению к проекту факторам,
- например средствам массовой информации и компаниям, которые
- решили сделать бизнес на предоставлении услуг пользователям
- Linux.</para>
- </listitem>
-
- <listitem>
- <para>Разработчики BSD, как правило, более опытны, чем
- разработчики Linux, и в силу этого часто уделяют меньше
- внимания облегчению жизни простым пользователям. Новичок
- чувствует себя более комфортно в среде Linux.</para>
- </listitem>
-
- <listitem>
- <para>В 1992 году компания AT&amp;T подала в суд на <link xlink:href="http://www.bsdi.com/">BSDI</link>, компанию-поставщика
- ОС BSD/386. Основным пунктом обвинения было то, что BSD/386
- содержала в себе закрытый код, принадлежавший AT&amp;T.
- Дело вроде бы уладили за пределами суда в 1994-ом, но целая
- серия вторичных тяжб и по сей день отравляет жизнь многим
- людям. Совсем недавно, в марте 2000, в Internet была
- опубликована статья, утверждавшая, что судебное
- разбирательство окончательно завершено (<quote>recently
- settled</quote>).</para>
-
- <para>В результате разбирательства прояснился вопрос с
- названиями: если в 80-х годах BSD была известна под именем
- <quote>BSD &unix;</quote>, то с исключением последних следов
- кода, принадлежавшего AT&amp;T, BSD потеряла право
- называться &unix;. Вы можете заметить этот факт по
- изменившимся заглавиям книг: <quote>операционная система
- 4.3BSD &unix;</quote> и <quote>операционная система
- 4.4BSD</quote>.</para> </listitem>
-
- <listitem>
- <para>Существует мнение, что проекты BSD сильно отличаются и, в
- добавок, <quote>воюют</quote> между собой. <link xlink:href="http://interactive.wsj.com/bin/login?Tag=/&amp;URI=/archive/retrieve.cgi%253Fid%253DSB952470579348918651.djm&amp;">Статья
- в Wall Street Journal</link> называет это
- <quote>балканизацией</quote> среди проектов BSD. Можно
- утверждать, что такое мнение, как и описанная судебная
- тяжба, основывается прежде всего на событиях давно минувших
- дней.</para>
- </listitem>
- </orderedlist>
- </sect1>
-
- <sect1 xml:id="compairing-bsd-and-linux">
- <title>Сравнение BSD и Linux</title>
-
- <para>В чём заключается главная разница, к примеру, между
- Debian Linux и FreeBSD? Для среднего пользователя она на
- удивление мала: оба продукта представляют собой &unix;-подобные
- операционные системы. Оба продукта разрабатываются на
- некоммерческой основе (это не относится к некоторым другим
- дистрибутивам Linux). В этом разделе мы рассмотрим BSD в
- сравнении с Linux. Всё сказанное в основном будет касаться
- FreeBSD, которой принадлежит около 80% всех инсталляций BSD в
- мире, хотя отличия от NetBSD, OpenBSD и DragonFlyBSD в рамках предмета
- данной статьи незначительны.</para>
-
- <sect2>
- <title>Кому принадлежит BSD?</title>
-
- <para>Нельзя сказать, что какой-то конкретный человек или
- корпорация владеет BSD. Разработка и распространение ведутся
- группой высококвалифицированных и преданных проекту
- специалистов со всего мира. Некоторые компоненты BSD
- представляют собой отдельные проекты с открытым кодом со своими
- законами и коллективами разработчиков.</para>
- </sect2>
-
- <sect2>
- <title>Как выглядит процесс разработки и обновления BSD?</title>
-
- <para>Ядра BSD используют Open Source модель разработки. Каждый
- проект поддерживает публично доступное <emphasis>дерево
- исходников</emphasis> с помощью <link xlink:href="http://www.cvshome.org/">Concurrent Versions
- System</link> (CVS). Это дерево содержит абсолютно весь
- исходный код проекта, а также документацию и вспомогательные
- файлы. CVS позволяет пользователям получить копию дерева
- любой версии системы.</para>
-
- <para>Огромное число людей со всего мира участвуют в
- совершенствовании BSD. Все они разделены на три
- группы:</para>
-
- <itemizedlist>
- <listitem>
- <para><firstterm>Контрибуторы</firstterm>
- пишут код или документацию. Они не могут добавлять или
- изменять код непосредственно в дереве исходников проекта.
- Это привилегия особым образом зарегистрированных
- разработчиков, или <emphasis>коммиттеров
- (committers)</emphasis>, которые просматривают и тестируют
- присылаемый им код и включают его в дерево.</para>
- </listitem>
-
- <listitem>
- <para><firstterm>Коммиттеры</firstterm> являются разработчиками,
- которые имеют доступ на запись в дерево
- исходных кодов проекта. Чтобы стать коммиттером, человек
- должен проявить себя в той области, в которой он хочет
- работать.</para>
-
- <para>Каждый коммиттер по своему собственному усмотрению решает,
- нужно ли ему подтверждение правильности планируемых
- изменений от других разработчиков или нет. В общем
- случае опытный коммиттер может вносить очевидно выгодные
- изменения ни с кем не советуясь. К примеру, коммиттер
- проекта документации может исправлять опечатки или
- грамматические ошибки в документах без предварительного
- согласования. Напротив, далеко идущие или просто сложные
- изменения настоятельно рекомендуется представлять к
- обсуждению перед окончательным внесением в дерево. Бывают
- крайние случаи, когда член Core Team, выполняющий функцию
- архитектора проекта, может санкционировать немедленную
- отмену или <firstterm>откат</firstterm>
- каких-то изменений в дереве. Все коммиттеры обязательно
- получают уведомление о каждом изменении в дереве по
- электронной почте, так что их невозможно сохранить в
- тайне.</para>
- </listitem>
-
- <listitem>
- <para><firstterm>Правление</firstterm> (Core Team). В проектах
- FreeBSD и NetBSD имеются управляющие советы, которые занимаются
- координационной деятельностью. Их роль, права и обязанности не
- всегда чётко определены. Необязательно (хотя в порядке вещей)
- быть коммиттером для того, чтобы входить в состав Core
- Team. Правила, которым следует Core Team, различаются
- между проектами, но в общем случае члены Core Team
- определяют общее направление развития системы в большей
- степени, чем все остальные разработчики.</para>
- </listitem>
- </itemizedlist>
-
- <para>Такое положение вещей отличается от принятого в Linux:</para>
-
- <orderedlist>
- <listitem>
- <para>Не существует человека, который бы контролировал
- содержимое системы. На практике значение этого отличия
- оказывается переоценённым, так как Ведущий Архитектор
- может всегда потребовать откат изменений. Ко всему
- прочему, в проекте Linux на современном этапе изменения в
- код вносятся тоже не одним, а несколькими людьми.</para>
- </listitem>
-
- <listitem>
- <para>С другой стороны, <emphasis>существует</emphasis>
- центральное хранилище (repository), откуда можно получить
- полный код всей системы, причём как современных, так и
- предыдущих версий.</para>
- </listitem>
-
- <listitem>
- <para>Проекты BSD являются цельными <quote>Операционными
- Системами</quote>, а не просто ядрами. Это различие тоже
- иногда переоценивают: ни BSD, ни Linux не представляют
- ценности без приложений, а они порой одни и те же в обеих
- средах.</para>
- </listitem>
-
- <listitem>
- <para>В результате формализованной процедуры поддержки
- единого дерева исходников в CVS процесс разработки BSD
- является полностью открытым, и мы получаем возможность
- доступа к любой версии системы по номеру или по дате. CVS
- также очень хорошо подходит для последовательных изменений
- в коде: к примеру, хранилище кода FreeBSD обновляется
- около ста раз за день, и большинство этих изменений весьма
- малы и незначительны в отдельности друг от друга.</para>
- </listitem>
- </orderedlist>
- </sect2>
-
- <sect2>
- <title>Версии BSD</title>
-
- <para>FreeBSD, NetBSD и OpenBSD предоставляет миру три различных варианта
- системы. Как и в Linux, версиям присваиваются номера,
- например 1.4.1 или 3.5. В добавок, номер версии имеет суффикс
- -- обозначение варианта, которое указывает на цели той или
- иной версии.</para>
-
- <orderedlist>
- <listitem>
- <para>Версия для разработчиков носит название
- <firstterm>CURRENT</firstterm>. FreeBSD присваивает ей и
- номер, например FreeBSD 5.0-CURRENT. NetBSD использует
- чуть-чуть другую схему наименований и добавляет к номеру
- однобуквенный суффикс, обозначающий изменения во
- внутренних интерфейсах. Пример: NetBSD 1.4.3G. OpenBSD не
- нумерует разрабатываемую версию
- (<quote>OpenBSD-current</quote>). Все новые разработки
- производятся именно на этой <quote>ветке</quote> (branch)
- системы.</para>
- </listitem>
-
- <listitem>
- <para>Через определённые интервалы от 3 до 6 месяцев проект
- выпускает версию <firstterm>RELEASE</firstterm>, которая
- распространяется на CD-ROM и доступна для скачивания с серверов
- FTP. Примерами таких версий могут служить OpenBSD
- 2.6-RELEASE и NetBSD 1.4-RELEASE. Этот вариант
- предназначен для конечных пользователей. NetBSD также
- предоставляет так называемые <emphasis>исправленные релизы
- (patch releases)</emphasis>, обозначаемые третьей цифрой в
- номере, например NetBSD 1.4.2.</para>
- </listitem>
-
- <listitem>
- <para>По мере обнаружения ошибок в версии RELEASE
- необходимые исправления вносятся в дерево CVS.
- Получающаяся система в проекте FreeBSD носит название
- <firstterm>STABLE</firstterm>, а в NetBSD и OpenBSD
- продолжает называться RELEASE. Некоторые мелкие улучшения
- тоже иногда вносятся в эту версию после продолжительного
- периода тестирования в CURRENT.</para>
- </listitem>
- </orderedlist>
-
- <para><emphasis>Linux, напротив, поддерживает два различных
- дерева исходников, которые называются соответственно
- стабильной версией и версией для разработчиков. Стабильные
- версии имеют чётный вторичный номер, например 2.0, 2.2 или
- 2.4. Версии для разработчиков используют нечётные номера,
- такие как 2.1, 2.3 или 2.5. Во обоих случаях, к двойному
- номеру версии добавляется ещё одно число, указывающее на
- конкретный релиз. Стоит также отметить, что каждый поставщик
- предоставляет свой собственный вариант пользовательских
- программ (userland), так что имя дистрибутива тоже имеет
- значение. Естественно, что поставщики нумеруют свои изделия
- каждый по-своему, и, таким образом, мы получаем что-то вроде
- <quote>TurboLinux 6.0 с ядром 2.2.14</quote>.</emphasis></para>
- </sect2>
-
- <sect2>
- <title>Какие существуют варианты BSD?</title>
-
- <para>В отличие от многочисленных дистрибутивов Linux, в мире существует
- лишь четыре крупных BSD проекта с открытыми исходными кодами.
- Каждый из них поддерживает своё собственное дерево исходников
- и своё собственное ядро. На практике однако оказывается,
- что пользовательские части (userland) различных BSD отличаются
- гораздо меньше, чем у разных дистрибутивов Linux.</para>
-
- <para>Цели каждого из проектов не поддаются чёткой формулировке.
- Различия между ними весьма субъективны. В основном,</para>
-
- <itemizedlist>
- <listitem>
- <para>проект &os; нацелен на повышение производительности
- и простоту в использовании конечными пользователями.
- &os; очень ценят в среде web-хостеров. Эта ОС работает
- на <link xlink:href="&url.base;/platforms/">нескольких
- аппаратных платформах</link>, число пользователей &os;
- значительно превышает число пользователей других
- проектов.</para>
- </listitem>
-
- <listitem>
- <para>проект NetBSD ставит целью максимальную мобильность
- (или переносимость) кода: девиз <quote>конечно NetBSD
- работает на этом</quote>. NetBSD поддерживает машины от
- крошечных палмтопов до огромных серверов и использовалась
- NASA в космических миссиях. Это хороший выбор для старой
- не-&intel; аппаратуры.</para>
- </listitem>
-
- <listitem>
- <para>проект OpenBSD нацелен на безопасность и
- <quote>чистоту</quote> кода. С помощью комбинирования
- концепций открытых исходников и скрупулёзного анализа кода
- проект демонстрирует чудеса корректности работы системы. В
- силу названных причин совершенно естественно, что OpenBSD
- выбирают организации, для которых очень важна защита
- информации, например банки, фондовые биржи и различные
- департаменты правительства США. Также как и NetBSD,
- проект поддерживает целый ряд аппаратных платформ.</para>
- </listitem>
-
- <listitem>
- <para>Целью DragonFlyBSD является достижение высокой
- производительности и масштабируемости в любой ситуации&mdash;как
- для одиночных однопроцессорных, так и крупных кластерных систем.
- DragonFlyBSD ставит перед собой несколько долгосрочных технических
- задач, но основной упор делается на создание инфраструктуры для
- работы с SMP, которая была бы проста для понимания, поддержки и
- ведения в ней разработок.</para>
- </listitem>
- </itemizedlist>
-
- <para>Следует упомянуть ещё две операционных системы BSD &unix;,
- которые не предоставляют публичного доступа к своим исходным
- кодам. Это BSD/OS компании BSDI и &macos; X компании Apple.</para>
-
- <itemizedlist>
- <listitem>
- <para>BSD/OS являлась самым старым из потомков 4.4BSD.
- Исходный код был недоступен широкой публике, хотя лицензия на
- него стоила относительно немного. BSD/OS во многом похожа
- на FreeBSD. Через два года после поглощения BSDi компанией Wind
- River Systems, BSD/OS перестала существовать как отдельный продукт.
- Поддержку и исходный код ещё можно получить у Wind River, но все
- новые разработки сосредоточены на встраиваемой операционной
- системой VxWorks.</para>
- </listitem>
-
- <listitem>
- <para><link xlink:href="http://www.apple.com/macosx/server/">&macos;
- X</link> &mdash; это самая последняя версия операционной
- системы для линейки компьютеров &apple; &mac;.
- Ядро этой операционной системы, <link xlink:href="http://developer.apple.com/darwin/">Darwin</link>,
- построенное на коде BSD, доступно в виде полностью
- функциональной операционной системы с открытым кодом для
- компьютеров архитектур x86 и PPC. Однако код графической системы
- Aqua/Quartz и многих других проприетарных компонентов &macos; X
- остаётся закрытым. Несколько разработчиков Darwin являются также
- коммиттерами FreeBSD и наоборот.</para>
- </listitem>
- </itemizedlist>
- </sect2>
-
- <sect2>
- <title>В чём отличие между лицензией BSD и Общественной
- Лицензией GNU (GPL)?</title>
-
- <para>Linux распространяется на условиях лицензии
- <link xlink:href="http://www.fsf.org/copyleft/gpl.html">GNU General
- Public License</link> (GPL), русский перевод которой тоже
- <link xlink:href="http://www.gnu.org/copyleft/copyleft.ru.html">существует</link>.
- Эта лицензия имеет целью уничтожить программное обеспечение с
- закрытым исходным кодом. В частности, любое ПО, базирующееся
- на продукте, выпущенном на условиях лицензии GPL, тоже должно
- поставляться с исходными кодами по первому требованию.
- <link xlink:href="http://www.opensource.org/licenses/bsd-license.html">Лицензия
- BSD</link> не накладывает таких жёстких ограничений:
- разрешается распространение программного обеспечения в
- двоичном виде (binary-only). Этот факт привлекает
- разработчиков встроенных (embedded) приложений.</para>
- </sect2>
-
- <sect2>
- <title>Что ещё следует знать?</title>
-
- <para>То обстоятельство, что приложений для BSD существует
- меньше, чем для Linux, вынудило разработчиков BSD позаботиться
- о создании дополнительной совместимости с Linux, которая
- позволяет запускать программы для Linux на компьютере,
- работающем под BSD. Программный пакет, обеспечивающий
- совместимость, включает в себя как ядерную реализацию
- системных вызовов Linux, так и разнообразные файлы,
- необходимые программам, скомпилированным для Linux, например
- библиотеку C. Разница в скорости выполнения Linux-приложений
- на машине с Linux и на такой же машине с BSD незаметна.</para>
-
- <para>Принцип <quote>вся система от одного поставщика</quote>,
- используемый в BSD, приводит к упрощению процедур обновления
- системы по сравнению с многими дистрибутивами Linux. BSD
- предоставляет специальные модули совместимости с устаревшими
- версиями системных библиотек, и таким образом делает возможным
- запуск откомпилированных несколько лет назад программ на
- обновлённой системе.</para>
- </sect2>
-
- <sect2>
- <title>Что же выбрать, BSD или Linux?</title>
-
- <para>Во что выливается всё вышесказанное на практике? Кому
- предназначена BSD, и кому -- Linux?</para>
-
- <para>Это действительно очень сложный вопрос. Приведём несколько
- советов, которые призваны помочь Вам с выбором:</para>
-
- <itemizedlist>
- <listitem>
- <para><quote>Не тронь, пока работает</quote>: если Вы уже
- успешно используете какую-нибудь Open Source ОС, и она Вас
- устраивает, то пожалуй не стоит ничего менять.</para>
- </listitem>
-
- <listitem>
- <para>Системы BSD, в особенности FreeBSD, могут
- демонстрировать большую по сравнению с Linux
- производительность. Но это вовсе не универсальное
- правило. Во многих случаях эта разница не заметна, если
- вообще есть. Иногда Linux может работать лучше, чем
- FreeBSD.</para>
- </listitem>
-
- <listitem>
- <para>В общем случае, у систем BSD очень хорошая репутация,
- когда дело касается надёжности. Это, в основном, связано
- с более <quote>зрелой</quote> базой исходных кодов.</para>
- </listitem>
-
- <listitem>
- <para>BSD проекты имеют более лучшую репутацию за качество и
- полноту документации. Различные проекты документирования
- ставят своей целью предоставлять активно изменяющуюся
- документацию, в том числе и на нескольких языках и покрывающую все
- аспекты системы.</para>
- </listitem>
-
- <listitem>
- <para>Лицензия BSD иногда может быть более привлекательной,
- нежели GPL.</para>
- </listitem>
-
- <listitem>
- <para>В BSD может работать большинство исполнимых файлов Linux,
- однако в Linux выполнимые файлы BSD запускаться не будут. Во
- многих реализациях BSD могут также выполняться двоичные файл и
- других &unix;-подобных систем. Таким образом, BSD может предложить
- более простой способ перехода с других систем, чем Linux.</para>
- </listitem>
- </itemizedlist>
- </sect2>
-
- <sect2>
- <title>Кто предоставляет техническую поддержку, обслуживание и
- обучение для систем BSD?</title>
-
- <para>BSDi / <link xlink:href="http://www.freebsdmall.com">FreeBSD
- Mall, Inc.</link> уже около десяти лет предлагает контракты на
- поддержку FreeBSD.</para>
-
- <para>Кроме того, каждый из проектов постоянно обновляет список
- консультантов, которые оказывают поддержку за отдельную плату: <link xlink:href="&url.base;/commercial/consult_bycat.html">FreeBSD</link>,
- <link xlink:href="http://www.NetBSD.org/gallery/consultants.html">
- NetBSD</link> и <link xlink:href="http://www.OpenBSD.org/support.html">OpenBSD</link>.</para>
- </sect2>
- </sect1>
-</article>
diff --git a/ru_RU.KOI8-R/articles/fonts/Makefile b/ru_RU.KOI8-R/articles/fonts/Makefile
deleted file mode 100644
index f635ca9152..0000000000
--- a/ru_RU.KOI8-R/articles/fonts/Makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# The FreeBSD Russian Documentation Project
-#
-# $FreeBSD$
-# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/fonts/Makefile,v 1.4 2005/12/06 17:56:24 gad Exp $
-#
-# Original revision: r39631
-#
-# Article: Fonts and FreeBSD
-
-DOC?= article
-
-FORMATS?= html
-
-INSTALL_COMPRESSED?=gz
-INSTALL_ONLY_COMPRESSED?=
-
-SRCS= article.xml
-
-URL_RELPREFIX?= ../../../..
-DOC_PREFIX?= ${.CURDIR}/../../..
-
-.include "${DOC_PREFIX}/share/mk/doc.project.mk"
diff --git a/ru_RU.KOI8-R/articles/fonts/article.xml b/ru_RU.KOI8-R/articles/fonts/article.xml
deleted file mode 100644
index 156301df38..0000000000
--- a/ru_RU.KOI8-R/articles/fonts/article.xml
+++ /dev/null
@@ -1,931 +0,0 @@
-<?xml version="1.0" encoding="koi8-r"?>
-<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
- "http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
-<!--
- The FreeBSD Russian Documentation Project
-
- $FreeBSD$
- $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/fonts/article.xml,v 1.5 2005/12/06 17:56:24 gad Exp $
-
- Original revision: r46439
--->
-<!-- Recently, I wanted to figure out how to use some additional fonts that
- I had accumulated. I finally figured out *how to do it* from the various
- man pages and documentation. Since it might be of use to other users,
- and I didn't see any reference to this topic in the FAQ or handbook, I
- thought I'd try my hand at a simple cookbook tutorial addressing the
- use of fonts. I have included my unanswered questions at the end of
- the document.
-
- Anyway, here's what I put together. This is my present understanding of
- fonts and how to use them with FreeBSD. I am sure that there are errors or
- misunderstandings, but it contains enough valid information to allow the
- use of additional fonts with Ghostscript, X11 and Groff. This is my first
- attempt to write anything along the lines of a tutorial/FAQ, so I am sure
- it is pretty raw. There are probably better ways to do some of this stuff,
- and I would welcome being corrected.
- -->
-<!-- The section "Setting a virtual console to 80x60 line mode" was
- updated to reflect changes in FreeBSD system configuration
- files by Mark Ovens <mark@ukug.uk.FreeBSD.org> 27/5/00
- -->
-<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="ru">
- <info><title>Шрифты и FreeBSD</title><subtitle>Пособие</subtitle>
-
-
-
-
- <authorgroup>
- <author><personname><firstname>Dave</firstname><surname>Bodenstab</surname></personname><affiliation>
- <address>
- <email>imdave@synet.net</email>
- </address>
- </affiliation></author>
- </authorgroup>
-
- <pubdate>7 августа 1996</pubdate>
-
- <releaseinfo>$FreeBSD$</releaseinfo>
-
- <legalnotice xml:id="trademarks" role="trademarks">
- &tm-attrib.freebsd;
- &tm-attrib.adobe;
- &tm-attrib.apple;
- &tm-attrib.linux;
- &tm-attrib.microsoft;
- &tm-attrib.opengroup;
- &tm-attrib.general;
- </legalnotice>
-
- <abstract>
- <para>Этот документ содержит описание различных файлов шрифтов, которые
- могут использоваться с FreeBSD и драйвером системной консоли, системой
- <application>X11</application>, программами <application>Ghostscript</application>
- и <application>Groff</application>. Даются реально работающие
- примеры по переключению экрана системной консоли в режим 80x60 и
- использованию файлов шрифтов формата Type 1 с перечисленными выше
- прикладными программами.</para>
- </abstract>
- </info>
-
- <sect1 xml:id="intro">
- <title>Введение</title>
-
- <para>Существует много мест, где можно найти файлы шрифтов, но встает
- вопрос о возможных способах их использования с FreeBSD. Ответ может быть
- найден в результате тщательного изучения документации по тем компонентам,
- которые вы собираетесь использовать. На это тратится очень много
- времени, и это пособие является попыткой дать готовые ответы для тех, кто
- заинтересуется такими вопросами.</para>
- </sect1>
-
- <sect1 xml:id="terminology">
- <title>Основные термины</title>
-
- <para>Имеется множество различных форматов файлов шрифтов и соответствующих
- окончаний имен файлов. Здесь обсуждаются лишь следующие из них:</para>
-
- <variablelist>
- <varlistentry>
- <term><filename>.pfa</filename>, <filename>.pfb</filename></term>
-
- <listitem>
- <para>Файлы шрифтов &postscript; type 1. Файлы
- <filename>.pfa</filename> являются текстовым (
- <emphasis>A</emphasis>scii) представлением, а
- <filename>.pfb</filename> - двоичным
- (<emphasis>B</emphasis>inary).</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><filename>.afm</filename></term>
-
- <listitem>
- <para>Параметры (метрики) соответствующих шрифтов типа type 1.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><filename>.pfm</filename></term>
-
- <listitem>
- <para>Метрики для принтеров соответствующих шрифтов типа type
- 1.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><filename>.ttf</filename></term>
-
- <listitem>
- <para>Файл шрифтов &truetype;</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><filename>.fot</filename></term>
-
- <listitem>
- <para>Неявная ссылка на файл шрифтов TrueType (реальной информации о
- шрифте здесь не содержится)</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><filename>.fon</filename>, <filename>.fnt</filename></term>
-
- <listitem>
- <para>Файлы экранных шрифтов с побитным представлением</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <para>Файлы <filename>.fot</filename> используются в &windows; в качестве
- некой символической ссылки на файл со шрифтом в формате &truetype;
- (<filename>.ttf</filename>). Файлы шрифтов <filename>.fon</filename>
- также используются в &windows;. Мне неизвестно, как можно использовать
- этот формат шрифтов во FreeBSD.</para>
- </sect1>
-
- <sect1 xml:id="font-formats">
- <title>Какие форматы файлов шрифтов я могу использовать?</title>
-
- <para>То, файл шрифтов какого формата будет полезен, зависит от
- используемого приложения. Сама по себе FreeBSD шрифтов не использует.
- Прикладные программы и/или драйверы могут использовать файлы шрифтов.
- Вот краткий справочник по типам файлов шрифтов и
- приложениям/драйверам:</para>
-
- <variablelist>
- <varlistentry>
- <term>Драйвер</term>
-
- <listitem>
- <variablelist>
- <varlistentry>
- <term>vt</term>
-
- <listitem>
- <para><filename>.hex</filename></para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>syscons</term>
-
- <listitem>
- <para><filename>.fnt</filename></para>
- </listitem>
- </varlistentry>
- </variablelist>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Приложение</term>
-
- <listitem>
- <variablelist>
- <varlistentry>
- <term><application>Ghostscript</application></term>
-
- <listitem>
- <para><filename>.pfa</filename>,
- <filename>.pfb</filename>,
- <filename>.ttf</filename></para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><application>X11</application></term>
-
- <listitem>
- <para><filename>.pfa</filename>,
- <filename>.pfb</filename></para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><application>Groff</application></term>
-
- <listitem>
- <para><filename>.pfa</filename>,
- <filename>.afm</filename></para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><application>Povray</application></term>
-
- <listitem>
- <para><filename>.ttf</filename></para>
- </listitem>
- </varlistentry>
- </variablelist>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <para>Окончание <filename>.fnt</filename> используется достаточно часто. Я
- полагаю, что когда кто-нибудь собирается создать файл шрифтов для своего
- приложения, чаще всего выбирается именно это окончание. Поэтому файлы с
- таким окончанием не все имеют одинаковый формат; в частности, формат
- файлов <filename>.fnt</filename>, используемых драйвером syscons во
- FreeBSD, может отличаться от формата файлов <filename>.fnt</filename>,
- встречающихся в &ms-dos;/&windows;. Я даже не пытался использовать другие
- файлы <filename>.fnt</filename>, кроме тех, что поставляются с
- FreeBSD.</para>
- </sect1>
-
- <sect1 xml:id="virtual-console">
- <title>Настройка виртуальной консоли на режим работы 80x60</title>
-
- <para>Во-первых, должен быть загружен шрифт размера 8x8. Для этого файл
- <filename>/etc/rc.conf</filename> должен содержать строчку (измените в
- ней имя файла со шрифтом на соответствующий вашей локализации):</para>
-
- <informalexample>
- <programlisting>font8x8="iso-8x8" # font 8x8 from /usr/share/syscons/fonts/* (or NO).</programlisting>
- </informalexample>
-
- <para>Команда для переключения режимов называется &man.vidcontrol.1;:</para>
-
- <informalexample>
- <screen>&prompt.user; <userinput>vidcontrol VGA_80x60</userinput></screen>
- </informalexample>
-
- <para>Различные программы, ориентированные на работу с экраном, такие, как
- &man.vi.1;, должны уметь определять текущие размеры экрана. Так как это
- делается через вызовы <command>ioctl</command> к драйверу консоли
- (такому, как &man.syscons.4;), то размеры будут определяться
- правильно.</para>
-
- <para>Чтобы это проходило более гладко, можно включить эти команды в
- скрипты начальной загрузки, чтобы они выполнялись при запуске системы.
- Чтобы это сделать, добавьте такую строчку в
- <filename>/etc/rc.conf</filename></para>
-
- <informalexample>
- <programlisting>
- allscreens_flags="VGA_80x60" # Set this vidcontrol mode for all virtual screens
- </programlisting>
- </informalexample>
-
- <para>Справочная информация: &man.rc.conf.5;, &man.vidcontrol.1;.</para>
- </sect1>
-
- <sect1 xml:id="type1-fonts-x11">
- <title>Использование шрифтов type 1 с системой <application>X11</application></title>
-
- <para><application>X11</application> может использовать файлы шрифтов в формате
- <filename>.pfa</filename> или <filename>.pfb</filename>. Шрифты для <application>X11</application>
- располагаются в различных подкаталогах в
- <filename>/usr/X11R6/lib/X11/fonts</filename>. На каждый файл со шрифтом
- имеется ссылка по его <application>X11</application>-имени в файле <filename>fonts.dir</filename> в
- каждом таком каталоге.</para>
-
- <para>Существует каталог по имени <filename>Type1</filename>. Самым
- простым способом добавить новый шрифт заключается в помещении его в этот
- каталог. Но лучше хранить все новые шрифты в отдельном каталоге и
- использовать символические ссылки для добавляемых шрифтов. Это позволяет
- легко управлять отдельными добавляемыми шрифтами, не путая их с
- изначально поставляемыми. Например:</para>
-
- <informalexample>
- <screen>
-<lineannotation>Создаем каталог для файлов шрифтов</lineannotation>
-&prompt.user; <userinput>mkdir -p /usr/local/share/fonts/type1</userinput>
-&prompt.user; <userinput>cd /usr/local/share/fonts/type1</userinput>
-
-<lineannotation>Помещаем сюда файлы .pfa, .pfb и .afm</lineannotation>
-<lineannotation>Кому-то может потребоваться хранить здесь также</lineannotation>
-<lineannotation>сопроводительные файлы и документацию к шрифтам</lineannotation>
-&prompt.user; <userinput>cp /cdrom/fonts/atm/showboat/showboat.pfb .</userinput>
-&prompt.user; <userinput>cp /cdrom/fonts/atm/showboat/showboat.afm .</userinput>
-
-<lineannotation>Обновление индексного файла со ссылками на файлы шрифтов</lineannotation>
-&prompt.user; <userinput>echo showboat - InfoMagic CICA, Dec 1994, /fonts/atm/showboat &gt;&gt;INDEX</userinput></screen>
- </informalexample>
-
- <para>Теперь, чтобы использовать новый шрифт с <application>X11</application>, нужно дать доступ к
- файлу шрифтов и обновить файлы и именами шрифтов. Имена шрифтов в <application>X11</application>
- выглядят следующим образом:</para>
-
- <informalexample>
- <screen>
--bitstream-charter-medium-r-normal-xxx-0-0-0-0-p-0-iso8859-1
- | | | | | | | | | | | | \ \
- | | | | | \ \ \ \ \ \ \ +----+- набор символов
- | | | | \ \ \ \ \ \ \ +- средняя ширина
- | | | | \ \ \ \ \ \ +- spacing
- | | | \ \ \ \ \ \ +- разрешение по вертикали
- | | | \ \ \ \ \ +- разрешение по горизонтали
- | | | \ \ \ \ +- пунктов
- | | | \ \ \ +- пиксел
- | | | \ \ \
- foundry family weight slant width additional style</screen>
- </informalexample>
-
- <para>Для каждого нового файла шрифтов необходимо создать новое имя. Если
- у вас есть какая-либо информация из сопроводительной документации к
- шрифту, то она может служить основой для создания имени. Если информации
- нет, то можно получить некоторую информацию от использования программы
- &man.strings.1; над файлом шрифта. Например:</para>
-
- <informalexample>
- <screen>
-&prompt.user; <userinput>strings showboat.pfb | more</userinput>
-%!FontType1-1.0: Showboat 001.001
-%%CreationDate: 1/15/91 5:16:03 PM
-%%VMusage: 1024 45747
-% Generated by Fontographer 3.1
-% Showboat
- 1991 by David Rakowski. Alle Rechte Vorbehalten.
-FontDirectory/Showboat known{/Showboat findfont dup/UniqueID known{dup
-/UniqueID get 4962377 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-12 dict begin
-/FontInfo 9 dict dup begin
- /version (001.001) readonly def
- /FullName (Showboat) readonly def
- /FamilyName (Showboat) readonly def
- /Weight (Medium) readonly def
- /ItalicAngle 0 def
- /isFixedPitch false def
- /UnderlinePosition -106 def
- /UnderlineThickness 16 def
- /Notice (Showboat
- 1991 by David Rakowski. Alle Rechte Vorbehalten.) readonly def
-end readonly def
-/FontName /Showboat def
---stdin--</screen>
- </informalexample>
-
- <para>Пользуясь этой информацией, можно составить возможное имя:</para>
-
- <informalexample>
- <screen>-type1-Showboat-medium-r-normal-decorative-0-0-0-0-p-0-iso8859-1</screen>
- </informalexample>
-
- <para>Компонентами нашего имени являются:</para>
-
- <variablelist>
- <varlistentry>
- <term>Foundry</term>
-
- <listitem>
- <para>Давайте называть все новые шрифты
- <literal>type1</literal>.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Family</term>
-
- <listitem>
- <para>Имя шрифта.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Weight</term>
-
- <listitem>
- <para>Normal, bold, medium, semibold, и так далее. Из результата
- работы команды &man.strings.1; похоже, что этот шрифт имеет ширину
- <emphasis>medium</emphasis>.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Slant</term>
-
- <listitem>
- <para><emphasis remap="bf">r</emphasis>oman, <emphasis remap="bf">i</emphasis>talic, <emphasis remap="bf">o</emphasis>blique, и так далее. Так как
- <emphasis>ItalicAngle</emphasis> равен нулю, то будет
- использоваться <emphasis>roman</emphasis>.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Width</term>
-
- <listitem>
- <para>Normal, wide, condensed, extended, и так далее. Пока это не
- будет проверено, предполагаем <emphasis>normal</emphasis>.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Дополнительный стиль</term>
-
- <listitem>
- <para>Обычно опускается, но он будет указывать, что в шрифте есть
- декоративные заглавные буквы.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Spacing</term>
-
- <listitem>
- <para>proportional или monospaced. Используется
- <emphasis>proportional</emphasis>, потому что
- <emphasis>isFixedPitch</emphasis> равен false.</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <para>Все эти имена произвольны, но нужно стараться следовать существующим
- соглашениям. В программе для <application>X11</application> на шрифт ссылаются по имени с
- применением шаблонов, так что в выбираемом имени это должно учитываться.
- Можно начать с простого использования
-
- <informalexample>
- <screen>&hellip;-normal-r-normal-&hellip;-p-&hellip;
- </screen>
- </informalexample>
-
- в качестве имени, а затем использовать &man.xfontsel.1; для его проверки
- и изменения имени на основе того, как выглядит шрифт.</para>
-
- <para>Итак, завершая наш пример:</para>
-
- <informalexample>
- <screen>
-<lineannotation>Делаем шрифт доступным для X11</lineannotation>
-&prompt.user; <userinput>cd /usr/X11R6/lib/X11/fonts/Type1</userinput>
-&prompt.user; <userinput>ln -s /usr/local/share/fonts/type1/showboat.pfb .</userinput>
-
-<lineannotation>Редактируем файлы fonts.dir and fonts.scale, добавляя строку,
-описывающую шрифт и увеличивая количество шрифтов в первой строке.</lineannotation>
-&prompt.user; <userinput>ex fonts.dir
-:1p
-25
-:1c
-26
-.
-:$a
-showboat.pfb -type1-showboat-medium-r-normal-decorative-0-0-0-0-p-0-iso8859-1
-.
-:wq</userinput>
-
-<lineannotation>fonts.scale идентичен
-fonts.dir&hellip;</lineannotation>
-&prompt.user; <userinput>cp fonts.dir fonts.scale</userinput>
-
-<lineannotation>Указываем X11, что произошли изменения</lineannotation>
-&prompt.user; <userinput>xset fp rehash</userinput>
-
-<lineannotation>Проверяем новый шрифт</lineannotation>
-&prompt.user; <userinput>xfontsel -pattern -type1-*</userinput></screen>
- </informalexample>
-
- <para>Справочная информация: &man.xfontsel.1;, &man.xset.1;, <citetitle>The
- X Windows System in a Nutshell</citetitle>, <link xlink:href="http://www.ora.com/">O'Reilly &amp; Associates</link>.</para>
- </sect1>
-
- <sect1 xml:id="type1-fonts-ghostscript">
- <title>Использование шрифтов type 1 с пакетом Ghostscript</title>
-
- <para><application>Ghostscript</application> ссылается на шрифт через свой файл
- <filename>Fontmap</filename>. Он должен быть подправлен так же, как
- и файл <filename>fonts.dir</filename> в случае <application>X11</application>. <application>Ghostscript</application> может
- использовать файлы шрифтов в форматах <filename>.pfa</filename> или
- <filename>.pfb</filename>. Взяв шрифт из предыдущего примера, его можно
- использовать с <application>Ghostscript</application> вот так:</para>
-
- <informalexample>
- <screen>
-<lineannotation>Помещаем файл со шрифтом в каталог со шрифтами Ghostscript</lineannotation>
-&prompt.user; <userinput>cd /usr/local/share/ghostscript/fonts</userinput>
-&prompt.user; <userinput>ln -s /usr/local/share/fonts/type1/showboat.pfb .</userinput>
-
-<lineannotation>Редактируем Fontmap, чтобы Ghostscript знал о шрифте</lineannotation>
-&prompt.user; <userinput>cd /usr/local/share/ghostscript/4.01</userinput>
-&prompt.user; <userinput>ex Fontmap
-:$a
-/Showboat (showboat.pfb) ; % From CICA /fonts/atm/showboat
-.
-:wq</userinput>
-
-<lineannotation>Используем Ghostscript для проверки шрифта</lineannotation>
-&prompt.user; <userinput>gs prfont.ps</userinput>
-Aladdin Ghostscript 4.01 (1996-7-10)
-Copyright (C) 1996 Aladdin Enterprises, Menlo Park, CA. All rights
-reserved.
-This software comes with NO WARRANTY: see the file PUBLIC for details.
-Loading Times-Roman font from /usr/local/share/ghostscript/fonts/tir_____.pfb...
- /1899520 581354 1300084 13826 0 done.
-GS&gt;<userinput>Showboat DoFont</userinput>
-Loading Showboat font from /usr/local/share/ghostscript/fonts/showboat.pfb...
- 1939688 565415 1300084 16901 0 done.
-&gt;&gt;showpage, press &lt;return&gt; to continue&lt;&lt;
-&gt;&gt;showpage, press &lt;return&gt; to continue&lt;&lt;
-&gt;&gt;showpage, press &lt;return&gt; to continue&lt;&lt;
-GS&gt;<userinput>quit</userinput></screen>
- </informalexample>
-
- <para>Справочная информация: <filename>fonts.txt</filename> из дистрибутива
- <application>Ghostscript 4.01</application></para>
- </sect1>
-
- <sect1 xml:id="type1-fonts-groff">
- <title>Использование шрифтов в формате type 1 с программой Groff</title>
-
- <para>Теперь, когда новый шрифт может быть использован как с <application>X11</application>, так и в
- <application>Ghostscript</application>, как использовать его с программой <application>groff</application>? Во-первых, так как
- мы имеем дело со &postscript;-шрифтами формата type 1, то подходящим
- устройством <application>groff</application> является <emphasis>ps</emphasis>. Для каждого шрифта,
- который может использоваться программой <application>groff</application>, должен быть создан файл
- шрифта. Имя шрифта для <application>groff</application> является просто именем файла из каталога
- <filename>/usr/share/groff_font/devps</filename>. В нашем примере
- файлом шрифта может быть
- <filename>/usr/share/groff_font/devps/SHOWBOAT</filename>. Файл должен
- быть создан с помощью утилит, поставляемых с программой <application>groff</application>.</para>
-
- <para>Первой утилитой является <command>afmtodit</command>. Обычно она не
- устанавливается, так что она должна быть получена из дистрибутива с
- исходными текстами. Я обнаружил, что нужно изменить первую строку файла,
- что я делал так:</para>
-
- <informalexample>
- <screen>
-&prompt.user; <userinput>cp /usr/src/gnu/usr.bin/groff/afmtodit/afmtodit.pl /tmp</userinput>
-&prompt.user; <userinput>ex /tmp/afmtodit.pl
-:1c
-#!/usr/bin/perl -P-
-.
-:wq</userinput></screen>
- </informalexample>
-
- <para>Эта утилита создаст файл шрифтов для <application>groff</application> из файла метрик (с
- окончанием <filename>.afm</filename>). Продолжая с нашим
- примером:</para>
-
- <informalexample>
- <screen>
-<lineannotation>Многие файлы .afm в формате Mac
-&hellip; строки разделены символом ^M. Нам нужно преобразовать их в
-разделитель ^J в стиле &unix;</lineannotation>
-&prompt.user; <userinput>cd /tmp</userinput>
-&prompt.user; <userinput>cat /usr/local/share/fonts/type1/showboat.afm |
- tr '\015' '\012' &gt;showboat.afm</userinput>
-
-<lineannotation>Теперь создаем файл шрифтов groff</lineannotation>
-&prompt.user; <userinput>cd /usr/share/groff_font/devps</userinput>
-&prompt.user; <userinput>/tmp/afmtodit.pl -d DESC -e text.enc /tmp/showboat.afm generate/textmap SHOWBOAT</userinput></screen>
- </informalexample>
-
- <para>Теперь к шрифту можно обращаться по имени SHOWBOAT.</para>
-
- <para>Если в системе для управления принтерами используется программа
- <application>Ghostscript</application>, то больше ничего делать не нужно. Однако, если используются
- настоящие &postscript;-принтеры, то для использования шрифта его нужно
- загрузить в принтер (если только в принтере шрифт showboat не встроен или
- не имеется на диске со шрифтами). Последний шаг заключается в создании
- загружаемого шрифта. Утилита <command>pfbtops</command> используется для
- создания шрифта в формате <filename>.pfa</filename>, а файл для
- <filename>загрузки</filename> изменяется для указания нового шрифта.
- Файл для <filename>загрузки</filename> должен ссылаться на внутреннее имя
- шрифта. Оно может быть легко определено из файла шрифтов groff, как
- это показывается здесь:</para>
-
- <informalexample>
- <screen>
-<lineannotation>Создание файла шрифта .pfa</lineannotation>
-&prompt.user; <userinput>pfbtops /usr/local/share/fonts/type1/showboat.pfb &gt;showboat.pfa</userinput></screen>
- </informalexample>
-
- <para>Конечно, если файл <filename>.pfa</filename> уже имеется, для его
- использования создаем символическую ссылку на него.</para>
-
- <informalexample>
- <screen>
-<lineannotation>Получение внутреннего имени шрифта</lineannotation>
-&prompt.user; <userinput>fgrep internalname SHOWBOAT</userinput>
-internalname Showboat
-
-<lineannotation>Указываем утилите groff, что шрифт должен быть загружен</lineannotation>
-&prompt.user; <userinput>ex download
-:$a
-Showboat showboat.pfa
-.
-:wq</userinput></screen>
- </informalexample>
-
- <para>Для тестирования шрифта:</para>
-
- <informalexample>
- <screen>
-&prompt.user; <userinput>cd /tmp</userinput>
-&prompt.user; <userinput>cat &gt;example.t &lt;&lt;EOF
-.sp 5
-.ps 16
-This is an example of the Showboat font:
-.br
-.ps 48
-.vs (\n(.s+2)p
-.sp
-.ft SHOWBOAT
-ABCDEFGHI
-.br
-JKLMNOPQR
-.br
-STUVWXYZ
-.sp
-.ps 16
-.vs (\n(.s+2)p
-.fp 5 SHOWBOAT
-.ft R
-To use it for the first letter of a paragraph, it will look like:
-.sp 50p
-\s(48\f5H\s0\fRere is the first sentence of a paragraph that uses the
-showboat font as its first letter.
-Additional vertical space must be used to allow room for the larger
-letter.
-EOF</userinput>
-&prompt.user; <userinput>groff -Tps example.t &gt;example.ps</userinput>
-
-<lineannotation>Для использования с ghostscript/ghostview</lineannotation>
-&prompt.user; <userinput>ghostview example.ps</userinput>
-
-<lineannotation>Для его печати</lineannotation>
-&prompt.user; <userinput>lpr -Ppostscript example.ps</userinput></screen>
- </informalexample>
-
- <para>Справочная информация:
- <filename>/usr/src/gnu/usr.bin/groff/afmtodit/afmtodit.man</filename>,
- &man.groff.font.5;, &man.groff.char.7;, &man.pfbtops.1;.</para>
- </sect1>
-
- <sect1 xml:id="convert-truetype">
- <title>Преобразование файлов шрифтов TrueType в формат groff/PostScript для
- использования с groff</title>
-
- <para>Потенциально это требует некоторых усилий, просто потому что зависит
- некоторых утилит, которые в качестве части системы не устанавливаются.
- Это:</para>
-
- <variablelist>
- <varlistentry>
- <term><command>ttf2pf</command></term>
-
- <listitem>
- <para>Утилита для преобразования TrueType в PostScript. Она
- позволяет преобразовать шрифт TrueType в метрику шрифта в текстовом
- формате (файл <filename>.afm</filename>).</para>
-
- <para>Доступна по адресу <uri xlink:href="http://sunsite.icm.edu.pl/pub/GUST/contrib/BachoTeX98/ttf2pf/">http://sunsite.icm.edu.pl/pub/GUST/contrib/BachoTeX98/ttf2pf/</uri>.
- Замечание: Эти файлы являются PostScript-программами и должны быть
- скачаны на диск щелчком на ссылке при нажатой клавише
- <keycap>Shift</keycap>. В противном случае для их просмотра ваш
- браузер может попытаться запустить программу
- <application>ghostview</application>.</para>
-
- <para>Интерес представляют следующие файлы:</para>
-
- <itemizedlist>
- <listitem>
- <para><filename>GS_TTF.PS</filename></para>
- </listitem>
-
- <listitem>
- <para><filename>PF2AFM.PS</filename></para>
- </listitem>
-
- <listitem>
- <para><filename>ttf2pf.ps</filename></para>
- </listitem>
- </itemizedlist>
-
- <para>Смесь верхнего/нижнего регистров присутствует из-за того, что
- эти файлы предназначены и для DOS. <filename>ttf2pf.ps</filename>
- использует остальные с именами в верхнем регистре, так что при
- переименовании это нужно учитывать. (На самом деле
- <filename>GS_TTF.PS</filename> и <filename>PFS2AFM.PS</filename>
- предположительно являются частью дистрибутива <application>Ghostscript</application>, но их
- легко использовать как отдельные утилиты. В поставку FreeBSD они
- не включены.) Вы можете также установить их в каталог
- <filename>/usr/local/share/groff_font/devps</filename>(?).</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>afmtodit</command></term>
-
- <listitem>
- <para>Создает файлы шрифтов для использования с программой <application>groff</application> из
- текстовых файлов с метриками шрифта. Она обычно располагается в
- каталоге <filename>/usr/src/contrib/groff/afmtodit</filename> и
- для ее использования требуется проделать некоторую работу.</para>
-
- <note>
- <para>Если вы избегаете работать в дереве
- <filename>/usr/src</filename>, просто скопируйте содержимое
- вышеупомянутого каталога во временный рабочий каталог.</para>
- </note>
-
- <para>Во рабочем каталоге вам нужно построить утилиту. Просто
- введите такую команду:</para>
-
- <screen>
-<prompt>#</prompt> <userinput>make -f Makefile.sub afmtodit</userinput>
- </screen>
-
- <para>Вам может также потребоваться скопировать
- <filename>/usr/contrib/groff/devps/generate/textmap</filename> в
- <filename>/usr/share/groff_font/devps/generate</filename>, если его
- не существует.</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <para>Как только эти утилиты готовы, вы можете начать:</para>
-
- <orderedlist>
- <listitem>
- <para>Создайте файл <filename>.afm</filename> по такой команде:</para>
-
- <screen><prompt>%</prompt> <userinput>gs -dNODISPLAY -q -- ttf2pf.ps <replaceable>TTF_name</replaceable> <replaceable>PS_font_name</replaceable> <replaceable>AFM_name</replaceable></userinput>
- </screen>
-
- <para>Здесь <replaceable>TTF_name</replaceable> обозначает ваш файл со
- шрифтом TrueType, <replaceable>PS_font_name</replaceable> является
- именем для файла <filename>.pfa</filename>,
- <replaceable>AFM_name</replaceable> задает имя для файла
- <filename>.afm</filename>. Если вы не укажете имена выходных файлов,
- для форматов <filename>.pfa</filename> или <filename>.afm</filename>,
- то по умолчанию будут использоваться имена, получаемые из имени файла
- со шрифтом TrueType.</para>
-
- <para>При этом также будет создан файл <filename>.pfa</filename>,
- текстовый файл с метриками PostScript-шрифта
- ((<filename>.pfb</filename> для двоичного представления). Это не
- не обязательно, но может быть (я думаю) полезным для сервера
- шрифтов.</para>
-
- <para>Например, для преобразования шрифта 30f9 Barcode с именами файлов
- по умолчанию, воспользуйтесь следующей командой:</para>
-
- <screen>
-<prompt>%</prompt> <userinput>gs -dNODISPLAY -- ttf2pf.ps 3of9.ttf</userinput>
-Aladdin Ghostscript 5.10 (1997-11-23)
-Copyright (C) 1997 Aladdin Enterprises, Menlo Park, CA. All rights reserved.
-This software comes with NO WARRANTY: see the file PUBLIC for details.
-Converting 3of9.ttf to 3of9.pfa and 3of9.afm.
- </screen>
-
- <para>Если вы хотите, чтобы преобразованные шрифты сохранялись в файлы
- <filename>A.pfa</filename> and <filename>B.afm</filename>, то
- выдайте такую команду:</para>
-
- <screen>
-<prompt>%</prompt> <userinput>gs -dNODISPLAY -- ttf2pf.ps 3of9.ttf A B</userinput>
-Aladdin Ghostscript 5.10 (1997-11-23)
-Copyright (C) 1997 Aladdin Enterprises, Menlo Park, CA. All rights reserved.
-This software comes with NO WARRANTY: see the file PUBLIC for details.
-Converting 3of9.ttf to A.pfa and B.afm.
- </screen>
- </listitem>
-
- <listitem>
- <para>Создайте PostScript-файл для <application>groff</application>:</para>
-
- <para>Смените текущий каталог на
- <filename>/usr/share/groff_font/devps</filename> для облегчения
- запуска упоминаемых далее программ. Для этого вам может понадобиться
- иметь привилегии администратора системы. (Или, если вы избегаете
- здесь работать, обязательно посмотрите файлы
- <filename>DESC</filename>, <filename>text.enc</filename> и
- <filename>generate/textmap</filename> в этом каталоге.)</para>
-
- <screen><prompt>%</prompt> <userinput>afmtodit -d DESC -e text.enc file.afm \
- generate/textmap <replaceable>PS_font_name</replaceable></userinput>
- </screen>
-
- <para>Здесь <filename>file.afm</filename> является файлом
- <replaceable>AFM_name</replaceable>, созданным программой
- <command>ttf2pf.ps</command> выше, а
- <replaceable>PS_font_name</replaceable> является именем шрифта,
- используемым в той команде, так же, как и имя, которое будет
- использовать утилита &man.groff.1; для ссылки на этот шрифт.
- Например, полагая, что вы использовали первую команду
- <command>tiff2pf.ps</command> выше, то шрифт 3of9 Barcode может быть
- создан при помощи такой команды:</para>
-
- <screen>
-<prompt>%</prompt> <userinput>afmtodit -d DESC -e text.enc 3of9.afm \
- generate/textmap 3of9</userinput>
- </screen>
-
- <para>Проверьте, что полученный файл
- <replaceable>PS_font_name</replaceable> (к примеру,
- <filename>3of9</filename> из примера выше) расположен в каталоге
- <filename>/usr/share/groff_font/devps</filename>, скопировав или
- перенеся его сюда.</para>
-
- <para>Заметьте, что если <filename>ttf2pf.ps</filename> назначает
- имя шрифта, используя один из найденных в файле шрифта TrueType, а
- вы хотите использовать другое имя, то вы должны отредактировать файл
- <filename>.afm</filename> до запуска команды
- <command>afmtodit</command>. Это имя к тому же должно
- совпадать с тем, что используется в файле Fontmap, если вы
- собираетесь перенаправлять вывод &man.groff.1; утилите
- &man.gs.1;.</para>
- </listitem>
- </orderedlist>
- </sect1>
-
- <sect1 xml:id="truetype-for-other-programs">
- <title>Можно ли использовать шрифты в формате TrueType с другими
- программами?</title>
-
- <para>Формат TrueType используется в Windows, Windows 95 и на компьютерах
- Macintosh. Он достаточно популярен и в этом формате имеется большое
- количество шрифтов.</para>
-
- <para>К сожалению, я знаю лишь несколько программ, которые могут
- использовать этот формат: на ум приходят <application>Ghostscript</application> и <application>Povray</application>. Его
- поддержка в программе <application>Ghostscript</application>, согласно документации, находится в
- зачаточном состоянии и получаемый результат хуже того, что получается при
- использовании шрифтов type 1. Программа <application>Povray</application> версии 3 также может
- использовать шрифты TrueType, но я очень сомневаюсь, что много кто
- создает документы как последовательность анимированных страниц
- :-).</para>
-
- <para>Такая весьма печальная ситуация может вскоре измениться. В рамках
- проекта <link xlink:href="http://www.freetype.org/">FreeType Project</link>
- в настоящее время разрабатывается полезный набор инструментов для работы
- с FreeType:</para>
-
- <itemizedlist>
- <listitem>
- <para>Сервер шрифтов <command>xfsft</command> для <application>X11</application> может работать и
- со шрифтами TrueType, и с обычными шрифтами. Хотя в настоящее время
- он еще находится в стадии отладки, но его уже можно использовать.
- Посмотрите <link xlink:href="http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/">страницу
- Juliusz Chroboczek</link>, чтобы получить более полную информацию.
- Указания по переносу на FreeBSD можно найти на странице <link xlink:href="http://math.missouri.edu/~stephen/software/">Стивена
- Монтгомери</link> (Stephen Montgomery), посвященной программному
- обеспечению.</para>
- </listitem>
-
- <listitem>
- <para><application>xfstt</application> является еще одним сервером шрифтов для
- <application>X11</application>, доступный по адресу <uri xlink:href="ftp://sunsite.unc.edu/pub/Linux/X11/fonts">ftp://sunsite.unc.edu/pub/Linux/X11/fonts</uri>.</para>
- </listitem>
-
- <listitem>
- <para>Программа, которая называется <command>ttf2bdf</command>, может
- генерировать BDF-файлы, которые можно использовать в системе X
- Window, из файлов шрифтов TrueType. Выполнимые файлы Linux могут
- находиться по адресу <uri xlink:href="ftp://crl.nmsu.edu/CLR/multiling/General">ftp://crl.nmsu.edu/CLR/multiling/General</uri>.</para>
- </listitem>
-
- <listitem>
- <para>и другие &hellip;</para>
- </listitem>
- </itemizedlist>
- </sect1>
-
- <sect1 xml:id="obtaining-additional-fonts">
- <title>Где можно найти дополнительные шрифты?</title>
-
- <para>Много шрифтов можно найти в сети Интернет. Они либо абсолютно
- бесплатны, либо условно-бесплатны. В добавок, множество шрифтов
- находится в категории <filename>x11-fonts/</filename> Коллекции
- Портов.</para>
- </sect1>
-
- <sect1 xml:id="additional-questions">
- <title>Дополнительные вопросы</title>
-
- <itemizedlist>
- <listitem>
- <para>Для чего предназначены файлы <filename>.pfm</filename>?</para>
- </listitem>
-
- <listitem>
- <para>Можно ли получить файл <filename>.afm</filename> из файла
- <filename>.pfa</filename> или <filename>.pfb</filename>?</para>
- </listitem>
-
- <listitem>
- <para>Как получить файлы преобразования символов <application>groff</application> для
- PostScript-шрифтов с нестандартными названиями символов?</para>
- </listitem>
-
- <listitem>
- <para>Можно ли настроить xditview и устройства devX?? на работу всех
- новых шрифтов?</para>
- </listitem>
-
- <listitem>
- <para>Хорошо бы иметь примеры использования шрифтов TrueType с
- программами <application>Povray</application> и <application>Ghostscript</application>.</para>
- </listitem>
- </itemizedlist>
- </sect1>
-</article>
diff --git a/ru_RU.KOI8-R/articles/freebsd-questions/Makefile b/ru_RU.KOI8-R/articles/freebsd-questions/Makefile
deleted file mode 100644
index 6ebef0d245..0000000000
--- a/ru_RU.KOI8-R/articles/freebsd-questions/Makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# The FreeBSD Russian Documentation Project
-#
-# $FreeBSD$
-# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/freebsd-questions/Makefile,v 1.4 2005/10/28 17:35:48 gad Exp $
-#
-# Original revision: r39631
-#
-
-DOC?= article
-
-FORMATS?= html
-WITH_ARICLE_TOC?= YES
-
-INSTALL_COMPRESSED?= gz
-INSTALL_ONLY_COMPRESSED?=
-
-SRCS= article.xml
-
-URL_RELPREFIX?= ../../../..
-DOC_PREFIX?= ${.CURDIR}/../../..
-
-.include "${DOC_PREFIX}/share/mk/doc.project.mk"
diff --git a/ru_RU.KOI8-R/articles/freebsd-questions/article.xml b/ru_RU.KOI8-R/articles/freebsd-questions/article.xml
deleted file mode 100644
index f681dc9182..0000000000
--- a/ru_RU.KOI8-R/articles/freebsd-questions/article.xml
+++ /dev/null
@@ -1,611 +0,0 @@
-<?xml version="1.0" encoding="koi8-r"?>
-<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
- "http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
-<!--
- The FreeBSD Russian Documentation Project
-
- $FreeBSD$
- $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/freebsd-questions/article.xml,v 1.10 2005/10/09 10:45:04 gad Exp $
-
- Original revision: r46431
--->
-<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="ru">
- <info><title>Как работать со списком рассылки FreeBSD-questions c максимальной
- отдачей</title>
-
-
- <author><personname><firstname>Greg</firstname><surname>Lehey</surname></personname><affiliation>
- <address><email>grog@FreeBSD.org</email></address>
- </affiliation></author>
-
- <legalnotice xml:id="trademarks" role="trademarks">
- &tm-attrib.freebsd;
- &tm-attrib.microsoft;
- &tm-attrib.opengroup;
- &tm-attrib.qualcomm;
- &tm-attrib.general;
- </legalnotice>
-
- <pubdate>$FreeBSD$</pubdate>
-
- <releaseinfo>$FreeBSD$</releaseinfo>
-
- <abstract>
- <para>В этом документе содержится информация, которая будет полезна
- тем, кто собирается отправить письмо в список рассылки
- FreeBSD-questions. Даются советы и рекомендации, которые максимально
- увеличат шанс на получение полезных ответов.</para>
-
- <para>Этот документ регулярно публикуется в списке рассылки
- FreeBSD-questions.</para>
- </abstract>
- </info>
-
- <sect1>
- <title xml:id="Introduction">Введение</title>
-
- <para><literal>FreeBSD-questions</literal> является списком рассылки,
- который поддерживается проектом FreeBSD для оказания помощи тем, у кого
- возникли вопросы по поводу использования FreeBSD в повседневной работе.
- В другом списке рассылки, <literal>FreeBSD-hackers</literal>,
- обсуждаются более сложные вопросы, такие, как направление будущей
- работы над системой.</para>
-
- <note>
- <para>Термин <quote>хакер</quote> не имеет ничего общего с
- проникновением на компьютеры других людей. Правильным термином для
- обозначения такой деятельности является <quote>кракер</quote>, однако
- популярная пресса этого еще не поняла. Хакеры FreeBSD нарушением
- защиты не занимаются. Более полное описание хакеров находится в
- руководстве Эрика Рэймонда (Eric Raymond) <link xlink:href="http://www.catb.org/~esr/faqs/hacker-howto.html">Как стать
- хакером</link></para>
- </note>
-
- <para>Данный регулярно рассылаемый документ предназначен для помощи как
- тем, кто ищет ответов на вопросы во FreeBSD-questions
- (<quote>новички</quote>), так и тем, кто на эти вопросы отвечает
- (<quote>хакеры</quote>).</para>
-
- <para>Несомненно, здесь существуют некоторые трения, которые проистекают
- из-за разных точек зрения этих двух групп. Новички обвиняют хакеров в
- высокомерии, заносчивости и несостоятельности в оказании помощи, когда
- как хакеры обвиняют начинающих в том, что последние глупы, не умеют
- читать по-английски и ждут, что им все будет преподнесено на блюдечке с
- голубой каемочкой. Конечно, есть элемент правды в обоих этих
- утверждениях, однако по большей части такие мнения появляются из-за
- чувства разочарования.</para>
-
- <para>В этом документе я постараюсь уменьшить это разочарование и помочь
- всем получить более хорошие результаты от FreeBSD-questions. В
- следующем разделе я дам рекомендации по посылке вопросов; после этого
- мы посмотрим, как нужно на них отвечать.</para>
- </sect1>
-
- <sect1>
- <title xml:id="subscribe">Как подписаться на FreeBSD-questions</title>
-
- <para>FreeBSD-questions является списком рассылки, распространяемым по
- электронной почте, поэтому вам нужен доступ к системе электронной
- почты. Зайдите через ваш WWW браузер на <link xlink:href="&a.questions.url;">информационную страничку списка рассылки FreeBSD-question</link>. В разделе
- <quote>Подписка на freebsd-questions</quote> (Subscribing to freebsd-questions)
- заполните поле <quote>Ваш адрес электронной почты</quote> (Your email address);
- другие поля являются опциональными.
- </para>
-
- <note>
- <para>Поля для паролей в форме для подписки предоставляют только слабую защищённость,
- но должны предохранить других от путаницы с вашей подпиской. <emphasis>Не используйте
- ценный пароль</emphasis>, потому как он будет отослан вам по почте обратно в виде
- незашифрованного текста.</para>
- </note>
-
- <para>Вы получите подтверждающее письмо от
- <application>mailman</application>; следуйте включенным в него инструкциям
- для завершения процесса подписки.</para>
-
- <para>И наконец, когда вы получите приветственное письмо от
- <application>mailman</application> с подробной информацией о списке и
- с паролем, <emphasis>пожалуйста, сохраните его</emphasis>. Если вы
- когда-нибудь захотите покинуть список рассылки, вам нужна будет эта
- информация. За дополнительной информацией обращайтесь к следующему
- разделу.</para>
- </sect1>
-
- <sect1>
- <title xml:id="unsubscribe">Как отписаться от FreeBSD-questions</title>
-
- <para>Когда вы подписывались на список рассылки FreeBSD-questions, вы
- получили приглашающее сообщение от
- <application>mailman</application>. В этом сообщении, кроме всего
- прочего, вам рассказывалось о том, как отписаться. Вот типичное
- сообщение:</para>
-
- <literallayout class="monospaced">
-Welcome to the freebsd-questions@freebsd.org mailing list!
-
-To post to this list, send your email to:
-
- freebsd-questions@freebsd.org
-
-General information about the mailing list is at:
-
- http://lists.freebsd.org/mailman/listinfo/freebsd-questions
-
-If you ever want to unsubscribe or change your options (e.g., switch to
-or from digest mode, change your password, etc.), visit your
-subscription page at:
-
-http://lists.freebsd.org/mailman/options/freebsd-questions/grog%40lemsi.de
-
-You can also make such adjustments via email by sending a message to:
-
- freebsd-questions-request@freebsd.org
-
-with the word `help' in the subject or body (don't include the
-quotes), and you will get back a message with instructions.
-
-You must know your password to change your options (including changing
-the password, itself) or to unsubscribe. It is:
-
- 12345
-
-Normally, Mailman will remind you of your freebsd.org mailing list
-passwords once every month, although you can disable this if you
-prefer. This reminder will also include instructions on how to
-unsubscribe or change your account options. There is also a button on
-your options page that will email your current password to you.</literallayout>
-
- <para>Используя URL, указанный в вашем приветственном сообщении, вы можете
- посетить <quote>страничку по управлению учетной записью</quote> и запросить
- <quote>отписать</quote> вас от списка рассылки FreeBSD-questions.</para>
-
- <para>Подтверждающее письмо будет выслано вам от
- <application>mailman</application>; следуйте включённым в него инструкциям
- для завершения процесса отписки.</para>
-
- <para>Если вы это сделали, и до сих пор не можете понять, что происходит,
- отправьте письмо на <email>freebsd-questions-request@FreeBSD.org</email>, и они
- помогут вам разобраться. <emphasis>Не</emphasis> посылайте сообщений во
- FreeBSD-questions: здесь вам помочь не смогут.</para>
- </sect1>
-
- <sect1>
- <title xml:id="askwho">Нужно задавать вопросы в <literal>-questions</literal>
- или <literal>-hackers</literal>?</title>
-
- <para>Общим вопросам по FreeBSD посвящены два списка рассылки,
- <literal>FreeBSD-questions</literal> и
- <literal>FreeBSD-hackers</literal>. В некоторых случаях на самом деле
- не ясно, в каком списке нужно задавать вопрос. Следующий критерий,
- однако, должен помочь в 98% всех случаев:</para>
-
- <orderedlist>
- <listitem>
- <para>Если вопрос является общим, спрашивайте во
- <literal>FreeBSD-questions</literal>. Примерами могут служить
- вопросы по установке FreeBSD или использованию конкретных утилит
- &unix;.</para>
- </listitem>
-
- <listitem>
- <para>Если вы думаете, что вопрос относится к ошибке, но вы не
- уверены или не знаете, как ее исправить, пошлите сообщение во
- <literal>FreeBSD-questions</literal>.</para>
- </listitem>
-
- <listitem>
- <para>Если вопрос относится к ошибке и вы
- <emphasis>уверены</emphasis>, что это ошибка (например, вы можете
- указать место в коде, где она происходит, и, может быть, у вас есть
- для нее исправление), то пошлите сообщение в список рассылки
- <literal>FreeBSD-hackers</literal>.</para>
- </listitem>
-
- <listitem>
- <para>Если вопрос относится к усовершенствованию FreeBSD, и вы можете
- дать предложения по ее реализации, то посылайте сообщение во
- <literal>FreeBSD-hackers</literal>.</para>
- </listitem>
- </orderedlist>
-
- <para>Имеется также некоторое количество других <link xlink:href="&url.books.handbook;/eresources-mail.html">специализированных списков рассылки</link>.
- Здесь также подходит указанный выше критерий, и в ваших интересах
- следовать ему, потому что именно так можно получить результат.</para>
- </sect1>
-
- <sect1>
- <title xml:id="before">Перед посылкой вопроса</title>
-
- <para>Вы можете (и должны) что-нибудь сделать сами перед тем, как задать
- вопрос в одном из списков рассылки:</para>
-
- <itemizedlist>
- <listitem>
- <para>Попытайтесь решить проблему самостоятельно. Если вы пошлёте вопрос,
- который покажет, что вы пытались решить проблему, ваш вопрос, как правило, привлечёт
- более положительное внимание со стороны людей, читающих его. Попытка решить
- проблему самостоятельно также увеличит уровень вашего понимания FreeBSD,
- и в конечном счёте позволит вам использовать ваши знания для помощи другим,
- отвечая на вопросы, посылаемые в списки рассылки.
- </para>
- </listitem>
-
- <listitem>
- <para>Прочтите страницы справочника и документацию FreeBSD (установлена
- в <filename>/usr/doc</filename> или доступна через WWW на
- <uri xlink:href="http://www.FreeBSD.org">http://www.FreeBSD.org</uri>), особенно
- <link xlink:href="&url.books.handbook;/index.html">Руководство пользователя</link>
- и <link xlink:href="&url.books.faq;/index.html">FAQ</link>.
- </para>
- </listitem>
-
- <listitem>
- <para>Просмотрите и/или поищите в архивах списка рассылки, задавился ли
- ваш или схожий вопрос (и возможно отвечался) в списке. Вы можете
- просмотреть и/или поискать в архивах списков рассылки на <uri xlink:href="http://www.FreeBSD.org/mail">http://www.FreeBSD.org/mail</uri> и <uri xlink:href="http://www.FreeBSD.org/search/search.html#mailinglists">http://www.FreeBSD.org/search/search.html#mailinglists</uri>
- соответственно. Это может быть сделано также и на других WWW сайтах,
- к примеру, на <uri xlink:href="http://marc.theaimsgroup.com">http://marc.theaimsgroup.com</uri>.
- </para>
- </listitem>
-
- <listitem>
- <para>Используйте поисковик, например, <link xlink:href="http://www.google.com">Google</link>
- или <link xlink:href="http://www.yahoo.com">Yahoo</link> для поиска ответов на ваш вопрос.
- Google имеет даже <link xlink:href="http://www.google.com/bsd">BSD ориентированный поисковой интерфейс</link>.
- </para>
- </listitem>
- </itemizedlist>
- </sect1>
-
- <sect1>
- <title xml:id="submit">Как посылать вопрос</title>
-
- <para>При посылке сообщения в список рассылки FreeBSD-questions, имейте
- в виду следующее:</para>
-
- <itemizedlist>
- <listitem>
- <para>Помните, что за ответы на вопросы о FreeBSD никто денег не
- получает. Все делают это в свободное время. Вы можете привлечь
- внимание, послав четко сформулированный вопрос, содержащий как
- можно больше относящейся к делу информации. Вы можете не получить
- внимания, послав неполный, непонятный или примитивный вопрос.
- В действительности можно посылать сообщение в список рассылки
- FreeBSD-questions и не получить ответа, даже если вы следуете этим
- правилам. Еще более вероятно не получить ответа, если вы им не
- следуете. В оставшейся части документа мы рассмотрим, как получить
- максимум от вопроса во FreeBSD-questions.</para>
- </listitem>
-
- <listitem>
- <para>Не всякий человек, могущий ответить на вопрос о FreeBSD, читает
- все сообщения: обычно читается строка с темой письма и решается,
- представляет ли сообщение интерес. То есть в ваших интересах
- указать тему письма. <quote>FreeBSD problem</quote> или <quote>Help</quote> недостаточно.
- Если вы не укажете тему вообще, то многие даже не потрудятся прочесть
- сообщение. Если тема сообщения недостаточно конкретна, то люди,
- которые могут ответить, могут его не прочесть.</para>
- </listitem>
-
- <listitem>
- <para>Оформляйте ваше сообщение так, чтобы оно было читабельно, и
- ПОЖАЛУЙСТА, НЕ КРИЧИТЕ!!!!!. Мы понимаем, что для многих английский
- не является родным языком, и не исключаем этого, однако действительно
- очень трудно и мучительно читать сообщение, полное опечаток или в
- котором отсутствуют разделители строк.</para>
-
- <para>Не упускайте из виду эффект, который производит плохо
- отформатированное письмо, причем не только в списке рассылки
- FreeBSD-questions. По вашему почтовому сообщению люди составляют
- мнение о вас, и если сообщение плохо отформатировано, содержит по
- одной строке на абзац, неправильно разделено или полно ошибок, то
- о вас сложится плохое впечатление.</para>
-
- <para>Множество плохо форматированных сообщений возникает из-за <link xlink:href="http://www.lemis.com/email.html">неправильно работающих или
- плохо настроенных почтовых программ</link>. Известно, что следующие
- почтовые программы могут посылать неправильно отформатированные
- сообщения без вашего ведома об этом:</para>
-
- <itemizedlist>
- <listitem>
- <para>&eudora;</para>
- </listitem>
-
- <listitem>
- <para>exmh</para>
- </listitem>
-
- <listitem>
- <para>&microsoft; Exchange</para>
- </listitem>
-
- <listitem>
- <para>&microsoft; Outlook</para>
- </listitem>
- </itemizedlist>
-
- <para>Постарайтесь не использовать <acronym>MIME</acronym>:
- многие используют программы, которые не очень хорошо работают с
- <acronym>MIME</acronym>.</para>
- </listitem>
-
- <listitem>
- <para>Проверьте правильность настроек времени и временной зоны. Это
- может выглядеть немножко глупо, потому что ваши сообщения все равно
- будут доставляться, однако многие люди получают несколько сотен
- сообщений в день. Зачастую они сортируют входящие сообщения по
- теме и дате, и если ваше сообщение не будет предшествовать первому
- ответу, то они могут предположить, что оно потерялось и даже не
- взглянут на него.</para>
- </listitem>
-
- <listitem>
- <para>Не включайте не связанные друг с другом вопросы в одно и то же
- письмо. Во-первых, длинное сообщение отпугивает людей, а во-вторых,
- труднее найти людей, которые могут ответить на все вопросы, и
- прочитали такое сообщение.</para>
- </listitem>
-
- <listitem>
- <para>Сообщите максимальное количество информации. Это трудно, и нужно
- пояснить, какую информацию нужно сообщать, а поначалу:</para>
-
- <itemizedlist>
- <listitem>
- <para>Практически в любом случае важно знать версию FreeBSD, с
- которой вы работаете. Особенно, в частности, в случае
- FreeBSD-CURRENT вы должны также указать дату исходных текстов,
- хотя, конечно, вам не нужно посылать сообщения о -CURRENT в
- список рассылки FreeBSD-questions.</para>
- </listitem>
-
- <listitem>
- <para>В случае любой проблемы, которая <emphasis>может</emphasis>
- быть связана с работой оборудования, расскажите о вашем
- аппаратном обеспечении. В случае сомнений предположите, что это,
- возможно, вина оборудования. Какой тип процессора используется?
- Насколько он быстр? Какая материнская плата? Сколько
- установлено памяти? Какое периферийное оборудование?</para>
-
- <para>Конечно, это приговор, но вывод команды &man.dmesg.8;
- зачастую может оказаться очень полезным, так как он говорит не
- только об оборудовании, с которым вы работаете, но также и о
- версии FreeBSD.</para>
- </listitem>
-
- <listitem>
- <para>Если выдаются сообщения об ошибках, недостаточно написать
- <quote>I get error messages</quote>, напишите (например) <quote>I
- get the error message 'No route to host'</quote>.</para>
- </listitem>
-
- <listitem>
- <para>Если ваша система завершает работу аварийно, не пишите
- <quote>My system panicked</quote>, напишите (к примеру) <quote>my
- system panicked with the message 'free vnode
- isn't'</quote>.</para>
- </listitem>
-
- <listitem>
- <para>Если у вас возникли трудности при установке FreeBSD,
- пожалуйста, опишите ваше оборудование. В частности, важно знать
- адреса ввода/вывода и IRQ адаптеров, установленных в вашей
- машине.</para>
- </listitem>
-
- <listitem>
- <para>Если у вас возникли трудности в настройке PPP, опишите
- настройку. Какую версию PPP вы используете? Какой тип
- аутентификации? У вас используется статическое или динамическое
- выделение адресов IP? Какие сообщения вы получили в файле
- протокола?</para>
- </listitem>
- </itemizedlist>
- </listitem>
-
- <listitem>
- <para>Основной объем информации, который вы должны дать, представляет
- собой вывод программ, таких, как &man.dmesg.8;, или консольные
- сообщения, которые обычно появляются в файле
- <filename>/var/log/messages</filename>. Не пытайтесь скопировать эту
- информацию, набрав ее снова; это действительно трудно, и здесь легко
- сделать ошибку. Чтобы послать содержимое файлов протоколов,
- сделайте копию файла и воспользуйтесь редактором для того, чтобы
- обрезать информацию, оставив только относящуюся к делу, либо
- скопируйте и вставьте текст в ваше сообщение. В случае вывода
- программ, таких, как &man.dmesg.8;, перенаправьте вывод в файл и
- включите его в письмо. Например,</para>
-
- <screen>
-&prompt.user; <userinput>dmesg &gt; /tmp/dmesg.out</userinput>
- </screen>
-
- <para>Эта команда перенаправляет информацию в файл
- <filename>/tmp/dmesg.out</filename>.</para>
- </listitem>
-
- <listitem>
- <para>Если вы все это сделали, и все же не можете получить ответа,
- этому могут быть другие причины. Например, проблема столь сложна,
- что никто не знает ответа, или тот, кто знает, отсутствовал. Если
- вы не получили ответа, скажем, в течении недели, может помочь
- повторная посылка сообщения. Если вы не получили ответа на свое
- второе послание, скорее всего, вы вовсе не получите его из этого
- списка рассылки. Повторная посылка того же самого сообщения снова и
- снова только повредит вашей репутации.</para>
- </listitem>
- </itemizedlist>
-
- <para>Подводя итог, давайте предположим, что вы знаете ответ на следующий
- вопрос (да, это один и тот же вопрос). Выберите,
- на какой вопрос вы в большей степени готовы ответить:</para>
-
- <example>
- <title>Сообщение 1</title>
-
- <literallayout class="monospaced">
-Subject: HELP!!?!??
-I just can't get hits damn silly FereBSD system to
-workd, and Im really good at this tsuff, but I have never seen
-anythign sho difficult to install, it jst wont work whatever I try
-so why don't you guys tell me what I doing wrong.
- </literallayout>
- </example>
-
- <example>
- <title>Сообщение 2</title>
-
- <literallayout class="monospaced">
-Subject: Problems installing FreeBSD
-
-I've just got the FreeBSD 2.1.5 CDROM from Walnut Creek, and I'm having a lot
-of difficulty installing it. I have a 66 MHz 486 with 16 MB of
-memory and an Adaptec 1540A SCSI board, a 1.2GB Quantum Fireball
-disk and a Toshiba 3501XA CDROM drive. The installation works just
-fine, but when I try to reboot the system, I get the message
-<quote>Missing Operating System</quote>.
- </literallayout>
- </example>
- </sect1>
-
- <sect1>
- <title xml:id="followup">Как дополнить вопрос</title>
-
- <para>Часто вам бывает нужно дать дополнительную информацию к вопросу,
- который вы уже отослали. Лучшим способом сделать это является ответ на
- первоначальное сообщение. Здесь есть три момента:</para>
-
- <orderedlist>
- <listitem>
- <para>Вы включаете текст исходного сообщения, чтобы люди знали, о чем
- вы говорите. Однако не забудьте удалить ненужный текст.</para>
- </listitem>
-
- <listitem>
- <para>Текст в строке с темой письма остается тем же самым (вы не забыли
- его указать, не правда ли?). Многие почтовые программы сортируют
- сообщения по теме письма. Это поможет при группировке
- сообщений.</para>
- </listitem>
-
- <listitem>
- <para>Ссылочные номера сообщений в заголовке будут указывать на
- предыдущее сообщение. Некоторые почтовые программы, такие, как
- <link xlink:href="http://www.mutt.org/">mutt</link>, могут
- <emphasis>упорядочивать</emphasis> сообщения, показывая точную связь
- между ними.</para>
- </listitem>
- </orderedlist>
- </sect1>
-
- <sect1>
- <title xml:id="answer">Как отвечать на вопрос</title>
-
- <para>Перед тем, как отвечать на вопрос в списке рассылки
- FreeBSD-questions, имейте в виду:</para>
-
- <orderedlist>
- <listitem>
- <para>Многие замечания, касающиеся посылки вопросов, относятся и к
- ответам на них. Прочтите эти замечания.</para>
- </listitem>
-
- <listitem>
- <para>Ответил ли кто-либо на вопрос? Самым простым способом проверить
- это является сортировка входящей почты по темам писем: тогда
- (надеемся) вы увидите вопрос с последующими ответами все
- вместе.</para>
-
- <para>Если кто-то уже ответил на вопрос, это вовсе не значит, что вы
- не должны посылать свой ответ. Но сначала имеет смысл прочитать
- все другие ответы.</para>
- </listitem>
-
- <listitem>
- <para>Есть ли у вас что добавить сверх того, что уже было сказано? В
- общем случае ответы <quote>Yeah, me too</quote> сильно не помогут,
- хотя есть и исключения, например, когда кто-нибудь описывает свою
- проблему и не знает, его ли это ошибка, или что-то не так с
- аппаратным или программным обеспечением. Если вы посылаете сообщение
- <quote>me too</quote>, включите также относящуюся к делу
- информацию.</para>
- </listitem>
-
- <listitem>
- <para>Уверены ли вы, что поняли вопрос? Очень часто тот, кто задает
- вопрос, путается или не может все хорошо описать. Даже при самом
- полном понимании системы легко послать ответ, который не отвечает
- на вопрос. К сожалению, так вы никому не поможете, только ещё больше
- запутаете и разочаруете спрашивающего. Если никто больше не
- отвечает, или вы не очень уверены, то всегда можете запросить более
- подробную информацию.</para>
- </listitem>
-
- <listitem>
- <para>Уверены ли вы, что ваш ответ корректен? Если нет, то подождите
- пару дней. Если никого больше не появится с лучшим ответом, чем ваш,
- то вы можете ответить и сказать, например, <quote>I don't know if
- this is correct, but since nobody else has replied, why don't you try
- replacing your ATAPI CDROM with a frog?</quote>.</para>
- </listitem>
-
- <listitem>
- <para>Если нет причин поступить как-то иначе, то ответьте отправителю и
- в список рассылки FreeBSD-questions. Многие подписчики
- FreeBSD-questions <quote>таятся</quote>: они учатся на чтении
- сообщений, посланных и отвеченных другими. Если вы пошлете
- сообщение, представляющее интерес для всех, минуя список рассылки, то
- лишите этих людей их информации. Будьте внимательны при ответе всем;
- многие посылают сообщения с сотнями CC-адресатов. В таких случаях
- удалите лишние строки Cc:.</para>
- </listitem>
-
- <listitem>
- <para>Из исходного сообщения включите текст, который относится к делу.
- Избегайте излишнего цитирования, но не переусердствуйте. Тот, кто не
- читал первоначального сообщения, должен понять, о чём же идёт
- речь.</para>
- </listitem>
-
- <listitem>
- <para>Используйте приемы выделения текста, который взят из исходного
- сообщения и текста, который добавили вы. Лично я нахожу, что для
- первоначального текста лучше всего работает вставка символа
- <quote><literal>&gt; </literal></quote>. Вставка пробела после
- <quote><literal>&gt; </literal></quote> и пустых строк между вашим
- и первоначальным текстами сделает результат более читабельным.</para>
- </listitem>
-
- <listitem>
- <para>Поместите ваш ответ в правильном месте (после текста, на который
- вы отвечаете). Очень трудно читать набор ответов, когда каждый из
- них следует перед текстом, к которому относится.</para>
- </listitem>
-
- <listitem>
- <para>Большинство почтовых программ меняют строку темы письма в ответе,
- предваряя ее текстом типа <quote>Re: </quote>. Если ваша почтовая
- программа не делает это автоматически, вы должны делать это
- вручную.</para>
- </listitem>
-
- <listitem>
- <para>Если спрашивающий не следует соглашениям по форматированию текста
- (слишком длинные строки, неподходящая строка темы),
- <emphasis>пожалуйста</emphasis>, исправьте эти ошибки. В случае
- некорректной строки темы письма (типа <quote>HELP!!??</quote>)
- измените её, например, так: <quote>Re: Difficulties with sync PPP
- (was: HELP!!??)</quote>. В таком случае у других людей, пытающихся
- отследить обсуждение, будет меньше проблем.</para>
-
- <para>В таких случаях хорошо сказать, что вы сделали и почему, но
- постарайтесь не грубить. Если вы чувствуете, что не можете ответить,
- не скатываясь на грубость, воздержитесь от ответа вообще.</para>
-
- <para>Если вы хотите ответить на сообщение лишь потому, что оно плохо
- оформлено, ответьте только автору, но не в список. Если хотите, то
- в ответ можете просто послать ему эту статью.</para>
- </listitem>
- </orderedlist>
- </sect1>
-</article>
diff --git a/ru_RU.KOI8-R/articles/geom-class/Makefile b/ru_RU.KOI8-R/articles/geom-class/Makefile
deleted file mode 100644
index 9b74ce0c2a..0000000000
--- a/ru_RU.KOI8-R/articles/geom-class/Makefile
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# $FreeBSD$
-#
-# Article: Writing a GEOM Class
-#
-# Original revision: r39631
-#
-
-DOC?= article
-
-FORMATS?= html
-WITH_ARTICLE_TOC?= YES
-
-INSTALL_COMPRESSED?= gz
-INSTALL_ONLY_COMPRESSED?=
-
-SRCS= article.xml
-
-URL_RELPREFIX?= ../../../..
-DOC_PREFIX?= ${.CURDIR}/../../..
-
-.include "${DOC_PREFIX}/share/mk/doc.project.mk"
diff --git a/ru_RU.KOI8-R/articles/geom-class/article.xml b/ru_RU.KOI8-R/articles/geom-class/article.xml
deleted file mode 100644
index 7f175d1321..0000000000
--- a/ru_RU.KOI8-R/articles/geom-class/article.xml
+++ /dev/null
@@ -1,813 +0,0 @@
-<?xml version="1.0" encoding="koi8-r"?>
-<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
- "http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
-<!--
- The FreeBSD Russian Documentation Project
- $FreeBSD$
- $FreeBSDru$
- Original revision: r44964
--->
-<!-- Перевод: Тарас Коренко -->
-<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="ru">
-
-
- <info><title>Создание класса GEOM</title>
-
- <authorgroup>
- <author><personname><firstname>Ivan</firstname><surname>Voras</surname></personname><affiliation>
- <address><email>ivoras@FreeBSD.org</email>
- </address>
- </affiliation></author>
- </authorgroup>
-
- <legalnotice xml:id="trademarks" role="trademarks">
- &tm-attrib.freebsd;
- &tm-attrib.intel;
- &tm-attrib.general;
- </legalnotice>
-
- <pubdate>$FreeBSD$</pubdate>
-
- <releaseinfo>$FreeBSD$</releaseinfo>
-
- <abstract>
- <para>Эта статья документирует некоторые начальные выкладки
- в разработке GEOM-классов, а также модулей ядра в общем.
- Предполагается, что читатель близко знаком с программированием
- на Си в контексте пространства пользовательских процессов
- (userland).</para>
- </abstract>
- </info>
-
- <sect1 xml:id="intro">
- <title>Вступление</title>
-
- <sect2 xml:id="intro-docs">
- <title>Документация</title>
-
- <para>Документация по программированию для ядра скудная, это одна из
- немногих областей программирования, где почти нет хороших учебных
- пособий, и совет <quote>читай исходники!</quote> &mdash;
- сохраняет свою справедливость. Однако, существует несколько
- статей и книг разной актуальности, которые рекомендуются к изучению
- перед тем, как начать программировать:</para>
-
- <itemizedlist>
- <listitem>
- <para><link xlink:href="&url.books.developers-handbook;/index.html">
- Руководство FreeBSD для разработчиков</link> &mdash; часть
- Проекта Документации FreeBSD, ничего специфичного
- о программировании ядра в нем нет, зато есть немного общей
- полезной информации.</para>
- </listitem>
-
- <listitem>
- <para><link xlink:href="&url.books.arch-handbook;/index.html">
- Руководство по Архитектуре FreeBSD</link> &mdash; также
- является частью Проекта Документации FreeBSD, содержит описания
- некоторых низкоуровневых средств и процедур. Уделите внимание
- разделу номер 13 &mdash;
- <link xlink:href="&url.books.arch-handbook;/driverbasics.html">
- Написание драйверов устройств для FreeBSD</link>.</para>
- </listitem>
-
- <listitem>
- <para>Несколько интересных статей об устройстве ядра
- можно найти на сайте
- <link xlink:href="http://www.freebsddiary.com">FreeBSD
- Diary</link>.</para>
- </listitem>
-
- <listitem>
- <para>Страницы из раздела номер 9 системного справочника,
- содержат важную документацию по функциям ядра.</para>
- </listitem>
-
- <listitem>
- <para>Страница справочника &man.geom.4;, а также <link xlink:href="http://phk.freebsd.dk/pubs/">слайды Пола-Хеннинга Кампа
- </link> &mdash; общее представление о подсистеме GEOM.</para>
- </listitem>
-
- <listitem>
- <para>Страницы справочника &man.g.bio.9;, &man.g.event.9;,
- &man.g.data.9;, &man.g.geom.9;, &man.g.provider.9;,
- &man.g.consumer.9;, &man.g.access.9;, а также другие,
- связанные с вышеупомянутыми и раскрывающие специфический
- функционал подсистемы GEOM.</para>
- </listitem>
-
- <listitem>
- <para>Страница справочника &man.style.9; &mdash; документирует
- соглашения о стиле оформления кода, которые обязаны быть соблюдены
- если вы планируете передать ваш код в Subversion репозиторий
- FreeBSD.</para>
- </listitem>
- </itemizedlist>
- </sect2>
- </sect1>
-
- <sect1 xml:id="prelim">
- <title>Подготовка</title>
-
- <para>Для того, чтоб заниматься разработками для ядра, желательно
- иметь два отдельных компьютера. Один из них предназначен для среды
- разработки и исходных кодов, а второй &mdash; для запуска тестов
- отлаживаемого кода. Второму компьютеру для работы достаточно
- иметь возможность выполнять начальную загрузку по сети и монтирование
- файловых систем по сети. В этой ситуации, если отлаживаемый код
- содержит ошибки и вызовет аварийную остановку системы, то это не
- повлечет порчу или утерю исходного кода
- <!-- (and other <quote>live</quote> data). -->.
- Второму компьютеру даже не потребуется иметь свой монитор,
- достаточно будет соединения асинхронных портов кабелем RS-232 или
- соединения при помощи KVM-устройства.</para>
-
- <para>Но так как далеко не у каждого есть два или более компьютеров
- под рукой, есть пара способов подготовить иную <quote>живую</quote>
- систему для разработки кода для ядра. Один из них &mdash; это
- разработка в <link xlink:href="http://www.vmware.com/">VMWare</link>
- или <link xlink:href="http://www.qemu.org/">QEmu</link> виртуальной машине
- (это лучшее из доступного, после, конечно-же, выделенного для тестов
- компьютера).</para>
-
- <sect2 xml:id="prelim-system">
- <title>Настройка системы для разработки</title>
-
- <para>Прежде всего необходимо иметь в ядре поддержку
- <option>INVARIANTS</option>. Добавьте следующие строки в
- файл конфигурации ядра:</para>
-
- <programlisting>options INVARIANT_SUPPORT
-options INVARIANTS</programlisting>
-
- <para>Для большей информативности при отладке включите поддержку
- WITNESS, которая будет предупреждать вас в случае возникновения
- взаимоблокировок:</para>
-
- <programlisting>options WITNESS_SUPPORT
-options WITNESS
-</programlisting>
-
- <para>Также включите отладочные символы, если планируете
- выполнять отладку по дампам аварийных отказов</para>
-
- <programlisting> makeoptions DEBUG=-g</programlisting>
-
- <para>Установка отладочного ядра обычным способом (<command>make
- installkernel</command>) не даст привычного результата:
- файл ядра будет называться <filename>kernel.debug</filename>
- и будет находиться в
- <filename>/usr/obj/usr/src/sys/KERNELNAME/</filename>.
- Для удобства, отладочное ядро необходимо скопировать в
- <filename>/boot/kernel/</filename>.</para>
-
- <para>Также удобно иметь включенный отладчик ядра, так вы сможете
- исследовать паники сразу-же после их возникновения. Для включения
- отладчика добавьте следующие строки в файл конфигурации ядра:</para>
-
- <programlisting>options KDB
-options DDB
-options KDB_TRACE</programlisting>
-
- <para>Для автоматического запуска отладчика ядра после возникновения
- паники может понадобиться установить переменную sysctl:</para>
-
- <programlisting> debug.debugger_on_panic=1</programlisting>
-
- <para>Паники системы будут происходить, поэтому уделите внимание
- кэшу файловой системы. Обычно, при включенном механизме
- softupdates, последняя версия файла может быть утеряна если
- паника произошла раньше сбрасывания кэша на устройство хранения.
- Выключение механизма softupdates (посредством монтирования файловой
- системы с опцией <quote>sync</quote>) значительно сказывается на
- производительности и, опять-же, не гарантирует целостности
- данных. Как компромисс, можно сократить задержки сбрасывания
- кэша механизма softupdates. Есть три переменных sysctl, значения
- которых необходимо изменить (лучше всего &mdash; прописав их в
- <filename>/etc/sysctl.conf</filename>):</para>
-
- <programlisting>kern.filedelay=5
-kern.dirdelay=4
-kern.metadelay=3</programlisting>
-
- <para>Значения этих переменных &mdash; секунды.</para>
-
- <para>Для отладки паник ядра необходимы дампы памяти.
- Так как паника ядра может <quote>сломать</quote> файловую
- систему, дамп сначала сохраняется в <quote>сырой</quote>
- раздел. Обычно, это своп-раздел. Поэтому, размер своп-раздела
- должен быть не меньше размера ОЗУ компьютера. При последующей
- загрузке дамп копируется в обычный файл. Это происходит сразу-же
- после проверки и монтирования файловых систем, но перед
- активированием раздела свопа. Такое поведение контролируется
- следующими переменными <filename>/etc/rc.conf</filename>:</para>
-
- <programlisting>dumpdev="/dev/ad0s4b"
-dumpdir="/usr/core" </programlisting>
-
- <para>Переменная <varname>dumpdev</varname> указывает на раздел
- подкачки, а <varname>dumpdir</varname> сообщает системе куда
- перемещать дамп ядра при следующей загрузке.</para>
-
- <para>Сохранение дампа ядра &mdash; процесс медленный, и, если
- у вашего компьютера много оперативной памяти (&gt;256M) и если
- паники случаются часто, то ожидание сохранения дампов может начать
- раздражать (вспомним, что над дампом происходит две операции:
- сохранение в своп-файл и перемещение на файловую систему).
- В таком случае может оказаться удобным ограничивание объема
- используемой системой памяти путем установки переменной в
- <filename>/boot/loader.conf</filename>:</para>
-
- <programlisting> hw.physmem="256M"</programlisting>
-
- <para>Если паники случаются часто и размер файловых систем большой
- (или же вы просто не доверяете softupdates и фоновой проверке
- файловых систем), рекомендуется отключить фоновую проверку файловых
- систем посредством установки переменной в
- <filename>/etc/rc.conf</filename>:</para>
-
- <programlisting> background_fsck="NO"</programlisting>
-
- <para>В этом случае файловые системы будут проверяться только при
- необходимости. Также заметьте, что в случае использования фоновой
- проверки, новая паника может случиться в то время, когда
- проверяются диски. Другими словами, наиболее безопасный способ
- &mdash; не иметь много локальных файловых систем, а использовать
- второй компьютер в качестве NFS-сервера.</para>
- </sect2>
-
- <sect2 xml:id="prelim-starting">
- <title>Начало проекта</title>
-
- <para>Для написания нового класса GEOM необходимо создать поддиректорию
- в любой доступной пользователю директории. Совсем не обязательно,
- чтоб ваш модуль изначально размещался в
- <filename>/usr/src</filename>.</para>
- </sect2>
-
- <sect2 xml:id="prelim-makefile">
- <title>Makefile</title>
-
- <para>Правилом хорошего тона является создание
- <filename>Makefile</filename>-ов для каждого нетривиального
- проекта, примером которого конечно-же является создание
- модулей ядра.</para>
-
- <para>Создание <filename>Makefile</filename> &mdash; дело
- не сложное благодаря исчерпывающему набору вспомогательных средств,
- предоставляемых системой. В вкратце, вот как должен выглядеть
- <filename>Makefile</filename> для модуля ядра:</para>
-
- <programlisting>SRCS=g_journal.c
-KMOD=geom_journal
-
-.include &lt;bsd.kmod.mk&gt;</programlisting>
-
- <para>Этот <filename>Makefile</filename> (с измененными именами
- файлов) подойдет к любому модулю ядра. Класс GEOM может размещаться
- в одном единственном модуле ядра. Если для сборки вашего модуля
- требуется больше, чем один файл, то перечислите их имена,
- разделенные пробельными символами, в переменной <envar>SRCS</envar>.
- </para>
- </sect2>
- </sect1>
-
- <sect1 xml:id="kernelprog">
- <title>Программирование в ядре FreeBSD</title>
-
- <sect2 xml:id="kernelprog-memalloc">
- <title>Выделение памяти</title>
-
- <para>Прочитайте &man.malloc.9; &mdash; выделение памяти лишь
- немного отличается от своего эквивалента, используемого в пространстве
- пользовательских процессов (userland). Наиболее приметно то, что
- <function>malloc</function>() и <function>free</function>()
- принимают дополнительные параметры, которые описаны в странице
- справочника.</para>
-
- <para>Тип <quote>malloc_type</quote> необходимо объявить в секции
- деклараций файла с исходным кодом, например:</para>
-
- <programlisting> static MALLOC_DEFINE(M_GJOURNAL, "gjournal data", "GEOM_JOURNAL Data");</programlisting>
-
- <para>Для того, чтобы можно было использовать этот макрос,
- необходимо включить следующие заголовочные файлы:
- <filename>sys/param.h</filename>,
- <filename>sys/kernel.h</filename> и
- <filename>sys/malloc.h</filename></para>
-
- <para>Существует еще один механизм выделения памяти &mdash; UMA
- (Universal Memory Allocator), описанный в &man.uma.9;.
- Это специфический метод, преимущественно предназначенный для
- быстрого выделения памяти под списки, состоящие из элементов
- одинакового размера (например, динамические массивы структур).</para>
- </sect2>
-
- <sect2 xml:id="kernelprog-lists">
- <title>Очереди и списки</title>
-
- <para>Ознакомьтесь с &man.queue.3;
- Во множестве случаев вам необходимо будет организовывать и
- управлять такой структурой данных, как списки. К счастью, эта
- структура данных реализована несколькими способами в виде макросов
- на Си, а также включена в систему. Наиболее гибкий и часто
- употребляемый тип списка &mdash; TAILQ. Этот тип списка также один
- из наиболее требовательных к памяти (его элементы - с двойными
- связями), а также &mdash; наиболее медленный (однако счет идет
- на несколько инструкций ЦПУ, поэтому последнее утверждение не следует
- воспринимать в всерьез).</para>
-
- <para>Если важна скорость получения данных, то возьмите на вооружение
- &man.tree.3; и &man.hashinit.9;.</para>
- </sect2>
-
- <sect2 xml:id="kernelprog-bios">
- <title>BIOs</title>
-
- <para>Структура <varname remap="structname">bio</varname> используется для всех
- операций ввода/вывода, касающихся GEOM. Она содержит
- информацию о том, какое устройство ('поставщик geom') должно ответить
- на запрос, тип запроса, смещение, длину и указатель на буфер,
- а также набор <quote>определенных пользователем</quote> флагов и
- полей
- <!-- , которые могут помочь осуществить various hacks-->.
- </para>
-
- <para>Важным моментом является то, что <varname remap="structname">bio</varname>
- обрабатываются асинхронно. Это значит, что во многих частях кода
- нет аналога к &man.read.2; и &man.write.2; функциям из пространства
- пользовательских процессов, которые не возвращают управление пока
- не выполнится системный вызов. Скорее, по завершении обработки
- запроса (или в случае ошибки при обработке) как извещение вызывается
- определенная пользователем функция.</para>
-
- <para>Асинхронная модель программирования в чем-то сложней,
- нежели чаще используемая императивная модель, используемая в
- пространстве пользовательских процессов; в любом случае, привыкание
- займет некоторое время. В некоторых случаях могут быть использованы
- вспомогательные функции <function>g_write_data</function>() и
- <function>g_read_data</function>(), но <emphasis>далеко не
- всегда</emphasis>. В частности, эти функции не могут использоваться
- когда захвачен мьютекс; например, мьютекс GEOM-топологии или
- внутренний мьютекс, удерживаемый в ходе выполнения
- <function>.start</function>() или <function>.stop</function>().</para>
- </sect2>
- </sect1>
-
- <sect1 xml:id="geom">
- <title>Программирование в системе GEOM</title>
-
- <sect2 xml:id="geom-ggate">
- <title>Ggate</title>
-
- <para>Если максимальная производительность не требуется,
- то более простой способ совершать преобразования данных &mdash;
- это выполнять их в пространстве пользовательских процессов
- посредством ggate (GEOM gate). К недостаткам следует отнести
- невозможность простого переноса кода в ядро.</para>
- </sect2>
-
- <sect2 xml:id="geom-class">
- <title>Класс GEOM</title>
-
- <para>Класс GEOM выполняет преобразования данных. Эти преобразования
- могут быть скомпонованы друг с другом в виде дерева. Экземпляр
- класса GEOM называют <emphasis>geom</emphasis>.</para>
-
- <para>В каждом классе GEOM есть несколько <quote>методов класса</quote>,
- которые вызываются когда экземпляра класса нет в наличии (или же
- они не привязаны к конкретному экземпляру класса).</para>
-
- <itemizedlist>
- <listitem>
- <para><function>.init</function> вызывается тогда, когда
- системе GEOM становится известно о классе GEOM (например,
- когда загружается модуль ядра).</para>
- </listitem>
-
- <listitem>
- <para><function>.fini</function> будет вызван в случае отказа
- GEOM системы от класса (например, при выгрузке модуля).</para>
- </listitem>
-
- <listitem>
- <para><function>.taste</function> вызывается, когда в
- системе появляется новый класс или поставщик geom
- (<quote>provider</quote>). Если соответствие найдено, то эта
- функция обычно создает и запускает экземпляр geom.</para>
- </listitem>
-
- <listitem>
- <para><function>.destroy_geom</function> вызывается при
- необходимости разрушить экземпляр geom.</para>
- </listitem>
-
- <listitem>
- <para><function>.ctlconf</function> будет вызван, когда
- пользователь запросит изменение конфигурации существующего
- экземпляра geom</para>
- </listitem>
- </itemizedlist>
-
- <para>Также определены функции событий GEOM, которые копируются
- в экземпляр geom.</para>
-
- <para>Поле <function>.geom</function> в структуре
- <varname remap="structname">g_class</varname> &mdash; это список (LIST) экземпляров
- geom, реализованных из класса.</para>
-
- <para>Эти функции вызываются из g_event потока ядра.</para>
- </sect2>
-
- <sect2 xml:id="geom-softc">
- <title>Softc</title>
-
- <para><quote>softc</quote> &mdash; это устаревший термин
- для <quote>приватных данных драйвера</quote> (<quote>driver
- private data</quote>). Название вероятней всего происходит от
- устаревшего термина <quote>software control block</quote>.
- В системе GEOM softc это структура (точнее: указатель на
- структуру) которая может быть присоединена к экземпляру geom
- и может содержать приватные данные экземпляра. У большинства
- классов GEOM есть следующие члены:</para>
-
- <itemizedlist>
- <listitem>
- <para><varname>struct g_provider *provider</varname> :
- <quote>поставщик geom</quote> предоставляемый данным экземпляром
- geom</para>
- </listitem>
-
- <listitem>
- <para><varname>uint16_t n_disks</varname> : Количество
- потребителей geom (<quote>consumer</quote>), обслуживаемых данным
- экземпляром geom</para>
- </listitem>
-
- <listitem>
- <para><varname>struct g_consumer **disks</varname> :
- Массив <varname>struct g_consumer*</varname>. (Невозможно
- обойтись одинарным указателем, потому что система GEOM создает
- для нас структуры struct g_consumer*)</para>
- </listitem>
- </itemizedlist>
-
- <para>Структура <varname remap="structname">softc</varname> содержит состояние
- экземпляра geom. У каждого экземпляра есть свой softc.</para>
- </sect2>
-
- <sect2 xml:id="geom-metadata">
- <title>Метаданные</title>
-
- <para>Формат метаданных в той или иной мере зависит от конкретного
- класса, но <emphasis>обязан</emphasis> начинаться с:</para>
-
- <itemizedlist>
- <listitem>
- <para>16-байтного буфера для подписи &mdash; строки с
- завершающим нулем (обычно это имя класса)</para>
- </listitem>
-
- <listitem>
- <para>uint32 идентификатора версии</para>
- </listitem>
- </itemizedlist>
-
- <para>Подразумевается, что классы geom знают как обращаться с
- метаданными с идентификаторами версий ниже, чем их собственные.</para>
-
- <para>Метаданные размещаются в последнем секторе поставщика geom
- (поэтому обязаны целиком умещаться в нем).</para>
-
- <para>(Все это зависит от реализации, но весь существующий код работает
- подобно описанному и поддерживается библиотеками.)</para>
- </sect2>
-
- <sect2 xml:id="geom-creating">
- <title>Маркирование/создание экземпляра geom</title>
-
- <para>Последовательность событий следующая:</para>
-
- <itemizedlist>
- <listitem>
- <para>пользователь запускает служебную программу &man.geom.8;</para>
- </listitem>
-
- <listitem>
- <para>программа решает каким классом geom ей придется
- управлять и ищет библиотеку
- <filename>geom_<replaceable>CLASSNAME</replaceable>.so</filename>
- (которая обычно находится в <filename>/lib/geom</filename>).</para>
- </listitem>
-
- <listitem>
- <para>она открывает библиотеку при помощи &man.dlopen.3;,
- извлекает вспомогательные функции и определения параметров
- командной строки.</para>
- </listitem>
- </itemizedlist>
-
- <para>Вот так происходит создание/маркирование нового экземпляра
- geom:</para>
-
- <itemizedlist>
- <listitem>
- <para>&man.geom.8; ищет команду в аргументах командной
- строки (обычно это <option>label</option>) и вызывает
- вспомогательную функцию.</para>
- </listitem>
-
- <listitem>
- <para>Вспомогательная функция проверяет параметры и
- собирает метаданные, которые записываются во все вовлеченные
- поставщики geom.</para>
- </listitem>
-
- <listitem>
- <para>Это <quote>повреждает (spoil)</quote> существующие
- экземпляры geom (если они были) и порождает новый виток
- <quote>тестирования</quote> поставщиков geom. Целевой класс geom
- опознает метаданные и активирует экземпляр geom.</para>
- </listitem>
- </itemizedlist>
-
- <para>(Приведенная выше последовательность событий зависит от
- конкретной реализации, но весь существующий код работает
- подобно описанному и поддерживается библиотеками.)</para>
- </sect2>
-
- <sect2 xml:id="geom-command">
- <title>Структура команд geom</title>
-
- <para>Вспомогательная библиотека <filename>geom_CLASSNAME.so</filename>
- экспортирует структуру <varname remap="structname">class_commands</varname>,
- которая является массивом элементов
- <varname remap="structname">struct g_command</varname>. Эти команды одинакового
- формата и выглядят следующим образом:</para>
-
- <programlisting> команда [-опции] имя_geom [другие]</programlisting>
-
- <para>Общими командами являются:</para>
-
- <itemizedlist>
- <listitem>
- <para>label &mdash; записать метаданные в устройства,
- чтобы они могли быть опознаны в процессе тестирования
- и использованы в соответствующих экземплярах geom</para>
- </listitem>
-
- <listitem>
- <para>destroy &mdash; разрушить метаданные, за которым
- последует разрушение экземпляров geom</para>
- </listitem>
- </itemizedlist>
-
- <para>Общие опции:</para>
-
- <itemizedlist>
- <listitem>
- <para><literal>-v</literal> : детальный вывод</para>
- </listitem>
-
- <listitem>
- <para><literal>-f</literal> : принудить</para>
- </listitem>
- </itemizedlist>
-
- <para>Некоторые операции, к примеру маркирование метаданными и
- разрушение метаданных могут быть выполнены из пространства
- пользовательских процессов. Для этого, структура
- <varname remap="structname">g_command</varname> содержит поле
- <varname>gc_func</varname>, которое может быть установлено на
- функцию (в том-же <filename>.so</filename>), которая будет вызвана
- для обработки команды. В случае, когда <varname>gc_func</varname>
- равно NULL, команда будет передана модулю ядра: функции
- <function>.ctlreq</function> класса GEOM.</para>
- </sect2>
-
- <sect2 xml:id="geom-geoms">
- <title>Экземпляры geom</title>
-
- <para>У экземпляров классов GEOM есть внутренние данные, которые
- хранятся в структурах softc, а также есть некоторые функции,
- посредством которых они реагируют на внешние события.</para>
-
- <para>Функции событий:</para>
-
- <itemizedlist>
- <listitem>
- <para><function>.access</function> : просчитывает
- права доступа (чтение/запись/исключительный доступ)</para>
- </listitem>
-
- <listitem>
- <para><function>.dumpconf</function> : возвращает
- информацию о экземпляре geom; формат XML</para>
- </listitem>
-
- <listitem>
- <para><function>.orphan</function> : вызывается, когда
- отсоединяется любой из низлежащих поставщиков geom</para>
- </listitem>
-
- <listitem>
- <para><function>.spoiled</function> : вызывается, когда
- производится запись в низлежащий поставщик geom</para>
- </listitem>
-
- <listitem>
- <para><function>.start</function> : обрабатывает ввод/вывод</para>
- </listitem>
- </itemizedlist>
-
- <para>Эти функции вызываются из ядерного потока
- <function>g_down</function> и в этом контексте не может быть
- блокировок (поищите определение <quote>блокировка</quote> в других
- источниках), что немного ограничивает свободу действий, но
- способствует быстроте обработки.</para>
-
- <para>Из вышеупомянутых, наиболее важной и выполняющей полезную работу
- функцией является <function>.start</function>(), которая вызывается
- всякий раз, когда поставщику geom, управляемому экземпляром класса,
- приходит запрос BIO.</para>
- </sect2>
-
- <sect2 xml:id="geom-threads">
- <title>Потоки выполнения системы geom</title>
-
- <para>Системой GEOM в ядре ОС создаются и используются три
- потока выполнения (kernel threads):</para>
-
- <itemizedlist>
- <listitem>
- <para><literal>g_down</literal> : Обрабатывает запросы,
- приходящие от высокоуровневых сущностей (таких, как запросы из
- пространства пользовательских процессов) на пути к физическим
- устройствам</para>
- </listitem>
-
- <listitem>
- <para><literal>g_up</literal> : Обрабатывает ответы от
- драйверов устройств на запросы, выполненные высокоуровневыми
- сущностями</para>
- </listitem>
-
- <listitem>
- <para><literal>g_event</literal> : Отрабатывает в остальных
- случаях, как-то создание экземпляра geom, просчитывание прав
- доступа, события <quote>повреждения</quote> и т.п.</para>
- </listitem>
- </itemizedlist>
-
- <para>Когда пользовательский процесс запрашивает <quote>прочитать
- данные X по смещению Y файла</quote>, происходит следующее:</para>
-
- <itemizedlist>
- <listitem>
- <para>Файловая система преобразует запрос в экземпляр
- структуры bio и передает его системе GEOM. Файловая система
- <quote>знает</quote>, что экземпляр geom должен обработать запрос,
- так как файловые системы размещаются непосредственно
- над экземпляром geom.</para>
- </listitem>
-
- <listitem>
- <para>Запрос завершается вызовом функции
- <function>.start</function>() в потоке g_down и достигает
- верхнего экземпляра geom.</para>
- </listitem>
-
- <listitem>
- <para>Верхний экземпляр geom (например, это секционировщик
- разделов (partition slicer)) определяет, что запрос должен быть
- переадресован нижестоящему экземпляру geom (к примеру, драйверу
- диска). Вышестоящий экземпляр geom создает копию запроса bio
- (запросы bio <emphasis>ВСЕГДА</emphasis> копируются при передаче
- между экземплярами geom при помощи
- <function>g_clone_bio</function>()!),
- изменяет поля смещения и целевого поставщика geom и запускает
- на обработку копию при помощи функции
- <function>g_io_request</function>()</para>
- </listitem>
-
- <listitem>
- <para>Драйвер диска также получает запрос bio, как вызов
- функции <function>.start</function>() в потоке
- <literal>g_down</literal>. Драйвер обращается к контроллеру диска,
- получает блок данных и вызывает функцию
- <function>g_io_deliver</function>() используя копию запроса bio
- </para>
- </listitem>
-
- <listitem>
- <para>Теперь, извещение о завершении bio
- <quote>всплывает</quote> в потоке <literal>g_up</literal>.
- Сначала в потоке <literal>g_up</literal> вызывается функция
- <function>.done</function>() секционировщика разделов,
- последний использует полученную информацию, разрушает
- клонированный экземпляр структуры bio посредством
- <function>g_destroy_bio</function>() и вызывает
- <function>g_io_deliver</function>() используя
- первоначальный запрос</para>
- </listitem>
-
- <listitem>
- <para>Файловая система получает данные и передает их
- пользовательскому процессу</para>
- </listitem>
- </itemizedlist>
-
- <para>За информацией о том, как данные передаются в структуре
- <varname remap="structname">bio</varname> между экземплярами geom,
- смотрите &man.g.bio.9; (обратите внимание на использование полей
- <varname>bio_parent</varname> и <varname>bio_children</varname>).
- </para>
-
- <para>Важный момент в том, что <emphasis>НЕЛЬЗЯ ДОПУСКАТЬ БЛОКИРОВОК
- В ПОТОКАХ G_UP И G_DOWN</emphasis>. Вот неполный перечень того,
- что нельзя делать в этих потоках:</para>
-
- <itemizedlist>
- <listitem>
- <para>Вызывать функции <function>msleep</function>() или
- <function>tsleep</function>().</para>
- </listitem>
-
- <listitem>
- <para>Использовать функции
- <function>g_write_data</function>() и
- <function>g_read_data</function>(), так как они блокируются
- в момент обмена данными с потребителями geom.</para>
- </listitem>
-
- <listitem>
- <para>Ожидать ввод/вывод.</para>
- </listitem>
-
- <listitem>
- <para>Вызывать &man.malloc.9; и
- <function>uma_zalloc</function>() с установленным флагом
- <varname>M_WAITOK</varname>.</para>
- </listitem>
-
- <listitem>
- <para>Использовать &man.sx.9; <!-- и другие sleepable locks. -->
- </para>
- </listitem>
- </itemizedlist>
-
- <para>Это ограничение на код GEOM призвано избежать от
- <quote>засорения</quote> пути запроса ввода/вывода, так как
- блокировки обычно не имеют четких временных границ, и нет гарантий
- на занимаемое время (также на то есть и другие технические причины).
- Это также значит, что в вышеупомянутых потоках сколь-нибудь сложные
- операции выполнить нельзя, например: любое сложное преобразование
- требует выделения памяти. К счастью решение есть: создание
- дополнительных ядерных потоков.</para>
- </sect2>
-
- <sect2 xml:id="geom-kernelthreads">
- <title>Ядерные потоки выполнения, предназначенные для использования
- в коде geom</title>
-
- <para>Ядерные потоки выполнения создаются функцией
- &man.kthread.create.9;, в своем поведении они схожи с потоками,
- созданными в пространстве пользовательских процессов, но есть одно
- отличие: они не могут известить вызвавший их поток о своем завершении;
- по завершению &mdash; необходимо вызывать &man.kthread.exit.9;</para>
-
- <para>В коде GEOM обычное назначение этих потоков &mdash; разгрузить
- поток <literal>g_down</literal>
- (функцию <function>.start</function>() ) от обработки запросов. Эти
- потоки подобны <quote>обработчикам событий</quote>
- (<quote>event handlers</quote>):
- у них есть очередь событий (которая наполняется событиями от разных
- функций из разных потоков; очередь необходимо защищать мьютексом),
- события из очереди выбираются одно за другим и обрабатываются
- в большом блоке <literal>switch</literal>().</para>
-
- <para>Основное преимущество использования отдельного потока, который
- обрабатывает запросы ввода/вывода, то, что он может блокироваться по
- мере необходимости. Это, несомненно, привлекательно, но должно быть
- хорошо обдумано. Блокирование &mdash; хорошо и удобно, но может
- существенно снизить производительность преобразований данных в
- системе GEOM. Особо требовательные к производительности классы
- могут делать всю работу в функции <function>.start</function>(),
- уделяя особое внимание ошибкам при работе с памятью.</para>
-
- <para>Еще одно преимущество потока <quote>обработчика событий</quote>
- это сериализация всех запросов и ответов, приходящих с разных
- потоков geom в один поток. Это также удобно, но может быть медленным.
- В большинстве случаев, обработка запросов функцией
- <function>.done</function>() может быть оставлена потоку
- <literal>g_up</literal>.</para>
-
- <para>У мьютексов в ядре FreeBSD (&man.mutex.9;) есть одно различие
- с их аналогами из пространства пользовательских процессов &mdash;
- во время удержания мьютекса в коде не должно быть блокировки. Если
- в коде необходимо блокирование, то лучше использовать &man.sx.9;.
- С другой стороны, если вся ваша работа выполняется в одном потоке,
- вы можете обойтись вообще без мьютексов.</para>
- </sect2>
- </sect1>
-</article>
diff --git a/ru_RU.KOI8-R/articles/gjournal-desktop/Makefile b/ru_RU.KOI8-R/articles/gjournal-desktop/Makefile
deleted file mode 100644
index 8432b7dbfd..0000000000
--- a/ru_RU.KOI8-R/articles/gjournal-desktop/Makefile
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# $FreeBSD$
-#
-# Article: Implementing UFS journaling on a desktop PC
-#
-# Original revision: r39631
-#
-
-DOC?= article
-
-FORMATS?= html
-
-INSTALL_COMPRESSED?=gz
-INSTALL_ONLY_COMPRESSED?=
-
-SRCS= article.xml
-IMAGES_EN= disklabel1.png
-IMAGES_EN+= disklabel2.png
-URL_RELPREFIX?= ../../../..
-DOC_PREFIX?= ${.CURDIR}/../../..
-
-.include "${DOC_PREFIX}/share/mk/doc.project.mk"
diff --git a/ru_RU.KOI8-R/articles/gjournal-desktop/article.xml b/ru_RU.KOI8-R/articles/gjournal-desktop/article.xml
deleted file mode 100644
index 4bb6001630..0000000000
--- a/ru_RU.KOI8-R/articles/gjournal-desktop/article.xml
+++ /dev/null
@@ -1,718 +0,0 @@
-<?xml version="1.0" encoding="koi8-r"?>
-<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
- "http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
-<!--
- The FreeBSD Russian Documentation Project
- $FreeBSD$
- Original revision: r43184
--->
-<!-- Перевод: Тарас Коренко -->
-<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="ru">
- <info><title>Настройка журналирования UFS для настольного компьютера.</title>
-
-
- <author><personname><firstname>Manolis</firstname><surname>Kiagias</surname></personname><affiliation>
- <address><email>manolis@FreeBSD.org</email></address>
- </affiliation></author>
-
- <copyright>
- <year>2008</year>
- <holder role="mailto:manolis@FreeBSD.org">Manolis Kiagias</holder>
- </copyright>
-
- <pubdate>$FreeBSD$</pubdate>
-
- <releaseinfo>$FreeBSD$</releaseinfo>
-
- <legalnotice xml:id="trademarks" role="trademarks">
- &tm-attrib.freebsd;
- &tm-attrib.general;
- </legalnotice>
-
- <abstract>
- <para>Журналируемая файловая система использует лог для записи всех
- транзакций, происходящих в файловой системе, который также
- сохраняет ее целостность в случае краха системы или пропадания
- питания. Несмотря на то, что всё еще возможна потеря несохранённых
- изменений файлов, журналирование почти полностью исключает
- возможность повреждения структуры файловой системы, вызванное
- непредвиденным остановом работы. Журналирование также сокращает
- до минимума время, необходимое для проверки файловой системы после
- отказа. Несмотря на то, что в используемой &os; файловой системе
- UFS нет поддержки журналирования, новый класс системы GEOM
- в &os;&nbsp;7.<replaceable>X</replaceable> может быть использован
- для для ведения независимого от файловой системы журналирования.
- Эта статья объясняет, как реализовать журналирование UFS для
- типичного настольного компьютера.</para>
- </abstract>
- </info>
-
- <sect1 xml:id="introduction">
- <title>Вступление</title>
-
- <para>Серверное оборудование обычно хорошо защищено от потери питания.
- Настольный компьютер часто подвержен неожиданным пропаданиям питания,
- случайным нажатиям кнопки Reset и другим происшествиям (часто
- связанным с неосторожностью пользователей), которые могут привести
- к непредвиденным выключениям. Механизм Soft Updates, как правило,
- достаточно эффективно защищает файловую систему в таких случаях, однако
- в последствии требуется длительная фоновая проверка. В очень редких
- случаях повреждения файловой системы достигают того уровня, при
- котором становится необходимым вмешательство пользователя и данные
- могут быть утерянными.</para>
-
- <para>Новая возможность журналирования, предоставленная системой GEOM,
- может существенно выручить в подобных случаях, исключая время,
- необходимое для проверки файловых систем и удостовериваясь,
- что файловая система быстро восстановлена в целостное состояние.</para>
-
- <para>Эта статья описывает порядок действий, необходимых для
- конфигурирования журналирования UFS на типичном настольном компьютере,
- в котором один жесткий диск используется для размещения как
- операционной системы, так и данных. В статье подразумевается
- установка &os; "с нуля". Шаги достаточно просты и не требуют
- чрезмерно сложных манипуляций с командной строкой</para>
-
- <para>После прочтения данной статьи вы будете знать:</para>
-
- <itemizedlist>
- <listitem>
- <para>Как зарезервировать место для журнала во время новой
- установки &os;.</para>
- </listitem>
-
- <listitem>
- <para>Как загрузить модуль <literal>geom_journal</literal> (или
- включить поддержку журналирования в специализированном ядре
- системы).</para>
- </listitem>
-
- <listitem>
- <para>Как преобразовать существующую файловую систему, в систему,
- использующую журналирование, и какие опции монтирования
- использовать в <filename>/etc/fstab</filename>.</para>
- </listitem>
-
- <listitem>
- <para>Как реализовать журналирование на новых (пустых) разделах.</para>
- </listitem>
-
-
- <listitem>
- <para>Как диагностировать неполадки, связанные с журналированием.</para>
- </listitem>
- </itemizedlist>
-
- <para>Перед прочтением этой статьи вам необходимо:</para>
-
- <itemizedlist>
- <listitem>
- <para>Понимать базовые концепции таких операционных систем,
- как &unix; и &os;.</para>
- </listitem>
-
- <listitem>
- <para>Быть знакомым с процедурой установки &os;, а также с программой
- <application>sysinstall</application>.</para>
- </listitem>
- </itemizedlist>
-
- <warning>
- <para>Процедура, описанная здесь, подразумевает подготовку к новой
- установке, в которой на дисках еще нет пользовательских данных.
- Так как эту процедуру можно модифицировать и расширить на системы,
- которые уже используются, вам настоятельно рекомендуется сделать
- <emphasis>резервную копию</emphasis> всех ценных данных.
- Путаница в низкоуровневых операциях с дисками и разделами может
- привести к фатальным ошибкам и потере данных.</para>
- </warning>
- </sect1>
-
- <sect1 xml:id="understanding-journaling">
- <title>Реализация журналирования в &os;</title>
-
- <para>Журналирование, предоставляемое системой GEOM
- в &os;&nbsp;7.<replaceable>X</replaceable>, не является особенностью
- файловой системы (в отличие от, например, файловой системы ext3
- в &linux;), оно функционирует на блочном уровне. А это значит,
- что оно может быть применено к разным типам файловых систем,
- однако для &os;&nbsp;7.0-RELEASE журналирование может быть применено
- только для UFS2.</para>
-
- <para>Возможность журналирования обеспечивается загрузкой модуля
- <filename>geom_journal.ko</filename> в ядро (или сборкой собственного
- ядра с активированием соответствующих опций) и использованием команды
- <command>gjournal</command> для конфигурирования файловой системы.
- В общем, вы предпочтете журналировать файловые системы большого размера,
- к примеру - <filename>/usr</filename>. Однако, вам придется
- зарезервировать некоторое количество свободного места (см.
- следующий раздел).</para>
-
- <para>Когда файловая система журналируется, некоторая часть
- дискового пространства требуется для хранения самого журнала.
- Дисковое пространство, содержащее данные, называется
- <emphasis>поставщиком данных (data provider)</emphasis>,
- а часть пространства, содержащая журнал, называется
- <emphasis>поставщиком журнала (journal provider)</emphasis>.
- Поставщики данных и журнала должны быть на разных разделах,
- если журналирование достраивается к содержащему данные разделу.
- А если журналирование включается для нового раздела, у вас есть
- возможность использовать один поставщик для данных и журнала.
- В любом из двух вышеупомянутых случаев команда
- <command>gjournal</command> задействует поставщики и создаст
- конечную журналируемую файловую систему. Например:</para>
-
- <itemizedlist>
- <listitem>
- <para>Вы намереваетесь журналировать файловую систему
- <filename>/usr</filename>, размещенную на
- <filename>/dev/ad0s1f</filename>,
- файловая система уже содержит данные.</para>
- </listitem>
-
- <listitem>
- <para>Вы зарезервировали часть дискового пространства на разделе
- <filename>/dev/ad0s1g</filename>.</para>
- </listitem>
-
- <listitem>
- <para>Используя команду <command>gjournal</command>,
- создаем новый файл устройства
- <filename>/dev/ad0s1f.journal</filename>,
- для которого <filename>/dev/ad0s1f</filename>
- является поставщиком данных, а
- <filename>/dev/ad0s1g</filename> &mdash;
- поставщик журнала. Это новое устройство необходимо использовать
- во всех последующих операциях.</para>
- </listitem>
- </itemizedlist>
-
- <para>Размер дискового пространства, отводимого под поставщик журнала,
- зависит от нагруженности файловой системы, а не от размера самого
- поставщика данных. Например, для типичного настольного компьютера
- достаточно отвести 1&nbsp;Гб под поставщик журнала для файловой
- системы <filename>/usr</filename>, в то время как компьютеру,
- имеющему интенсивный дисковый ввод/вывод (например, редактирование
- видео) может потребоваться больше. Если свободное место на поставщике
- журнала заканчивается раньше, чем происходит сброс журнала на
- диск, &mdash; вы получите панику ядра.</para>
-
- <note>
- <para>Очень маловероятно то, что размеры журнала, предложенные здесь,
- станут причиной проблем с обычным настольным компьютером (на котором
- вы просматриваете веб-страницы, обрабатываете текст или проигрываете
- мультимедийные файлы). Если работа вашего компьютера подразумевает
- интенсивную дисковую активность, то для обеспечения стабильности
- следует придерживаться следующего правила: размер ОЗУ должен
- уместиться в 30% размера, отведенного под журнал. Например, если в
- вашем компьютере установлен 1&nbsp;Гб ОЗУ, создайте под поставщик
- журнала раздел размером около 3.3&nbsp;Гб. (Умножьте размер ОЗУ
- в 3.3 раза, чтоб получить размер журнала).</para>
- </note>
-
- <para>Для получения дополнительной информации о журналировании, пожалуйста,
- прочитайте страницу справочника, посвященную &man.gjournal.8;.</para>
- </sect1>
-
- <sect1 xml:id="reserve-space">
- <title>Действия, необходимые во время установки &os;</title>
-
- <sect2>
- <title>Выделение места под журналирование</title>
-
- <para>Типичный настольный компьютер обычно имеет один жесткий диск, на
- котором хранится как операционная система, так и пользовательские
- данные. Вероятно, что схема разбития винчестера (по умолчанию),
- выбранная в меню <application>sysinstall</application>, является
- более или менее подходящей: настольному компьютеру не требуется большой
- раздел <filename>/var</filename>, в то время, как для раздела
- <filename>/usr</filename> выделяется значительный объем дискового
- пространства, ввиду того, что пользовательские данные и множество
- пэкэджей хранятся именно в поддиректориях <filename>/usr</filename>.
- </para>
-
- <para>Разбиение по умолчанию (получаемое при нажатии <keycap>A</keycap>
- в редакторе разделов &os;, называемом
- <application>Disklabel</application>) не оставляет свободного места.
- Каждый подлежащий журналированию раздел требует отдельного раздела
- для журнала. Ввиду того, что раздел <filename>/usr</filename> &mdash;
- наибольший, есть смысл немного уменьшить его размер, чтобы получить
- пространство, необходимое для журнала.</para>
-
- <para>В нашем примере используется жесткий диск размером 80&nbsp;Гб.
- Следующий скриншот показывает результаты разбиения по умолчанию,
- выполненного при помощи <application>Disklabel</application>
- в процессе установки операционной системы:</para>
-
- <mediaobject>
- <imageobject>
- <imagedata fileref="disklabel1"/>
- </imageobject>
- </mediaobject>
-
- <para>Если это разбиение более или менее вас устраивает, то его легко
- модифицировать для журналирования. Используйте клавиши со стрелками
- для того, чтобы выделить раздел, отведенный под
- <filename>/usr</filename>, потом нажмите <keycap>D</keycap>
- чтобы удалить его.</para>
-
- <para>Теперь переведите подсвечивание к имени диска, находящемуся вверху
- экрана, и нажмите <keycap>C</keycap> &mdash; создайте новый раздел
- <filename>/usr</filename>. Новый раздел должен быть меньше на 1&nbsp;Гб
- (если вы собираетесь журналировать только <filename>/usr</filename>)
- или на 2&nbsp;Гб (если журналированию подлежат как
- <filename>/usr</filename>, так и <filename>/var</filename>).
- Во всплывающем окне выберите "создать файловую систему" и укажите
- <filename>/usr</filename> точкой монтирования.</para>
-
- <note>
- <para>Следует ли журналировать <filename>/var</filename> раздел?
- Обычно есть смысл журналировать большие разделы. Вы можете решить
- не журналировать <filename>/var</filename>, однако журналирование
- на обычном настольном компьютере не причинит вреда. Если
- файловая система не нагружена (что типично для настольной системы),
- то можно выделить меньше дискового пространства под журнал.</para>
-
- <para>В этом примере подразумевается журналирование двух файловых
- систем: <filename>/usr</filename> и <filename>/var</filename>.
- Естественно, вы можете подкорректировать процедуру под свои
- задачи.</para>
- </note>
-
- <para>Чтобы не усложнять описываемую методику, для создания разделов,
- необходимых для размещения журналов, мы будем использовать утилиту
- <application>sysinstall</application>. Однако, во время установки
- утилита <application>sysinstall</application> требует указания
- точек монтирования для каждого созданного вами раздела. Но разделы,
- содержащие журналы, вам никогда и никуда монтировать
- не придется.</para>
-
- <para>Чтобы избежать вопросов о точках монтирования, мы создадим разделы
- под журналы и установим их тип в swap. Раздел, предназначенный для
- свопа, никогда и никуда не монтируется, плюс к тому, утилита
- <application>sysinstall</application> позволяет создавать столько
- разделов под своп, сколько необходимо. После первой перезагрузки
- необходимо подредактировать файл <filename>/etc/fstab</filename>,
- удалив в нём лишние записи о своп-разделах.</para>
-
- <para>Для создания своп-раздела, используя клавиши со стрелками,
- перемещайте подсвечивание к верхней части экрана в утилите
- <application>Disklabel</application> так, чтобы стало подсвеченным
- имя диска. Потом, нажмите <keycap>N</keycap>, введите необходимый
- размер раздела (<replaceable>1024M</replaceable>), а после &mdash;
- выберите во всплывшем окне <quote>swap space</quote>. Повторите
- эти шаги для всех оставшихся журналов. В этом примере мы создаем
- два раздела, на которых будут размещаться журналы для
- <filename>/usr</filename> и <filename>/var</filename>. Конечный
- результат показан на следующем скриншоте:</para>
-
- <mediaobject>
- <imageobject>
- <imagedata fileref="disklabel2"/>
- </imageobject>
- </mediaobject>
-
- <para>По завершении создания разделов мы рекомендуем вам записать
- на бумагу названия разделов и их точек монтирования: с этой информацией
- вы будете сверяться во время конфигурирования. Это также поможет
- уменьшить количество ошибок, приводящих к повреждению установки.
- Следующая табличка отображает наши заметки, сделанные для данного
- примера:</para>
-
- <table pgwide="1">
- <title>Разделы и журналы</title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>Раздел</entry>
- <entry>Точка монтирования</entry>
- <entry>Журнал</entry>
- </row>
- </thead>
-
- <tbody>
- <row>
- <entry>ad0s1d</entry>
- <entry>/var</entry>
- <entry>ad0s1h</entry>
- </row>
-
- <row>
- <entry>ad0s1f</entry>
- <entry>/usr</entry>
- <entry>ad0s1g</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <para>Дальше продолжайте обычную установку. Однако, мы рекомендуем
- вам отложить инсталляцию приложений сторонних разработчиков (пакетов)
- до полной настройки журналирования.</para>
- </sect2>
-
- <sect2 xml:id="first-boot">
- <title>Первая загрузка</title>
-
- <para>Ваша система загрузится нормально, однако вам необходимо будет
- подредактировать <filename>/etc/fstab</filename> и удалить те
- лишние своп-разделы, которые вы создавали под журналы.
- Как правило, в названии файла устройства, созданного автоматически
- утилитой <application>sysinstall</application>, присутствует
- суффикс <quote>b</quote> (в нашем примере это ad0s1b). Удалите
- другие записи о своп-разделах и перезагрузите компьютер, после чего
- &os; перестанет их использовать.</para>
-
- <para>После второй перезагрузки, компьютер будет готов к
- конфигурированию журналирования.</para>
- </sect2>
- </sect1>
-
- <sect1 xml:id="configure-journal">
- <title>Настройка журналирования</title>
-
- <sect2 xml:id="running-gjournal">
- <title>Работа с командой <command>gjournal</command></title>
-
- <para>Подготовив необходимые разделы, перейдем к конфигурированию
- журналирования. Нам будет необходимо загрузиться в
- однопользовательском режиме, для этого залогинимся пользователем
- <systemitem class="username">root</systemitem> и напечатаем:</para>
-
- <screen>&prompt.root; <userinput>shutdown now</userinput></screen>
-
- <para>Нажмите <keycap>Enter</keycap> для получения приглашения
- командного интерпретатора. Нам необходимо будет размонтировать
- разделы, которые подлежат журналированию, в нашем примере это
- <filename>/usr</filename> и <filename>/var</filename>.</para>
-
- <screen>&prompt.root; <userinput>umount /usr /var</userinput></screen>
-
- <para>Загрузите модуль ядра, необходимый для журналирования:</para>
-
- <screen>&prompt.root; <userinput>gjournal load</userinput></screen>
-
- <para>На данном этапе сверьтесь со своими записями и определите, какие
- разделы будут использоваться под какой журнал. В нашем примере
- <filename>/usr</filename> располагается на
- <filename>ad0s1f</filename>, а его журнал
- будет располагаться на <filename>ad0s1g</filename>,
- и, по аналогии, для <filename>/var</filename>: файловая система
- располагается на <filename>ad0s1d</filename>,
- а ее журнал &mdash; на <filename>ad0s1h</filename>.
- Наберите следующие команды:</para>
-
- <screen>&prompt.root; <userinput>gjournal label ad0s1f ad0s1g</userinput>
-
-GEOM_JOURNAL: Journal 2948326772: ad0s1f contains data.
-GEOM_JOURNAL: Journal 2948326772: ad0s1g contains journal.
-
-&prompt.root; <userinput>gjournal label ad0s1d ad0s1h</userinput>
-
-GEOM_JOURNAL: Journal 3193218002: ad0s1d contains data.
-GEOM_JOURNAL: Journal 3193218002: ad0s1h contains journal.</screen>
-
- <note>
- <para>Если последний сектор любого из двух разделов (поставщиков
- данных) используется, команда <command>gjournal</command>
- возвратит ошибку. Вам необходимо будет использовать флаг
- <option>-f</option> для принудительной перезаписи, например:</para>
-
- <screen>&prompt.root; <userinput>gjournal label -f ad0s1d ad0s1h</userinput></screen>
- <para>Так как это &mdash; новая установка, очень маловероятен факт,
- что что-нибудь будет действительно переписано.</para>
- </note>
-
- <para>На данном этапе созданы два устройства:
- <filename>ad0s1d.journal</filename> и
- <filename>ad0s1f.journal</filename>. Они
- представляют <filename>/var</filename> и <filename>/usr</filename>
- соответственно. Перед монтированием, нам необходимо установить флаг
- журналирования и снять флаг механизма Soft Updates:</para>
-
- <screen>&prompt.root; <userinput>tunefs -J enable -n disable ad0s1d.journal</userinput>
-
-tunefs: gjournal set
-tunefs: soft updates cleared
-
-&prompt.root; <userinput>tunefs -J enable -n disable ad0s1f.journal</userinput>
-
-tunefs: gjournal set
-tunefs: soft updates cleared</screen>
-
- <para>Теперь, смонтируйте новые устройства в соответствующие места
- файловой системы (обратите внимание на то, что мы можем использовать
- опцию монтирования <option>async</option>):</para>
-
- <screen>&prompt.root; <userinput>mount -o async /dev/ad0s1d.journal /var</userinput>
-&prompt.root; <userinput>mount -o async /dev/ad0s1f.journal /usr</userinput></screen>
-
- <para>Откройте <filename>/etc/fstab</filename> и исправьте записи для
- следующих файловых систем: <filename>/usr</filename> и
- <filename>/var</filename>:</para>
-
- <programlisting>/dev/ad0s1f.journal /usr ufs rw,async 2 2
-/dev/ad0s1d.journal /var ufs rw,async 2 2</programlisting>
-
- <warning>
- <para>Убедитесь, что упомянутые выше записи правильные, иначе старт
- системы будет проблематичным после перезагрузки!</para>
- </warning>
-
- <para>И напоследок, подредактируйте
- <filename>/boot/loader.conf</filename>: добавьте следующую строку
- и модуль &man.gjournal.8; будет загружаться автоматически при старте
- системы:</para>
-
- <programlisting>geom_journal_load="YES"</programlisting>
-
- <para>Поздравляем! Журналирование успешно сконфигурировано. Вам
- необходимо лишь набрать <userinput>exit</userinput> для возвращения
- в многопользовательский режим или перезагрузить систему, чтобы полностью
- проверить вашу конфигурацию (рекомендуется). Во время загрузки
- вы увидите сообщения, подобные следующим:</para>
-
- <screen>ad0: 76293MB XEC XE800JD-00HBC0 08.02D08 at ata0-master SATA150
-GEOM_JOURNAL: Journal 2948326772: ad0s1g contains journal.
-GEOM_JOURNAL: Journal 3193218002: ad0s1h contains journal.
-GEOM_JOURNAL: Journal 3193218002: ad0s1d contains data.
-GEOM_JOURNAL: Journal ad0s1d clean.
-GEOM_JOURNAL: Journal 2948326772: ad0s1f contains data.
-GEOM_JOURNAL: Journal ad0s1f clean.</screen>
-
- <para>После непредвиденного останова работы системы сообщения будут
- немного отличаться, например:</para>
-
- <screen>GEOM_JOURNAL: Journal ad0s1d consistent.</screen>
-
- <para>Это обычно значит, что &man.gjournal.8; воспользовался
- информацией в журнале для возвращения файловой системы к целостному
- состоянию.</para>
- </sect2>
-
- <sect2 xml:id="gjournal-new">
- <title>Журналирование новых разделов</title>
-
- <para>Процедура, описанная выше, необходима для подключения
- журналирования разделов, содержащих данные. Журналирование пустых
- разделов немного проще, ввиду того, что поставщик данных и поставщик
- журнала могут быть размещены на одном и том же разделе. Например,
- предположим, что был установлен новый жесткий диск и был создан новый
- раздел <filename>/dev/ad1s1d</filename>. Создание
- журнала не сложнее набора:</para>
-
- <screen>&prompt.root; <userinput>gjournal label ad1s1d</userinput></screen>
-
- <para>Размер журнала &mdash; 1&nbsp;Гб по умолчанию. Однако, вы можете
- изменить это значение используя ключ <option>-s</option>. Значение
- можно задавать в байтах, в килобайтах, мегабайтах или гигабайтах
- (используя суффикс <literal>K</literal>, <literal>M</literal> или
- <literal>G</literal>). Имейте ввиду, что команда
- <command>gjournal</command> не позволит вам создать журнал
- недопустимо малого размера.</para>
-
- <para>К примеру, чтобы создать журнал размером в 2Гб, можно использовать
- следующую команду:</para>
-
- <screen>&prompt.root; <userinput>gjournal label -s 2G ad1s1d</userinput></screen>
-
- <para>Далее, вы можете создать файловую систему на новом разделе,
- а также разрешить журналирование ключом <option>-J</option>:</para>
-
- <screen>&prompt.root; <userinput>newfs -J /dev/ad1s1d.journal</userinput></screen>
- </sect2>
-
- <sect2 xml:id="configure-kernel">
- <title>Встраивание журналирования в специализированное ядро</title>
-
- <para>Если вы не желаете загружать <literal>geom_journal</literal>
- как модуль, то можно встроить его функции прямо в ваше
- специализированное ядро. Редактируя конфигурационный файл ядра,
- убедитесь, что в нем находятся следующие две строки:</para>
-
- <programlisting>options UFS_GJOURNAL # Прим.: Это включено в GENERIC
-
-options GEOM_JOURNAL # А эту строку необходимо добавить</programlisting>
-
- <para>Соберите и установите новое ядро следуя указаниям
- <link xlink:href="&url.books.handbook;/kernelconfig.html">
- Руководства &os;&nbsp;.</link></para>
-
- <para>И не забудьте удалить соответствующую строку загрузки модуля
- (<quote>load</quote>) из <filename>/boot/loader.conf</filename>
- (если на предыдущем этапе она была туда внесена).</para>
- </sect2>
- </sect1>
-
- <sect1 xml:id="troubleshooting-gjournal">
- <title>Устранение неполадок с журналированием</title>
-
- <para>Этот раздел содержит часто задаваемые вопросы касательно неполадок,
- связанных с журналированием.</para>
-
- <qandaset>
- <qandaentry>
- <question xml:id="kernel-panic">
- <para>Я получаю паники ядра во время высокой дисковой активности.
- Как это связано с журналированием?</para>
- </question>
-
- <answer>
- <para>Вероятно, что журнал заполняется раньше, чем происходит
- сброс его на диск. Помните, размер журнала зависит от
- загруженности диска, а не от размера поставщика данных.
- Если загрузка диска высокая, вам потребуется раздел большего
- размера для журнала. См. замечания в разделе
- <link linkend="understanding-journaling">Реализация
- журналирования</link></para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question xml:id="unable-boot">
- <para>Я допустил некоторые ошибки во время конфигурирования,
- теперь система не загружается. Можно это как-нибудь
- исправить?</para>
- </question>
-
- <answer>
- <para>Вы либо забыли внести запись (опечатались) в
- <filename>/boot/loader.conf</filename>, либо есть ошибки в
- файле <filename>/etc/fstab</filename>. Это легко исправить.
- Нажмите <keycap>Enter</keycap>, чтобы получить приглашение
- командного интерпретатора в однопользовательском режиме.
- Потом, проверьте возможные варианты:</para>
-
- <screen>&prompt.root; <userinput>cat /boot/loader.conf</userinput></screen>
-
- <para>Если отсутствует запись <literal>geom_journal_load</literal>,
- или она содержит ошибки, журналируемые устройства не создадутся.
- Загрузите модуль вручную, примонтируйте все разделы и
- переходите в многопользовательский режим (продолжайте
- загрузку).</para>
-
- <screen>&prompt.root; <userinput>gjournal load</userinput>
-
-GEOM_JOURNAL: Journal 2948326772: ad0s1g contains journal.
-GEOM_JOURNAL: Journal 3193218002: ad0s1h contains journal.
-GEOM_JOURNAL: Journal 3193218002: ad0s1d contains data.
-GEOM_JOURNAL: Journal ad0s1d clean.
-GEOM_JOURNAL: Journal 2948326772: ad0s1f contains data.
-GEOM_JOURNAL: Journal ad0s1f clean.
-
-&prompt.root; <userinput>mount -a</userinput>
-&prompt.root; <userinput>exit</userinput>
-<emphasis>(boot continues)</emphasis></screen>
-
- <para>Если же запись о <literal>geom_journal_load</literal>
- верна, то проверьте <filename>/etc/fstab</filename>.
- Вероятней всего, что вы обнаружите опечатку или отсутствие
- необходимой записи. В этом случае смонтируйте вручную
- оставшиеся разделы и продолжите загрузку в многопользовательский
- режим.</para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question xml:id="remove-journaling">
- <para>Возможно ли отказаться от журналирования и вернуться
- к моей привычной файловой системе с механизмом Soft Updates?</para>
- </question>
-
- <answer>
- <para>Несомненно. Используйте приведенную ниже последовательность
- действий, которая обращает изменения. Разделы, созданные для
- поставщиков журналов, могут позже быть использованы для других
- целей.</para>
-
- <para>Залогиньтесь <systemitem class="username">root</systemitem> и переведите систему
- в однопользовательский режим:</para>
-
- <screen>&prompt.root; <userinput>shutdown now</userinput></screen>
-
- <para>Размонтируйте журналируемые разделы:</para>
-
- <screen>&prompt.root; <userinput>umount /usr /var</userinput></screen>
-
- <para>Синхронизируйте журналы:</para>
-
- <screen>&prompt.root; <userinput>gjournal sync</userinput></screen>
-
- <para>Остановите поставщиков журналов:</para>
-
- <screen>&prompt.root; <userinput>gjournal stop ad0s1d.journal</userinput>
-&prompt.root; <userinput>gjournal stop ad0s1f.journal</userinput></screen>
-
- <para>Удалите метаданные журналирования со всех задействованных
- устройств:</para>
-
- <screen>&prompt.root; <userinput>gjournal clear ad0s1d</userinput>
-&prompt.root; <userinput>gjournal clear ad0s1f</userinput>
-&prompt.root; <userinput>gjournal clear ad0s1g</userinput>
-&prompt.root; <userinput>gjournal clear ad0s1h</userinput></screen>
-
- <para>Снимите флаг журналирования и установите флаг механизма Soft
- Updates:</para>
-
- <screen>&prompt.root; <userinput>tunefs -J disable -n enable ad0s1d</userinput>
-
-tunefs: gjournal cleared
-tunefs: soft updates set
-
-&prompt.root; <userinput>tunefs -J disable -n enable ad0s1f</userinput>
-
-tunefs: gjournal cleared
-tunefs: soft updates set</screen>
-
- <para>Смонтируйте вручную старые (первоначальные) устройства:</para>
-
- <screen>&prompt.root; <userinput>mount -o rw /dev/ad0s1d /var</userinput>
-&prompt.root; <userinput>mount -o rw /dev/ad0s1f /usr</userinput></screen>
-
- <para>Откройте файл <filename>/etc/fstab</filename> и приведите
- его к изначальному виду:</para>
-
- <programlisting>/dev/ad0s1f /usr ufs rw 2 2
-/dev/ad0s1d /var ufs rw 2 2</programlisting>
-
-
- <para>И напоследок, удалите строку, загружающую модуль
- <literal>geom_journal</literal>, из файла
- <filename>/boot/loader.conf</filename> и перезагрузите
- операционную систему.</para>
-
- </answer>
- </qandaentry>
- </qandaset>
- </sect1>
-
- <sect1 xml:id="further-reading">
- <title>Для дальнейшего ознакомления</title>
-
- <para>Журналирование &mdash; относительно новая функциональная возможность
- &os;, и как такова, она еще недостаточно документирована. Однако, вы
- можете сочти полезными следующие источники:</para>
-
- <itemizedlist>
- <listitem>
- <para>Новый <link xlink:href="&url.books.handbook;/geom-gjournal.html">раздел
- Руководства FreeBSD</link>, посвященный журналированию.</para>
- </listitem>
-
- <listitem>
- <para><link xlink:href="http://lists.freebsd.org/pipermail/freebsd-current/2006-June/064043.html">Этот пост</link>
- в списке рассылки &a.current.name;, написанный &a.pjd.email; &mdash;
- автором &man.gjournal.8;.</para>
- </listitem>
-
- <listitem>
- <para><link xlink:href="http://lists.freebsd.org/pipermail/freebsd-questions/2008-April/173501.html">Этот пост</link>
- от &a.ivoras.email; в списке рассылки &a.questions.name;.</para>
- </listitem>
-
- <listitem>
- <para>Страницы справочника &man.gjournal.8; и &man.geom.8;.</para>
- </listitem>
- </itemizedlist>
- </sect1>
-</article>
diff --git a/ru_RU.KOI8-R/articles/hubs/Makefile b/ru_RU.KOI8-R/articles/hubs/Makefile
deleted file mode 100644
index 9fa1690d32..0000000000
--- a/ru_RU.KOI8-R/articles/hubs/Makefile
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# The FreeBSD Russian Documentation Project
-#
-# $FreeBSD$
-# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/hubs/Makefile,v 1.3 2004/04/12 07:55:51 marck Exp $
-#
-# Original revision: r39631
-#
-# Article: Mirroring FreeBSD
-
-DOC?= article
-
-FORMATS?= html
-WITH_ARTICLE_TOC?= YES
-
-INSTALL_COMPRESSED?=gz
-INSTALL_ONLY_COMPRESSED?=
-
-SRCS= article.xml
-
-DOC_PREFIX?= ${.CURDIR}/../../..
-.include "${DOC_PREFIX}/share/mk/doc.project.mk"
diff --git a/ru_RU.KOI8-R/articles/hubs/article.xml b/ru_RU.KOI8-R/articles/hubs/article.xml
deleted file mode 100644
index f6f6e0bedf..0000000000
--- a/ru_RU.KOI8-R/articles/hubs/article.xml
+++ /dev/null
@@ -1,745 +0,0 @@
-<?xml version="1.0" encoding="koi8-r"?>
-<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
- "http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
-<!--
- The FreeBSD Russian Documentation Project
-
- $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/hubs/article.xml,v 1.21 2007/05/15 18:39:34 gad Exp $
-
- Original revision: r46284
--->
-<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="ru">
- <info><title>Поддержка зеркал FreeBSD</title>
-
-
- <authorgroup>
- <author><personname><firstname>Jun</firstname><surname>Kuriyama</surname></personname><affiliation>
- <address><email>kuriyama@FreeBSD.org</email></address>
- </affiliation></author>
-
- <author><personname><firstname>Valentino</firstname><surname>Vaschetto</surname></personname><affiliation>
- <address><email>logo@FreeBSD.org</email></address>
- </affiliation></author>
-
- <author><personname><firstname>Daniel</firstname><surname>Lang</surname></personname><affiliation>
- <address><email>dl@leo.org</email></address>
- </affiliation></author>
-
- <author><personname><firstname>Ken</firstname><surname>Smith</surname></personname><affiliation>
- <address><email>kensmith@FreeBSD.org</email></address>
- </affiliation></author>
-
- <author><personname><firstname>Дмитрий</firstname><surname>Морозовский</surname></personname><contrib>Перевод на русский язык: </contrib></author>
- </authorgroup>
-
- <legalnotice xml:id="trademarks" role="trademarks">
- &tm-attrib.freebsd;
- &tm-attrib.general;
- </legalnotice>
-
- <pubdate>$FreeBSD$</pubdate>
-
- <releaseinfo>$FreeBSD$</releaseinfo>
-
- <abstract>
- <para>Рабочий вариант статьи, описывающей процесс создания и поддержки
- зеркала FreeBSD и адресованной администраторам зеркал.</para>
- </abstract>
- </info>
-
- <note>
- <para>На текущий момент заявки на подключение новых зеркал
- не принимаются.</para>
- </note>
-
- <sect1 xml:id="mirror-contact">
- <title>Контактная информация</title>
-
- <para>Координаторы системы зеркал доступны по электронной почте по адресу
- <email>mirror-admin@FreeBSD.org</email>. Помимо этого, существует
- &a.hubs;.</para>
- </sect1>
-
- <sect1 xml:id="mirror-requirements">
- <title>Требования к зеркалам FreeBSD</title>
-
- <sect2 xml:id="mirror-diskspace">
- <title>Дисковое пространство</title>
-
- <para>Одним из наиболее важных требований является дисковое пространство.
- В зависимости от набора релизов, архитектур и степени полноты зеркала
- вам может потребоваться огромный объем диска. Не лишним будет
- помнить, что <emphasis>официальное</emphasis> зеркало, скорее всего,
- должно быть полным. Веб-страницы всегда должны
- зеркалироваться полностью. Кроме того, учтите, что приводимые оценки
- объема относятся к состоянию на момент последнего редактирования
- данной статьи (&rel2.current;-RELEASE/&rel.current;-RELEASE).
- Дальнейший процесс разработки и последующие релизы только увеличат
- требуемый объем. Кроме того, разумно будет зарезервировать некоторое
- (10-20%) дополнительное пространство спокойствия ради. Вот некоторые
- оценки объема:</para>
-
- <itemizedlist>
- <listitem>
- <para>Полное зеркало FTP: 1.4 TB</para>
- </listitem>
-
- <listitem>
- <para>Комплект изменений CTM: 10 GB</para>
- </listitem>
-
- <listitem>
- <para>Веб-страницы: 1 GB</para>
- </listitem>
- </itemizedlist>
-
- <para>Текущее использование диска зеркалом FTP можно посмотреть на
- <link xlink:href="ftp://ftp.FreeBSD.org/pub/FreeBSD/dir.sizes">ftp://ftp.FreeBSD.org/pub/FreeBSD/dir.sizes</link>.</para>
- </sect2>
-
- <sect2 xml:id="mirror-bandwidth">
- <title>Требования к сетевой связности и пропускной способности</title>
-
- <para>Разумеется, у вас должно быть подключение к интернет.
- Требуемая пропускная способность ваших каналов зависит от
- предполагаемого профиля использования вашего зеркала.
- Если вы собираетесь копировать некоторые части FreeBSD для
- локального использования на вашей машине или в интранете,
- требования могут быть много мягче, чем для публичного зеркала.
- Для официального зеркала необходимая пропускная способность
- увеличивается еще больше. Мы можем дать лишь очень грубые
- оценки:</para>
-
- <itemizedlist>
- <listitem>
- <para>Зеркало для локального доступа: фактически минимум не
- определен, но канал шириной менее 2 Mbps может сделать процесс
- обновления мучительно медленным.</para>
- </listitem>
-
- <listitem>
- <para>Неофициальное публичное зеркало: 34 Mbps выглядит
- неплохо для начала.</para>
- </listitem>
-
- <listitem>
- <para>Официальное зеркало: рекомендуется канал шириной более
- 100 Mbps; кроме того, ваша машина должна стоять как можно ближе к
- граничным маршрутизаторам вашей сети.</para>
- </listitem>
- </itemizedlist>
- </sect2>
-
- <sect2 xml:id="mirror-system">
- <title>Системные требования, процессор и память</title>
-
- <para>Эти требования в первую очередь определяются максимальным ожидаемым
- количеством клиентов (устанавливается администратором сервера).
- Также, на требуемые ресурсы влияет список сервисов, которые вы будете
- предоставлять. Зеркала FTP и/или HTTP не требуют особенно много
- ресурсов. Будьте на чеку, если планируете предоставлять rsync.
- Выбор rsync может иметь огромное влияние на требования к аппаратным
- ресурсам, поскольку rsync признан "прожорливым" по памяти.
- Вот некоторые советы по конфигурации аппаратной части сервера:</para>
-
- <para>Для умеренно посещаемого сайта, предоставляющего
- <application>rsync</application>, можно использовать процессор
- с частотой 800MHz - 1 GHz и по крайней мере 512MB памяти.
- Скорее всего, данная конфигурация может считаться минимальной для
- <emphasis>официального</emphasis> зеркала.</para>
-
- <para>Для регулярно посещаемого сайта вам потребуется больше памяти
- (хорошим стартом будет 2GB) и больше процессорной мощности, что может
- означать требование многопроцессорной (SMP) платформы.</para>
-
- <para>Кроме того, вам потребуется быстрая дисковая подсистема, в первую
- очередь, для работы с репозиторием SVN (крайне рекомендуем RAID).
- Контроллер SCSI, оборудованный собственной памятью, также может
- ощутимо ускорить процесс, поскольку большая часть сервисов связана
- с большим количеством дисковых запросов небольшого размера.</para>
- </sect2>
-
- <sect2 xml:id="mirror-services">
- <title>Предоставляемые сервисы</title>
-
- <para>Всякое зеркало должно предоставлять набор основных сервисов.
- Помимо требуемого минимального набора, существуют дополнительные
- сервисы, которые администратор сервера может пожелать предоставлять.
- Этот раздел описывает, какие сервисы вы можете предоставлять, и какие
- действия для этого потребуются от вас.</para>
-
- <sect3 xml:id="mirror-serv-ftp">
- <title>FTP (требуется для FTP зеркала)</title>
-
- <para>Это один из наиболее базовых сервисов; его предоставление требуется
- для каждого зеркала, распространяющего файлы FreeBSD по FTP.
- Доступ по FTP должен быть анонимным, и не должны применяться
- какие-либо ограничения по соотношению объема передано/принято
- (что вообще является, на наш взгляд, странным подходом).
- Закачка (upload) файлов на сервер не требуется (и
- <emphasis>должна</emphasis> быть запрещена в разделе FreeBSD).
- Кроме того, архив файлов FreeBSD должен быть доступен с путем
- <filename>/pub/FreeBSD</filename>.</para>
-
- <para>
- Для предоставления анонимного FTP доступа может быть использован
- целый ряд программ (перечислены в алфавитном порядке):</para>
-
- <itemizedlist>
- <listitem>
- <para><command>/usr/libexec/ftpd</command>: базовый
- FTP-даемон FreeBSD. Не забудьте прочитать &man.ftpd.8;.</para>
- </listitem>
-
- <listitem>
- <para><package>ftp/ncftpd</package>: коммерческий
- пакет, свободен для использования в учебных целях.</para>
- </listitem>
-
- <listitem>
- <para><package>ftp/oftpd</package>: FTP-даемон,
- написанный в основном с точки зрения защищенности.</para>
- </listitem>
-
- <listitem>
- <para><package>ftp/proftpd</package>: Модульный
- и очень гибкий FTP-даемон.</para>
- </listitem>
-
- <listitem>
- <para><package>ftp/pure-ftpd</package>:
- Еще один FTP-даемон, разработанный с позиций защищенности.</para>
- </listitem>
-
- <listitem>
- <para><package>ftp/twoftpd</package>:
- См. предыдущий пункт.</para>
- </listitem>
-
- <listitem>
- <para><package>ftp/vsftpd</package>:
- <quote>очень защищенный</quote> (<quote>very secure</quote>)
- ftpd.</para>
- </listitem>
- </itemizedlist>
-
- <para><application>ftpd</application>,
- <application>proftpd</application> и, возможно,
- <application>ncftpd</application> являются наиболее часто
- встречающимися FTP серверами.
- Прочие распространены среди существующих зеркал в существенно
- меньшей степени. Дополнительным поводом для рассмотрения может
- являться возможность гибко ограничивать количество одновременных
- соединений, что поможет вам удержать в нужных рамках потребление
- пропускной способности ваших каналов и машинные ресурсы.</para>
- </sect3>
-
- <sect3 xml:id="mirror-serv-rsync">
- <title>Rsync (необязательный сервис для FTP зеркала)</title>
-
- <para>
- <application>Rsync</application> часто используется для
- предоставления доступа к FTP-области FreeBSD, чтобы другие зеркала
- могли синхронизироваться по вашему. Протокол rsync во многом
- отличается от FTP, в частности, он гораздо гуманнее с точки зрения
- пропускной способности каналов, поскольку не требует передачи
- измененного файла целиком (передаются лишь различия). Взамен
- <application>Rsync</application> требует значительных объемов
- памяти. Размер каждого процесса зависит от размера синхронизируемого
- модуля (в основном от количества директорий и файлов).
- <application>Rsync</application> может использовать в качестве
- транспортного протокола <command>rsh</command> или
- <command>ssh</command> (по умолчанию); также, может использоваться
- внутренний протокол <application>rsync</application> (этот метод
- предпочтителен для публичных rsync-серверов).
- Поддерживается авторизация клиентов и различные ограничения.
- Для протокола rsync существует единственный пакет:</para>
-
- <itemizedlist>
- <listitem>
- <para><package>net/rsync</package></para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3 xml:id="mirror-serv-http">
- <title>HTTP (требуется для веб-страниц, дополнителен для FTP зеркал)</title>
- <para>Если вы хотите поддерживать зеркало веб-страниц FreeBSD,
- вам потребуется установить веб-сервер.
- Дополнительно, вы можете предоставлять HTTP доступ к FTP-набору
- файлов FreeBSD. Выбор веб-сервера остается на усмотрение
- администратора зеркала. Некоторые из наиболее популярных
- веб-серверов перечислены ниже.</para>
-
- <itemizedlist>
- <listitem>
- <para><package>www/apache13</package>:
- <application>Apache</application>&nbsp;&mdash; самый
- широко распространённый в Интернете веб-сервер, активно
- используемый проектом FreeBSD. Вы можете также использовать
- веб-сервер <application>Apache</application> следующего
- поколения, доступный в коллекции портов как
- <package>www/apache22</package>.</para>
- </listitem>
-
- <listitem>
- <para><package>www/thttpd</package>:
- Для обслуживания большого количества запросов к статическим
- документам сервер thttpd может оказаться более эффективным, чем
- <application>Apache</application>. thttpd отлично оптимизирован
- по производительности при работе под FreeBSD.</para>
- </listitem>
-
- <listitem>
- <para><package>www/boa</package>:
- <application>Boa</application>&nbsp;&mdash; еще одна
- альтернатива <application>thttpd</application> и
- <application>Apache</application>. Этот сервер
- должен быть ощутимо более высокопроизводительным, чем
- <application>Apache</application>,
- для полностью статических страниц. На время написания данного
- документа, впрочем, он не так хорошо оптимизирован под
- FreeBSD, как <application>thttpd</application>.</para>
- </listitem>
-
- <listitem>
- <para><package>www/nginx</package>:
- <application>Nginx</application> &mdash;
- высокопроизводительный веб-сервер, отличающийся низкими
- требованиями к объему оперативной памяти и обладающий
- ключевыми функциональными возможностями для построения
- современной веб-инфраструктуры. Функциональные
- возможности включают следующее: HTTP-сервер, обратный
- прокси для HTTP, почтовый прокси сервер, кеширование,
- балансировка нагрузки, сжатие, ограничение количества
- запросов, мультиплексирование и повторное использование
- соединений, поддержка разгрузки SSL (SSL offload) и
- вещания медиапотоков (media streaming).</para>
- </listitem>
- </itemizedlist>
- </sect3>
- </sect2>
- </sect1>
-
- <sect1 xml:id="mirror-howto">
- <title>Как вести зеркало FreeBSD</title>
-
- <para>Теперь вам известно, какая потребуется машина и как предоставлять
- сервисы, но не как получить их самому. :-)
- В этом разделе описывается процесс ведения зеркала и поддержания
- его в актуальном состоянии, в том числе какие инструменты
- использовать и какие сайты выбирать в качестве источников для
- синхронизации.</para>
-
- <sect2 xml:id="mirror-ftp-rsync">
- <title>Зеркалирование FTP-области</title>
-
- <para>Файлы, доступные по FTP, составляют большую часть зеркала.
- Они включают <emphasis>дистрибутивные наборы</emphasis>, необходимые
- для установки по сети, <emphasis>ветви (branches)</emphasis>,
- в которых отражено текущее состояние исходных текстов,
- <emphasis>образы ISO</emphasis> для записи компакт-дисков с
- дистрибутивами для установки, образами <quote>живых</quote> файловых
- систем и пакетами, дерево портов, исходные дистрибутивы для сборки
- портов и кучу готовых пакетов. И, разумеется, все
- вышеописанное&nbsp;&mdash; для разных версий FreeBSD и различных
- архитектур.</para>
-
- <para>Наиболее эффективным будет синхронизация FTP-области при помощи
- <application>rsync</application>. Для этого следует установить
- пакет <package>net/rsync</package>, который был
- описан в разделе <xref linkend="mirror-serv-rsync"/>.
- Поскольку доступ по протоколу <application>rsync</application> не
- является обязательным, выбранный вами сайт может его не
- поддерживать. Возможно, вам придется немного поискать в сетевой
- окрестности зеркало, поддерживающее
- <application>rsync</application>.</para>
-
- <note>
- <para>Поскольку от количества клиентов
- <application>rsync</application> ощутимо зависит загрузка сервера,
- большинство администраторов вводят ограничения доступа. Для
- поддержания зеркала вам следует связаться с администратором сайта,
- с которым вы будете синхронизироваться, для уточнения локальных
- правил и, возможно, для внесения в них исключения для вас
- (поскольку вы также поддерживаете зеркало).</para>
- </note>
-
- <para>Строка для синхронизации FreeBSD по rsync выглядит примерно
- так:</para>
-
- <screen>&prompt.user; <userinput>rsync -vaHz --delete rsync://ftp4.de.FreeBSD.org/FreeBSD/ /pub/FreeBSD/</userinput></screen>
-
- <para>Загляните в документацию по <application>rsync</application>,
- также доступную по адресу
- <link xlink:href="http://rsync.samba.org/">http://rsync.samba.org/</link>
- за дополнительной информацией по различным опциям rsync.
- Обратите внимание, что в случае синхронизации модуля целиком (а не
- отдельного каталога) необходимо явно указать результирующий каталог,
- потому что каталог с именем модуля (в данном случае "FreeBSD")
- не создается. Для поддержания актуальности вам потребуется
- создать скрипт для запуска подобной команды из &man.cron.8;.</para>
- </sect2>
-
- <sect2 xml:id="mirror-www">
- <title>Зеркалирование страниц WWW</title>
-
- <para>Веб-сайт &os; следует зеркалировать исключительно при
- помощи <application>rsync</application>.</para>
-
- <para>Командная строка для синхронизации веб-сайта &os;
- выглядит примерно так:</para>
-
- <screen>&prompt.user; <userinput>rsync -vaHz --delete rsync://bit0.us-west.freebsd.org/FreeBSD-www-data/ /usr/local/www/</userinput></screen>
- </sect2>
-
- <sect2 xml:id="mirror-how-often">
- <title>Как часто синхронизироваться?</title>
-
- <para>Каждое зеркало должно регулярно обновляться. Вам потребуется
- какой-то набор скриптов, выполняемых посредством &man.cron.8;.
- Поскольку каждый администратор, как правило, пишет такие скрипты сам
- и на свой лад, мы не можем выдать конкретных указаний. Общие же советы
- выглядят так:</para>
-
- <procedure>
- <step>
- <para>Создайте скрипт с командой, которая запустит нужное приложение
- для обновления зеркала. Рекомендуем использовать скрипт на языке
- обычного <command>/bin/sh</command>.</para>
- </step>
-
- <step>
- <para>Добавьте команд перенаправления вывода, чтобы записать
- диагностику работы в файл.</para>
- </step>
-
- <step>
- <para>Попробуйте, как ваш скрипт работает. По завершении проверьте
- логи.</para>
- </step>
-
- <step>
- <para>При помощи утилиты &man.crontab.1; добавьте ваш скрипт в таблицу
- регулярных заданий &man.crontab.5; соответствующего пользователя.
- Это должен быть пользователь, отличный от пользователя FTP-даемона,
- чтобы файлы в FTP-области без атрибута "чтение для всех" не были
- доступны анонимным FTP-пользователям. Данное свойство используется
- для тестирования перед выходом новых релизов, для того чтобы
- удостовериться, что все официальные зеркала содержат все
- необходимые файлы к моменту официального объявления релиза.</para>
- </step>
- </procedure>
-
- <para>Некоторые рекомендуемые установки частоты обновления:</para>
-
- <itemizedlist>
- <listitem>
- <para>FTP-набор: раз в сутки</para>
- </listitem>
-
- <listitem>
- <para>WWW-страницы: раз в сутки</para>
- </listitem>
- </itemizedlist>
- </sect2>
- </sect1>
-
- <sect1 xml:id="mirror-where">
- <title>С какого сервера синхронизироваться</title>
-
- <para>Это важный вопрос, так что мы попытаемся пояснить, откуда берутся
- ответы. Для начала повторим еще несколько раз: <emphasis>никогда
- не синхронизируйтесь с <systemitem class="fqdomainname">ftp.FreeBSD.org</systemitem>
- </emphasis>.</para>
-
- <sect2 xml:id="mirror-where-organization">
- <title>Организация системы зеркал</title>
-
- <para>Зеркала организуются по странам. Имена хостов всех официальных
- зеркал построены по принципу
- <systemitem class="fqdomainname">ftpN.CC.FreeBSD.org</systemitem>,
- где <emphasis>CC</emphasis> (country code)&nbsp;&mdash; домен
- верхнего уровня страны, где расположено зеркало,
- <emphasis>N</emphasis>&nbsp;&mdash; номер зеркала в данной стране.
- Этот же принцип применим к именам хостов
- <systemitem>wwwN.CC.FreeBSD.org</systemitem> и т.п.
- Кроме того, есть зеркала без доменной части, обозначающей страну.
- Все они имеют очень хорошие внешние каналы и обслуживают большое число
- одновременных соединений.
- Имя <systemitem class="fqdomainname">ftp.FreeBSD.org</systemitem> на самом деле
- указывает на две машины, одна из которых в настоящее время находится
- в Дании, а другая в США.
- Ни одна из этих машин <emphasis>НЕ</emphasis> является основным
- сайтом, и потому не должна использоваться для синхронизации.
- Масса документации для <quote>живых</quote> пользователей указывает на
- <systemitem class="fqdomainname">ftp.FreeBSD.org</systemitem>, так что автоматическим
- системам ведения зеркал следует выбирать другие источники
- синхронизации.</para>
-
- <para>Кроме того, существует иерархия зеркал в терминах их удаленности от
- центра, или <emphasis>слоях</emphasis>. Основные сайты могут быть
- описаны как <emphasis>Зеркала нулевого слоя</emphasis>. Зеркала,
- синхронизирующиеся по ним, считаются <emphasis>слоем 1</emphasis>,
- следующие&nbsp;&mdash; <emphasis>слоем 2</emphasis> и т.д. Официальные
- сайты приглашаются на низкие слои, однако следует помнить, что чем
- меньше номер слоя, тем выше требования к зеркалу, как было описано в
- <xref linkend="mirror-requirements"/>. Помимо того, доступ к
- зеркалам 1 слоя может быть ограничен; безусловно ограничен доступ к
- основным сайтам. Иерархия <emphasis>слоев</emphasis> не отражается в
- DNS и, вообще говоря, нигде (кроме мастер-сайтов) не документирована.
- Тем не менее, официальные зеркала с малыми (1-4, как правило) номерами
- обычно представляют первый слой. (Это грубая оценка, и ни в коем
- случае не правило).</para>
- </sect2>
-
- <sect2 xml:id="mirror-where-where">
- <title>Так откуда же мне синхронизироваться?</title>
-
- <para>Главное&nbsp;&mdash; НЕ с
- <systemitem class="fqdomainname">ftp.FreeBSD.org</systemitem>. Короткий ответ:
- с зеркала, которое расположено недалеко от вас в терминах Интернет,
- и/или доступ к которому наилучший.</para>
-
- <sect3 xml:id="mirror-where-simple">
- <title>Я хочу получить копию зеркала хоть откуда-нибудь!</title>
-
- <para>Если у вас нет каких-либо специальных предпочтений или
- требований, см. <xref linkend="mirror-where-where"/>.
- Это означает:</para>
-
- <procedure>
- <step>
- <para>Выберите те из них, с которыми вам работать быстрее всего
- (меньшее число промежуточных узлов и время отклика), и которые
- предоставляют нужные вам сервисы (такие как
- <application>rsync</application>).</para>
- </step>
-
- <step>
- <para>Свяжитесь с администраторами выбранного сервера, опишите
- ваши запросы и уточните их правила.</para>
- </step>
-
- <step>
- <para>Сконфигурируйте ваше зеркало, как описывалось выше.</para>
- </step>
- </procedure>
- </sect3>
-
- <sect3 xml:id="mirror-where-official">
- <title>Я поддерживаю официальное зеркало, какой сайт
- мне выбрать?</title>
-
- <para>В основном, правила, описанные в
- <xref linkend="mirror-where-simple"/>, применимы. Дополнительно
- можно убедиться, что выбранный сайт принадлежит низкому слою.
- Другие соображения относительно <emphasis>официальных</emphasis>
- зеркал описаны в <xref linkend="mirror-official"/>.</para>
- </sect3>
-
- <sect3 xml:id="mirror-where-master">
- <title>Мне нужен доступ к основным сайтам!</title>
-
- <para>При наличии достаточных причин вы можете получить доступ
- к одному из основных сайтов. Доступ к ним ограничен; существуют
- специальные правила их использования. Наличие у вас статуса
- <emphasis>официального</emphasis> зеркала, безусловно, является
- хорошим подспорьем. В противном случае убедитесь, что ваша
- страна действительно нуждается еще в одном зеркале.
- Если их уже три или более, сначала свяжитесь с администратором
- соответствующей зоны DNS (<email>hostmaster@CC.FreeBSD.org</email>)
- или напишите в &a.hubs;.</para>
-
- <para>Доступ к одному из мастер-сайтов или подходящему зеркалу 1 уровня
- вам помогут обеспечить те же, кто помогал вам получить статус
- <emphasis>официального</emphasis> зеркала. В случае неудачи
- свяжитесь с <email>mirror-admin@FreeBSD.org</email> и попросите
- помощи у них.</para>
-
- <para>Существует один основной сайт для синхронизации набора файлов
- FTP.</para>
-
- <sect4 xml:id="mirror-where-master-ftp">
- <title>ftp-master.FreeBSD.org</title>
-
- <para>Это основной сервер для синхронизации FTP набора.</para>
-
- <para>В дополнение к FTP, <systemitem>ftp-master.FreeBSD.org</systemitem>
- поддерживает доступ по <application>rsync</application>.
- Использование этих протоколов описано в
- <xref linkend="mirror-ftp-rsync"/>.</para>
-
- <para>Приветствуется предоставление зеркалами
- <emphasis>1 уровня</emphasis> доступа к FTP-области по протоколу
- <application>rsync</application>.</para>
- </sect4>
- </sect3>
- </sect2>
- </sect1>
-
- <sect1 xml:id="mirror-official">
- <title>Официальные зеркала</title>
-
- <para>Официальные зеркала обладают следующим свойствами:</para>
-
- <itemizedlist>
- <listitem>
- <para>a) имеют запись в домене <systemitem>FreeBSD.org</systemitem>
- (обычно типа CNAME).</para>
- </listitem>
-
- <listitem>
- <para>b) присутствуют в списке официальных зеркал в Руководстве
- по FreeBSD и другой документации.</para>
- </listitem>
- </itemizedlist>
-
- <para>На настоящий момент это все, что отличает их от прочих зеркал.
- Официальные зеркала не обязательно принадлежат к
- <emphasis>Первому уровню</emphasis>, однако, вряд ли можно найти
- зеркало <emphasis>уровня 1</emphasis>, не являющееся официальным.</para>
-
- <sect2 xml:id="mirror-official-requirements">
- <title>Отдельные требования к официальным зеркалам 1 уровня</title>
-
- <para>Описать требования для всех официальных зеркал не так просто,
- поскольку проект FreeBSD достаточно мягок в этом отношении.
- Несколько проще указать, что требуется от <emphasis>официальных
- зеркал уровня 1</emphasis>. Прочие официальные зеркала должны
- рассматривать этот список как <emphasis>настойчивые
- пожелания</emphasis>.</para>
-
- <para>Зеркала 1 уровня должны:</para>
-
- <itemizedlist>
- <listitem>
- <para>поддерживать полный список файлов</para>
- </listitem>
-
- <listitem>
- <para>предоставлять доступ для других зеркал</para>
- </listitem>
-
- <listitem>
- <para>обеспечивать доступ по протоколам
- <application>FTP</application> и
- <application>rsync</application>.</para>
- </listitem>
- </itemizedlist>
-
- <para>Кроме того, администратор такого зеркала должен быть подписан
- на &a.hubs;. См. <link xlink:href="http://www.FreeBSD.org/doc/ru_RU.KOI8-R/books/handbook/eresources.html#ERESOURCES-MAIL">здесь</link>
- для дополнительной информации о подписке.</para>
-
- <important>
- <para>Администраторы зеркал, в особенности 1 уровня, должны
- <emphasis>очень</emphasis> внимательно следить за
- <link xlink:href="http://www.FreeBSD.org/releng/">графиком релизов</link>.
- Это поможет подготовиться к крупным всплескам нагрузки на зеркало,
- которые всегда происходят после очередного релиза.</para>
-
- <para>Кроме того, важно поддерживать актуальность зеркал (в особенности
- зеркал уровня 1). Если Зеркало1 не синхронизировалось в течение
- длительного времени, то зеркала следующего уровня будут
- синхронизироваться по устаревшей информации и т.д.
- Поддерживайте актуальность ваших зеркал!</para>
- </important>
- </sect2>
-
- <sect2 xml:id="mirror-official-become">
- <title>Как стать официальным зеркалом?</title>
-<!--
- <para>Небезынтересный вопрос, в особенности если учитывать последствия
- становления официальным зеркалом, например, увеличившиеся счета
- за интернет от вашего провайдера (ведь нагрузка на ваш сервер
- неизбежно увеличится). Статус официального зеркала может быть
- ключевым требованием для доступа к основному сайту.</para>
-
- <para>Прежде чем отправлять заявку, убедитесь в необходимости
- дополнительного официального зеркала в вашем регионе. Справьтесь у
- администратора вашей зоны (<email>hostmaster@CC.FreeBSD.org</email>)
- или, в случае, если вам не отвечают, здесь: &a.hubs;.</para>
-
- <para>Собственно процедура такова:</para>
-
- <procedure>
- <step>
- <para>Обеспечьте работоспособность и актуальность зеркала (скорее
- всего, синхронизируясь не по основному сайту).</para>
- </step>
-
- <step>
- <para>Подпишитесь <ulink url="http://www.FreeBSD.org/doc/ru_RU.KOI8-R/books/handbook/eresources.html#ERESOURCES-MAIL">здесь</ulink>
- на &a.hubs;.</para>
- </step>
-
- <step>
- <para>После успешного завершения предыдущих пунктов, напишите
- администратору DNS вашего региона (страны) и попросите его создать
- запись в зоне для вашего сайта. Почтовый адрес администратора
- <email>hostmaster@CC.FreeBSD.org</email>, где
- <emphasis>CC</emphasis>&nbsp;&mdash; код вашей страны (и суффикс
- домена верхнего уровня). Формат вашей записи в DNS описан в
- <xref linkend="mirror-where-organization"/>.</para>
-
- <para>Если для вашей страны пока не создано поддомена, свяжитесь с
- <email>mirror-admin@FreeBSD.org</email> или сначала напишите
- в &a.hubs;.</para>
- </step>
-
- <step>
- <para>Персона, помогавшая вам получить статус официального зеркала,
- должна послать письмо <email>mirror-admin@FreeBSD.org</email>,
- чтобы ваш сайт был включен в список официальных зеркал в <ulink
- url="http://www.FreeBSD.org/doc/ru_RU.KOI8-R/books/handbook">
- Руководстве FreeBSD</ulink>.</para>
- </step>
- </procedure>
--->
- <!-- XXX Ну не писать же здесь "как-нибудь так (с) Масяня" [marck] ;-))) XXX
- <para>That is it.</para>
- -->
- <para>На текущий момент заявки на подключение новых зеркал
- не принимаются.</para>
- </sect2>
- </sect1>
-
- <sect1 xml:id="mirror-statpages">
- <title>Статистика некоторых зеркал</title>
-
- <para>Вот несколько ссылок на статистику использования зеркал</para>
-
- <sect2 xml:id="mirror-statpagesftp">
- <title>Статистика FTP сайтов</title>
-
- <itemizedlist>
- <listitem>
- <para>ftp.is.FreeBSD.org - <email>hostmaster@is.FreeBSD.org</email> -
- <link xlink:href="http://www.rhnet.is/status/draupnir/draupnir.html">
- (загрузка канала)</link>
- <link xlink:href="http://www.rhnet.is/status/ftp/ftp-notendur.html">(FTP
- процессы)</link>
- <link xlink:href="http://www.rhnet.is/status/ftp/http-notendur.html">
- (HTTP процессы)</link></para>
- </listitem>
-
- <listitem>
- <para>ftp.cz.FreeBSD.org - <email>cejkar@fit.vutbr.cz</email> -
- <link xlink:href="http://www.cz.FreeBSD.org/stats/mrtg/net.html">
- (загрузка канала)</link>
- <link xlink:href="http://www.freebsd.cz/stats/mrtg/ftpd.html">
- (FTP процессы)</link>
- <link xlink:href="http://www.freebsd.cz/stats/mrtg/rsyncd.html">
- (rsync процессы)</link></para>
- </listitem>
-
- <listitem>
- <para>ftp2.ru.FreeBSD.org - <email>mirror@macomnet.ru</email> -
- <link xlink:href="http://mirror.macomnet.net/mrtg/mirror.macomnet.net_195.128.64.25.html">(Bandwidth)</link>
- <link xlink:href="http://mirror.macomnet.net/mrtg/mirror.macomnet.net_proc.html">(HTTP and FTP users)</link></para>
- </listitem>
- </itemizedlist>
- </sect2>
- </sect1>
-</article>
diff --git a/ru_RU.KOI8-R/articles/ipsec-must/Makefile b/ru_RU.KOI8-R/articles/ipsec-must/Makefile
deleted file mode 100644
index 64934e4158..0000000000
--- a/ru_RU.KOI8-R/articles/ipsec-must/Makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# The FreeBSD Russian Documentation Project
-#
-# $FreeBSD$
-# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/ipsec-must/Makefile,v 1.3 2004/02/20 07:52:54 andy Exp $
-# Article: Independent Verification of IPsec Functionality in FreeBSD
-#
-# Original revision: r39631
-#
-
-DOC?= article
-
-FORMATS?= html
-
-INSTALL_COMPRESSED?=gz
-INSTALL_ONLY_COMPRESSED?=
-
-SRCS= article.xml
-
-URL_RELPREFIX?= ../../../..
-DOC_PREFIX?= ${.CURDIR}/../../..
-
-.include "${DOC_PREFIX}/share/mk/doc.project.mk"
diff --git a/ru_RU.KOI8-R/articles/ipsec-must/article.xml b/ru_RU.KOI8-R/articles/ipsec-must/article.xml
deleted file mode 100644
index 80f671486c..0000000000
--- a/ru_RU.KOI8-R/articles/ipsec-must/article.xml
+++ /dev/null
@@ -1,355 +0,0 @@
-<?xml version="1.0" encoding="koi8-r"?>
-<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
- "http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
-<!--
- The FreeBSD Russian Documentation Project
-
- $FreeBSD$
- $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/ipsec-must/article.xml,v 1.7 2004/07/16 12:06:05 den Exp $
-
- Original revision: r44703
--->
-<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="ru">
- <info><title>Независимое исследование работы IPsec во FreeBSD</title>
-
-
- <author><personname><firstname>David</firstname><surname>Honig</surname></personname><affiliation>
- <address><email>honig@sprynet.com</email></address>
- </affiliation></author>
-
- <pubdate>1999-05-03</pubdate>
-
- <legalnotice xml:id="trademarks" role="trademarks">
- &tm-attrib.freebsd;
- &tm-attrib.opengroup;
- &tm-attrib.general;
- </legalnotice>
-
- <releaseinfo>$FreeBSD$</releaseinfo>
-
- <abstract>
- <para>Вы только что установили и настроили IPsec, и оно,
- кажется, заработало. Как это можно проверить? Я опишу метод
- экспериментальной проверки правильного функционирования
- IPsec.</para>
- </abstract>
- </info>
-
- <sect1 xml:id="problem">
- <title>Постановка задачи</title>
-
- <para>Для начала предположим, что Вы <link linkend="ipsec-install">
- настроили <emphasis>IPsec</emphasis></link>. Как Вы
- узнаете, что IPsec <link linkend="caveat">работает</link>?
- Несомненно, соединения не будет, если Вы неверно его
- сконфигурировали. И оно, конечно, появится в выводе команды
- &man.netstat.1;, когда Вы всё сделаете верно. Но можно ли
- как-то подтвердить сам факт функционирования IPsec?</para>
- </sect1>
-
- <sect1 xml:id="solution">
- <title>Решение</title>
-
- <para>Для начала немножко криптографической теории:</para>
-
- <orderedlist>
- <listitem>
- <para>Шифрованные данные равномерно распределены по области
- определения, то есть каждый символ имеет максимальную
- энтропию;</para>
- </listitem>
-
- <listitem>
- <para><quote>Сырые</quote> и несжатые данные как правило
- избыточны, то есть их энтропия меньше максимально
- возможной.</para>
- </listitem>
- </orderedlist>
-
- <para>Предположим, что у Вас имеется возможность измерить энтропию
- входящего и исходящего трафика на сетевом интерфейсе. В этом
- случае Вы сможете легко отличить зашифрованные данные от
- открытых, причём даже в том случае, когда часть данных в
- <quote>режиме шифрования</quote> передаётся в открытом виде, к
- примеру внешние заголовки IP, которые используются для
- маршрутизации.</para>
-
- <sect2 xml:id="MUST">
- <title>MUST</title>
-
- <para><quote>Универсальный Статистический Тест для Генераторов
- Случайных Чисел</quote> Уэли Маурера (Ueli Maurer's Universal
- Statistical Test for Random Bit Generators), сокращённо <link xlink:href="http://www.geocities.com/SiliconValley/Code/4704/universal.pdf">
- <acronym>MUST</acronym></link> позволяет быстро измерить
- энтропию последовательного набора данных. Используемый
- алгоритм похож на алгоритм сжатия. <link linkend="code">В
- приложении</link> приведён исходный код, позволяющий измерять
- энтропию последовательных кусков данных размером около
- четверти мегабайта.</para>
- </sect2>
-
- <sect2 xml:id="tcpdump">
- <title>Tcpdump</title>
-
- <para>Ещё нам нужен способ сохранения информации,
- проходящей через интерфейс. Программа &man.tcpdump.1;
- позволяет сделать это в случае, если Вы <link linkend="kernel">сконфигурировали своё ядро</link> с
- поддержкой <emphasis>Пакетного Фильтра Беркли (Berkeley Packet
- Filter)</emphasis>.</para>
-
- <para>Команда</para>
-
- <screen><userinput>tcpdump -c 4000 -s 10000 -w <replaceable>dumpfile.bin</replaceable></userinput></screen>
-
- <para>сохранит 4000 пакетов в файл
- <replaceable>dumpfile.bin</replaceable>. В данном примере объём
- записываемой информации в каждом пакете не может превышать
- 10,000 байтов.</para>
- </sect2>
- </sect1>
-
- <sect1 xml:id="experiment">
- <title>Эксперимент</title>
-
- <para>Повторите следующие шаги эксперимента:</para>
-
- <procedure>
- <step>
- <para>Откройте два окна терминала и свяжитесь в одном из них с
- каким-нибудь компьютером через канал IPsec, а в другом &mdash; с
- обычным, <quote>незащищённым</quote> компьютером.</para>
- </step>
-
- <step>
- <para>Теперь начните <link linkend="tcpdump">сохранять
- пакеты</link>.</para>
- </step>
-
- <step>
- <para>В <quote>шифрованном</quote> окне запустите команду &unix;
- &man.yes.1;, которая будет выдавать бесконечный
- поток символов <literal>y</literal>. Немножко подождите и
- завершите её. Затем переключитесь в обычное окно (не
- использующее канал IPsec) и сделайте то же самое.</para>
- </step>
-
- <step>
- <para>Заключительный этап: запустите <link linkend="code">
- MUST</link>, передав ему для обработки только что
- сохранённые пакеты через командную строку. Вы должны
- увидеть что-то вроде изображённого чуть ниже. Заметьте, что
- безопасное соединение имеет 93% (6,7) от ожидаемого значения
- (7,18), а обычное соединение &mdash; всего лишь 29%
- (2,1).</para>
-
- <screen>&prompt.user; <userinput>tcpdump -c 4000 -s 10000 -w <replaceable>ipsecdemo.bin</replaceable></userinput>
-&prompt.user; <userinput>uliscan <replaceable>ipsecdemo.bin</replaceable></userinput>
-
-Uliscan 21 Dec 98
-L=8 256 258560
-Measuring file ipsecdemo.bin
-Init done
-Expected value for L=8 is 7.1836656
-6.9396 --------------------------------------------------------
-6.6177 -----------------------------------------------------
-6.4100 ---------------------------------------------------
-2.1101 -----------------
-2.0838 -----------------
-2.0983 -----------------</screen>
- </step>
- </procedure>
- </sect1>
-
- <sect1 xml:id="caveat">
- <title>Замечание</title>
-
- <para>Этот эксперимент показывает, что IPsec
- <emphasis>действительно</emphasis> распределяет передаваемые
- байты по области определения <emphasis>равномерно</emphasis>,
- как и любое другое шифрование. Однако этот метод <emphasis>не
- может</emphasis> обнаружить множество других изъянов в системе
- (хотя я таковых не знаю). Для примера можно привести плохие
- алгоритмы генерации или обмена ключами, нарушение
- конфиденциальности данных или ключей, использование слабых в
- криптографическом смысле алгоритмов, взлом ядра и т. д. Изучайте
- исходный код, узнавайте, что там происходит.</para>
- </sect1>
-
- <sect1 xml:id="IPsec">
- <title>Определение IPsec</title>
-
- <para>IPsec представляет собой протокол безопасного обмена
- информацией по Internet. Существует в виде расширения к IPv4;
- является неотъемлемой частью IPv6. Содержит в себе протокол
- шифрования и аутентификации на уровне IP (межмашинное
- <quote>host-to-host</quote> взаимодействие). SSL защищает
- только лишь конкретный прикладной сокет;
- <application>SSH</application> защищает вход на машину;
- <application>PGP</application> защищает определённый файл или
- письмо. IPsec шифрует всю информацию, передаваемую между двумя
- машинами.</para>
- </sect1>
-
- <sect1 xml:id="ipsec-install">
- <title>Установка IPsec</title>
-
- <para>Большинство современных версий FreeBSD уже имеют поддержку
- IPsec. Вероятно, Вы должны будете лишь добавить опцию
- <option>IPsec</option> в конфигурационный файл ядра, и после
- сборки и инсталляции нового ядра, сконфигурировать соединение
- IPsec с помощью команды &man.setkey.8;.</para>
-
- <para>Более подробно о том, как запустить IPsec во FreeBSD можно
- прочесть в <link xlink:href="&url.books.handbook;/ipsec.html">Руководстве
- пользователя</link>.</para>
- </sect1>
-
- <sect1 xml:id="kernel">
- <title>src/sys/i386/conf/KERNELNAME</title>
-
- <para>Для того, чтобы захватывать сетевой трафик при помощи
- &man.tcpdump.1;, следующие строки должны присутствовать
- в конфигурационном файле ядра. Не
- забудьте после модификации запустить &man.config.8;, и, как
- обычно, пересобрать и установить новое ядро.</para>
-
- <programlisting>device bpf</programlisting>
- </sect1>
-
- <sect1 xml:id="code">
- <title>Универсальный Статистический Тест Маурера (размер блока
- &mdash; 8 бит)</title>
-
- <para>Оригинал нижеприведённого кода находится по <link xlink:href="http://www.geocities.com/SiliconValley/Code/4704/uliscanc.txt">
- этому адресу</link>.</para>
-
- <programlisting>/*
- ULISCAN.c ---blocksize of 8
-
- 1 Oct 98
- 1 Dec 98
- 21 Dec 98 uliscan.c derived from ueli8.c
-
- This version has // comments removed for Sun cc
-
- This implements Ueli M Maurer's "Universal Statistical Test for Random
- Bit Generators" using L=8
-
- Accepts a filename on the command line; writes its results, with other
- info, to stdout.
-
- Handles input file exhaustion gracefully.
-
- Ref: J. Cryptology v 5 no 2, 1992 pp 89-105
- also on the web somewhere, which is where I found it.
-
- -David Honig
- honig@sprynet.com
-
- Usage:
- ULISCAN filename
- outputs to stdout
-*/
-
-#define L 8
-#define V (1&lt;&lt;L)
-#define Q (10*V)
-#define K (100 *Q)
-#define MAXSAMP (Q + K)
-
-#include &lt;stdio.h&gt;
-#include &lt;math.h&gt;
-
-int main(argc, argv)
-int argc;
-char **argv;
-{
- FILE *fptr;
- int i,j;
- int b, c;
- int table[V];
- double sum = 0.0;
- int iproduct = 1;
- int run;
-
- extern double log(/* double x */);
-
- printf("Uliscan 21 Dec 98 \nL=%d %d %d \n", L, V, MAXSAMP);
-
- if (argc &lt; 2) {
- printf("Usage: Uliscan filename\n");
- exit(-1);
- } else {
- printf("Measuring file %s\n", argv[1]);
- }
-
- fptr = fopen(argv[1],"rb");
-
- if (fptr == NULL) {
- printf("Can't find %s\n", argv[1]);
- exit(-1);
- }
-
- for (i = 0; i &lt; V; i++) {
- table[i] = 0;
- }
-
- for (i = 0; i &lt; Q; i++) {
- b = fgetc(fptr);
- table[b] = i;
- }
-
- printf("Init done\n");
-
- printf("Expected value for L=8 is 7.1836656\n");
-
- run = 1;
-
- while (run) {
- sum = 0.0;
- iproduct = 1;
-
- if (run)
- for (i = Q; run &amp;&amp; i &lt; Q + K; i++) {
- j = i;
- b = fgetc(fptr);
-
- if (b &lt; 0)
- run = 0;
-
- if (run) {
- if (table[b] &gt; j)
- j += K;
-
- sum += log((double)(j-table[b]));
-
- table[b] = i;
- }
- }
-
- if (!run)
- printf("Premature end of file; read %d blocks.\n", i - Q);
-
- sum = (sum/((double)(i - Q))) / log(2.0);
- printf("%4.4f ", sum);
-
- for (i = 0; i &lt; (int)(sum*8.0 + 0.50); i++)
- printf("-");
-
- printf("\n");
-
- /* refill initial table */
- if (0) {
- for (i = 0; i &lt; Q; i++) {
- b = fgetc(fptr);
- if (b &lt; 0) {
- run = 0;
- } else {
- table[b] = i;
- }
- }
- }
- }
-}</programlisting>
- </sect1>
-</article>
diff --git a/ru_RU.KOI8-R/articles/mailing-list-faq/Makefile b/ru_RU.KOI8-R/articles/mailing-list-faq/Makefile
deleted file mode 100644
index 754ba37930..0000000000
--- a/ru_RU.KOI8-R/articles/mailing-list-faq/Makefile
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# The FreeBSD Russian Documentation Project
-#
-# $FreeBSD$
-# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/mailing-list-faq/Makefile,v 1.1 2005/06/10 06:27:12 gad Exp $
-#
-# Original revision: r39665
-#
-# Article: Frequently Asked Questions About The FreeBSD Mailing Lists
-
-DOC?= article
-
-FORMATS?= html
-
-INSTALL_COMPRESSED?=gz
-INSTALL_ONLY_COMPRESSED?=
-
-WITH_ARTICLE_TOC?=YES
-
-#
-# SRCS lists the individual XML files that make up the document. Changes
-# to any of these files will force a rebuild
-#
-
-# XML content
-SRCS= article.xml
-
-URL_RELPREFIX?= ../../../..
-DOC_PREFIX?= ${.CURDIR}/../../..
-
-.include "${DOC_PREFIX}/share/mk/doc.project.mk"
diff --git a/ru_RU.KOI8-R/articles/mailing-list-faq/article.xml b/ru_RU.KOI8-R/articles/mailing-list-faq/article.xml
deleted file mode 100644
index e1061e180c..0000000000
--- a/ru_RU.KOI8-R/articles/mailing-list-faq/article.xml
+++ /dev/null
@@ -1,497 +0,0 @@
-<?xml version="1.0" encoding="koi8-r"?>
-<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
- "http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
-<!--
- The FreeBSD Russian Documentation Project
-
- $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/mailing-list-faq/article.xml,v 1.4 2006/02/09 14:56:28 marck Exp $
-
- Original revision: r46073
--->
-<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="ru">
- <info><title>Часто задаваемые вопросы по спискам рассылки &os;</title>
-
-
- <authorgroup>
- <author><personname><surname>The &os; Documentation Project</surname></personname></author>
- </authorgroup>
-
- <copyright>
- <year>2004</year>
- <year>2005</year>
- <holder>The &os; Documentation Project</holder>
- </copyright>
-
- <pubdate>$FreeBSD$</pubdate>
-
- <releaseinfo>$FreeBSD$</releaseinfo>
-
- <abstract>
- <para>Эта статья посвящена часто задаваемым вопросам (FAQ) по
- спискам рассылки &os;. Если вы хотите помочь поддерживать данный
- документ, напишите письмо в &a.doc;.
- Последняя версия данного документа доступна на
- <link xlink:href="http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/mailing-list-faq/index.html">WWW
- сервере &os;</link>. Вы можете получить данную статью в
- виде одного большого
- <link xlink:href="article.html">HTML</link> файла, используя HTTP протокол
- или в виде простого текста, форматов PostScript, PDF, и других с <link xlink:href="ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/">FTP
- сервера &os;</link>. Возможно вы захотите <link xlink:href="&url.base;/search/index.html">Найти
- FAQ</link>.</para>
- </abstract>
- </info>
-
- <sect1 xml:id="introduction">
- <title>Введение</title>
-
- <para>Цель этого документа ответить на часто задаваемые
- вопросы, касающиеся списков рассылки &os;. Хотя FAQ задумывались
- для снижения количества задаваемых повторяющихся вопросов, они стали
- восприниматься, как ценные источники информации.</para>
-
- <para>Этот документ - попытка представить консенсус всего сообщества,
- и поэтому он не может считаться <emphasis>официальным</emphasis>.
- Если вы найдете технические неточности в данном документе или
- у вас есть предложения по добавлению новых пунктов, пожалуйста
- отправьте PR или напишите в &a.doc;. Спасибо.</para>
-
- <qandaset>
- <qandaentry>
- <question xml:id="purpose">
- <para>Зачем вообще нужны списки рассылки по &os;?</para>
- </question>
-
- <answer>
- <para>Списки рассылки по &os; служат, как первичное средство
- связи &os; сообщества, они покрывают множество различных
- тем.</para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question xml:id="audience">
- <para>Кто пользуется этими списками рассылки?</para>
- </question>
-
- <answer>
- <para>Это зависит от темы обсуждения каждого конкретного
- списка рассылки. Некоторые списки больше ориентированны на
- разработчиков, некоторые на всё сообщество &os; в целом. Список
- существующих на сегодняшний день списков рассылки доступен
- <link xlink:href="http://lists.FreeBSD.org/mailman/listinfo">здесь</link>.</para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question xml:id="participation-who">
- <para>Доступны ли списки рассылки по &os; для каждого?</para>
- </question>
-
- <answer>
- <para>Повторюсь, это зависит от характера обсуждаемых тем в каждом
- конкретном листе. Пожалуйста прочтите устав списка рассылки
- перед отправлением в него письма и соблюдайте его при каждом
- отправлении. Это будет полезно каждому получить больше опыта
- по работе со списками рассылки.</para>
-
- <para>Если после просмотра выше расположенного списка, вы до
- сих пор не знаете в какой список рассылки направить
- письмо, то вам наверняка подойдёт freebsd-questions (но
- прежде прочтите ниже).</para>
-
- <para>Заметьте, что для отправки письма в список рассылки
- необязательно быть подписанным на него. Это поможет
- легче присоединиться к сообществу &os; и способствует
- открытому обмену идей. Но, из-за небрежности некоторых
- людей некоторые списки проводят политику предварительного
- ручного просмотра сообщений от не подписанных пользователей, чтобы
- убедиться в их целесообразности.</para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question xml:id="subscribe">
- <para>Как я могу подписаться?</para>
- </question>
-
- <answer>
- <para>Вы можете использовать <link xlink:href="http://lists.FreeBSD.org/mailman/listinfo">
- web интерфейс Mailman</link> для подписки на любой
- из открытых списков рассылки.</para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question xml:id="unsubscribe">
- <para>Как мне отписаться?</para>
- </question>
-
- <answer>
- <para>Вы можете использовать вышеупомянутый интерфейс
- или следовать инструкциям, находящимся в конце каждого
- письма, отправленного в этот список рассылки.</para>
-
- <para>Пожалуйста, не посылайте письма с отказом от подписки
- в сами публичные списки. Во-первых, вы так не
- отпишитесь, а во-вторых, вызовете раздражение
- подписчиков, и вероятно получите неприятные высказывания
- в свой адрес. Это классическая ошибка при работе со
- списками рассылки; старайтесь не повторять её.</para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question xml:id="archives">
- <para>Доступны ли архивы?</para>
- </question>
-
- <answer>
- <para>Да. Архивы доступны
- <link xlink:href="http://docs.FreeBSD.org/mail/">здесь</link>.</para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question xml:id="digest">
- <para>Доступны ли списки рассылки в дайджест формате?</para>
- </question>
-
- <answer>
- <para>Да. Посмотрите <link xlink:href="http://lists.FreeBSD.org/mailman/listinfo">
- web интерфейс Mailman</link>.</para>
- </answer>
- </qandaentry>
- </qandaset>
- </sect1>
-
- <sect1 xml:id="etiquette">
- <title>Этикет списков рассылки</title>
-
- <para>Участие в любом списке рассылки, как и в любом другом
- сообществе требует общего базиса для общения. Пожалуйста,
- отправляйте только подходящие сообщения и следуйте общепринятым
- нормам этикета.</para>
-
- <qandaset>
- <qandaentry>
- <question xml:id="before-posting">
- <para>Что я должен сделать перед отправлением письма?</para>
- </question>
-
- <answer>
- <para>Вы уже сделали важный шаг, решив прочитать эту
- статью. Если вы новичок во &os;, то сначала ознакомьтесь
- с программным обеспечением и связанной с нею
- документацией, включающей множество
- <link xlink:href="&url.base;/ru/docs/books.html">книг и
- статьей</link>.
- Могут быть
- интересными: <link xlink:href="&url.books.faq;/index.html">
- Часто задаваемые вопросы по &os; (FAQ)</link>,
- <link xlink:href="&url.books.handbook;/index.html">
- Руководство по &os; </link>,
- и статьи <link xlink:href="&url.articles.freebsd-questions;/article.html">
- Как работать со списком рассылки FreeBSD-questions с максимальной отдачей</link>,
- <link xlink:href="&url.articles.explaining-bsd;/article.html">
- Что такое BSD</link>,
- и <link xlink:href="&url.articles.new-users;/article.html">
- Пособие для новичков во &os;</link>.</para>
-
- <para>Вы можете получить нелицеприятные высказывания в свой
- адрес, если зададите вопрос, ответ на который
- есть в приведённой выше документации. Это не потому что
- добровольцы, работающие над данным проектом очень плохие
- люди, а после многократного ответа на одни и те же
- вопросы - раздражение берёт своё. Это особенно справедливо,
- если уже существует и доступен ответ на вопрос. Не
- забывайте, что вся работа по улучшению &os; выполняется
- добровольцами, и что мы только люди.</para>
- </answer>
-
- </qandaentry>
-
- <qandaentry>
- <question xml:id="inappropriate">
- <para>Что считается несоответствующим письмом?</para>
- </question>
-
- <answer>
- <itemizedlist>
- <listitem>
- <para>Письма должны соответствовать уставу
- списка рассылки.</para>
- </listitem>
-
- <listitem>
- <para>Избегайте личных оскорблений. Как хорошие
- жители сети, мы должны держать себя по высоким
- стандартам поведения.</para>
- </listitem>
-
- <listitem>
- <para>Спам не разрешён. Нарушители данного правила
- будут забаненны.</para>
- </listitem>
- </itemizedlist>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question xml:id="etiquette-posting">
- <para>Что считается хорошим этикетом при посылке писем
- в списки рассылки?</para>
- </question>
-
- <answer>
- <itemizedlist>
- <listitem>
- <para>Пожалуйста, составляйте строки длиной примерно в
- 75 символов, так так не каждый использует модную
- почтовую программу с графическим интерфейсом.</para>
- </listitem>
-
- <listitem>
- <para>Пожалуйста, обращайте внимание на тот факт, что
- пропускная способность ограничена. Не каждый
- читает почту через высокоскоростное
- соединение. Если вы отправляете содержимое
- какого-нибудь файла, например <filename>config.log</filename>
- или объёмную трассировку стека, то, пожалуйста, размещайте его
- на каком-нибудь веб-сайте и присылайте просто ссылку на
- на него. Помните, что такие сообщения будут
- заархивированны, и это просто добавит ненужные байты
- к архиву.</para>
- </listitem>
-
- <listitem>
- <para>Оформляйте ваше сообщение, чтобы оно было читабельно
- и ПОЖАЛУЙСТА, НЕ КРИЧИТЕ!!!!!. Не упускайте из виду эффект,
- которое производит плохо отформатированное письмо, причём
- не только в списках рассылки &os;. Ваше сообщение будет
- просмотрено другими людьми, и если оно плохо отформатировано, имеет
- множество ошибок и/или восклицательных знаков, то это создаст
- нехорошее впечатление о вас.</para>
- </listitem>
-
- <listitem>
- <para>Пожалуйста, используйте подходящий язык общения для
- конкретного списка рассылки.
- <link xlink:href="&url.base;/community/mailinglists.html">
- Существует</link> много не англоязычных рассылок.</para>
-
- <para>Мы понимаем, что для многих английский не родной язык и
- поэтому мы пытаемся сделать некие пособия. Считается
- плохим тоном критиковать людей не говорящих по-английски за
- лексические и грамматические ошибки. &os; имеет отличные
- продвижения в этом отношении. Пожалуйста, помогайте
- сохранять нам эту традицию.</para>
- </listitem>
-
- <listitem>
- <para>Пожалуйста, используйте совместимый со стандартами
- почтовый клиент (MUA). Много плохо отформатированных
- сообщений исходят от
- <link xlink:href="http://www.lemis.com/grog/email/email.php">неправильно
- работающих или плохо сконфигурированных почтовых клиентов</link>.
- Известно, что следующие почтовые программы могут посылать
- неправильно отформатированные сообщения без вашего ведома:</para>
-
- <itemizedlist>
- <listitem>
- <para>exmh</para>
- </listitem>
-
- <listitem>
- <para>&microsoft; Exchange</para>
- </listitem>
-
- <listitem>
- <para>&microsoft; &outlook;</para>
- </listitem>
- </itemizedlist>
-
- <para>Постарайтесь не использовать <acronym>MIME</acronym>:
- многие используют программы, которые не очень хорошо работают с
- <acronym>MIME</acronym>.</para>
- </listitem>
-
- <listitem>
- <para>Проверьте правильность настроек времени и временной зоны. Это
- может выглядеть немножко глупо, потому что ваши сообщения все равно
- будут доставляться, однако многие люди получают несколько сотен
- сообщений в день. Зачастую они сортируют входящие сообщения по
- теме и дате, и если ваше сообщение не будет предшествовать первому
- ответу, то они могут предположить, что оно потерялось и даже не
- взглянут на него.</para>
- </listitem>
-
- <listitem>
- <para>Основной объем информации, который вы должны предоставить, представляет
- собой вывод программ, таких, как &man.dmesg.8;, или консольные
- сообщения, которые обычно появляются в файле
- <filename>/var/log/messages</filename>. Не пытайтесь скопировать
- эту информацию, набрав ее снова; это действительно трудно, и
- здесь легко сделать ошибку. Чтобы послать содержимое файлов
- протоколов, сделайте копию файла и воспользуйтесь редактором
- для того, чтобы обрезать информацию, оставив только относящуюся
- к делу, либо скопируйте и вставьте текст в ваше сообщение. В
- случае вывода программ, таких,
- как <command>dmesg</command>, перенаправьте вывод в файл и
- включите его в письмо. Например,</para>
-
- <screen>&prompt.user; <userinput>dmesg &gt; /tmp/dmesg.out</userinput></screen>
-
- <para>Данная команда перенаправит информацию в файл
- <filename>/tmp/dmesg.out</filename>.</para>
- </listitem>
-
- <listitem>
- <para>При использовании операций копирования и вставки
- учтите, что некоторые такие операции отрицательно сказываются
- на формате строк. Особенно это стоит учесть при посылке
- содержимого файлов <filename>Makefile</filename>, где
- <literal>tab</literal> является важным символом. Это
- довольно часто встречающаяся проблема
- в <link xlink:href="&url.base;/support.html">
- базе данных сообщений об ошибках</link>.
- В <filename>Makefile</filename> символы tab меняются
- на пробелы, или раздражающие <literal>=3B</literal>
- escape последовательности.</para>
- </listitem>
- </itemizedlist>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question xml:id="etiquette-replying">
- <para>Каких правил этикета стоит придерживаться при ответе
- на уже существующее сообщение?</para>
- </question>
-
- <answer>
- <itemizedlist>
- <listitem>
- <para>Пожалуйста, включайте относящийся к теме текст из
- исходного письма. Сокращайте его до минимума, но не
- переусердствуйте. Любой, кто не читал исходное сообщение
- должен суметь понять о чём идёт речь.</para>
-
- <para>Это особенно важно для ответов, где исходное сообщение составляло
- сотни строчек.</para>
- </listitem>
-
- <listitem>
- <para>Отделяйте текст исходного сообщения
- от текста, добавляемого вами. Чаще всего строчки исходного
- сообщения
- предваряются <quote><literal>&gt; </literal></quote> и
- пробелом. Отделяйте ваш текст от текста исходного сообщения
- пустыми строчками. Эти правила помогут сделать ваши
- сообщения более читабельными.</para>
- </listitem>
-
- <listitem>
- <para>Пожалуйста, убедитесь, что присваивания текста, который
- вы цитируйте корректны. Люди могут обидеться, если
- вы присвоите им слова, которые они не писали.</para>
- </listitem>
-
- <listitem>
- <para>Пожалуйста, не пишите <literal>ответ в начале</literal>. Это значит,
- что при ответе на сообщения, вставляйте ваши ответы в
- конец, после текста, копируемого из исходного сообщения.</para>
- <!-- note: the question and answer are intentionally
- reversed for humorous effect -->
- <itemizedlist>
- <listitem>
- <para>A: Потому что это не соответствует логическому
- ходу обсуждения.</para>
- </listitem>
- <listitem>
- <para>Q: Почему верхнее сообщение осуждает это?</para>
- </listitem>
- </itemizedlist>
- <para>(Спасибо Рэнди Бушу (Randy Bush) за шутку.)</para>
- </listitem>
- </itemizedlist>
- </answer>
- </qandaentry>
- </qandaset>
- </sect1>
-
- <sect1 xml:id="recurring">
- <title>Повторяющиеся темы в списках рассылки</title>
-
- <para>Участие в списках рассылки, как и участие в любом сообществе
- требует общего базиса для общения. Большое количество рассылок
- предполагают знание истории Проекта. В частности, существует
- несколько тем обсуждения, которые возникают у
- новичков. Обязанность каждого участника не создавать дискуссии
- на эти темы, тем самым помочь спискам рассылки не отрываться от
- обсуждаемых тем и обезопасить себя от разгорячённых бесед.</para>
-
- <para>Лучший способ предотвратить это - ознакомиться с
- <link xlink:href="http://docs.FreeBSD.org/mail/">архивами списков рассылки</link>,
- чтобы понять, что происходило до этого. В этом случае, незаменимым
- окажется <link xlink:href="http://www.FreeBSD.org/search/search.html#mailinglists">
- интерфейс поиска по спискам рассылки</link>. (Если этот
- способ не принёс результатов, воспользуйтесь вашей любимой
- поисковой системой).</para>
-
- <para>Познакомившись с архивами, вы не только будете знать какие темы
- обсуждались до этого, а также узнаете какие тенденции общения
- существуют в данной рассылке, кто является участниками и какова
- конечная аудитория. Эти вещи довольно хорошо знать перед отправкой
- письма в любую рассылку, и это касается не только списков
- рассылки &os;.</para>
-
- <para>Нет сомнения, что архивы довольно объёмные и некоторые вопросы
- повторяются гораздо чаще чем другие, иногда в виде
- откликов (followups), где тема сообщения уже не соответствует новому
- положению дел. Тем не менее, старайтесь избегать повторяющихся
- тем.</para>
- </sect1>
-
- <sect1 xml:id="bikeshed">
- <title>Что такое велосипедный навес ("Bikeshed")?</title>
- <para>В литературной нотации, <literal>велосипедный навес</literal> - это
- маленький внешний кожух, в который можно поместить один вид
- двухколёсного транспорта. Тем не менее, на языке &os;, этот термин
- ("bikeshed") относится к темам, которые достаточно просты, и на которые
- (почти) каждый может предложить собственное мнение, и часто (почти)
- каждый его и предлагает. Детали происхождения данного термина более
- подробно рассмотрены <link xlink:href="&url.books.faq;/misc.html#BIKESHED-PAINTING">здесь</link>.
- У вас должно иметься представление о данном понятии перед
- отправкой письма в любой список рассылки &os;.</para>
-
- <para>Bikeshed - это тема разговора, которая будет иметь
- тенденцию порождать немедленные мета-дискуссии и флэйм.</para>
-
- <para>Пожалуйста, помогайте сохранять списки рассылки настолько
- полезными для многих людей, насколько это возможно путём
- предотвращения bikeshed. Спасибо.</para>
- </sect1>
-
- <sect1 xml:id="acknowledgments">
- <title>Благодарности</title>
-
- <variablelist>
- <varlistentry>
- <term>&a.grog.email;</term>
- <listitem>
- <para>Первоначальный автор большинства материала по этикету списков
- рассылки, взятого из статьи <link xlink:href="&url.articles.freebsd-questions;/article.html">
- Как работать со списком рассылки FreeBSD-questions с максимальной отдачей</link>.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>&a.linimon.email;</term>
- <listitem>
- <para>Создание черновой версии данного FAQ.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </sect1>
-
-</article>
diff --git a/ru_RU.KOI8-R/articles/new-users/Makefile b/ru_RU.KOI8-R/articles/new-users/Makefile
deleted file mode 100644
index a48d8e5494..0000000000
--- a/ru_RU.KOI8-R/articles/new-users/Makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# The FreeBSD Russian Documentation Project
-#
-# $FreeBSD$
-# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/new-users/Makefile,v 1.2 2005/10/28 17:39:43 gad Exp $
-#
-# Original revision: r39631
-#
-# Article: For People New to Both FreeBSD and Unix
-
-DOC?= article
-
-FORMATS?= html
-
-INSTALL_COMPRESSED?=gz
-INSTALL_ONLY_COMPRESSED?=
-
-SRCS= article.xml
-
-URL_RELPREFIX?= ../../../..
-DOC_PREFIX?= ${.CURDIR}/../../..
-
-.include "${DOC_PREFIX}/share/mk/doc.project.mk"
diff --git a/ru_RU.KOI8-R/articles/new-users/article.xml b/ru_RU.KOI8-R/articles/new-users/article.xml
deleted file mode 100644
index e2cd637972..0000000000
--- a/ru_RU.KOI8-R/articles/new-users/article.xml
+++ /dev/null
@@ -1,916 +0,0 @@
-<?xml version="1.0" encoding="koi8-r"?>
-<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
- "http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
-<!--
- The FreeBSD Russian Documentation Project
-
- $FreeBSD$
- $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/new-users/article.xml,v 1.6 2007/05/15 18:28:39 gad Exp $
-
- Original revision: r46448
--->
-<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="ru">
- <info><title>Пособие для новичков во FreeBSD и &unix;</title>
-
-
- <authorgroup>
- <author><personname><firstname>Annelise</firstname><surname>Anderson</surname></personname><affiliation>
- <address><email>andrsn@andrsn.stanford.edu</email></address>
- </affiliation></author>
- </authorgroup>
-
- <pubdate>15 августа 1997</pubdate>
-
- <legalnotice xml:id="trademarks" role="trademarks">
- &tm-attrib.freebsd;
- &tm-attrib.ibm;
- &tm-attrib.microsoft;
- &tm-attrib.opengroup;
- &tm-attrib.general;
- </legalnotice>
-
- <releaseinfo>$FreeBSD$</releaseinfo>
-
- <abstract>
- <para>Поздравляем вас с установкой FreeBSD! Это вводное пособие
- предназначено для тех, кто является новичком в мире FreeBSD
- <emphasis>и</emphasis> &unix;&mdash;так что оно начнётся с
- основ.</para>
- </abstract>
- </info>
-
- <sect1 xml:id="in-and-out">
- <title>Регистрация в системе и выход из неё</title>
-
- <para>Зарегистрируйтесь в системе (когда увидите приглашение
- <prompt>login:</prompt>) как пользователь, которого вы создали во время
- установки, или войдите в систему как пользователь
- <systemitem class="username">root</systemitem>. (В вашей установленной системе уже имеется
- учётная запись для пользователя <systemitem class="username">root</systemitem>; который может переходить хоть куда
- и делать всё, что угодно, в том числе удаление необходимых для работы
- файлов, так что будьте внимательны!) Обозначения &prompt.user; и
- &prompt.root; в последующем тексте означают приглашения системы (ваше
- может отличаться от него), причём &prompt.user; обозначает обычного
- пользователя, а &prompt.root; пользователя <systemitem class="username">root</systemitem>.</para>
-
- <para>Чтобы выйти из системы (и получить новое приглашение
- <prompt>login:</prompt>) наберите</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>exit</userinput></screen>
- </informalexample>
-
- <para>столько раз, сколько нужно. Да, нажимайте <keysym>enter</keysym>
- после набора команд, и помните, что &unix; чувствителен к регистру
- букв&mdash;набирайте <command>exit</command>, но не
- <command>EXIT</command>.</para>
-
- <para>Для завершения работы машины наберите</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>/sbin/shutdown -h now</userinput></screen>
- </informalexample>
-
- <para>Или, для перезагрузки нужно набрать</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>/sbin/shutdown -r now</userinput></screen>
- </informalexample>
-
- <para>или</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>/sbin/reboot</userinput></screen>
- </informalexample>
-
- <para>Перезагрузку можно также выполнить нажатием клавиш
- <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap>
- <keycap>Delete</keycap></keycombo>. Подождите некоторое время, чтобы
- дать этой команде отработать. В последних релизах FreeBSD она
- эквивалента выдаче команды <command>/sbin/reboot</command> и гораздо,
- гораздо лучше, чем нажатие кнопки сброса. Вы ведь не хотите всё
- переустанавливать заново, не так ли?</para>
- </sect1>
-
- <sect1 xml:id="adding-a-user">
- <title>Добавление пользователя с привилегиями root</title>
-
- <para>Если при установке системы вы не создали ни одного пользователя, и
- поэтому вошли в систему как <systemitem class="username">root</systemitem>, то теперь вы должны создать
- пользователя по команде</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>adduser</userinput></screen>
- </informalexample>
-
- <para>При первом использовании утилиты <command>adduser</command> она может запрашивать
- сохранение некоторых параметров для использования их по умолчанию.
- вы можете сделать оболочкой, используемой по умолчанию, командный
- процессор &man.csh.1;, а не &man.sh.1;, если по умолчанию вам
- предлагается <command>sh</command>. В противном случае просто нажимайте
- enter для принятия всех предлагаемых по умолчанию вариантов. Эти
- значения по умолчанию сохраняются в файле
- <filename>/etc/adduser.conf</filename>, в форме, доступной для
- редактирования.</para>
-
- <para>Предположим, что вы создали пользователя <systemitem class="username">jack</systemitem> с
- полным именем <emphasis>Jack Benimble</emphasis>. Назначьте пользователю
- <systemitem class="username">jack</systemitem> пароль, если информационная безопасность имеет значение (даже если
- это дети, которые могут стучать по клавиатуре). Когда вам будет задан
- вопрос по включению пользователя <systemitem class="username">jack</systemitem> в другие группы, наберите
- <systemitem class="groupname">wheel</systemitem></para>
-
- <informalexample>
- <screen>Login group is ``jack''. Invite jack into other groups: <userinput>wheel</userinput></screen>
- </informalexample>
-
- <para>Это позволит входить в систему как пользователь
- <systemitem class="username">jack</systemitem> и использовать команду &man.su.1; для того,
- чтобы стать пользователем <systemitem class="username">root</systemitem>. Тогда вас не будут больше обвинять в
- том, чтобы вы входите в систему как пользователь <systemitem class="username">root</systemitem>.</para>
-
- <para>Вы можете прекратить работы с <command>adduser</command> в любой
- момент, нажав <keycombo><keycap>Ctrl</keycap>
- <keycap>C</keycap></keycombo>, а в завершении ввода у вас будет шанс
- подтвердить заведение нового пользователя или набрать <keycap>n</keycap>
- в качестве отрицательного ответа. Вам может захотеться создать второго
- нового пользователя, для того, чтобы при редактировании файлов
- для входа пользователя <systemitem class="username">jack</systemitem> имелся горячий резерв на тот случай,
- если что-то пойдёт не так.</para>
-
- <para>После того, как вы это сделаете, воспользуйтесь командой
- <command>exit</command> для возврата к приглашению ко входу в систему и
- зарегистрируйтесь в ней как пользователь <systemitem class="username">jack</systemitem>.
- Вообще говоря, лучше всего основную массу работы выполнять, работая как
- обычный пользователь, который не имеет мощь и опасность пользователя
- <systemitem class="username">root</systemitem>.</para>
-
- <para>Если вы уже создали пользователя и хотите, чтобы он мог выполнять
- команду <command>su</command> для получения привилегий <systemitem class="username">root</systemitem>, вы можете
- войти в систему как <systemitem class="username">root</systemitem> и отредактировать файл
- <filename>/etc/group</filename>, добавив пользователя <systemitem class="username">jack</systemitem> в первую
- строчку (в группу <systemitem class="groupname">wheel</systemitem>). Однако сначала вам
- нужно поупражняться с программой &man.vi.1;, текстовым
- редактором,&mdash;или использовать более простой редактор, &man.ee.1;,
- имеющийся в последней версии FreeBSD.</para>
-
- <para>Для удаления пользователя воспользуйтесь командой
- <command>rmuser</command>.</para>
- </sect1>
-
- <sect1 xml:id="looking-around">
- <title>Просмотр окружения</title>
-
- <para>Войдя в систему как обычный пользователь, оглянитесь вокруг и
- попробуйте выполнить некоторые команды, дающие доступ к источникам
- информации и помощи внутри FreeBSD.</para>
-
- <para>Вот некоторые команды и то, что они делают:</para>
-
- <variablelist>
- <varlistentry>
- <term><command>id</command></term>
-
- <listitem>
- <para>Говорит вам, кто вы!</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>pwd</command></term>
-
- <listitem>
- <para>Показывает, где вы находитесь&mdash;текущий рабочий
- каталог.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>ls</command></term>
-
- <listitem>
- <para>Выдаёт список файлов, находящихся в текущем каталоге.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>ls -F</command></term>
-
- <listitem>
- <para>Выдаёт перечень файлов, находящихся в текущем каталоге,
- добавляя символы <literal>*</literal> после выполнимых файлов,
- <literal>/</literal> после каталогов и <literal>@</literal> после
- символических ссылок.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>ls -l</command></term>
-
- <listitem>
- <para>Выдаёт перечень файлов в расширенном формате&mdash;размер, дата
- и права доступа.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>ls -a</command></term>
-
- <listitem>
- <para>Вместе со всеми выдаёт и список скрытых
- <quote>dot</quote>-файлов (начинающихся с точки). Если вы
- являетесь пользователем <systemitem class="username">root</systemitem>, то <quote>dot</quote>-файлы выдаются
- и без указания флага <option>-a</option>.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>cd</command></term>
-
- <listitem>
- <para>Смена каталогов. <command>cd
- ..</command> перемещает на один уровень
- выше; обратите внимание на промежуток после <command>cd</command>.
- <command>cd /usr/local</command> перейдёт в
- указанное место. <command>cd ~</command>
- перейдёт в домашний каталог человека, который вошёл в
- систему&mdash;к примеру, <filename>/usr/home/jack</filename>.
- попробуйте выполнить команду <command>cd
- /cdrom</command>, а затем
- <command>ls</command> для проверки того, что ваш CDROM смонтирован
- и работает.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>less
- <replaceable>filename</replaceable></command></term>
-
- <listitem>
- <para>Позволяет вам просмотреть файл (с именем
- <replaceable>filename</replaceable>) без внесения в него изменений.
- Попробуйте выполнить команду <command>less
- /etc/fstab</command>. Для выхода
- наберите <command>q</command>.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>cat
- <replaceable>filename</replaceable></command></term>
-
- <listitem>
- <para>Выдаёт содержимое <replaceable>filename</replaceable> на экран.
- если он слишком длинный и вы можете увидеть только его конец,
- нажмите <keycap>ScrollLock</keycap> и используйте клавишу
- <keycap>стрелка вверх</keycap> для движения назад; вы можете
- также использовать <keycap>ScrollLock</keycap> и со страницами
- справки. Нажмите <keycap>ScrollLock</keycap> снова для прекращения
- прокрутки. Вам может захотеться попробовать команду
- <command>cat</command> с некоторыми из dot-файлов в вашем домашнем
- каталоге&mdash;<command>cat
- .cshrc</command>, <command>cat
- .login</command>, <command>cat
- .profile</command>.</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <para>В файле <filename>.cshrc</filename> вы заметите алиасы для некоторых
- из команд <command>ls</command> (они очень удобны). Вы можете создать
- другие алиасы, отредактировав файл <filename>.cshrc</filename>. Вы
- можете сделать эти алиасы доступными всем пользователям системы, поместив
- их в общесистемный конфигурационный файл для <command>csh</command>,
- <filename>/etc/csh.cshrc</filename>.</para>
- </sect1>
-
- <sect1 xml:id="getting-help">
- <title>Получение помощи и информации</title>
-
- <para>Вот несколько полезных источников получения помощи. Здесь
- <replaceable>Text</replaceable> обозначает что-то по вашему выбору, что
- вы вводите&mdash;обычно команду или имя файла.</para>
-
- <variablelist>
- <varlistentry>
- <term><command>apropos <replaceable>text</replaceable></command></term>
-
- <listitem>
- <para>Всё, что содержит строку <replaceable>text</replaceable> в
- <database>базе whatis</database>.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>man <replaceable>text</replaceable></command></term>
-
- <listitem>
- <para>Страница справки по <replaceable>text</replaceable>. Это
- главный источник документации в &unix;-системах.
- <command>man ls</command> покажет вам все
- способы использования команды <command>ls</command>. Нажимайте
- <keycap>Enter</keycap> для передвижения по тексту,
- <keycombo><keycap>Ctrl</keycap><keycap>B</keycap></keycombo> для
- возврата на страницу назад,
- <keycombo><keycap>Ctrl</keycap><keycap>F</keycap></keycombo> для
- продвижения вперёд, <keycap>q</keycap> или
- <keycombo><keycap>Ctrl</keycap><keycap>C</keycap></keycombo> для
- выхода.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>which <replaceable>text</replaceable></command></term>
-
- <listitem>
- <para>Покажет, в каком месте из маршрута поиска пользователя
- находится команда <replaceable>text</replaceable>.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>locate <replaceable>text</replaceable></command></term>
-
- <listitem>
- <para>Все маршруты, где находится строчка
- <replaceable>text</replaceable>.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>whatis <replaceable>text</replaceable></command></term>
-
- <listitem>
- <para>Описывает, что делает команда <replaceable>text</replaceable>
- и её справочная страница. Команда <command>whatis *</command>
- расскажет вам обо всех двоичных файлах в текущем каталоге.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>whereis <replaceable>text</replaceable></command></term>
-
- <listitem>
- <para>Ищет файл <replaceable>text</replaceable> и выдаёт полный путь
- до него.</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <para>Вы можете захотеть попробовать использоваться команду
- <command>whatis</command> с некоторыми полезными командами типа
- <command>cat</command>, <command>more</command>, <command>grep</command>,
- <command>mv</command>, <command>find</command>,
- <command>tar</command>, <command>chmod</command>,
- <command>chown</command>, <command>date</command>, и
- <command>script</command>. Команда <command>more</command> позволит
- вам читать постранично, как и в DOS, например, <command>ls -l |
- more</command> или <command>more
- <replaceable>filename</replaceable></command>. Знак
- <literal>*</literal> работает как общий шаблон&mdash;например,
- <command>ls w*</command> выдаст перечень файлов, начинающихся с буквы
- <literal>w</literal>.</para>
-
- <para>Некоторые из этих команд работают не очень хорошо? Обе команды
- &man.locate.1; и &man.whatis.1; зависят от базы данных, которая
- перестраивается еженедельно. Если ваша машина будет оставаться включенной
- на выходные (и она работает под FreeBSD), то вы можете пожелать
- запускать определённые команды раз в день, неделю, месяц. Запускайте их
- как <systemitem class="username">root</systemitem> и дайте каждой отработать, прежде чем запускать
- следующую.</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>periodic daily</userinput>
-<lineannotation>выдача опущена</lineannotation>
-&prompt.root; <userinput>periodic weekly</userinput>
-<lineannotation>выдача опущена</lineannotation>
-&prompt.root; <userinput>periodic monthly</userinput>
-<lineannotation>выдача опущена</lineannotation></screen>
- </informalexample>
-
- <para>Если вам надоело ждать, нажмите
- <keycombo><keycap>Alt</keycap><keycap>F2</keycap></keycombo> для перехода
- в другую <firstterm>виртуальную консоль</firstterm>, и войдите в систему
- снова. В конце концов, это многопользовательская и многозадачная
- система. Тем не менее эти команды, скорее всего, в процессе работы будут
- выдавать сообщения вам на экран; вы можете набрать
- <command>clear</command> в приглашении для очистки экрана. Пока они
- работают, вы можете смотреть в содержимое файлов
- <filename>/var/mail/root</filename> и
- <filename>/var/log/messages</filename>.</para>
-
- <para>Выполнение таких команд является частью системного
- администрирования&mdash;и как единственный пользователь &unix;-системы вы
- являетесь собственным системным администратором. Практически всё, для
- чего вам нужно быть пользователем <systemitem class="username">root</systemitem>, это системное администрирование.
- Эти обязанности не описываются достаточно хорошо даже в тех больших
- толстых книгах по &unix;, в которых слишком много места отдаётся описанию
- работы с меню в оконных менеджерах. Вам может понадобиться одна из двух
- лучших книг по системному администрированию, либо автора Эви Немет
- <citetitle>UNIX System Administration
- Handbook</citetitle> (Prentice-Hall, 1995, ISBN
- 0-13-15051-7)&mdash;второе издание с красной обложкой; или
- автора &AElig;leen Frisch <citetitle>Essential System
- Administration</citetitle> (O'Reilly &amp; Associates, 2002,
- ISBN 0-596-00343-9). Я использую книгу Немет.</para>
- </sect1>
-
- <sect1 xml:id="editing-text">
- <title>Редактирование текста</title>
-
- <para>Для конфигурации вашей системы вам нужно редактировать текстовые
- файлы. Большинство из них будут находиться в каталоге
- <filename>/etc</filename>; и вам необходимо командой
- <command>su</command> получить полномочия пользователя <systemitem class="username">root</systemitem>, чтобы их
- править. Вы можете использовать простой редактор <command>ee</command>,
- однако в смысле перспективности лучше изучить текстовый редактор
- <command>vi</command>. В каталоге
- <filename>/usr/src/contrib/nvi/docs/tutorial</filename> есть прекрасный
- учебник по vi, если у вас есть исходники системы.</para>
-
- <para>Перед тем, как редактировать файл, наверное, вы должны сохранить
- резервную копию. Предположим, что вы собираетесь отредактировать файл
- <filename>/etc/rc.conf</filename>. Вы можете воспользоваться командой
- <command>cd /etc</command> для перехода в каталог
- <filename>/etc</filename> и выполнить следующее:</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>cp rc.conf rc.conf.orig</userinput></screen>
- </informalexample>
-
- <para>При этом файл <filename>rc.conf</filename> скопируется в
- <filename>rc.conf.orig</filename>, и в последующем вы сможете скопировать
- <filename>rc.conf.orig</filename> в файл
- <filename>rc.conf</filename> для восстановления оригинала. Но ещё лучше
- его переместить (переименовать), после чего скопировать обратно:</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>mv rc.conf rc.conf.orig</userinput>
-&prompt.root; <userinput>cp rc.conf.orig rc.conf</userinput></screen>
- </informalexample>
-
- <para>потому что команда <command>mv</command> сохраняет исходную
- информацию о дате и владельце файла. Теперь вы можете редактировать
- <filename>rc.conf</filename>. Если вы захотите восстановить исходное
- состояние, то выполните <userinput>mv rc.conf rc.conf.myedit</userinput>
- (полагаем, что вы хотите сохранить отредактированную версию), а
- затем</para>
-
- <informalexample>
- <screen>&prompt.root; <userinput>mv rc.conf.orig rc.conf</userinput></screen>
- </informalexample>
-
- <para>для возврата всего на место.</para>
-
- <para>Для редактирования файла наберите</para>
-
- <informalexample>
- <screen>&prompt.root; <useri