Новости

Установка і видалення програм в Linux

  1. 1. Управління програмним забезпеченням поставляються у вихідних кодах.
  2. видалення програм
  3. 2. Управління програмним забезпеченням поставляються в бінарному вигляді (читай: в готових пакетах)
  4. 3. Особливості і відмінності використання RPM, dpkg та вихідних текстів
  5. 4. Основні команди управління програмами

Доброго часу, шановні гості мого   блогу www Доброго часу, шановні гості мого блогу www.k-max.name !

У сьогоднішній статті хочу розповісти про основні принципи управління програмним забезпеченням, а так само привести команди, за допомогою яких легко можна встановлювати, видаляти або отримувати інформацію про програми в Linux. Взагалі, в Лінуксі можна виділити 2 способи управління програмним забезпеченням.

1. Управління програмним забезпеченням поставляються у вихідних кодах.

2. Управління програмним забезпеченням поставляються в бінарному вигляді (читай: в готових пакетах)

Ну що ж, почнемо розповідь: Якщо провести аналогію з проприетарной ОС від дрібном'який, то в Лінукс є аналог такого компонента операційної системи, як "Установка / видалення програм", тільки називається він - пакетний менеджер. Пакетний менеджер представляє собою набір інструментів, що виконують функції, схожі з аналогом від Windows. Але є у пакетних менеджерів кардинальні відмінності!

По-перше, в Windows при установці програми, її (програму) потрібно ще знайти, а то і придбати. У Linux все ПО зібрано в одному місці, яке називається репозиторій (він же ріпа, репАзітАрій і ін). Репозиторій є мережеве сховище всього ПЗ, що надається даним дистрибутивом Linux / UNIX.

По-друге, припустимо, Вам потрібно встановити іграшку на ОС Windows, яка вимагає для своєї роботи такий компонент як DirectX. В даному випадку може бути 2 виходи: 1. DirectX вже міститься в дистрибутиві установника, 2. Вам необхідно буде самому знайти даний компонент і встановити. При обох варіантах виникає деякі АЛЕ ... При першому варіанті, можливо, що у вас вже є встановлений DirectX, причому більш нової версії, що йде з грою. В такому випадку може виникнути конфлікт, припустимо, якщо новіший компонент потрібно для іншої гри. В результаті, установка DX старої версії може привести до некоректної роботи гри вимагає більш нову версію DX. (на даний момент це ПЗ не дуже актуально, тому що останні версії установників DX коректно обробляють свою "версійність", спасибі коментатору Новачок). Інший момент "АЛЕ" полягає в тому, що необхідно прикладати зусилля для пошуку даного компонента.

Вищеописаний приклад я навів для того, щоб підвести Вас до висновку, що пакетний менеджер в Linux позбавлений цих недоліків. Будь-яке встановлюється ПО через систему управління пакетами встановлюється разом з іншим ПО, необхідне для роботи встановлюється. Це в Лінукс називається залежностями. І чим досконалішою пакетний менеджер, тим грамотніше і правильніше він відстежує залежності.

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

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

Але повернемося до наших носорогів ... І поставимо собі кілька запитань. Чому б не поставляти ВСЕ програми в пакетах (адже ними так просто управляти)? Чому деякий ПО надається у вихідних кодах, а деякий поставляється в готових пакетах? Відповіді на ці питання - нижче.

Тепер торкнуся програмного забезпечення, що поставляється в вихідних кодах. Для яких цілей може знадобитися встановлювати / компілювати програму з вихідних кодів:

  1. Вам потрібно програма, яка не входить в ваш дистрибутив (точніше в репозиторій Вашого дистрибутива).
  2. Вам потрібна програма, яка доступна тільки у вигляді вихідних текстів.
  3. Вам потрібна якась функція програми, яка може бути включена тільки після перекомпіляції програми з вихідних текстів.
  4. Ви хочете дізнатися про те як програма працює або взяти участь в її розробці.
  5. Можливі, звичайно, й інші причини

1. Управління програмним забезпеченням поставляються у вихідних кодах.

  • установка програм

Управління програмним забезпеченням у вигляді вихідних кодів на всіх дистрибутивах практично не відрізняється і це управління можна привести до наступної послідовності дій:

  1. Ви завантажуєте пакет з вихідними текстами / кодами. Швидше за все це буде пакет у вигляді архіву (* .tar.gz або * .tar.bz2 або ін.). Завантаження архіву буде відбуватися, швидше за все, командою wget http: //адрес.ру/путь/к/архіву.tar.gz.
  2. Скачаний архів необхідно розпакувати, як і будь-який архів, швидше за все, командою tar -xvzf архів.tar.gz . Архів розпакується в підкаталог з ім'ям архів (без .tar.gz). До цієї підпапку можна перейти командою cd архів . Розпаковані вихідні рекомендується зберігати в каталозі / usr / src /.
  3. Далі необхідно встановити викачане програмне забезпечення. Тут є 2 шляхи:
    1. Якщо ви знаєте, що встановлюєте і як воно встановлюється, то робите установку.
    2. Якщо Ви перший раз скачали пакет з сорци (кодами), то необхідно прочитати документацію про що встановлюється програмному забезпеченні. З наданих пакетом завжди йдуть файли README, INSTALL або аналогічні, в яких описано порядок встановлення даного пакунку. У загальному випадку, установка програм з вихідних зводиться до введення наступних команд: ./configure make make install

