Використання RPM

Черкашин Євген, linux.irk.ru

Привіт! Тепер і я вирішив написати дещо вивчене мною. А саме як користуватися однією з найважливіших утиліт дістрібьюшена Red Hat XX – Пакету RPM (Red Hat Package manager). Пакет призначений для спрощення встановлення та вбивання інших програмних продуктів (будемо називати їх пакетами (packages) а RPM – RPMмом!), Відповідним чином оформлених (щось на зразок інсталятора і дєїнсталлятора в вінда, тільки крутіше). Перш за все хочу сказати які переваги і недоліки таїть його використання.

Почнемо з переваг:

Недоліки:

Якщо хтось хоче ще додати – це не забороняється.

Отже, по-порядку …

Всі пакети мають розширення. Rpm

Їх по вмісту, як завжди, можна розділити на два класи: пакети із програмами в двійковому коді, і пакети з вихідним кодом. Ім'я пакету задається наступним чином: "ім'я-програми" – "версія" – "реліз". "Платформа або src ". rpm, наприклад недавній реліз IceWM називається так: icewm-0.9.25-1.i386.rpm, тобто icewm версії 0.9.25, реліз перший, для платформи PC-x86. Додам, що необхідно дивитися для яких бібліотек він скомпільований (визначається за іменем піддиректорії, звідки був викачано, наприклад ./RPMS/…./i386/libc6/icewm …., icewm для бібліотек libc6 (glibc2?) (для RedHat не менше 5.0 піде). Я ще чайник тут.). RPMS – ім'я директорія з двійковими пакунками, саме в ньому треба шукати Бінар. Сирці (вихідний код) в більшості репозиторіїв лежать в SRPMS (з буквою "S" на початку), тобто исходники icewm 0.9.25 будуть лежати у файлі …/SRPMS/icewm-0.9.25-1.src.rpm.

Розглянемо докладніше перший клас, хоча більшість, а саме 57% линуксоидов інсталює із сирцем.

Для початку розглянемо "найскладніший" варіант – робота з rpm в командному рядку. Щоб проинсталлировать пакет наберіть команду:

bash $ rpm-i "повне ім'я пакету"

але краще, використовуючи icewm для прикладу, набрати

bash$ rpm -ivh icewm-0.9.25-1.i386.rpm

а ще краще, щоб врахувати можливий апгрейд (якщо у вас інстальований пакет ранньої версії):

bash$ rpm -Uvh icewm-0.9.25-1.i386.rpm

Тут використовуються наступні опції: i – install package (встановити пакет), U – upgrade package (апгрейд пакета). vh – для статус бару і додаткової інформації. Опція U робить не тільки апгрейд, якщо встановлена стара версія, але і здійснює установку пакета, якщо його немає взагалі. Я користуюся саме-Uvh.

Можна, наприклад, запустити

bash $ rpm-Uvh ftp://sf.irk.ru/pub/linux/redhat-5.2/i386/RPMS/apache-1.3.3-1.i386.rpm

(За точність відтворення не ручаюся) тоді ви проінсталліруете Apache прямо з чудового сайту Thora Ablestara (хитавиця досягає 10kbps). Якщо треба встановити проксі використовуються додаткові опції.

Якщо установка завершена успішно то rpm ні чого не відповість, інакше вилає (ся). Якщо цього пакету щось ще треба, не турбуйтеся він [rpm] вам скаже.

Зауважу ще, іноді буває необхідно використовувати як нову так і стару бібліотеки, наприклад для старого GIMP і нового GNOME із ще недорозвиненими бібліотеками. У цьому випадку використовуйте-ivh опції для нового пакета. Таким чином у вас будуть обидві програми працювати, і місця в два рази більше витрачено, але при цьому стара бібліотека буде ціла і неушкоджена.

Якщо в системі вже були якісь файли, з тими ж іменами, що і в пакеті, то rpm зберігає їх як. Rpmsave файли, що заощаджує ваші зусилля по налаштуванню.

До речі, якщо ви використовуєте Midnight Commander (mc), то замість імені файлу можна писати% f і встановити курсор на сам файл. Більш того mc забезпечує спеціальний сервіс для. Rpm і. Deb (Debian) пакетів. Про це пізніше.

Видалення пакунків з системи здійснюється так само просто.

bash$ rpm -e apache

Але в даному випадку треба вказати тільки ім'я пакета. Якщо він ніякому іншому пакету не потрібен то його як не бувало.

Якщо вам не подобаються повідомлення, що те чи се не можна видаляти або інсталювати, то можна спробувати додати опцію – force. Вона корисна для переінсталяції пакету, так як rpm не хоче заново інсталювати той же самий пакет, якщо не настояти таким чином ;-). Або є ще крутіші заходи впливу і переконання (корисні особливо при втраті інформації про встановлені пакетах. Буває й таке.): – Nodeps – Не перевіряти залежності і – replacefiles – заміняти всі старі файли на нові не перейменовуючи їх у. Rpmsave.

Як дізнаватися інформацію про пакет. Я користуюся Midnight Commanderом для цього (почекайте, див. нижче), але цей спосіб не прийнятний для FTP (вимагає повної закачування файлу). Тут я навчився набирати

bash$ rpm -qpi FTP://sf.irk.ru/......./apache-1.3.3-1.i386.rpm

і почекавши 5 сек отримую всю необхідну інформацію

Name: apache Distribution: Manhattan
Version: 1.3.3 Vendor: Red Hat Software
Release: 1 Build Date: Tue Oct 13 16:08:03 1998
Install date: (not installed) Build Host: porky.redhat.com
Group: Networking / Daemons Source RPM: apache-1.3.3-1.src.rpm
Size: 1980776 License: Freely distributable and usable
Packager    : Red Hat Software
Summary     : Leading World Wide Web server
Description :
Apache is a full featured web server that is freely available, and also
happens to be the most widely used.

Мені інформації достатньо, але іноді буває так, що є необхідність побачити список файлів всередині

bash$ rpm -qpl FTP://sf.irk.ru/......./apache-1.3.3-1.i386.rpm

і отримую

/etc/httpd/conf
/etc/httpd/conf/access.conf
/etc/httpd/conf/httpd.conf
/etc/httpd/conf/magic
/etc/httpd/conf/srm.conf
/etc/httpd/logs
/etc/httpd/modules
...................
/usr/sbin/ab
/usr/sbin/httpd
/usr/sbin/logresolve
/usr/sbin/rotatelogs
/var/cache/httpd
/var/log/httpd

і т.д. (В сенсі іншу інформацію). Знайти інші опції можна або набравши rpm, man rpm або RPM-HOWTO.XXX, є російський переклад в розділі документації на www.linux.org.ru.

Опції: q – query (запит), p – package (пакет), i – information (інформація), l – file list. Все очевидно як у раю.

Зауважу, проте, що якщо ви хочете переглянути інфу про встановлений пакеті, то вам треба прибрати букву p зі списку опцій і задавати тільки ім'я пакету, тобто

bash$ rpm -qi apache

дізнається все про проінталлірованом Апачі.

Тепер розглянемо як дізнатися чи встановлений даний пакет і як перевірити інтегрованість системи.

Спочатку, наприклад ми хочемо дізнатися чи встановлено в нашій системі IceWM.

bash$ rpm -q icewm
icewm-0.9.25-1

Як видно він у мене є IceWM версії 0.9.25, реліз 1. А тепер хочемо дізнатися з якого пакету ми отримали файл mc

bash$ whereis mc
mc: /usr/bin/mc /usr/lib/mc /usr/man/man1/mc.1
bash$ rpm -qf /usr/bin/mc
mc-4.5.3-1

або ще крутіше (зауваження Anton Dzubenko)

bash$ rpm -qf `whereis mc`

Тепер перевіримо чи всі файли Midninght Commanderа в порядку:

bash$ rpm -V mc
Unsatisfied dependencies for mc-4.5.3-1: pam >= 0.59,
/sbin/chkconfig  , ld-linux.so.2, libc.so.6, libgpm.so.1,
libm.so.6, libncurses.so.4, libslang.so.0, /bin/sh,
/usr/bin/perl
S.5....T   /usr/lib/mc/mc.ext

Виходячи з цієї інформації порушені деякі залежності, а саме немає пакету pam, версією більше 0.59, і ряду інших файлів. Це прикро, звичайно, але нещодавно стався збій на моїй машині і загубилася інформація про інстальованих пакетах. Тому на цю інформацію я не звертаю (зараз) великої уваги, а от останній рядок говорить мені про те, що файл / usr / lib / mc / mc.ext з глобальними налаштуваннями був мною модифікований, це повідомляють мені букви S – size (розмір файлу), 5 – MD5 сума (щось на зразок CRC?), T – time (час). Є й інші літери. Якщо з файлом все гаразд (інформація про який збігається з інформацією у ресурсному файлі) то він на екран не виводиться.

Припустимо, що ви комусь одного разу встановили Red Hat Linux, і, раптом, той товариш звертається до вас з проханням дізнатися, що він таке наробив, що машина раптом перестала нормально працювати. У цьому випадку велику допомогу в пошуку його виправлень допоможе команда:

bash$ rpm -Va
Unsatisfied dependencies for tetex-latex-0.9-6: tetex = 0.9, / bin / sh, / bin / sh
.M......   /usr/share/texmf/tex/generic/xypic/xylatex.ini
S.5....T   /usr/share/texmf/web2c/elatex.efmt
S.5....T   /usr/share/texmf/web2c/elatex.log
S.5....T   /usr/share/texmf/web2c/latex.fmt
S.5....T   /usr/share/texmf/web2c/latex.log
S.5....T   /usr/share/texmf/web2c/pdflatex.fmt
S.5....T   /usr/share/texmf/web2c/pdflatex.log
Unsatisfied dependencies for tetex-russian-2.0-6: / bin / sh, tetex> = 0.9, patch
..5.....   /usr/share/texmf/fonts/source/lh/base/lypseudo.mf
..5.....   /usr/share/texmf/fonts/source/lh/base/nodraw.mf
..5.....   /usr/share/texmf/tex/latex/cyrsam/antiqua.fd
..5.....   /usr/bin/gyahtzee
..5.....   /usr/bin/mahjongg
..5.....   /usr/bin/same-gnome
..5..... c /etc/X11/wmconfig/printtool
.M......   /usr/lib/libImlib.so.1
.M......   /usr/lib/libgdk_imlib.so.1

Що ж ви зробили? … А ви перевірили (V – verify) усі (a – all) пакети, встановлені в системі.

Це звичайно не все, що може rpm, але саме основне, чим я, особисто, користуюся.

Тепер кілька слів, як я і обіцяв, про програмках, які працюють з rpm

Midnight Commander – чудова сістемка, дозволяє переглядати. Rpm і. Deb пакети як піддиректорії файлової системи, для цього треба тільки натиснути введення на rpm-пакеті. Зверну увагу лише на ряд віртуальних файлів і тек (вони всі пишуться великими літерами).

glint – Спецпрограммка для X-ів, безпосередньо призначена для управлінням rpmмом. Вона відображає пакети у вигляді ієрархії (як встановлені, так і директорій з невстановленими пакетами). Входить в стандартний дистрибьюшн Red Hat.

purp – Ncursers-ний tty-шний пакет, зручний для видалення непотрібних пакетів не запускаючи X-и. Теж відображає ієрархію.

grpm,gtkrpm – GTK +-ні програмки. Зізнаюся чесно – я їх дивився мигцем. Інформацію про них дивіться на www.gnome.org.

Де і Як шукати ці самі rpm-и?

Якщо вам потрібні стабільні, якісні і, найголовніше, перевірені професіоналами RedHat пакети беріть їх на ftp://contrib.redhat.com, але з 15 січня це буде доступно у ftp://sf.irk.ru, напевно в директорії contrib.

Є на http://rufus.w3.org/linux/RPM просто величезний репозиторій (43Гб). Там же є чудова програмка rpmfind, яка шукає пакети для вас в цьому репозиторії, і навіть завантажує їх для вас у директорій / Tmp. Приклад:

bash$ rpmfind -q -latest icewm

– Знайти останній IceWM.

Крім того rpm-и можна знайти на Home-сайтах проектів, зазвичай по мимо. Tgz виставляються і rpmи.

Питання "Що робити, якщо інформація про встановлені пакетах втрачена?" я залишу відкритим. Порекомендую лише зберігати час від часу файли директорія / var / lib / rpm. А якщо раптом це сталося, то при інсталяції використовуйте опції – nodeps, – replacefiles.

Остання. Якщо у вас налаштована російська локаль, як писав шановний Мультик, то більшу частину повідомлень rpm видає російською І ще, мене дуже здивувало, що GNOME-0.99.X і програма LYX вже русифіковані! Так, що Linux крутеет не тільки для заходу!

Якщо є питання пишіть мені, так як В'ячеслав користується Slackware-3.6, а він, якщо не зробити

bash$ rpm --initdb

RPM-ів не розуміє. (;-)))) Від В'ячеслава)

Так! І ще не забувайте перевіряти букву p в слові rpm, а то можна буде раптово засмутитися.

Ось ще одне. Я найчастіше використовую наступні пакети:

Якщо ви хочете дізнатися моя думка (поки ще чайника) про те що це і як це можна використовувати, напишіть мені і ми подискутуємо на сторінках IrkLUG!

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*