LXF144:Linux Training

Материал из Linuxformat.

Перейти к: навигация, поиск
Тре­нин­ги Linux

Содержание

Майк Сон­дерс ве­дет тре­нин­ги Linux

Тренинги Linux от Майка Сондерса
Часть 4: На этом за­ня­тии мы по­го­во­рим о том, с чем при­хо­дит­ся иметь де­ло всем ад­ми­ни­ст­ра­то­рам: управ­ле­ние па­ке­та­ми. Чи­тай­те даль­ше, что­бы уз­нать, как управ­лять па­ке­та­ми RPM и Deb.

Ус­та­но­вить про­грам­му в Linux – па­ра пустя­ков, вер­но? Про­сто за­пускае­те лю­би­мый гра­фи­че­­ский брау­зер, ста­ви­те га­лоч­ки на­про­тив нуж­ных при­ло­жений, и они вол­шеб­ным об­ра­зом за­гру­жа­ют­ся из Ин­тернета и уста­нав­ли­ва­ют­ся. Боль­шин­ст­ву поль­зо­ва­те­лей это­го и доста­точ­но; но тем, кто на­ме­рен когда-нибудь стать на­стоя­щим си­сад­ми­ном, нуж­но знать прие­мы управ­ления па­ке­та­ми в команд­ной стро­ке до­тош­но. (За­меть­те: под­роб­ный рас­сказ о ко­мад­ной стро­ке ждет нас поз­же, сей­час мы со­сре­до­то­чим­ся лишь на несколь­ких ути­ли­тах.)

Ес­ли вы но­ви­чок в ми­ре Linux, сто­ит ска­зать о том, что та­кое па­кет. Во­об­ще-то это сжа­тый файл, ко­то­рый рас­па­ко­вы­ва­ет­ся в несколь­ко фай­лов и ка­та­ло­гов. Мно­гие па­ке­ты со­дер­жат про­грам­мы, неко­то­рые – ри­сун­ки и до­ку­мен­та­цию. Боль­шие про­ек­ты (ти­па KDE) раз­би­ва­ют­ся соз­да­те­ля­ми ди­ст­ри­бу­ти­вов на несколь­ко па­ке­тов, что­бы при ис­прав­лении ошиб­ки в од­ной ма­лень­кой про­грам­ме вам не при­шлось по­втор­но за­гру­жать весь ра­бо­чий стол.

Но в це­лом па­ке­ты уст­рое­ны сложнее обыч­ных ар­хи­вов. На­при­мер, они мо­гут за­ви­сеть друг от дру­га или со­дер­жать скрип­ты, за­пускае­мые при уста­нов­ке и уда­лении па­ке­тов. На соз­дание хо­ро­ше­го па­ке­та ухо­дит мас­са уси­лий, за­то это уп­ро­ща­ет жизнь поль­зо­ва­те­лям.

Раз­дел 1: Спо­соб Debian

Нач­нем с па­ке­тов Deb, из­на­чаль­но поя­вив­ших­ся в про­ек­те Debian и ны­не ис­поль­зуе­мых во мно­гих ди­ст­ри­бу­ти­вах на ос­но­ве Debian – на­при­мер, Ubuntu. Вот имя фай­ла обыч­но­го па­ке­та Debian: nano_2.2.4-1_i386.deb

Оно со­сто­ит из пя­ти час­тей. Пер­вая – имя при­ло­жения, за ко­то­рым сле­ду­ет но­мер вер­сии (2.2.4). Сле­дую­щая циф­ра -1 – это но­мер вер­сии мо­ди­фи­ка­ции па­ке­та внут­ри ди­ст­ри­бу­ти­ва, от­дель­ный от но­ме­ра вер­сии при­ло­жения. На­при­мер, ес­ли па­кет со­б­ран некор­рект­но или в нем от­сут­ст­ву­ет ка­кая-то до­ку­мен­та­ция, при по­втор­ной сбор­ке это чис­ло бу­дет уве­ли­че­но до 2, 3 и т. д. Да­лее идет i386, ука­зы­ваю­щее ар­хи­тек­ту­ру про­цес­со­ра, для ко­то­рых пред­на­зна­чен па­кет, и, на­конец, суф­фикс .deb.

