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

# 5.5. pkgng-г бинар багцыг удирдахад ашиглах нь

pkgng нь FreeBSD-н уламжлалт багц удирдах хэрэгсэл болох pkg_install-г сайжруулж сольсон хувилбар юм. Энэ нь бинар багцтай хурдан бөгөөд хялбараар ажиллах боломжийг олгодог олон боломжуудтай юм. pkgng-н эхний хувилбар нь 2012 оны 8 сард байсан.

pkgng нь `ports-mgmt/portmaster` эсвэл `ports-mgmt/portupgrade` гэх мэт порт удирдах хэрэгслүүдийг солихоор хийгдээгүй. `ports-mgmt/portmaster` ба `ports-mgmt/portupgrade` нь гуравдагч талын програм хангамжийг бинар багц болон портын цуглуулгаас суулгаж чаддаг бол pkgng нь зөвхөн бинар багцуудыг суулгадаг.

## 5.5.1. pkgng ашиглаж эхлэх

FreeBSD 9.1 ба түүнээс хойшхи хувилбарууд pkgng-д зориулсан "bootstrap" хэрэгсэлтэй байдаг. bootstrap хэрэгсэл нь pkgng-г татаж аваад суулгана.

Системийг эхлүүлэхийн тулд:

    # /usr/sbin/pkg

FreeBSD-н өмнөх хувилбаруудын хувьд pkgng-г портын цуглуулга эсвэл бинар багц хэлбэрээр суулгах ёстой.

pkgng портыг суулгахын тулд дараахийг ажиллуулна:

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

Бинар багцыг суулгахын тулд дараахийг ажиллуулна:

    # pkg_add -r pkg

> Тэмдэглэл: pkgng багц удирдах хэрэгсэл нь FreeBSD 7.`X` эсвэл FreeBSD 8.0 хувилбарууд дээр дэмжигдээгүй.

FreeBSD-г өмнөх суулгацын хувьд pkg_install багцын өгөгдлийн санг шинэ формат руу хувиргах шаардлагатай. Багцын өгөгдлийн санг хувиргахын тулд дараахийг ажиллуулна:

    # pkg2ng

Энэ алхам нь гуравдагч талын програм хангамж суугаагүй шинэ суулгацуудын хувьд шаардлагагүй.

> Чухал: Энэ алхмыг буцааж болохгүй. Багцын өгөгдлийн санг pkgng формат руу хөрвүүлсний дараа pkg_install хэрэгслүүдийг ашиглах ёсгүй.

> Тэмдэглэл: Багцын өгөгдлийн санг шинэ хувилбар руу хувиргалт хийх явцад алдаа гарч болох юм. Ерөнхийдөө эдгээр алдааг хаях нь аюулгүй боловч амжилттай хөрвөгдөөгүй гуравдагч талын програм хангамжийн жагсаалт `pkg2ng` ажиллаж дууссаны дараа харагддаг. Эдгээрийг гараар засах ёстой.

FreeBSD портын цуглуулга нь pkg_install биш pkgng ашиглан шинэ програмыг бүртгэж байгаа эсэхийг шалгахын тулд 10.`X` хувилбараас өмнөх FreeBSD хувилбарууд доорх мөрийг `/etc/make.conf` файлд байхыг шаарддаг:

    WITH_PKGNG=	yes

## 5.5.2. pkgng орчныг тохируулах

pkgng багц удирдах систем нь ихэнх үйлдэлдээ багцын репозиторыг ашигладаг. Багцын анхдагч репозиторын байрлал `/usr/local/etc/pkg.conf` юм уу эсвэл тохиргооны файл дахь утгыг дарж бичдэг `PACKAGESITE` орчны хувьсагчид тодорхойлогддог.

pkgng-н нэмэлт тохиргооны боломжуудыг pkg.conf(5)-д тайлбарласан байгаа.

## 5.5.3. pkgng-н үндсэн үйлдлүүд

pkgng-г хэрэглэх мэдээллийг pkg(8) гарын авлагын хуудаснаас эсвэл `pkg`-г нэмэлт өгөгдөлгүйгээр ажиллуулж харж болно.

pkgng тушаалын аргумент бүрийг тухайн тушаалын гарын авлагын хуудсанд тайлбарласан байдаг. Жишээ нь `pkg install`-н гарын авлагыг уншихын тулд дараахийн аль нэгийг ажиллуулж болно:

    # pkg help install

    # man pkg-install

### 5.5.3.1. pkgng ашиглан суулгасан багцуудын талаарх мэдээллийг олж авах

Систем дээр суусан багцуудын мэдээллийг `pkg info` тушаал ашиглан харж болно. pkg_info(1)-н нэгэн адил багцын хувилбар болон бүх багцын тайлбарыг харуулах болно.

