FreeBSD Бележки - Работа с пакети
Работа с пакети
Помислете за работа с пакети. Първо, нека дефинираме какво е пакет. Пакетът е просто архив, който съдържа програмни компоненти. Тоест файловете, необходими за стартирането и работата на програмата. Коренът на архива съдържа системни файлове, които описват пакета, а директориите съдържат програмни компоненти като изпълними файлове, документация, библиотеки и др. Тоест пакетът съдържа програма, готова за инсталиране и използване.
Нека разгледаме различни опции за инсталиране на пакета в системата, това е инсталирането на пакети по мрежата и инсталирането на отделно изтеглени пакети в система, която няма достъп до Интернет.
За да инсталирате пакет от интернет, използвайте командата pkg_add. Да кажем, че искаме да инсталираме bash shell, тогава трябва да изпълним следната команда:
Извличане на ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8-current/Latest/bash.tbz. Свършен. Извличане на ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8-current/All/libiconv-1.13.1.tbz. Свършен. Извличане на ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8-current/All/gettext-0.17_1.tbz. Свършен.
Възниква въпросът защо избрахме да инсталираме bash, а заедно с него бяха инсталирани и libiconv и gettext? Факт е, че bash изисква тези две помощни програми да работят, т.е. libiconv и gettext са помощните програми, от които bash зависи, т.е. това са зависимости. Инструментите за управление на пакети във FreeBSD имат механизъм за разрешаване на зависимости и инсталирането на пакет автоматично ще инсталира онези пакети, които са необходими, за да работи инсталираната програма. Ключът -r или --remote означава изтегляне на пакета от разстояние, т.е. от Интернет.
Ако на машината няма интернет, тогава пакетът може да се инсталира от всяка директорияфайлова система. Да предположим, че е създадена директория с пакети в директорията /usr и директорията съдържа пакета proftpd-1.3.2.tbz със зависимости. Тогава инсталацията на пакета ще изглежда така:
# cd /usr/packages # pkg_add proftpd-1.3.2.tbz
Без повече шум, proftpd ще бъде инсталиран :). Но ако изведнъж няма зависимости за пакета в тази директория, тогава ще видим следното съобщение:
pkg_add: не можа да намери пакет libiconv-1.13.1! pkg_add: не може да се намери пакет gettext-0.17_1!
Както се очаква, пакетът proftpd няма да бъде инсталиран в този случай. Трябва да поставите необходимите пакети в директорията и да повторите инсталацията. Инсталационните дискове на FreeBSD обикновено идват с голяма колекция от пакети.
Получаване на информация за инсталираните пакети
За да видите кои пакети са инсталирани в системата, използвайте командата pkg_info:
След изпълнението на което, на екрана ще се покаже целият списък с пакети, инсталирани в момента в системата.
Ако го направим:
Ще бъдат показани само пакети с mc символи в техните имена, което улеснява намирането на правилния пакет.
mc-4.6.2 Midnight Commander, безплатен клонинг на Norton Commander
Ключът -x означава, че дисплеят ще показва само информация за пакета, чието име съдържа въведените знаци. Ключът -I означава, че трябва да се показва само името на пакета.
# pkg_info -x samba-libsmbclient
Резултатът от изпълнението на тази команда ще бъде получаване на подробна информация за искания пакет:
Информация за samba-libsmbclient-3.0.35:
Коментар: Споделени библиотеки от пакета samba
Изисква се от: amarok-1.4.10_5 gnome-vfs-2.24.1_1 kde-lite-3.5.10_2 kdeartwork-3.5.10_2 kdebase-3.5.10_3 kdepim-3.5.10_3 kdeutils-3.5.10_2 ru-openoffice.org-3.1.0_2
Описание: Това е наборът от споделени библиотеки от порта Samba. Позволява на други програми да използват различни аспекти на SMB протокола.
Както виждаме, тези пакети са незабавно посочени, чиято работа зависи от samba-libsmbclient-3.0.35.
Деинсталиране на пакети от системата
Да предположим, че трябва да премахнем някакъв софтуер от системата, за това първо трябва да разберем името на пакета. Помислете за премахване на mc файловия мениджър:
# pkg_info -Ix mc mc-4.6.2 Midnight Commander, безплатен клонинг на Norton Commander
След изпълнение на командата pkg_delete пакетът ще бъде изтрит, а при заявка pkg_info ще получим съобщение, че пакетът не е намерен в системата:
# pkg_info -Ix mc pkg_info: няма пакети, съответстващи на шаблон(и)
Ако се опитате да премахнете пакет, от който зависят други програми, пакетът няма да бъде премахнат и на дисплея ще се появи съобщение като това:
За да премахнете такъв пакет, първо трябва да премахнете онези пакети, които зависят от този пакет, за да работят. За да премахнете принудително пакет, игнорирайки зависимости, можете да използвате ключа -f, но в този случай принудителното премахване ще доведе до неуспех на всички тези програми, които зависят от премахвания пакет. Следователно принудителното изтриване трябва да се използва само в случаите, когато наистина е необходимо. Опцията -a, приложена към pkg_delete, ще премахне напълно всички пакети от системата.