Debian

Зависимости на пакета на Debian

Зависимости на пакета на Debian
За Linux дистрибуции като Debian GNU / Linux съществуват повече от 60.000 различни софтуерни пакета. Всички те имат специфична роля. В тази статия ние обясняваме как управлението на пакетите управлява надеждно този огромен брой софтуерни пакети по време на инсталация, актуализация или премахване, за да поддържа вашата система работеща и напълно стабилна.

За 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' обработва маркировките и флаговете, като използва следните подкоманди:

За да изброите всички ръчно инсталирани пакети, издайте тази команда:

$ apt-mark showmanual
abiword
абс-водач
ack-grep
акл
acpi
..
$

За да задържите версия на пакета, използвайте подкомандата 'hold'. Примерът по-долу показва това за пакета 'mc'.

# apt-mark hold mc
mc е задържано
#

Подкомандата 'showhold' изброява пакетите, които са на изчакване (в нашия случай това е само пакетът 'mc'):

# apt-mark showhold
mc
#

Използвайки алтернативен метод, озаглавен „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 зависи от xpdf
xpdf
Зависи: 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 xpdf
xpdf
Зависи: 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 xpdf
xpdf
Обратното зависи:
| октава-док
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
Четене на списъци с пакети ... Готово
Изграждане на дърво на зависимост
Четене на информация за състоянието ... Готово
#

Заключение

Намирането на зависимости на пакета работи добре с правилните инструменти. Използването им правилно ви помага да разберете защо са инсталирани пакети и кои може да липсват.

Връзки и справки

Топ 10 игри за игра на Ubuntu
Платформата на Windows е една от доминиращите платформи за игри поради огромния процент игри, които се развиват днес, за да поддържат Windows. Може ли...
5 най-добри аркадни игри за Linux
В днешно време компютрите са сериозни машини, използвани за игри. Ако не можете да получите новия висок резултат, ще разберете какво имам предвид. В т...
Битка за Уеснот 1.13.6 Разработка освободена
Битка за Уеснот 1.13.6, издаден миналия месец, е шестата версия за разработка в 1.13.x серия и предоставя редица подобрения, най-вече на потребителски...