FreeBSD гарын авлага
Өмнөх | Бүлэг 5. Програм суулгах: Багцууд болон портууд | Дараах

# 5.6. Портын цуглуулгыг хэрэглэх нь

Дараах хэсэгт системдээ портын цуглуулгыг ашиглан хэрхэн програм суулгах болон устгах талаар өгүүлэх болно. `make` хөрвүүлэгчийн байршил болон орчны хувьсагчийн тухай нэмэлт тодорхой мэдээллийг ports(7) хуудаснаас харна уу.

> Сануулга: 2012 оны дундаас эхлээд FreeBSD портын төсөл хувилбар удирдах системийн CVS-с Subversion рүү шилжсэн. Ерөнхийдөө портыг ашиглах арга бол Portsnap-г ашиглах явдал юм. Портын локал өөрчлөлт шаардлагатай (нэмэлт локал нөхөөс арчилдаг) хэрэглэгчид магадгүй Subversion-г ашиглахыг илүүд үзэж болох юм. CVSup үйлчилгээ 2013 оны 2 сарын 28-с эхлээд ашиглагдахаа болих тул цаашид ашиглахыг зөвлөхгүй.

## 5.6.1. Портын цуглуулгыг суулгах нь

Портын цуглуулга нь `/usr/ports` сан дотор `Makefiles`, patches буюу нөхөгч файл, мөн тайлбар файлуудын цуглуулга юм. Эдгээр файлууд нь FreeBSD дээр програмуудыг бүтээж суулгахад хэрэглэгддэг. Доор байгаа зааврууд нь FreeBSD суулгах явцад портын цуглуулга суугаагүй бол түүнийг авах хэд хэдэн аргуудыг харуулж байна.

Portsnap арга

Portsnap нь портын цуглуулгыг татаж аван шинэчлэхэд зориулагдсан бөгөөд ихэнх хэрэглэгчдийн хувьд сонголт болсон хурдан, хэрэглэхэд хялбар хэрэгсэл юм. Portsnap-н нэмэлт тайлбарын талаар Portsnap-г хэрэглэх нь хэсгээс үзнэ үү.

1. Шахсан хэлбэртэй портын цуглуулгыг `/var/db/portsnap` сан дотор татаж авах хэрэгтэй. Хэрэв та хүсвэл энэ алхмын дараа интернэтээс салгаатай ажиллаж болдог.

       # portsnap fetch

2. Хэрэв та Portsnap-г анх удаагаа ажиллуулж байгаа бол шахагдсан уг цуглуулгыг `/usr/ports` сан дотор задална:

       # portsnap extract

   Portsnap-г эхний удаа дээрх маягаар ашиглаж эхэлсний дараа `/usr/ports` санг доорх тушаалаар шинэчилнэ:

       # portsnap update

Subversion арга

Хэрэв портын цуглуулгыг илүү хянах шаардлагатай бол (жишээ нь локал өөрчлөлтийг арчлах бол) Subversion-г портын цуглуулгыг татахдаа ашиглаж болно. Subversion-ий талаар дэлгэрэнгүйг the Subversion Primer хуудаснаас үзнэ үү.

1. Subversion-г портын модыг татахаасаа өмнө суулгасан байх шаардлагатай. Хэрэв портын мод аль хэдийн байгаа бол Subversion-г иймэрхүү маягаар суулгаарай:

       # cd /usr/ports/devel/subversion
       # make install clean

   Хэрэв портын мод байхгүй бол Subversion-г багц хэлбэрээр суулгаж болно:

       # pkg_add -r subversion

   Хэрэв pkgng нь багцыг удирдахад хэрэглэгдэж байгаа бол Subversion-г ингэж суулгаж болно:

       # pkg install subversion

2. Портын модыг татаж авна. Илүү ажиллагааг хурдан болгохын тулд доорх тушаалын `svn.FreeBSD.org` гэдгийн оронд танд газар зүйн байрлалын хувьд ойр байрлалыг Subversion толин тусгал хэсгээс харан сонгоорой. Итгэмжлэн нийлүүлэгчид зөв протокол сонгож ажиллахын тулд эхлээд Subversion Primer тусламжийг унших ёстой.

       # svn checkout svn://svn.FreeBSD.org/ports/head /usr/ports