Тухайн багцын мэдээллийг ингэж харж болно:

    # pkg info packagename

Жишээ нь систем дээр pkgng-н ямар хувилбар суулгасан байгааг харахын тулд дараахийг ажиллуулна:

    # pkg info pkg
    pkg-1.0.2			New generation package manager

### 5.5.3.2. pkgng ашиглан багц суулгах ба устгах

Ерөнхийдөө FreeBSD-н ихэнх хэрэглэгчид бинар багцыг дараахийг ажиллуулж суулгана:

    # pkg install packagename

`pkg install` нь Хэсэг 5.5.2-д дурдсанаар репозиторын өгөгдлийг ашигладаг. Эсрэгээр pkg-add(8) нь репозиторын өгөгдөл эсвэл `PACKAGESITE`-д заасныг ашигладаггүй учир хамаарлуудыг зөв хянадаггүй бөгөөд дутуу байгаа хамаарлуудыг алсын эхээс татаж авдаггүй. Энэ хэсэг нь `pkg install`-г хэрхэн ашиглах талаар харуулна. `pkg add`-г хэрэглэх талаарх мэдээллийг pkg-add(8)-с үзнэ үү.

`pkg install` ашиглан нэмэлт бинар багцуудыг суулгаж болно. Жишээ нь curl-г суулгахын тулд:

    # pkg install curl
    Updating repository catalogue
    Repository catalogue is up-to-date, no need to fetch fresh copy
    The following packages will be installed:

    	Installing ca_root_nss: 3.13.5
    	Installing curl: 7.24.0

    The installation will require 4 MB more space

    1 MB to be downloaded

    Proceed with installing packages [y/N]: y
    ca_root_nss-3.13.5.txz		100%	255KB 	255.1KB/s 255.1KB/s	00:00
    curl-7.24.0.txz			100%	1108KB	1.1MB/s	1.1MB/s		00:00
    Checking integrity... done
    Installing ca_root_nss-3.13.5... done
    Installing curl-7.24.0... done

Шинэ багц болон хамаарлууд хэлбэрээр суусан нэмэлт багцуудыг суулгасан багцуудын жагсаалтаас харж болно:

    # pkg info
    ca_root_nss-3.13.5	The root certificate bundle from the Mozilla Project
    curl-7.24.0	Non-interactive tool to get files from FTP, GOPHER, HTTP(S) servers
    pkg-1.0.2	New generation package manager

Хэрэгцээгүй болсон багцуудыг `pkg delete` тушаалаар устгаж болно. Жишээ нь curl хэрэггүй бол:

    # pkg delete curl
    The following packages will be deleted:

    	curl-7.24.0_1

    The deletion will free 3 MB

    Proceed with deleting packages [y/N]: y
    Deleting curl-7.24.0_1... done

### 5.5.3.3. pkgng ашиглан суулгасан багцуудыг шинэчлэх

Хуучирсан багцуудыг `pkg version` тушаалаар олж болно. Хэрэв локал портын мод байхгүй бол pkg-version(8) нь алсад байрлах репозиторын каталогийг ашиглах бөгөөд хэрэв байгаа бол багцын хувилбарыг танихын тулд локал портын модыг ашиглагддаг.

Багцыг шинэ хувилбар руу pkgng ашиглан шинэчилж болно. curl-н шинэ хувилбар гарсан гэж бодъё. Локал багцыг шинэ хувилбар руу шинэчилж болно:

    # pkg upgrade
    Updating repository catalogue
    repo.txz		100%	297KB 296.5KB/s 296.5KB/s	00:00
    The following packages will be upgraded:

    	Upgrading curl: 7.24.0 -> 7.24.0_1

    1 MB to be downloaded

    Proceed with upgrading packages [y/N]: y
    curl-7.24.0_1.txz	100% 1108KB	1.1MB/s	1.1MB/s		00:00
    Checking integrity... done
    Upgrading curl from 7.24.0 to 7.24.0_1... done

### 5.5.3.4. pkgng ашиглан суулгасан багцуудыг аудит хийх

Заримдаа портын цуглуулга дахь програм хангамжид цоорхой илэрч болно. pkgng нь өөртөө `ports-mgmt/portaudit` багцтай төстэй аудит хийх боломжийг агуулдаг. Систем дээр суусан програм хангамжийг аудит хийхийн тулд дараахийг ажиллуулна:

    # pkg audit -F

## 5.5.4. pkgng-н дэвшилтэй үйлдлүүд

### 5.5.4.1. pkgng ашиглан автоматаар салбар хамаарлуудыг арилгах

Багцыг устгаснаар дээрх жишээн дээрх `security/ca_root_nss` шиг хэрэггүй хамаарлуудыг үлдээж болох юм. Тийм багцууд нь суусан хэвээр байх боловч юу ч тэднээс хамааралгүй байдаг. Хамаарал болон суусан хэрэггүй багцуудыг автоматаар илрүүлж устгаж болно:

    # pkg autoremove
    Packages to be autoremoved:
    	ca_root_nss-3.13.5

    The autoremoval will free 723 kB

    Proceed with autoremoval of packages [y/N]: y
    Deinstalling ca_root_nss-3.13.5... done

### 5.5.4.2. pkgng багцын өгөгдлийн санг нөөцлөх нь

pkg_install багц удирдах системээс ялгаатай нь pkgng өөрийн гэсэн өгөгдлийн санг нөөцлөх аргатай байдаг. Багцын өгөгдлийн сангийн агуулгыг гараар нөөцлөхийн тулд дараахийг ажиллуулна:

    # pkg backup -d pkgng.db

> Тэмдэглэл: `pkgng.db` файлын нэрийг тохирсон файлын нэрээр солих хэрэгтэй.

Мөн нэмэлтээр pkgng нь багцын өгөгдлийн санг өдөр тутам автоматаар нөөцөлж байх periodic(8) скрипттэй байдаг. Гэхдээ энэ нь periodic.conf(5) файлд `daily_backup_pkgng_enable` хувьсагчийг `YES` гэж тохируулж өгсөн тохиолдолд ажилладаг.

> Зөвлөгөө: pkg_install-н давтамжтайгаар ажиллах скрипт багцын өгөгдлийн санг нөөцлөхөөс сэргийлэхийн тулд periodic.conf(5) файлд `daily_backup_pkgdb_enable` хувьсагчийг `NO` болгож тохируулна.

Өмнөх багцын өгөгдлийн сангийн нөөцийн агуулгыг сэргээхийн тулд дараахийг ажиллуулна:

    # pkg backup -r /path/to/pkgng.db

### 5.5.4.3. pkgng багцуудыг устгах нь

Анхдагчаар pkgng нь бинар багцуудыг pkg.conf(5)-н `PKG_CACHEDIR`-д заасан кэш санд хадгалдаг. `pkg upgrade` ашиглан багцуудыг шинэчлэх үед шинэчилсэн багцуудын хуучин хувилбарууд автоматаар устдаггүй.

Хуучирсан бинар багцуудыг устгахын тулд:

    # pkg clean

### 5.5.4.4. pkgng багцын мета өгөгдлийг өөрчлөх

FreeBSD-н портын цуглуулга дахь програм хангамжууд уламжлалаар бол хувилбарын гол өөрчлөлтөд өртөх магадлалтай байдаг. pkg_install-с ялгаатай нь pkgng багцын эхийг шинэчлэх тушаалтай байдаг. Жишээ нь хэрэв `lang/php5` анхдагчаар `5.3` хувилбар дор байж байгаад `5.4`-г оруулах зорилгоор `lang/php53` руу өөрчлөгдсөн бол pkg_install нь багцын өгөгдлийн санг шинэчлэхийн тулд аль портоос эхэлж суусныг мэдэх `ports-mgmt/portmaster` гэх мэт нэмэлт програм хэрэглэхийг шаарддаг.

`ports-mgmt/portmaster` ба `ports-mgmt/portupgrade` портуудаас ялгаатай нь шинэ болон хуучин хувилбарууд ямар дарааллаар жагссанаас хамаарч өөр байдаг. pkgng-н хувьд синтакс нь:

    # pkg set -o category/oldport:category/newport

Жишээ нь дээрх жишээний багцын эхийг өөрчлөхийн тулд дараахийг ажиллуулна:

    # pkg set -o lang/php5:lang/php53

Бас нэг өөр жишээ нь `lang/ruby18`-г `lang/ruby19` руу шинэчлэхийн тулд дараахийг ажиллуулна:

    # pkg set -o lang/ruby18:lang/ruby19

Төгсгөлийн жишээ нь `libglut` хуваалцсан сангийн эхийг `graphics/libglut`-с `graphics/freeglut` руу өөрчлөхийн тулд дараахийг ажиллуулна:

    # pkg set -o graphics/libglut:graphics/freeglut

> Тэмдэглэл: Багцын эхийг солих үед ихэнх тохиолдолд өөрчлөгдсөн эхийн багцаас хамаарсан багцуудыг дахин суулгах нь чухал байдаг. Хамаарсан багцуудыг дахин суулгахын тулд дараахийг ажиллуулна:

>     # pkg install -Rf graphics/freeglut

Өмнөх | Эхлэл | Дараах
Багцалсан системийг хэрэглэх нь | Дээш | Портын цуглуулгыг хэрэглэх нь

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

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