Пусть вы ра­бо­тае­те в Debian 6 и у вас есть этот па­кет Nano, ко­то­рый вы за­гру­зи­ли из Ин­тернета и по­мес­ти­ли в ка­та­лог home. От­крой­те тер­ми­нал, вы­брав пункт ме­ню При­ло­жения > Стан­дарт­ные > Тер­ми­нал (Applications > Accessories > Terminal), и вве­ди­те su, что­бы пе­ре­клю­чить­ся на су­пер­поль­зо­ва­те­ля (ад­минист­ра­то­ра). Для уста­нов­ки па­ке­та вве­ди­те ко­ман­ду:

dpkg -i nano_2.2.4-1_i386.deb

Ес­ли не возникнет слож­но­стей (на­при­мер, у вас уже сто­ит бо­лее но­вая вер­сия Nano или нет биб­лио­те­ки, от ко­то­рой он за­ви­сит), па­кет уста­но­вит­ся успеш­но, и вы смо­же­те за­пустить про­грам­му ко­ман­дой nano. Есть удоб­ная ути­ли­та для уста­нов­ки од­но­го или более ранее за­гру­жен­ных па­ке­тов – Dpkg: ес­ли нуж­но уста­но­вить несколь­ко па­ке­тов, ско­ман­дуй­те dpkg -i *.deb/ (звез­доч­ка – осо­бый сим­вол: здесь она оз­на­ча­ет «все фай­лы с рас­ши­рением .deb»).

Уда­лить па­кет мож­но дву­мя спо­со­ба­ми. Ко­ман­да:

dpkg -r nano

уда­лит про­грам­му, но оста­вит нетро­ну­ты­ми все фай­лы на­строй­ки (в дан­ном слу­чае, /etc/nanorc). Это по­лез­но сис­тем­ным ад­минист­ра­то­рам, ко­то­рые ра­бо­та­ют с на­строй­кой – мож­но из­ба­вить­ся от па­ке­та, за­менив его бо­лее при­год­ной вер­си­ей, со­б­ран­ной из ис­ходников, но со­хранив файл на­строй­ки. Ес­ли вы хо­ти­те уда­лить все, вы­полните ко­ман­ду dpkg --purge nano.

Пред­ва­ри­тель­но за­гру­жен­ные па­ке­ты – боль­шое удоб­ст­во, но бо­лее гиб­кая аль­тер­на­ти­ва – apt-get. APT – Advanced Package Tool [про­дви­ну­тая ути­ли­та управ­ления па­ке­та­ми], и ее воз­мож­но­сти вы­хо­дят за рам­ки про­стой уста­нов­ки и уда­ления па­ке­тов. Ин­те­реснее все­го то, что apt-get мо­жет за­гру­жать па­ке­ты (и их за­ви­си­мо­сти) из Ин­тернета. Ска­жем, вам ну­жен ре­дак­тор Vim, но под ру­кой нет со­от­вет­ст­вую­щих па­ке­тов Deb. Вве­ди­те

apt-get install vim

APT до­бу­дет в Ин­тер­не­те долж­ные па­ке­ты для те­ку­щей вер­сии ди­ст­ри­бу­ти­ва и ус­та­но­вит их. Пе­ред на­ча­лом за­груз­ки да­ет­ся шанс под­твер­дить опе­ра­цию:

Требуется получить 7,005 kB архивов.
Эта опе­ра­ция тре­бу­ет 27.6 MB дис­ко­во­го про­стран­ст­ва.
Хо­ти­те про­дол­жать [Y/N]?

Со­об­щение го­во­рит о по­след­ст­ви­ях этой опе­ра­ции для про­стран­ст­ва на же­ст­ком дис­ке (ука­зан раз­мер за­гру­жае­мо­го па­ке­та и раз­мер рас­па­ко­ван­ных фай­лов и ка­та­ло­гов). Для про­дол­жения вве­ди­те Y.

От­ку­да APT зна­ет, где ис­кать па­ке­ты? Это мо­жет по­ка­зать­ся ка­кой-то чер­ной ма­ги­ей, но в осно­ве тут ле­жит чет­кая схе­ма – ре­по­зи­то­рии. Ре­по­зи­то­рий, по су­ти, пред­став­ля­ет со­бой раз­ме­щен­ный в се­ти струк­ту­ри­ро­ван­ный на­бор па­ке­тов для кон­крет­ной вер­сии ди­ст­ри­бу­ти­ва Linux. Ра­бо­та этих па­ке­тов в дан­ной вер­сии ди­ст­ри­бу­ти­ва бы­ла про­ве­ре­на, и все необ­хо­ди­мые за­ви­си­мо­сти вклю­че­ны. Ре­по­зи­то­рии мо­гут пред­став­лять со­бой ог­ром­ные ар­хи­вы с ты­ся­ча­ми па­ке­тов – как ре­по­зи­то­рий Debian – или неболь­шие ча­ст­ные на­бо­ры па­ке­тов, скры­тые в за­во­дях Ин­тернета.

Так как ре­по­зи­то­рии на­хо­дят­ся в Ин­тернете, для них мож­но за­дать URL-ад­ре­са. За­гляните в файл /etc/apt/sources.list – вы уви­ди­те там стро­ки на­по­до­бие та­кой:

Скорая помощь

По­сле ус­та­нов­ки про­грамм ко­ман­дой apt-get install за­гру­жен­ные па­ке­ты со­хра­ня­ют­ся для по­втор­но­го ис­поль­зо­ва­ния в кэ­ше в ка­та­ло­ге /var/cache/apt/archives. При ус­та­нов­ке боль­ших па­ке­тов вро­де KDE он мо­жет из­ряд­но раз­бух­нуть; для его очи­ст­ки ско­ман­дуй­те apt-get clean.

deb http://ftp.uk.debian.org/debian/ squeeze main

Здесь deb со­об­ща­ет APT, что при­ве­ден­ный ад­рес яв­ля­ет­ся ис­точником Deb-па­ке­тов; да­лее сле­ду­ет сам ад­рес, а за ним – иден­ти­фи­ка­тор вер­сии ди­ст­ри­бу­ти­ва, в дан­ном слу­чае squeeze, что оз­на­ча­ет Debian 6. За­вер­ша­ет­ся стро­ка ка­те­го­ри­ей па­ке­тов, к ко­то­рым вы хо­ти­те по­лу­чить доступ. На­при­мер, в Debian пре­ду­смот­ре­ны основ­ная ка­те­го­рия (main) – для па­ке­тов, от­ве­чаю­щих при­ня­тым в ди­ст­ри­бу­ти­ве кри­те­ри­ям сво­бо­ды ПО, и ка­те­го­рия «несво­бод­ные па­ке­ты» (non-free) для менее от­кры­тых про­грамм. Это основ­ной ис­точник про­грамм, ко­то­рые мо­гут вам по­на­до­бить­ся, но есть и дру­гой ре­по­зи­то­рий – для об­нов­лений с ис­прав­ления­ми оши­бок и улуч­шения­ми безо­пас­но­сти. Его мож­но най­ти здесь:

deb http://security.debian.org/ squeeze/updates main

Все боль­ше про­из­во­ди­те­лей ПО для Linux об­за­во­дят­ся соб­ст­вен­ны­ми ре­по­зи­то­рия­ми на­ря­ду с офи­ци­аль­ны­ми. Ес­ли пе­ред уста­нов­кой па­ке­та у вас поя­ви­лась стро­ка, по­хо­жая на при­ве­ден­ную вы­ше, вставь­те ее в файл /etc/apt/sources.list и со­храните из­менения. APT кэ­ши­ру­ет ин­фор­ма­цию о па­ке­тах для бы­ст­ро­го по­ис­ка, по­это­му не смо­жет по­лу­чить ин­фор­ма­цию о но­вых па­ке­тах, по­ка вы не ве­ли­те об­но­вить кэш:

apt-get update

Не сто­ит от­вер­гать хо­ро­ший ме­нед­жер па­ке­тов толь­ко по­то­му, что вы в ко­манд­ной стро­ке: по­мо­жет Aptitude.

По­сле это­го вы смо­же­те уста­но­вить са­мые по­следние вер­сии па­ке­тов. (Что­бы уста­но­вить все об­нов­лен­ные вер­сии па­ке­тов сра­зу, восполь­зуй­тесь ко­ман­дой apt-get upgrade.) По локаль­но­му кэ­шу мож­но осу­ще­ст­в­лять по­иск с по­мо­щью ко­ман­ды apt-cache с под­хо­дя­щим ар­гу­мен­том. На­при­мер:

apt-cache search chess

Эта ко­ман­да вы­ве­дет спи­сок всех доступ­ных (при­сут­ст­вую­щих в ре­по­зи­то­ри­ях) па­ке­тов со сло­вом chess в на­звании или опи­сании.

