За Debian GNU / Linux това се отнася до инструментите apt, apt-get, aptitude, apt-cache, apt-зависи, apt-rdepends, dpkg-deb и apt-mark.
Наличност на софтуерни пакети
Както вече беше казано по-горе, дистрибуцията на Linux се състои от множество различни софтуерни пакети. Към днешна дата софтуерът е доста сложен и затова е обичайно да се разделя софтуерът на няколко отделни пакета. Тези пакети могат да бъдат категоризирани по функционалност или по роля като двоични пакети, библиотеки, документация, примери за използване, както и специфични за езика колекции и да предоставят избрана част от софтуера, само. За него няма фиксирано правило и разделението се извършва или от екипа за разработка на инструмент, или от поддържащия пакета, който се грижи за софтуерния пакет за вашата Linux дистрибуция. Използвайки aptitude, Фигура 1 изброява пакетите, които съдържат преводи за различните езици за уеб браузъра Mozilla Firefox.
Фигура 1: aptitude-firefox.png
Този начин на работа прави възможно всеки пакет да се поддържа от различен разработчик или като цял екип. Освен това разделението на единични компоненти позволява на други софтуерни пакети да го използват и за свои цели. Може да се приложи необходима функционалност и не е необходимо да се преоткрива.
Организация на пакетите
Инструментите за управление на пакети в дистрибуцията на Debian GNU / Linux непрекъснато се грижат зависимостите на инсталираните пакети да бъдат напълно изпълнени. Това е особено случаят, ако софтуерен пакет е предназначен да бъде инсталиран, актуализиран или изтрит във или от вашата система. Липсващите пакети се добавят към системата или инсталираните пакети се премахват от системата, в случай че вече не са необходими. Фигура 2 демонстрира това за премахване на пакета „mc-data“ с помощта на „apt-get“. Пакетът 'mc-data' препоръчва автоматично да се премахне и пакетът 'mc', защото няма смисъл вече да се инсталира без 'mc-data'.
Фигура 2: apt-get-remove-mc.png
Маркировки на пакета и флагове
По време на своята работа инструментите за управление на пакети спазват зададените флагове и маркировки на пакета. Те се задават автоматично или се задават ръчно от системния администратор. Особено това поведение се отнася до флага „основен пакет“, който е зададен за пакети, които не трябва да се премахват. Преди да направите това се издава ясно предупреждение (вижте фигура 3).
Фигура 3: apt-get-remove.png
Също така се вземат предвид трите марки „автоматичен“, „ръчен“ и „задържане“. Те маркират пакет като автоматично инсталиран, ръчно инсталиран или не трябва да се актуализира (задръжте текущата версия). Софтуерният пакет е означен като „автоматичен“ или „ръчен“, но не и двете.
Наред с други, командата 'apt-mark' обработва маркировките и флаговете, като използва следните подкоманди:
- auto: задайте пакет като автоматично инсталиран
- hold: задръжте текущата версия на пакета
- ръчно: задайте пакет като ръчно инсталиран
- showauto: покажете автоматично инсталираните пакети
- showmanual: покажете ръчно инсталираните пакети
- showhold: избройте пакетите, които са на изчакване
- unhold: премахнете знамето за задържане за дадения пакет
За да изброите всички ръчно инсталирани пакети, издайте тази команда:
$ apt-mark showmanualabiword
абс-водач
ack-grep
акл
acpi
..
$
За да задържите версия на пакета, използвайте подкомандата 'hold'. Примерът по-долу показва това за пакета 'mc'.
# apt-mark hold mcmc е задържано
#
Подкомандата 'showhold' изброява пакетите, които са на изчакване (в нашия случай това е само пакетът 'mc'):
# apt-mark showholdmc
#
Използвайки алтернативен метод, озаглавен „apt pinning“, пакетите се класифицират по приоритети. Apt ги прилага, за да реши как да борави с този софтуерен пакет и версиите, които са достъпни от хранилището на софтуера.
Описание на опаковката
Използвайки алтернативен метод, озаглавен „apt pinning“, пакетите се класифицират по приоритети. Apt ги прилага, за да реши как да борави с този софтуерен пакет и версиите, които са достъпни от хранилището на софтуера.
Всеки софтуерен пакет идва със собствено описание на пакета, което е стандартизирано. Наред с други полета това описание изрично посочва от кой допълнителен пакет (и) зависи. Специфичните за разпространението инструменти извличат тази информация от описанието на пакета и след това изчисляват и визуализират зависимостите вместо вас. Следващият пример използва командата 'apt-cache show', за да се покаже описанието на пакета на пакета 'poppler-utils' (вижте Фигура 4).
Фигура 4: описание на пакета-poppler-utils.png
Описанието на пакета съдържа раздел, наречен „Зависи“. Този раздел изброява другите софтуерни пакети плюс номера на версията, от който зависи текущият пакет. На фигура 4 този раздел е рамкиран в червено и показва, че „poppler-utils“ зависи от пакетите „libpoppler64“, „libc6“, „libcairo2“, „libfreetype6“, „liblcms2-2“, „libstdc ++ 6“ и „zlib1g“.
Покажете зависимостите на пакета
Четенето на описанието на пакета е трудният начин да разберете зависимостите на пакета. След това ще ви покажем как да опростите това.
Има няколко начина за показване на зависимостите на пакета в командния ред. За deb пакет като локален файл използвайте командата 'dpkg-deb' с два параметъра - името на файла на пакета и ключовата дума 'Зависи'. Примерът по-долу демонстрира това за пакета 'skypeforlinux-64.deb ':
$ dpkg-deb -f Изтегляния / skypeforlinux-64.deb Зависиgconf-service, libasound2 (> = 1.0.16), libatk1.0-0 (> = 1.12.4), libc6 (> = 2.17),
libcairo2 (> = 1.2.4), libcups2 (> = 1.4.0), libexpat1 (> = 2.0.1),
libfreetype6 (> = 2.4.2), libgcc1 (> = 1: 4.1.1), libgconf-2-4 (> = 3.2.5),
libgdk-pixbuf2.0-0 (> = 2.22.0), libglib2.0-0 (> = 2.31.8), libgtk2.0-0 (> = 2.24.0),
libnspr4 (> = 2: 4.9-2 ~), libnss3 (> = 2: 3.13.4-2 ~), libpango-1.0-0 (> = 1.14.0),
libpangocairo-1.0-0 (> = 1.14.0), libsecret-1-0 (> = 0.7), libv4l-0 (> = 0.5.0),
libx11-6 (> = 2: 1.4.99.1), libx11-xcb1, libxcb1 (> = 1.6), libxcomposite1 (> = 1: 0.3-1),
libxcursor1 (>> 1.1.2), libxdamage1 (> = 1: 1.1), libxext6, libxfixes3,
libxi6 (> = 2: 1.2.99.4), libxrandr2 (> = 2: 1.2.99.3), libxrender1, libxss1,
libxtst6, apt-transport-https, libfontconfig1 (> = 2.11.0), libdbus-1-3 (> = 1.6.18),
libstdc ++ 6 (> = 4.8.1)
$
За да направите същото за инсталиран пакет, използвайте 'apt-cache'. Първият пример комбинира подкомандата 'show', последвано от името на пакета. Изходът се изпраща до командата 'grep', която филтрира реда 'Зависи':
$ apt-cache шоу xpdf | grep ЗависиЗависи: libc6 (> = 2.4), libgcc1 (> = 1: 4.1.1), libpoppler46 (> = 0.26.2),
libstdc ++ 6 (> = 4.1.1), libx11-6, libxm4 (> = 2.3.4), libxt6
$
Командата 'grep-status -F package -s Depends xpdf' ще докладва същата информация.
По-конкретно, вторият пример отново използва "apt-cache", но вместо това с подкомандата "зависи". Подкомандата е последвана от името на пакета:
$ apt-cache зависи от xpdfxpdf
Зависи: libc6
Зависи: libgcc1
Зависи: libpoppler46
Зависи: libstdc ++ 6
Зависи: libx11-6
Зависи: libxm4
Зависи: libxt6
Препоръчва: poppler-utils
poppler-utils: i386
Препоръчва: poppler-data
Препоръчва: gsfonts-x11
Препоръчва: cups-bsd
cups-bsd: i386
Сблъсква се с:
Сблъсква се с:
Сблъсква се с:
Сблъсква се с:
Заменя:
Заменя:
Заменя:
Заменя:
Сблъсква се с: xpdf: i386
$
Списъкът по-горе е доста дълъг и може да бъде съкратен с помощта на превключвателя „-i“ (съкратено от „-важно“):
$ apt-cache зависи -i xpdfxpdf
Зависи: libc6
Зависи: libgcc1
Зависи: libpoppler46
Зависи: libstdc ++ 6
Зависи: libx11-6
Зависи: libxm4
Зависи: libxt6
$
Командата 'apt-rdepends' прави същото, но с информация за версията, ако е посочена в описанието:
$ apt-rdepends xpdfЧетене на списъци с пакети ... Готово
Изграждане на дърво на зависимост
Четене на информация за състоянието ... Готово
xpdf
Зависи: libc6 (> = 2.4)
Зависи: libgcc1 (> = 1: 4.1.1)
Зависи: libpoppler46 (> = 0.26.2)
Зависи: libstdc ++ 6 (> = 4.1.1)
Зависи: libx11-6
Зависи: libxm4 (> = 2.3.4)
Зависи: libxt6
libc6
Зависи: libgcc1
..
$
Командата 'aptitude' работи и с превключватели. За зависимости използвайте превключвателя „~ R“, последван от името на пакета. Фигура 5 показва това за пакета „xpdf“. Буквата „A“ във втората колона на изхода на „aptitude“ идентифицира пакета като автоматично инсталиран.
Фигура 5: aptitude-rdepends.png
Зависимостите на пакетите могат да бъдат малко сложни. Може да помогне да се покажат графично зависимостите на пакета. Използвайте командата 'debtree', последвана от името на пакета, за да създадете графично представяне на зависимостите на пакета. Инструментът „точка“ от пакета Graphviz превръща описанието в изображение, както следва:
$ дълг xpdf | точка -Tpng> графика.pngНа фигура 6 виждате създаденото PNG изображение, което съдържа графика на зависимостите.
Фигура 6: точка.png
Покажете обратните зависимости
Досега показвахме, че отговорихме на въпроса кои пакети са необходими за даден пакет. Съществува и обратното - така наречените обратни зависимости. Следващите примери разглеждат пакета, както и пакетите, които зависят от него. Пример номер едно използва „apt-cache“ с подкомандата „rdepends“, както следва:
$ apt-cache rdepends xpdfxpdf
Обратното зависи:
| октава-док
xpdf: i386
libfontconfig1: i386
| xmds-doc
xfe
wiipdf
| вим-латекссуит
python-scapy
| рубин-тиога
| python-таблици-doc
| страница-криза
| октава-док
| muttprint-manual
mozplugger
mlpost
libmlpost-ocaml-dev
..
$
Пакетите, които зависят от други пакети, са маркирани със символ на тръба. Този пакет не трябва да бъде инсталиран на вашата система, но трябва да бъде включен в базата данни на пакета.
Следващият пример използва 'aptitude' за изброяване на пакетите, които имат твърда препратка към пакета 'xpdf' (вижте Фигура 7).
Фигура 7: търсене на склонност.png
Проверете инсталацията за липсващи пакети
„Apt-get“ предлага подкомандата „check“, която позволява да се провери инсталацията. Ако видите следния изход, липсват пакети:
# apt-get checkЧетене на списъци с пакети ... Готово
Изграждане на дърво на зависимост
Четене на информация за състоянието ... Готово
#
Заключение
Намирането на зависимости на пакета работи добре с правилните инструменти. Използването им правилно ви помага да разберете защо са инсталирани пакети и кои може да липсват.
Връзки и справки
- Аксел Бекерт, Франк Хофман: Das Debian-Paketmanagement-Buch, https: // www.dpmb.организация /