3. Subversion-ий эхний удаагийн таталтын дараа `/usr/ports`-г шинэчлэхийн тулд дараах тушаалыг ажиллуулна:

       # svn update /usr/ports

Sysinstall арга

Энэ арга нь суулгацын төхөөрөмжөөс sysinstall-г ашиглан портын цуглуулгыг суулгах арга юм. Гэхдээ тухайн төхөөрөмж дээр байгаа цуглуулга нь тухайн хувилбарыг гаргасан өдрийн хувилбартай байдгийг анзаарах хэрэгтэй. Хэрэв танд интернэт холболт байдаг бол дээр өгүүлсэн хоёр аргыг урьтал болгох нь зүйтэй.

1. `root` эрхээр ороод `sysinstall` гэсэн тушаал өгөх хэрэгтэй:

       # sysinstall

2. Configure гэдгийг сонгоод Enter товч дарна.

3. Distributions цэсийг сонгоод Enter дээр дарна.

4. ports гэж сонгон Space товч дээр дарах хэрэгтэй.

5. Дээр буй Exit гэдгийг олж сонгон Enter дээр дарна.

6. CDROM юм уу FTP гэх мэт суулгах төхөөрөмжөө сонгоно.

7. Дээр буй Exit цэсийг сонгоод Enter дээр дарна.

8. X дээр дарж sysinstall-с гарах болно.

## 5.6.2. CVSup/csup-с portsnap рүү шилжих нь

> Сануулга: 2013 оны 2 сарын 28-аас эхлэн портын мод CVS рүү экспорт хийгдэхгүй учраас CVSup болон csup нь портын модны шинэчлэлийг хийхгүй.

Portsnap руу шилжүүлэх нь

Шилжүүлэлт нь 1 GB орчим дискний хэмжээ `/usr` дээр байхыг шаардах бөгөөд дээрээс нь Portsnap нь `/var` санд 150 MB дискний хэмжээ шаардана.

1. cron(8) дотор чинь автоматаар CVSup эсвэл csup-г дуудсан ажлууд байвал хааж болиулах хэрэгтэй.

2. Байгаа портын модоо өөр түр зуурын байр руу зөөнө:

       # mv /usr/ports /usr/ports.old

3. Шинэ портын модыг Portsnap-р татаж `/usr/ports`-д задална:

       # portsnap fetch extract

4. distfile-ууд болон хадгалсан багцуудыг шинэ портын мод руугаа зөөнө:

       # mv /usr/ports.old/distfiles /usr/ports
       # mv /usr/ports.old/packages /usr/ports

5. Хуучин портын модыг устгана:

       # rm -rf /usr/ports.old

6. Хэрэв CVSup өмнө нь ашиглагдаж байсан бол одоо устгаж болно:

       # pkg_delete -r -v cvsup-without-gui-\*

   pkgng хэрэглэгчид дараах тушаалыг ашиглаж болно:

       # pkg delete cvsup-without-gui

Portsnap ашиглан портын модыг шинэчлэх болон Portsnap-н талаар дэлгэрэнгүйг Portsnap хэрэглэх нь хэсгээс үзнэ үү.

## 5.6.3. Порт суулгах нь

Портын цуглуулгын талаар яриа хийхийн өмнө портын “skeleton буюу араг яс”ны талаар ойлголт авах хэрэгтэй. Хамгийн энгийн ойлголтоор бол энэ нь FreeBSD системд програмыг цэвэрхэн хөрвүүлээд суулгахыг зааварласан товч заавар байдаг. Порт болгоны араг яс дараах зүйлсийг агуулж байдаг:

- `Makefile`. `Makefile` нь янз бүрийн заавар бичлэгүүд агуулж байдаг бөгөөд энэ нь програм хэрхэн хөрвүүлэгдэх, бас хаана суугдах зэрэг үйлдлүүдийг тодорхойлсон байгаа.

- `distinfo` файл. Энэ файл нь хөрвүүлж бүтээгдэх ёстой файлуудын татаж авалт болон тэдгээрийн алдаагүй татагдсан эсэхийг (sha256(1) ашиглан) шалгах зэрэг мэдээллүүдийг агуулж байдаг.