APT – неве­ро­ят­но мощ­ная сис­те­ма, и ее функ­цио­нал рас­пре­де­лен сре­ди несколь­ких ути­лит (вве­дя apt и на­жав Tab, вы уви­ди­те воз­мож­ные ва­ри­ан­ты). Боль­шая часть ее функ­цио­на­ла со­сре­до­то­че­на в aptitude – это про­грам­ма на ба­зе Ncurses, ко­то­рая пред­ла­га­ет воз­мож­но­сти гра­фи­че­­ско­­го ин­тер­фей­са, та­кие как ме­ню, диа­ло­го­вые ок­на и т. д., в тек­сто­вом ре­жи­ме. В ней да­же есть встро­ен­ный клон Minesweeper!

Спи­сок па­ке­тов мож­но про­смот­реть с по­мо­щью кла­виш управ­ления кур­со­ром и Enter, и доступ­ные со­че­тания кла­виш при­ве­де­ны ввер­ху. Для по­яв­ления ме­ню на­жми­те Ctrl+T. Aptitude от­лич­но по­мо­жет, ес­ли вы за­шли на уда­лен­ный ком­пь­ю­тер по SSH и хо­тите вы­полнить некие дей­ст­вия, но не помните ко­ман­ды в точ­но­сти: про­сто най­ди­те ее в ме­ню.

Не­на­дол­го вернем­ся к Dpkg. Кро­ме уста­нов­ки и уда­ления па­ке­тов, Dpkg уме­ет де­лать за­про­сы к ба­зе дан­ных уста­нов­лен­ных па­ке­тов. На­при­мер, так вы­во­дит­ся спи­сок фай­лов, вхо­дя­щих в па­кет nano:

dpkg -L nano

У па­ке­тов Debian есть ста­тус, от­ра­жаю­щий сте­пень их ин­те­гра­ции с сис­те­мой. Это слож­ная те­ма, и она вы­хо­дит за рам­ки LPI 101, но ес­ли ко­рот­ко – па­кет мо­жет быть пол­но­стью уста­нов­лен, уста­нов­лен на­по­ло­ви­ну или ожи­дать уста­нов­ки оп­ре­де­лен­ных па­ра­мет­ров на­строй­ки. Так­же он мо­жет быть рас­па­ко­ван (фай­лы уже из­вле­че­ны, но уста­но­воч­ные скрип­ты еще не за­пу­ще­ны). Вве­ди­те ко­ман­ду dpkg -l nano (на сей раз с ма­лень­кой бу­к­вой “L”), и уви­ди­те таб­ли­цу с ин­фор­ма­ци­ей о па­ке­те и немно­го про­стой тек­сто­вой гра­фи­ки, ука­зы­ваю­щей на два столб­ца ‘ii’ в на­ча­ле. Это оз­на­ча­ет, что ад­минист­ра­тор хо­чет уста­но­вить па­кет (то есть он не бу­дет уда­лен при сле­дую­щих об­нов­лениях) и что фак­ти­че­­ски па­кет уста­нов­лен.

Для по­лу­че­ния бо­лее под­роб­ной ин­фор­ма­ции о па­ке­те вве­ди­те ко­ман­ду

dpkg -s nano

Хо­ти­те пе­ре­на­стро­ить про­грам­му скрип­та­ми из ее па­ке­та? По­мож­ет ко­ман­да dpkg-reconfigure.

Она пре­доста­вит все, что сле­ду­ет знать о па­ке­те: его вер­сию, раз­мер, ар­хи­тек­ту­ру, за­ви­си­мо­сти и да­же элек­трон­ный ад­рес соз­да­те­ля па­ке­та на слу­чай по­яв­ления про­блем (хо­тя за­час­тую луч­ше об­ра­тить­ся к сред­ст­вам от­сле­жи­вания оши­бок в со­ста­ве ди­ст­ри­бу­ти­ва). Здесь ин­те­рес­на стро­ка provides [пре­достав­л­ение]. Nano, на­при­мер, пре­достав­ля­ет воз­мож­ность ‘editor’ [ре­дак­тор], на­ме­рен­но обоб­щен­ную: иногда ути­ли­там команд­ной стро­ки тре­бу­ется обратиться к ре­дак­то­ру – неважно, к какому, и бы­ло бы глу­по тре­бо­вать конкретное имя ре­дак­то­ра, ска­жем, Emacs или Vim. Вме­сто это­го утилиты про­ве­ря­ют на­ли­чие па­ке­та ти­па «ре­дак­тор», и Nano их вы­ру­чит.

Дру­гая по­лез­ная ко­ман­да – dpkg -S с именем фай­ла. Она ищет фай­лы с ука­зан­ным именем и го­во­рит, в ка­ком па­ке­те они на­хо­дят­ся. На­при­мер, ко­ман­да dpkg -S vmlinuz най­дет в сис­те­ме файл яд­ра vmlinuz и по­ка­жет, из ка­ко­го па­ке­та он бе­рет­ся при уста­новке.

На­конец, па­ра слов о на­строй­ке па­ке­тов. Как вы знае­те, у мно­гих про­грамм есть тек­сто­вые фай­лы на­строй­ки в ка­та­ло­ге /etc, до­пускаю­щие прав­ку вруч­ную. Все это пре­крас­но, но мно­гие па­ке­ты Deb ста­ра­ют­ся уп­ро­стить за­да­чи ад­минист­ра­то­ра, пре­достав­ляя оп­ре­де­лен­ный уро­вень ав­то­ма­ти­за­ции. На­при­мер, при уста­нов­ке че­рез apt-get поч­то­во­го сер­ве­ра Postfix по­яв­ля­ет­ся ок­но мас­те­ра, ко­то­рый про­ве­дет вас по эта­пам уста­нов­ки – и вам не при­дет­ся изу­чать фор­мат со­от­вет­ст­вую­ще­го фай­ла на­строй­ки. Ес­ли вам когда-ли­бо по­тре­бу­ет­ся из­менить на­строй­ки и вы ре­ши­те сде­лать это спо­со­бом Debian, про­сто ско­ман­дуй­те

dpkg-reconfigure postfix

Раз­дел 2: RPM

Сис­те­ма, всту­пив­шая в жизнь как Red Hat Package Manager (Менед­жер па­ке­тов Red Hat), се­го­дня при­ня­ла ре­кур­сив­ную аб­бре­виа­ту­ру (RPM Package Manager), что­бы под­черк­нуть ней­тра­ли­тет по от­но­шению к ди­ст­ри­бу­ти­вам. RPM при­ме­ня­ет­ся ог­ром­ным ко­ли­че­­ст­вом ди­ст­ри­бу­ти­вов, и, ве­ро­ят­но, фор­мат про­су­ще­ст­ву­ет еще дол­го – осо­бен­но бу­ду­чи пред­поч­ти­тель­ным фор­ма­том па­ке­тов Ба­зы стан­дар­тов Linux [Linux Standard Base]. В этом ру­ко­во­дстве мы поль­зу­ем­ся CentOS 5, вы­со­ко­на­деж­ной под­дер­жи­вае­мой со­об­ще­ст­вом сбор­кой Red Hat Enterprise Linux.

Для ба­зо­во­го управ­ления па­ке­та­ми в RPM ис­поль­зу­ет­ся, как вы мог­ли ожи­дать, ко­ман­да rpm. Она по­зво­ля­ет ра­бо­тать с за­гру­жен­ны­ми па­ке­та­ми. На­при­мер, вы за­гру­зи­ли па­кет для NASM:

rpm -Uvh nasm-0.98.39-1.i386.rpm

Вы ви­ди­те, что струк­ту­ра имени фай­ла – та­кая же, как и у Deb-па­ке­тов: сна­ча­ла имя па­ке­та, за­тем вер­сия (в дан­ном слу­чае 0.98.39), а да­лее соб­ст­вен­ная вер­сия ку­ра­то­ра па­ке­тов (1). За ней сле­ду­ют ар­хи­тек­ту­ра и рас­ши­рение .rpm.

По­смот­ри­те на флаж­ки, при­ла­гае­мые к ко­ман­де: осо­бен­но ва­жен -U, то есть «об­нов­ление» [upgrade]. Для уста­нов­ки па­ке­та сго­дит­ся ко­ман­да rpm -i, но она бу­дет оби­жать­ся, ес­ли уже уста­нов­ле­на бо­лее ста­рая вер­сия па­ке­та; с фла­гом -U мож­но уста­но­вить но­вый па­кет или об­но­вить су­ще­ст­вую­щий – и вы обой­де­тесь все­го од­ной ко­ман­дой.

Ес­ли вы хо­ти­те про­ве­рить, не по­вре­ж­ден ли за­гру­жен­ный файл RPM, ско­ман­дуй­те rpm --checksig filename. Уда­лить па­кет то­же не­труд­но – ко­ман­дой rpm -e nasm.

Су­ще­ст­ву­ет не­сколь­ко спо­со­бов по­лу­чить ин­фор­ма­цию о па­ке­те. Для еще не ус­та­нов­ленного RPM-фай­ла вве­ди­те коман­ду

rpm -qpi nasm-0.98.39-1.i386.rpm

Для уже ус­та­нов­лен­ных па­ке­тов убе­ри­те флаг p и ис­поль­зуй­те толь­ко ос­но­ву име­ни па­ке­та. Ана­ло­гич­ная пре­ды­ду­щей ко­ман­да для ус­та­нов­лен­но­го па­ке­та NASM бу­дет вы­гля­деть так:

rpm -qR nasm

По­лу­чить спи­сок фай­лов, ус­та­нов­лен­ных па­ке­том, мож­но ко­ман­дой rpm -ql nasm. К ка­ко­му па­ке­ту файл при­над­ле­жит, оп­ре­де­лит ко­ман­да rpm -qf /path/to/file. Ко­ман­да rpm не­ве­ро­ят­но раз­но­сто­рон­няя, как и ее ку­зи­на dpkg. Что­бы ис­сле­до­вать ее воз­мож­но­сти, от­крой­те man-стра­ни­цу ко­ман­ды (man rpm).

Сто­ит так­же от­ме­тить, что рас­па­ко­вать па­ке­ты RPM мож­но и без ус­та­нов­ки, пред­ва­ри­тель­но кон­вер­ти­ро­вав их в ар­хи­вы CPIO. На­при­мер:

rpm2cpio nasm-0.98.39-1.i386.rpm > data.cpio 
cpio -id < data.cpio

Эти ко­ман­ды рас­па­ку­ют ар­хив в те­ку­щий ка­та­лог, и там мо­гут воз­ник­нуть ка­та­ло­ги usr, etc и др.

rpm удоб­на для ра­бо­ты с ло­каль­ны­ми па­ке­та­ми, но есть и ути­ли­та, ко­то­рая ав­то­ма­ти­зи­ру­ет за­груз­ку па­ке­тов и их за­ви­си­мо­стей из Ин­тер­не­та и во мно­гом на­по­ми­на­ет APT в Debian. Это YumYellowdog Updater Modified [Мо­ди­фи­ци­ро­ван­ная ути­ли­та об­нов­ле­ния от Yellowdog]; ко­гда-то она де­ла­лась для дру­го­го ди­ст­ри­бу­ти­ва. На­при­мер, ес­ли вы хо­ти­те ус­та­но­вить Z Shell, но у вас нет ло­каль­ных па­ке­тов, ско­ман­дуй­те

До­быть ин­фор­ма­цию о па­ке­те не­слож­но — ско­ман­дуй­те rpm -q.

yum install zsh

Yum про­ве­рит свой кэш с ин­фор­ма­ци­ей о па­ке­тах, оп­ре­де­лит тре­буе­мые за­ви­си­мо­сти и по­про­сит вас на­жать Y для про­дол­жения ра­бо­ты, в от­вет на что за­гру­зит и уста­но­вит тре­буе­мые па­ке­ты. Спи­сок па­ке­тов, со­от­вет­ст­вую­щих клю­че­во­му сло­ву, мож­но по­лу­чить ко­ман­дой yum list с клю­че­вым сло­вом, а по­лу­чить ин­фор­ма­цию о па­ке­те пе­ред уста­нов­кой – ко­ман­дой yum info с именем па­ке­та.

C Yum осо­бен­но удоб­но от­сле­жи­вать об­нов­ления ОС: ко­ман­да yum update по­ка­жет вам спи­сок па­ке­тов, ко­то­рые бы­ли об­нов­ле­ны с мо­мен­та ва­шей уста­нов­ки. И как она на­хо­дит эти па­ке­ты?

Скорая помощь

Спи­сок всех ус­та­нов­лен­ных па­ке­тах в сис­те­ме на ба­зе Debian вы­даст ко­ман­да dpkg -l. В ди­ст­ри­бу­ти­вах на ба­зе RPM вве­ди­те ко­ман­ду rpm -qa. Спи­ски очень длин­ные, и удоб­но бу­дет пе­ре­на­пра­вить вы­вод в тек­сто­вый файл – rpm -qa > list.txt.

От­вет – в ка­та­ло­ге /etc/yum.repos.d. Там вы най­де­те тек­сто­вые фай­лы с рас­ши­рением .repo, со­дер­жа­щие дан­ные ре­по­зи­то­ри­ев – хранилищ па­ке­тов в Ин­тернете. На­при­мер, в сис­те­ме CentOS, с ко­то­рой мы ра­бо­та­ем на этом уро­ке, есть ре­по­зи­то­рии для всех основ­ных па­ке­тов CentOS и со­от­вет­ст­вую­щих об­нов­лений.

Сю­да мож­но до­ба­вить соб­ст­вен­ные за­пи­си, ес­ли вы най­де­те про­грам­му с ре­по­зи­то­ри­ем для ва­ше­го ди­ст­ри­бу­ти­ва, но по­том не за­будь­те вы­полнить ко­ман­ду yum makecache для об­нов­ления ло­каль­ной ин­фор­ма­ции. Yum по­тря­саю­ще гибок в на­стройк­е – ищи­те его па­ра­мет­ры в фай­ле /etc/yum.conf.

Пре­об­ра­зо­ва­ние па­ке­тов с Alien

RPM и Deb – два са­мых по­пу­ляр­ных фор­ма­та па­ке­тов в ми­ре Linux, но они не очень-то дру­жат. Конеч­но, мож­но уста­но­вить ути­ли­ты Dpkg в сис­те­му с RPM (или ко­ман­ду rpm в Debian) и по­пы­тать­ся уста­но­вить па­ке­ты с их по­мо­щью, но ре­зуль­та­ты бу­дут не са­мы­ми луч­ши­ми: жди­те боль­шо­го ущер­ба сис­те­ме.

Бо­лее ра­зум­ный ва­ри­ант – восполь­зо­вать­ся ути­ли­той Alien, доступ­ной в ре­по­зи­то­ри­ях Debian. Эта удоб­ная ути­ли­та пре­об­ра­зу­ет фай­лы Deb в RPM и на­обо­рот. На­при­мер:

alien --to-deb nasm-2.07-1.i386.rpm

Она соз­да­ет файл nasm_2.07‑2_i386.deb, ко­то­рый мож­но уста­но­вить рас­смот­рен­ной на­ми ко­ман­дой dpkg -i. Впро­чем, уста­но­вит­ся па­кет кор­рект­но или нет – это отдельная история: па­ке­ты бы­ва­ют так при­вя­за­ны к ди­ст­ри­бу­ти­вам, что ни в какую не соглашаются нор­маль­но ра­бо­тать в дру­гих мес­тах.

Alien все­го лишь из­ме­ня­ет фор­мат сжа­тия и ме­та­дан­ных для за­дан­но­го фор­ма­та па­ке­тов; это не га­ран­ти­ру­ет, что па­кет смо­жет ра­бо­тать в фай­ло­вой сис­те­ме но­во­го ди­ст­ри­бу­ти­ва или что скрип­ты, за­пускае­мые до или по­сле уста­нов­ки, от­ра­бо­та­ют кор­рект­но.

С го­да­ми уда­лось достичь за­мет­но­го успе­ха в кон­вер­та­ции неболь­ших про­грамм с миниму­мом за­ви­си­мо­стей. Воз­мож­но, вам то­же по­ве­зет. С боль­ши­ми про­грам­ма­ми, как пра­ви­ло, ниче­го не по­лу­ча­ет­ся, а по­пыт­ка за­менить кри­ти­че­­ские сис­тем­ные фай­лы (ти­па glibc) их вер­сия­ми из дру­го­го ди­ст­ри­бу­ти­ва – весь­ма неум­ное ре­шение.

Сбор­ка па­ке­тов из ис­ход­ных ко­дов

Боль­шин­ст­во дво­ич­ных па­ке­тов, с ко­то­ры­ми вы столкнетесь, бы­ли соз­да­ны из ис­ход­ных ко­дов. Про­цесс соз­дания па­ке­тов го­раз­до сложнее про­стой упа­ков­ки дво­ич­но­го фай­ла ар­хи­ва­то­ром gzip, и тут тре­бу­ют­ся скрип­ты и фай­лы на­строй­ки. В ди­ст­ри­бу­ти­вах на ба­зе Debian пер­вым де­лом уста­но­ви­те не­об­хо­ди­мые ути­ли­ты:

apt-get install dpkg-dev build-essential fakeroot

Те­перь ска­жи­те Debian, что хо­ти­те по­лу­чить доступ к ис­ход­но­му ко­ду, а не толь­ко к дво­ич­ным фай­лам – от­крыв /etc/apt/sources.list и за­менив deb в его стро­ках на deb-src. На­при­мер:

deb-src http://ftp.uk.debian.org/debian/ squeeze main

(В за­ви­си­мо­сти от ва­шей сис­те­мы эти ути­ли­ты уже мо­гут быть уста­нов­ле­ны по умол­чанию.) За­тем за­гру­жай­те ис­ход­ные фай­лы про­грам­мы ко­ман­дой apt-get source package, за­менив package на­званием про­грам­мы. Ори­ги­нал ис­ход­но­го ко­да по­следней вер­сии про­грам­мы бу­дет за­гру­жен, из­вле­чен из ар­хи­ва и за­ла­тан в за­ви­си­мо­сти от ди­ст­ри­бу­ти­ва. Ко­ман­дой cd package-* вы пе­рей­де­те в ка­та­лог с рас­па­ко­ван­ны­ми фай­ла­ми. Для сбор­ки неко­то­рых па­ке­тов нуж­ны биб­лио­те­ки и до­полнитель­ные ути­ли­ты, ко­то­рые мож­но уста­но­вить ко­ман­дой apt-get build-dep package.

Вне­ся в ис­ход­ный код все требуе­мые правки или сме­нив па­ра­мет­ры оп­ти­ми­за­ции ком­пи­ля­то­ра в стро­ке CFLAGS в debian/rules, со­бе­ри­те па­кет:

dpkg-buildpackage

За­вер­шив сбор­ку, пе­рей­ди­те в ка­та­лог уровнем вы­ше ко­ман­дой cd.. и про­смот­ри­те его со­дер­жи­мое ко­ман­дой ls. Вы най­де­те один или несколь­ко све­же­со­б­ран­ных па­ке­тов Deb, ко­то­рые те­перь мож­но рас­про­странить.

Для сис­тем с RPM мож­но уста­но­вить ути­ли­ту Yumdownloader – че­рез нее вы по­лу­чи­те па­ке­ты SRPM (па­ке­ты с ис­ход­ны­ми ко­да­ми RPM) ко­ман­дой yumdownloader -source package (за­мените package на имя про­грам­мы). SRPM со­дер­жит ис­ход­ный код с ин­ст­рук­ция­ми по сбор­ке (файл SPEC), а так­же необ­хо­ди­мые на­строй­ки и за­плат­ки для кон­крет­но­го ди­ст­ри­бу­ти­ва.

За­тем со­би­рай­те дво­ич­ные па­ке­ты ко­ман­дой rpmbuild --rebuild filename.src.rpm. В за­ви­си­мо­сти от со­би­рае­мой про­грам­мы по­лу­чит­ся один или несколь­ко дво­ич­ных RPM-па­ке­тов,ко­то­рые вы смо­же­те рас­про­стра­нять или ус­та­но­вить.

Про­верь­те се­бя!

Раз вы про­чли это ру­ко­во­дство, ус­вои­ли все идеи и по­про­бо­ва­ли свои ва­ри­ан­ты при­ве­ден­ных ко­манд, не про­ве­рить ли, как вы от­ве­ти­те на во­про­сы в си­туа­ции, по­хо­жей на эк­за­мен?

  1. Ка­кая ко­ман­да уда­ля­ет Deb-па­кет вме­сте с фай­ла­ми на­строй­ки?
  2. В ка­ком фай­ле есть спи­сок всех ре­по­зи­то­ри­ев, ис­поль­зуе­мых в ди­ст­ри­бу­ти­вах на ба­зе Debian?
  3. Ка­кая ко­ман­да вы­да­ет под­роб­ную ин­фор­ма­цию о па­ке­те в Debian?
  4. Ка­кой ко­ман­дой мож­но кон­вер­ти­ро­вать файл RPM в Deb?
  5. Ка­кая ко­ман­да уда­ля­ет па­кет в сис­те­ме на ба­зе RPM?
  6. Где про­жи­ва­ют опи­са­ния ре­по­зи­то­ри­ев Yum?
  7. Как об­но­вляется кэш па­ке­тов при помощи Yum?

Ответы

Личные инструменты
  • Купить электронную версию
  • Подписаться на бумажную версию