Команда ./configure може виконуватися з різними параметрами, в залежності від встановленого ПО. При виконанні команди з параметрами можуть задаватися будь-які характеристики та особливості компилируемого коду. Весь список параметрів в с описом можна знайти, як вже зазначалося вище, в файлах README, INSTALL або аналогічних, а так же, виконавши команду з параметром --help. Після запуску configure зазвичай ви бачите повідомлення, що розповідають про тип використовуваної вами системи і про те, які необхідні інструменти встановлені, а які ні.

По завершенні виконання скрипта configure, він зберігає інформацію про конфігурацію в файлі з назвою config.cache, розташованому в тому ж каталозі, що і сам скрипт configure.

Якщо вам необхідно запустити ./configure знову, то переконаєтеся, що колись ви видалили файл config.cache, оскільки configure буде використовувати налаштування з config.cache, якщо він існує, не роблячи повторної перевірки вашої системи.

Якщо все йде добре, то до кінця процесу конфігурації ви повинні отримати створений Makefile. Він називається складальний файл проекту, програма з ім'ям make використовується для його обробки і збірки програми. Make-файл містить правила, є інструкціями, які повідомляють програмі make як збирати різні компоненти програми.

make install встановлює скомпільовану програму. Фактично, проводиться копіювання необхідних файлів в потрібні каталоги. Якщо ви робите установку в / usr / local, то вам можуть знадобитися права суперкористувача (root).

Примітка
Для запуску make і make install необхідний встановлений компілятор. (пакет gcc)
В Debian разом з gcc необхідно встановити ще деякі пакети. Щоб не запам'ятовувати їх все, можна встановити просто пакет build-essential.

Існують два різновиди програм, зібраних з початкових кодів: використовують статичну компонування і використовують динамічну компоновку. Статична компоновка відрізняється від динамічної тим, що при складанні програми зі динамічної компонуванням використовуються функції поділюваних бібліотек, а при статичної компонуванні використовується власний примірник бібліотек. Переглянути список поділюваних бібліотек, від яких залежить виконуваний файл можна командою ldd . При складанні програм використовують бібліотеки обміну такими даними, до неї додається ділянку коду, що викликає при запуску програми динамічний компонувальник ld.so (/ usr / bin / ld), який шукає необхідні бібліотеки і підставляє функції бібліотек до програми (каталоги пошуку бібліотек задані конфігураційним файлом /etc/ld.so.conf ).

  • видалення програм

Для коректного видалення програм, встановлених з вихідних текстів, є кілька способів:

  1. ручне видалення всього, що встановила програма make install
  2. виконання команди make uninstall в каталозі з вихідними кодами програми. Тут є нюанс - не завжди розробники мають на увазі параметр uninstall для команди make, тому повертаємося до першого пункту.

В цілому, щоб не було проблем з видаленням програми, її рекомендують конфігурувати з ключем --prefix = / шлях / установки, наприклад ./configure --prefix = / usr / local / apache. Якщо, звичайно, скрипт configure підтримує даний ключ.

У загальних рисах, це була інформація про встановлення програмного забезпечення з вихідних кодів. Тепер поговоримо про бінарних пакетах ...

2. Управління програмним забезпеченням поставляються в бінарному вигляді (читай: в готових пакетах)

У Linux існує кілька різновидів систем управління пакетів. Основні з них іменуються як RPM, dpkg та Portage. Існують і інші різновиди пакетних менеджерів, але на мою думку, вони не мають великого поширення. Як вже зазначалося вище, призначення пакетного менеджера (системи управління пакетами), це: управляти процесом установки, видалення, налаштування та оновлення різних компонентів програмного забезпечення.

Отже, розповім детальніше про кожного різновиду. RPM розроблена компанією Red Hat, застосовується в більшій частині в дистрибутивах, утворених від Red Hat Linux і використовується для управління пакетами * .rpm. Система керування пакунками dpkg (Debian Package) розроблена засновником дистрибутива Debian - Яном Мердоком, застосовується в дистрибутиві Debian та інших, похідних від Debian, dpkg управляє пакетами в форматі * .deb. Система Portage використовується в дистрибутивах Gentoo. Програмне забезпечення в Gentoo поставляється у вигляді декількох файлів ...