- `files` нэртэй сан. Энэ санд таны FreeBSD систем дээр суугдах програмуудын хөрвүүлэгдэхэд хэрэглэгддэг patches буюу нөхөөс файлуудыг агуулна. Нөхөөс файлууд нь жижигхэн хэмжээний файл бөгөөд тодорхой зарим файлд гарсан өөрчлөлтүүдийг агуулдаг. Нөхөөсүүд текст хэлбэрээр оршдог ба голдуу “10 дугаар мөрийг устга” эсвэл “26 дугаар мөрийг үүгээр соль ...” гэсэн зааврууд байдаг. Нөхөөсүүдийг мөн “diffs буюу ялгааны” төрлийн файл гэж ярьцгаадаг. Ийм ялгааг нь илэрхийлсэн файлыг үүсгэхдээ diff(1) програмыг хэрэглэдэг юм.

  Энэ санд портыг бүтээхэд шаардагдах өөр төрлийн файлууд бас байж болох юм.

- `pkg-descr` файл. Энэ файл дотор тухайн програмын тухай нэлээн дэлгэрэнгүй тодорхойлолт агуулагдаж байдаг.

- `pkg-plist` файл. Энэ файл дотор порт суугдах явцад хуулагдаж суугдах файлуудын жагсаалт байдаг. Энэ нь мөн портыг устгах үед портын системд мэдэгдэх файлуудын жагсаалт билээ.

Зарим портууд `pkg-message` гэх мэтийн өөр файлууд агуулж байдаг. Портын систем нь онцгой тохиолдолд уг файлуудтай хандаж тухайн портод харгалзах үйлдлүүдийг хийх болно. Хэрэв та ийм файлуудын тухай дэлгэрэнгүй мэдээлэл мөн портын тухай үндсэн ойлголт авахыг хүсвэл FreeBSD порт бүтээгчийн гарын авлага хуудаснаас харна уу.

Порт дотор програмын эх бичлэгийг хэрхэн хөрвүүлж бүтээх тухай заавар байдаг болохоос уг програмын эх бичлэг нь байдаггүй. Та уг програмын эх бичлэгийг CD-ROM эсвэл интернэтээс уг зохиогчийнх нь гаргасан хэлбэрээр татаж авч болно. Голдуу эх бичлэгүүд нь tar болон gzip шахалтаар шахаж бэлдсэн байдаг боловч заримдаа өөр төрлийн хэрэгсэл ашиглан шахсан тохиолдол тулгарч магадгүй. Ямар ч хэлбэрээр програмын эх бичлэгийг авсан байг, түүнийг “distfile” гэж нэрийддэг. Доор FreeBSD порт суулгах хоёр аргыг танилцуулж байна.

> Тэмдэглэл: Порт суулгахын тулд та `root` эрхэнд сэлгэсэн байх ёстой.

> Сануулга: Ямар нэгэн портыг суулгахаасаа өмнө портынхоо цуглуулгыг та шинэчилсэн байх хэрэгтэй бөгөөд http://vuxml.freebsd.org/ хуудсанд тухайн порттой холбоотой аюул нууцлалын тухай сэдэв хөндөгдсөн эсэхийг шалгах хэрэгтэй.

> Ямар ч порт суулгахаасаа өмнө аюулгүйн нууцлалын хувьд сул тал буй эсэхийг portaudit-р автоматаар шалгаж болно. Энэ хэрэгслийг портын цуглуулга дотор олох боломжтой (`ports-mgmt/portaudit`). Шинэ портыг суулгахаасаа өмнө `portaudit -F` гэж ажиллуулснаар аюулгүйн нууцлалд гарсан сул тал нүхнүүдийн тухай мэдээллийн өгөгдлийн баазаас мэдээллүүдийг авч нөхөлт хийдэг. Аюулгүйн нууцлалын мэдээллийн өгөгдлийн баазын шинэчлэх явц өдөр болгон давтагдаж хийгдэх болно. Нэмэлт дэлгэрэнгүй мэдээллийг portaudit(1) болон periodic(8) хуудаснаас харна уу.

Портын цуглуулга таныг интернэт холболттой гэж авч үздэг. Хэрэв танд интернэт холболт байхгүй бол distfile файлуудыг `/usr/ports/distfiles` санд хуулах хэрэгтэй.

Эхлэхийн өмнө суулгах гэж буй портын санд орох хэрэгтэй:

    # cd /usr/ports/sysutils/lsof

Тэгээд `lsof` санд орсон хойноо уг сан дотор та тухайн портын араг ясыг харах болно. Дараагийн алхам бол портыг хөрвүүлэх буюу “бүтээх” билээ. Ингэхийн тулд тушаал бичих мөрөнд `make` гэж бичнэ. Ингэж гүйцэтгэсний дараа дараах маягийн явцын мэдээллийг та харах болно:

    # make
    >> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
    >> Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/.
    ===>  Extracting for lsof-4.57
    ...
    [extraction output snipped]
    ...
    >> Checksum OK for lsof_4.57D.freebsd.tar.gz.
    ===>  Patching for lsof-4.57
    ===>  Applying FreeBSD patches for lsof-4.57
    ===>  Configuring for lsof-4.57
    ...
    [configure output snipped]
    ...
    ===>  Building for lsof-4.57
    ...
    [compilation output snipped]
    ...
    #

Хөрвүүлэлт дуусаад та буцаад тушаал бичих мөрөнд ирэнгүүт хийх ёстой дараагийн алхам бол портыг суулгах билээ. Ингэхийн тулд таны хийх ёстой зүйл бол `make` тушаалыг өөр нэг үгтэй хамт бичих ёстой бөгөөд тэр үг нь `install` юм:

    # make install
    ===>  Installing for lsof-4.57
    ...
    [installation output snipped]
    ...
    ===>   Generating temporary packing list
    ===>   Compressing manual pages for lsof-4.57
    ===>   Registering installation for lsof-4.57
    ===>  SECURITY NOTE:
          This port has installed the following binaries which execute with
          increased privileges.
    #

Ингээд тушаал бичих мөр боломжтой болонгуут суулгасан портоо ажиллуулах боломжтой болдог. Бид нарын жишээ авч суулгасан `lsof` програм нь нууцлалын давуу эрх шаарддаг болохоор аюулгүйн нууцлалын анхааруулга харуулагддаг. Порт суулгах үед хэрэв анхааруулга харуулагдваас түүнийг тун анхааралтай уншиж ойлгох хэрэгтэй.

Програмыг хөрвүүлж бүтээхэд хэрэглэгдсэн түр файлуудыг хадгалсан дэд сангуудыг устгах нь зүйтэй. Энэ нь дискний зайг хэмнэхээс гадна тухайн портыг шинэчлэх үед алдаа гаргуулахгүй маш сайн зуршил юм.

    # make clean
    ===>  Cleaning for lsof-4.57
    #

> Тэмдэглэл: Та `make`, `make `install`` мөн `make `clean`` гэсэн дамжлагуудыг `make `install clean`` гэж товчилж бичиж болно.

> Тэмдэглэл: Зөвхөн `make `install`` тушаал ашиглан порт суулгахад заримдаа хэрэглэгчээс сонголт оруулахыг хүлээж удах тохиолдлууд байж болдог. Учир нь зарим тохиолдолд анхдагчаар хэрэглэгчээс сонголт хийхийг асуухаар хийгдсэн байдаг. Иймээс олон хамааралтай үед заримдаа нэг портыг бүтээж эмхэтгэхэд төвөгтэй болгодог. Үүнээс гарахын тулд `make `config-recursive`` тушаал ашиглан тохиргоог нэг удаагаар хийх хэрэгтэй. Дараа нь `make `install [clean]`` тушаалыг ажиллуулах хэрэгтэй.

> Зөвлөгөө: `config-recursive` гэдгийг ашиглахад тохиргоо хийгдэх портуудын жагсаалт `all-depends-list` гэсэн make(1)-н нэмэлт боломжоор нэгтгэгддэг. Хамааралтай бүх портуудын тохиргоонууд тодорхой болтол буюу dialog(1) дэлгэц гарч ирэхгүй болж бүх портуудын тохиргоо зөвөөр хийгдтэл `make `config-recursive`` тушаалыг ажиллуулахыг ихэвчлэн зөвлөдөг.

> Тэмдэглэл: Зарим бүрхүүлийн орчнууд нь `PATH` орчны хувьсагч дотор буй сангууд доторх ачаалагдаж болдог програмуудын тушаалын хайлтыг түргэвчлэх зорилгоор түр хадгалагчид хадгалсан байдаг. Та хэрэв ийм төрлийн бүрхүүлийн орчин ашиглаж байгаа бол порт суулгасны дараа `rehash` тушаалыг хэрэглэн портын ачаалагдах файлыг бүрхүүлийн таних сан дотор нэмдэг. Энэ тушаал нь `tcsh` маягийн бүрхүүлд ажилладаг. `sh` төрлийн бүрхүүлд `hash -r` гэж ашигладаг. Тухайн бүрхүүлд хамаатай нэмэлт мэдээллийг нь харна уу.

FreeBSD Mall зэрэг зарим гуравдагчдын гаргасан DVD-ROM дээр distfiles файлууд агуулагдсан байдаг. Тэдгээрийг портын цуглуулганд хэрэглэж болно. DVD-ROM-г `/cdrom` санд таниулж холбоно. Хэрэв та өөр санд холбосон бол уг сангийн нэрийг `CD_MOUNTPTS` орчны хувьсагчид зааж өгөөрэй. Шаардлагатай distfiles файлууд нь дискнээс автоматаар хэрэглэгддэг.

> Тэмдэглэл: Зарим нэг цөөн тооны портуудын лицензийг нь анхаарах хэрэгтэй. Ийм төрлийн портуудын эх бичлэг нь CD-ROM дээр байдаггүй. Тэдгээрийг татаж авах юм уу цааш нь түгээхийн тулд ямар нэгэн гэрээ бөглөх илгээх ёстой болдог. Хэрэв таны суулгах порт CD-ROM дээр байхгүй байгаа бол интернэт рүү орон хэлсний дагуу гүйцэтгэх хэрэгтэй.

Портын систем нь fetch(1) хэрэгслийг ашиглан файлуудыг татаж авдаг. Уг хэрэгсэл нь `FTP_PASSIVE_MODE`, `FTP_PROXY`, мөн `FTP_PASSWORD` гэх мэтчилэн төрөл бүрийн орчны хувьсагчдыг ашиглаж ажилладаг. Хэрэв та галт хана юм уу FTP/HTTP прокси хэрэглэдэг бол эдгээр хувьсагчдад тохирох утгыг нь зааж өгөх хэрэгтэй. fetch(3) хуудаснаас хувьсагчдын бүрэн жагсаалтыг харна уу.

Интернэтэд байнга холбогддоггүй хэрэглэгчдэд зориулж `make `fetch`` тушаал байдаг. Уг тушаалыг портын дээд сан (`/usr/ports`) дотор гүйцэтгэхэд шаардагдах бүх файлуудыг татаж авдаг. Уг тушаалыг мөн `/usr/ports/net` гэх зэргийн дэд сан дотор гүйцэтгэж болно. Хэрэв тухайн порт өөр сан юм уу портоос хамаардаг бол fetch гүйцэтгэл нь тэдгээр хамаарлыг нь нөхөж татдаггүйг анхаараарай. Харин `fetch` гэдгийг `fetch-recursive` гэж орлуулснаар тухайн портын хамааралтай порт болон сангуудыг давхар татаж авдаг.

> Тэмдэглэл: Та бүх портуудыг хөрвүүлж бүтээнэ гэвэл `make` тушаалыг `make `fetch`` тушаалыг тайлбарласан шиг дээд санд гүйцэтгэж болдог. Гэвч зарим порт байхгүй тохиолдолд ийм үйлдэл бол аюултай. Мөн зарим портууд хоёр өөр файлыг нэг нэрээр суулгах хүндрэл гаргаж болзошгүй.

Мөш цөөхөн тохиолдолд хэрэглэгчид `MASTER_SITES` (татаж авах файлуудын байршил) хаягнаас өөр байршил ашиглан эх файлуудыг татаж авах шаардлага гарч болох юм. Ийм үед `MASTER_SITES` хувьсагчийн утгыг дараах тушаалаар өөрчилдөг:

    # cd /usr/ports/directory
    # make MASTER_SITE_OVERRIDE= \
    ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch

Энэ жишээн дээр бид `MASTER_SITES`-н утгыг `ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/` гэж өөрчиллөө.

> Тэмдэглэл: Зарим порт нь өөрийнхөө зарим хэсгийг шаардлагагүй гэж үзэх тохиолдолд, эсвэл аюулгүйн нууцлалын шалтгаанаар ч юм уу өөрчлөлт хийх боломж (эсвэл шаарддаг) өгдөг. `www/firefox`, `security/gpgme`, мөн `mail/sylpheed-claws` зэргүүдийг жишээ болгож болох юм. Иймэрхүү мэдэгдлүүд байвал тухайн үед танд харуулагдах болно.

### 5.6.3.1. Портын анхдагч санг дарж бичих

Заримдаа портыг хөрвүүлэх болон суулгах өөр санг хэрэглэх нь хэрэгтэй (онц шаардлагатай) байдаг. `WRKDIRPREFIX` болон `PREFIX` хувьсагчдын утгыг өөрчилж анхдагч сангийн байршлыг сольдог. Жишээ нь:

    # make WRKDIRPREFIX=/usr/home/example/ports install

гэсэн тушаал нь портыг `/usr/home/example/ports` сан дотор хөрвүүлээд хөрвүүлэгдэж бүтээгдсэн файлуудыг `/usr/local` санд суулгадаг.

    # make PREFIX=/usr/home/example/local install

гэсэн тушаал нь портыг `/usr/ports` санд хөрвүүлж бэлдээд `/usr/home/example/local` санд суулгана.

Мэдээж

    # make WRKDIRPREFIX=../ports PREFIX=../local install

гэж хоёр хувьсагчийг хослуулан хэрэглэж бас болно (танд зөвхөн ерөнхий ойлголт өгөх зорилгоор урт мөрийг товчилж харуулсан билээ).

Мөн та уг хувьсагчдыг өөрийнхөө орчны хувьсагч болгож зарлаж болно. Тухайн бүрхүүлийнхээ орчны тухай зааврыг эхлээд уншиж танилцах нь зүйтэй.

### 5.6.3.2. `imake`-г хэрэглэх

Зарим порт `imake`-г хэрэглэдэг ( X цонхот системийн хэсэг) бөгөөд `PREFIX` хувьсагч ашиглалгүй `/usr/X11R6` санд суулгадаг. Үүнтэй ижил зарим Perl портууд `PREFIX` хувьсагч хэрэглэлгүй Perl-н санд суулгадаг. Эдгээр портуудыг `PREFIX` хувьсагчтай хамтран ажиллуулж энэ хувьсагчийг ойлгож хүндэтгэдэг болгоно гэдэг бол тун хэцүү бөгөөд бараг боломжгүй ажил юм.

### 5.6.3.3. Портуудыг дахин тохируулах нь

Тухайн портуудыг бүтээж байхад чинь танд бүтээх тохируулгуудаас сонгож болох ncurses дээр тулгуурласан цэс харуулагддаг. Портыг нэгэнт бүтээсний дараа тэдгээр тохируулгуудыг нэмэх, хасах, эсвэл өөрчлөхийн тулд энэ цэсэнд дахин орохыг хүсэх нь хэрэглэгчдийн хувьд тийм ч нийтлэг биш юм. Үүнийг хийх олон аргууд байдаг. Нэг арга нь портыг агуулж байгаа сан уруу ороод урьдын адил тохируулгуудыг сонгосон хэвээр байгаа цэсийг дахин харуулах `make `config`` гэж тушаалыг ажиллуулах явдал юм. Өөр нэг арга нь портын хувьд бүх тохиргооны сонголтуудыг харуулах `make `showconfig`` тушаалыг ашиглах явдал юм. Бас нэг өөр арга нь бүх сонгогдсон тохируулгуудыг арилгаад танд дахин эхлэх боломж олгох `make `rmconfig`` тушаалыг ажиллуулах явдал юм. Эдгээр бүх аргууд болон бусдын талаар ports(7) гарын авлагын хуудсанд илүү дэлгэрэнгүй тайлбарласан байгаа.

## 5.6.4. Суугдсан портыг устгах нь

Та одоо портыг хэрхэн суулгах талаар мэдсэн юм чинь хэрэв буруу портоо суулгасан бол түүнийг хэрхэн утсгадаг талаар мэдэхийг хүсэж байгаа байх. Өмнөх жишээнд суулгасан портоо бид устгацгаая (анхааралгүй уншсан нэгэнд нь `lsof` програм гэж сануулъя). Портууд багцтай ижилхэн pkg_delete(1) тушаалаар устгагдаж болно ( Багц сонголт хэсэгт тайлбарласан буй):

    # pkg_delete lsof-4.57

## 5.6.5. Порт шинэчлэх

Хамгийн түрүүнд pkg_version(1) тушаал ашиглан портын цуглуулгаас шинэ хувилбар агуулсан портуудыг жагсаах хэрэгтэй:

    # pkg_version -v

### 5.6.5.1. `/usr/ports/UPDATING`-г унших

Портыг шинэчлэхээсээ өмнө портын цуглуулгаа шинэчлээд `/usr/ports/UPDATING` файлыг шалгана. Энэ файл дотор портыг шинэчлэхэд шаардагдах үйлдлүүд болох өөрчлөгдсөн төрөл, тохируулгын өөрчлөлт, эсвэл өмнөх хувилбартайгаа зөрчилдөх хэсгүүд гэх мэтийн чухал мэдээллүүд агуулагдаж байдаг.

Хэрэв `UPDATING` файлд саяны таны уншсан зүйлүүдээс өөр юм агуулагдаж байвал уг файлд буй зааврыг дагах нь зүйтэй.

### 5.6.5.2. Portupgrade ашиглан порт шинэчлэх нь

portupgrade хэрэгсэл нь портыг амархан шинэчлэхэд зориулагдсан. Үүнийг `ports-mgmt/portupgrade` портоос суулгаж болно. Бусад портын нэгэн адил порт суулгадаг журмаар `make `install clean`` гэсэн тушаалаар суулгадаг:

    # cd /usr/ports/ports-mgmt/portupgrade
    # make install clean

Суугдсан портын жагсаалтыг `pkgdb -F` тушаал ашиглан шалгаад үр дүнгийн мэдээлэлд байгаа зөрчлүүдийг нь залруулж засах хэрэгтэй. Шинэчлэл хийхээсээ өмнө ингэж зөрчлүүдийг арилгах нь тун сайн санаа билээ.

Хэрэв та `portupgrade -a` гэж ажиллуулбал таны системд суугдсан бүх хуучирсан портуудыг portupgrade шинэчилж эхэлдэг. Хэрэв та суугдах шинэчлэл болгонд лавлаж асуух үйлдэл хийлгэхийг хүсвэл `-i` сонголт нэмээрэй.

    # portupgrade -ai

Хэрэв та бүх шинэчлэгдэх порт биш харин зөвхөн тодорхой нэгэн портыг шинэчлэх хүсэлтэй бол `portupgrade `багцны-нэр`` гэж бичнэ. `-R` сонголт нэмснээр тухайн програмд шаардагдах портуудыг portupgrade эхлээд нь шинэчлэдэг.

    # portupgrade -R firefox

Портын оронд багц хэрэглэж суулгахыг хүсвэл `-P` сонголт хэрэглэнэ. Энэ сонголттой үед portupgrade нь `PKG_PATH` хувьсагчид зааж өгсөн жагсаалтад буй сан дотроос багцуудыг хайх ба хэрэв уг санд байхгүй байгаа бол сүлжээнээс татаж нөхдөг. Хэрэв дотоод сан болон сүлжээнээс багц олдоогүй тохиолдолд portupgrade нь портоор суулгахыг оролдох болно. Порт хэлбэрээр суулгах үйлдлийг зогсоохын тулд `-PP` сонголтыг нэмж өгдөг.

    # portupgrade -PP gnome2

Хэрэв хөрвүүлж суулгалгүйгээр зөвхөн distfiles файлыг татаж авах (хэрэв `-P` сонголттой бол багц файлыг ) шаардлагатай бол `-F` сонголтыг ашиглаарай. Дэлгэрэнгүй мэдээллийг portupgrade(1) хэсэгт харна уу.

### 5.6.5.3. Portmaster ашиглан портыг шинэчлэх нь

Portmaster нь “үндсэн” системд байдаг (бусад портуудаас хамаардаггүй) хэрэгслүүдийг ашиглахаар хийгдсэн бөгөөд аль портыг шинэчлэхээ тогтоохын тулд `/var/db/pkg/` сан доторхийг ашигладаг. Тэрээр `ports-mgmt/portmaster` порт хэлбэрээр байдаг:

    # cd /usr/ports/ports-mgmt/portmaster
    # make install clean

Portmaster нь портуудыг дөрвөн төрөлд бүлэглэдэг:

- Root буюу язгуур портууд (хамаарсан портууд байхгүй, бусдаас хамаардаггүй)

- Trunk буюу гол портууд (хамаарсан портууд байхгүй, бусдууд хамаардаг)

- Салбар портууд (хамаарсан портуудтай, бусдууд хамаардаг)

- Навч портууд (хамаарсан портуудтай, бусдаас хамаардаггүй)

Та суулгагдсан бүх портуудыг жагсааж болох бөгөөд `-L` тохируулга ашиглан шинэчлэлт байгаа эсэхийг хайж болно:

    # portmaster -L
    ===>>> Root ports (No dependencies, not depended on)
    ===>>> ispell-3.2.06_18
    ===>>> screen-4.0.3
            ===>>> New version available: screen-4.0.3_1
    ===>>> tcpflow-0.21_1
    ===>>> 7 root ports
    ...
    ===>>> Branch ports (Have dependencies, are depended on)
    ===>>> apache-2.2.3
            ===>>> New version available: apache-2.2.8
    ...
    ===>>> Leaf ports (Have dependencies, not depended on)
    ===>>> automake-1.9.6_2
    ===>>> bash-3.1.17
            ===>>> New version available: bash-3.2.33
    ...
    ===>>> 32 leaf ports

    ===>>> 137 total installed ports
            ===>>> 83 have new versions available

Бүх суулгагдсан портуудыг энэ хялбар тушаал ашиглан шинэчилж болно:

    # portmaster -a

> Тэмдэглэл: Анхдагчаар Portmaster нь байгаа портыг устгахаасаа өмнө нөөц багц үүсгэдэг. Хэрэв шинэ хувилбар суулгалт амжилттай болсон бол Portmaster нөөц багцыг устгана. `-b` сонголтыг ашиглаж Portmaster-т нөөцийг автоматаар устгахгүй байхыг тушаана. `-i` сонголтыг ашигласнаар порт бүрийг шинэчлэхээс өмнө асууж лавлан Portmaster-ийг интерактив горимд эхлүүлнэ.

Хэрэв шинэчлэх процессийн явцад алдаа гарвал та бүх портыг шинэчлэх буюу дахин бүтээхийн тулд `-f`-г ашиглаж болно:

    # portmaster -af

Шинэ порт бүтээж суулгахаасаа өмнө бүх хамааралтай портуудыг шинэчилж Portmaster-ийг системд шинэ порт суулгахдаа та бас ашиглаж болно:

    # portmaster shells/bash

Дэлгэрэнгүй мэдээллийг portmaster(8)-с үзнэ үү.

## 5.6.6. Порт ба дискний хэмжээ

Портын цуглуулга нь дискний хэмжээг байнга идэж байдаг. Портоос програмыг хөрвүүлж суулгасны дараа бэлдэж байсан `work` санг `make `clean`` тушаалаар цэвэрлэхээ үргэлж санах хэрэгтэй. Та портын цуглуулгыг бүхлээр нь дараах тушаалаар цэвэрлэж болно:

    # portsclean -C

Маш олон эх файлууд `distfiles` санд явцын үр дүнд хадгалагдаж байдаг. Та тэдгээрийг гар аргаар устгаж болох ба дараах тушаал хэрэглэн ямар нэгэн порттой холбоогүй болсон бүх distfiles устгаж болно:

    # portsclean -D

Эсвэл таны системд одоо суугдсан байгаа порттой хамаагүй бүх distfiles-уудыг дараах тушаалаар устгана:

    # portsclean -DD

> Тэмдэглэл: `portsclean` хэрэгсэл нь portupgrade програмын нэг бүрдэл хэсэг.

Суулгасан портоо хэрэглэхгүй болсон үедээ устгахаа мартаж болохгүй. Иймэрхүү автоматжуулалтыг гүйцэтгэдэг эвтэйхэн програм бол `ports-mgmt/pkg_cutleaves` порт билээ.

Өмнөх | Эхлэл | Дараах
pkgng-г бинар багцыг удирдахад ашиглах нь | Дээш | Порт суулгасны дараах үйлдлүүд

Энэ болон бусад баримтуудыг ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ хаягаас татаж авч болно.

FreeBSD-ийн талаар <questions@FreeBSD.org> хаягтай холбоо барихаасаа өмнө баримтыг уншина уу.
Энэ бичиг баримттай холбоотой асуулт байвал <doc@FreeBSD.org> хаягаар цахим захидал явуулна уу.
Энэ бичиг баримтын орчуулгатай холбоотой асуулт байвал <admin@mnbsd.org> хаягаар цахим захидал явуулна уу.