Пакетні менеджери не вміють автоматично дозволяти залежності в встановлюваних пакетах. Системи пакетних менеджерів лише відстежують залежності. Слово "вирішувати" думаю, добре буде зрозуміло на прикладі. Наприклад, при установці будь-якого пакету rpm, залежить від іншого пакета, пакетний менеджер лише повідомить, що для поточного пакета потребуватиме ще інший, але не запропонує автоматично його встановити. Для автоматичного залежності не будуть задоволені існують, так скажемо, "надбудови" для пакетних менеджерів, які автоматизують відстеження версій ПЗ, відстеження і дозвіл залежностей між пакетами (тобто на прикладі вище, дана надбудова запропонує автоматично встановити відсутні пакети).

Для rpm існують такі утиліти:

  • apt-rpm, порт APT, спочатку виконаний Conectiva, потім істотно доопрацьований ALT Linux Team і продовжує розвиватися
  • apt4rpm, порт APT Debian. Рекомендується для використання з деякими репозиторіями Fedora Core. Майже не розробляється, але витрачає менше ресурсів процесора, ніж ті кошти, які перераховані вище. Пізніший проект, ніж apt-rpm.
  • smart, доступний для багатьох дистрибутивів
  • urpmi, використовується в Mandriva Linux
  • YaST, використовується в SuSE
  • yum, розроблений в Yellow Dog Linux, також використовується в Fedora Core і ASP Linux

Для dpkg, переважно:

3. Особливості і відмінності використання RPM, dpkg та вихідних текстів

Як і RPM, так і dpkg можливо встановити і на RedHat і на Deb - дистрибутиви, але на мою думку, це рівносильно принципом кругле - носимо, квадратне - катаємо. І dpkg та RPM дуже схожі за своїм принципом роботи, але все ж в них є дещо які відмінності, наприклад: при установці пакету rpm не встановлює пакет, поки не будуть вирішені всі залежності, deb - встановлює, але каже, що пакет встановлений, але працювати не буде, поки не будуть встановлені всі залежності.

Будь пакетний менеджер зберігає інформацію про залежності пакетів в своїй базі (наприклад RPM - в / Var / lib / rpm ), Відповідно, якщо якесь ПЗ було встановлене НЕ з пакетного менеджера, то інформації про нього немає в базі даних, відповідно, при установці пакету, який (пакет) залежить від ПО встановленого, наприклад, з вихідних кодів, буде видана помилка про відсутності залежного пакета (хоча він встановлений). Для вирішення даної проблеми необхідно використовувати ключ --nodeps, який відключає відстеження залежностей (актуально для RPM).

У загальному випадку я б порадив користуватися АБО пакетним менеджером і відповідними інструментами АБО збирати все ПО з початкових кодів. Але другий варіант, на мою думку, розумна тільки при використанні строго обмеженого набору програм на сервері, інакше, оновлення з вихідних стане основною розвагою для системного адміністратора, тому що на інші завдання просто не залишиться часу.

4. Основні команди управління програмами

Команди управління програмним забезпеченням наведені в статті основні команди Linux .

Тепер опишу короткий список команд по роботі з пакетними менеджерами:

dpkgrpm

Установка пакета dpkg -i Імя_deb_Пакета
або
apt-get install Імя_deb_Пакета
-s - симуляція установки rpm -ivh путь.к.пакету
-v - відображення повідомлень під час активного
-e - перевстановлення (видалення перед установкою)
--force - примусова установка (без залежності не будуть задоволені)
--nodeps - Чи не виконувати перевірку залежностей перед установкою або оновленням пакета. Оновлення RPM пакетів rpm -Uvh Имя_Пакета Видалення пакета dpkg -r Имя_Пакета
або
apt-get remove Имя_Пакета rpm -e Имя_Пакета Інформація про пакет dpkg -s Имя_Пакета rpm -q Имя_Пакета - коротка інформація про пакет Имя_Пакета
-qi - повне інфо про пакет Имя_Пакета Список файлів в пакеті dpkg -L Имя_Пакета rpm -ql Имя_Пакета Який пакет містить файл dpkg -S / шлях / до / файлу Список встановлених пакетів dpkg -l [маска] rpm -qa Пошук пакетів apt-cache search ім'я Вимоги до встановлюваного пакету rpm -qR Имя_Пакета Цілісність пакетів rpm --checksig Имя_Пакета
rpm -V Имя_Пакета - цілісність встановленого пакета

На сьогодні все, більш повний список команд тут . До нової зустрічі!

upd 2011.02.03: переробка статті, доповнення 3 і 4 розділу
upd 2012.06.08: додаток 1 розділу (інформація про видалення ПО)

З повагою, Mc.Sim!

Інші матеріали в категорії Linux

Чому б не поставляти ВСЕ програми в пакетах (адже ними так просто управляти)?
Чому деякий ПО надається у вихідних кодах, а деякий поставляється в готових пакетах?

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

Или позвоните нам по телефонам: (048) 823-25-64

Организация (обязательно) *

Адрес доставки

Объем

Как с вами связаться:

Имя

Телефон (обязательно) *

Мобильный телефон

Ваш E-Mail

Дополнительная информация: