Содержание:


















Управлять пакетами стало просто

Автор: Sheng Bao
Оригинал статьи: Package Management Made Easy
(Июнь 2006 года)
Перевод: Николай Ганенков
Материал статьи доступен на условиях Creative Commons License. (by-nc-sa)

Содержание: Кратко:

Многие считают Linux сложной потому, что управление пакетами программ не такое приметивное, как в Windows. В первое время я тоже пытался найти файл, аналогичный setup.exe. Кроме того, когда я использовал RPM, меня очень пугал "кашмар зависимостей пакетов", когда мне предлагали установить какие-то еще пакеты для того, чтобы соблюсти зависимости. Теперь, благодаря кропотливой работе многих энтузиастов открытого кода, мы можем преддложить способ управления программными пакетами получше, чем стиль CNR (click and run - щелкни и запусти), который используется в Windows. Эта статья познакомит Вас с такими инструментами как YUM и APT-GET, предназначенными для приведение в порядок пакетов с программами и другими инструментами для работы с ними. Также упомянем особенности управления пакетами в различных дистрибутивах.  

Способы распространения программ в Linux

Обычно используют два типа программ для Linux: двоичные исполняемые файлы и скрипты. Небольшие скрипты утанавлить не требуется. Скрипты - это обычные текстовые файлы, предназначенные для интерпретатора, указанного в переменной окружения. Распространение небольших скриптов занятие очень простое: просто копируем их и все. Так что в этой статье под программным обспечением имеются ввиду сложные скрипты и двоичные исполняемые файлы.

Так как большинство программ для Linux с открытыми исходными текстами, они распространяются в виде исходного кода. Обычно исходный код содержится в tar.gz или tar.bz2 вместе со скриптом configure. Скрипт configure предоставляет системе такую информацию, как какие библиотеки и заголовочные файлы необходимы, чтобы скомпилировать программу, чтобы сгенерировать файл Makefile. Затем компилятор преобразует исходный код, основываясь на правилах, определенных в Makefile. Как правило существует install, который копирует созданные файлы в конечную директорию.

Метод исходного кода слишком сложен для начинающего пользователя. Когда я начинал изучать, всегда сталкивался с такими проблемами, как отсутствие библиотек или неправильный путь. А еще начинающие пользователи обычно не знают смысла сообщений об ошибках, и конечно же, у них недостаточно знаний для того, чтобы их исправить. Например, самой большой ошибкой, которую я сделал, было извлечение исходного кода в раздел FAT32, в котором символические ссылки не поддерживаются. К тому же непросто удалить приложение, если нет правила деинсталляции в Makefile и если Вы не указали отдельный каталог, когда создавали конфигурацию, для того, чтобы отделить свои файлы от остальной системы. Из-за всех этих трудностей, иногда создают пакеты, содержащие двоичные файлы для непосредственной установки.

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

Таким образом хочется чего-то такого, что сможет справиться с каждой возникающей проблемой, начиная с аккуратной установки и заканчивая обновлением и удалением пакетов программ. Linux - операционная система, которая жестко ориентирована на сеть. Вам надо только подключить компьютер к Internet. Теперь можно попросить менеджер пакетов все сделать за Вас. YUM и APT-GET позволили мне почувстовать, что управление пакетами в Linux сделано проще, чем в Windows. В этой статье внимание будет сосредоточено больше на использовании YUM для Fedora Core, чем на apt-get, потому что YUM более современный, по сравнению с apt-get, который разрабатывался много лет назад.

Дальше статья организована следующим образом. Во-первых, я объясню понятие хранилище (репозиторий), которое будет часто упоминаться в этой статье. Затем будет большая часть, рассказывающая об использовании YUM в Red Hat/Fedora Core. Я расскажу о трех способах добавления репозитория: Инсталляция rpm-пакетов, которые содержат всю необходимую информацию, Редактирование /etc/yum.conf и импорт GPG-ключа и Создание нового файла в каталоге /etc/yum.repos.d, соответствующего хранилищу и импорт GPG-ключа. Эта часть будет также содержать информацию и о других хранилищах и одополнительных модулях YUM. В конце этой части будут приведены примеры использования YUM. После этого я объясню, как использовать APT-GET в Red Hat/Fedora Core. Существует множество графических интерфейсов для YUM, которые помогут Вам справиться с пакетами. Два из них обсуждаются в GUI для YUM. Далее следует короткий обзор APT-GET для Debian и его аналогов, и в конце демонстрация возможностей Менеджера пакетовSynaptic. , включенного в Fedora Core 5.

   

О репозиториях

Эта статья познакомит Вас с несколькими методами использования инструментов управления пакетами для получения программ из Интернета и управления ими. Место, откуда мы получаем пакеты называется репозиторий. Ваш дистрибутив наверняка предусматривает доступ к некоторым хранилищам. Но они не могут содержать все доступные программы, которые могут работать с Вашим дистрибутивом. Множество энтузиастов хотели бы "упаковать" программку для Вашего дистрибутива. Если хотите использовать такое программное обеспечение, Вы должны добавить такие URL в Ваш список хранилищ. Также, Ваш дистрибутив может иметь множество зеркал. Если хотите увеличить скорость скачивания, Вы должны вручную добавить ближайшее зеркало в список репозиториев.

   

Использование YUM с Red Hat/Fedora Core

Я использовал YUM только с Fedora Core 2, 4 и 5. Этот дистрибутив устанавливает YUM по умолчанию.
Обычно, используют три способа добавления репозитория (хранилища пакетов):

  • Устанавливают rpm-пакет со всей необходимой информацией
  • Редактирование /etc/yum.conf и импорт GPG-ключа
  • Создание нового файла в каталоге /etc/yum.repos.d, соответствующего репозитарию, и импорт его GPG-ключа
  •    

    Устанавливаем rpm-пакет

    Здесь я хочу продемонстрнировать, как добавить два дополнительных широко известных хранилища пакетов freshrpms и linva, используя rpm. Следующие команды применимы только для Fedora Core 5. Если Вы используете другой дистрибутив, обратитесь к ayo.freshrpms.net и rpm.livna.org, чтобы найти rpm-пакет соответствующий Вашему дистрибутиву. Располагаются они по аналогичным адресам.
    Наберите

    rpm -ivh http://ayo.freshrpms.net/fedora/linux/5/i386/RPMS.freshrpms/freshrpms-release-1.1-1.fc.noarch.rpm
    rpm -ivh http://rpm.livna.org/fedora/5/i386/livna-release-5-4.noarch.rpm
    
    Эти команды добавят freshrpms и livna к Вашему списку репозиториев.

       

    Редактирование /etc/yum.conf и импорт GPG-ключа

    Есть несколько других способов добавить YUM-репозитории. Один из них - добавить информацию о репозитории в /etc/yum.conf. Здесь http://svn.rpmforge.net/svn/trunk/rpms/yum/ имеется несколько примеров. Вам нужно добавить информацию об репозитории из этого примера в Ваш /etc/yum.conf.

       

    Создание нового файла в каталоге /etc/yum.repos.d, соответствующего репозитарию и импортирование его GPG-ключа

    Другой способ - создать соответствующие файлы в каталоге /etc/yum.repos.d. На моем компьютере этот каталог содержит следующие файлы:

    [root@orioleQ yum.repos.d]# ls
    dries.repo                      fedora-legacy.repo           livna.repo
    fedora-core.repo                fedora-updates.repo          livna.repo~
    fedora-development.repo         fedora-updates-testing.repo  livna-testing.repo
    fedora-extras-development.repo  freshrpms.repo
    fedora-extras.repo              livna-devel.repo
    

    Давайте в качестве примера возьмем dries.repo. Создадим файл /etc/yum.repos.d/dries.repo
    и заполним его следующими строками:

    [dries]
    name=Extra Fedora rpms dries - $releasever - $basearch
    baseurl=http://ftp.belnet.be/packages/dries.ulyssis.org/fedora/linux/$releasever/$basearch/dries/RPMS/
    enabled=0
    gpgcheck=1
    
    Обратите внимание, что бит "enabled" в этом файле мы установили в "0" (выключено), так что репозитарий dries не будет конфликтовать с репозитарием RPMForge при автоматическом обновлении. Затем импортируем GPG-ключ из репозитария freshrpms.
    rpm --import http://freshrpms.net/packages/RPM-GPG-KEY.txt
    
    И выполняя
    rpm --import http://apt.sw.be/dries/RPM-GPG-KEY.dries.txt
    
    импортируем GPG-ключ для репозитария dries.

       

    Другое

    В мире существует много созданных энтузиастами репозитариев. Просто найдите их и добавьте в свой список репозитариев. Здесь я привожу список некоторых хранилищ пакетов и Вы можете выбрать подходящий источник для своей системы.
    http://dl.atrpms.net/
    http://www.jpackage.org/repos.php
    http://newrpms.sunsite.dk/
    Прочтите инструкцию на этих сайтах, чтобы найти метод, как подключить их. Обычно, Вам будет встречаться файл, который в своем названии содержит строку "RPM-GPG-KEY". Используйте

    rpm --import  the.RPM-GPG-KEY.file
    
    чтобы импортировать GPG-ключ.

       

    Полезные дополнения YUM

    Существует много дополнений, которые могут оптимизировать работу с YUM, такие как yum-utils и yum-fastestmirror.
    Наберите

    yum -y install yum-fastestmirror
    
    и
    yum -y install yum-utils
    
    чтобы их установить. Они помогут Вам работать с YUM, например, находя самое быстрое зеркало.

       

    Применение YUM для установки пакетов

    Устанавливать пакеты при помощи YUM очень просто. Он проверит и установит все, что необходимо. Это пример сообщений оболочки:

    [root@orioleQ yum.repos.d]# yum -y install xine
    Loading "installonlyn" plugin
    Loading "kernel-module" plugin
    Loading "fedorakmod" plugin
    Setting up Install Process
    Setting up repositories
    dries                                                                [1/5]
    updates                                                              [2/5]
    core                                                                 [3/5]
    freshrpms                                                            [4/5]
    extras                                                               [5/5]
    Reading repository metadata in from local files
    Parsing package install arguments
    Resolving Dependencies
    --> Populating transaction set with selected packages. Please wait.
    ---> Downloading header for xine to pack into transaction set.
    xine-0.99.4-4.fc5.rf.i386 100% |=========================|  30 kB    00:01
    ---> Package xine.i386 0:0.99.4-4.fc5.rf set to be updated
    --> Running transaction check
    --> Processing Dependency: libaa.so.1 for package: xine
    --> Processing Dependency: libxine.so.1 for package: xine
    --> Processing Dependency: xine-lib >= 1.0.0 for package: xine
    --> Restarting Dependency Resolution with new changes.
    --> Populating transaction set with selected packages. Please wait.
    ---> Downloading header for xine-lib to pack into transaction set.
    xine-lib-1.1.1-2.fc5.rf.i 100% |=========================|  41 kB    00:03
    ---> Package xine-lib.i386 0:1.1.1-2.fc5.rf set to be updated
    ---> Downloading header for aalib to pack into transaction set.
    ftp://fedora.bu.edu/fedora/extras/5/i386/aalib-1.4.0-0.rc5.7.i386.rpm: [Errno
    4] IOError: [Errno ftp error] timed out
    Trying other mirror.
    aalib-1.4.0-0.rc5.7.i386. 100% |=========================| 5.9 kB    00:00
    ---> Package aalib.i386 0:1.4.0-0.rc5.7 set to be updated
    --> Running transaction check
    --> Processing Dependency: libdvdcss for package: xine-lib
    --> Processing Dependency: libfame-0.9.so.1 for package: xine-lib
    --> Restarting Dependency Resolution with new changes.
    --> Populating transaction set with selected packages. Please wait.
    ---> Downloading header for libdvdcss to pack into transaction set.
    libdvdcss-1.2.9-2.fc5.rf. 100% |=========================| 5.0 kB    00:00
    ---> Package libdvdcss.i386 0:1.2.9-2.fc5.rf set to be updated
    ---> Downloading header for libfame to pack into transaction set.
    libfame-0.9.1-10.fc5.i386 100% |=========================| 5.2 kB    00:00
    ---> Package libfame.i386 0:0.9.1-10.fc5 set to be updated
    --> Running transaction check
    
    Dependencies Resolved
    
    =============================================================================
     Package                 Arch       Version          Repository        Size
    =============================================================================
    Installing:
     xine                    i386       0.99.4-4.fc5.rf  dries             2.3 M
    Installing for dependencies:
     aalib                   i386       1.4.0-0.rc5.7    extras             70 k
     libdvdcss               i386       1.2.9-2.fc5.rf   dries              44 k
     libfame                 i386       0.9.1-10.fc5     freshrpms         226 k
     xine-lib                i386       1.1.1-2.fc5.rf   dries             4.2 M
    
    Transaction Summary
    =============================================================================
    Install      5 Package(s)
    Update       0 Package(s)
    Remove       0 Package(s)
    Total download size: 6.8 M
    Downloading Packages:
    (1/5): xine-lib-1.1.1-2.f 100% |=========================| 4.2 MB    02:49
    (2/5): aalib-1.4.0-0.rc5. 100% |=========================|  70 kB    00:01
    (3/5): libdvdcss-1.2.9-2. 100% |=========================|  44 kB    00:01
    (4/5): libfame-0.9.1-10.f 100% |=========================| 226 kB    00:28
    (5/5): xine-0.99.4-4.fc5. 100% |=========================| 2.3 MB    01:43
    Running Transaction Test
    Finished Transaction Test
    Transaction Test Succeeded
    Running Transaction
      Installing: aalib                        ######################### [1/5]
      Installing: libfame                      ######################### [2/5]
      Installing: libdvdcss                    ######################### [3/5]
      Installing: xine-lib                     ######################### [4/5]
      Installing: xine                         ######################### [5/5]
    
    Installed: xine.i386 0:0.99.4-4.fc5.rf
    Dependency Installed: aalib.i386 0:1.4.0-0.rc5.7 libdvdcss.i386
    0:1.2.9-2.fc5.rf libfame.i386 0:0.9.1-10.fc5 xine-lib.i386 0:1.1.1-2.fc5.rf
    Complete!
    

       

    Использование APT-GET в Red Hat/Fedora Core

    Как известно, APT (advanced package tools) есть хороший менеджер программных пакетов, преимущественно используемый в Debian и онованных на Debian дистрибутивах Linux (Ubuntu например). На своем компьютере я установил и Ubuntu 5.10 и Fedora Core 4, потому что иногда я могу установить программу только при помощи apt-get а иногда я могу установить только rpm-пакет. В самом деле, многие платные программы распростроняются в RPM-формате, такие как NI LabVIEW, и оффициально не поддерживаются в другом виде, так что на работе я использую Fedora Core 4. Но удобства apt-get "соблазняют" меня использовать чаще Ubuntu. Я давно приспособил APT-GET к Fedora Core.

    Существует много мест, откуда можно установить apt-get для дистрибутива RH/FC. Во-первых можно использовать RPM-пакет. Доступен на http://apt.freshrpms.net/. Перейдите в каталог, соответствующий Вашему дистрибутиву и архитектуре CPU. Загрузите все файлы с префиксом "apt-" и установите при помощи команды rpm. В моем случае, я использовал следующие строки.

    rpm -ivh http://ftp.freshrpms.net/pub/fedora/linux/extras/4/i386/apt-0.5.15cnc7-6.fc4.i386.rpm
    rpm -ivh http://ftp.freshrpms.net/pub/fedora/linux/extras/4/i386/apt-devel-0.5.15cnc7-6.fc4.i386.rpm
    

    Затем Вы должны сконфигурировать "apt". Используя редактор, откройте файл /etc/apt/sources.list . Настраиваем этот файл не так, как принято в Debian. В /Интернет существует много apt - ресурсов для Fedora Core. Я продемонстрирую несколько примеров.

    Перейдите на http://svn.rpmforge.net/svn/branches/rpms/matthias/apt/.
    Открываем файл sources.list, соответствующий Вашей архитектуре CPU. Копируем строки, которые соответствуют Вашему дистрибутиву. Разкоментируем их, и вставляем в файл /etc/apt/sources.list. Например, я добавил вот такую строку в свой /etc/apt/sources.list

    rpm http://ayo.freshrpms.net fedora/linux/2/i386 core updates freshrpms
    
    Открываем http://apt.kde-redhat.org/apt/sources.list.
    Копируем строки и добавляем их в свой /etc/apt/sources.list. Затем, для того чтобы обновить список доступных пакетов, выполняем команду "apt-get update".

    Вы можете также поискать в Интернет ресурсы для apt-get, соответствующие Вашей системе и добавить их в свой /etc/apt/sources.list как я описал.

       

    Графический интерфейс YUM

    Здесь я хочу упоминуть два графических интерфейса YUM: kyum и Yumex.
    Для того, чтобы их установить выполните

    yum -y install yumex
    yum -y install kyum
    
    Так как пользоваться ими очень легко - просто щелкаем и применяем - я выкладываю только их скриншоты. Пожалуйста, подключитесь к Интернету, когда будете ипользовать эти программы.

    Kyum:



    YumEx:

       

    Использование apt-get в Debian и его аналогах

    Я не хочу говорить много здесь об этом, так как это очень очень старая тема. В некоторых случаях есть смысл использовать Debian. Так как уже обсуждали, как использовать apt-get в Fedora Core, нет необходимости что-то уточнять дополнительно.

    Только запомните, не запускайте одновременно много apt-пакетов в менеждерах. Иначе Вы получите ошибку, говорящую

    E: Could not get lock /var/lib/dpkg/lock - open (11 Resource temporarily
    unavailable)
    E: Unable to lock the administration directory (/var/lib/dpkg/), is another
    process using it?
    

    В мире существует множество ресурсов для apt-get. Но их скорость различается. Некоторые быстрее, некоторые медленнее. Вам нужно добавить их в свой /etc/apt/sources.list. Как правило предоставляется информация о том, какие строки Вам надо добавить в /etc/apt/sources.list.

       

    Synaptic в Debian/Ubuntu

    APT-GET - хороший инструмент, впервые появившейся в Debian. Но когда хочется просмотреть пакеты по категориям или проверить установлены они или нет, лучше выбрать Synaptic. Когда Вы хотите установить программу, Просто щелкните правой кнопкой мыши по квадратику перед названием программы и выберите "Mark for installation". Для установленных пакетов можно выбрать "mark for reinstall", "mark for removal" или "mark for complete removal". Это скриншоты.
    Пометить для установки:



    Обработка установленного пакета:

       

    Менеджер пакетов Fedora Core 5

    Fedora Core 5 сама по себе предоставляет простой в использовании графический интерфейс Менеджера пакетов. Пользоваться им проще, чем kyum или Yum. Единственное неудобство в том, что можно применить только с Fedora Core 5. Можно просматривать и отбирать по категориям.



    Каждый каталог имеет также дополнительные пакеты. Щелкните по "Optional packages".



    Можно воспользоваться поиском.

     

    Обсуждение

    Я создал страничку со списком ПО, которое я использую в моих исследованиях и учебе. Можете связаться со мной, если у Вас есть новые идеи на эту тему.  

    Благодарности

    I wish to thank the editor, Viktor Horvath, for his careful revision and comments on my draft.
    And thanks to You Xu, who will be a PhD candidate on Computer Science in WUSTL after this summer vacation (2006). He reviewed my draft and gave me many comments.
    I also want to thank Ying Huang, an excellent Chinese young lady majoring in Software Engineering, Nanjing University. She encourages me and lets me feel confident when I encounter difficulties.  

    Коллекция URLs

    Эти ссылки и другие, которые упоминались в этой статье, были работоспособными на момент написания этой статьи (июнь 2006). Возможно некоторые из них теперь не работают.


    Ссылки:




    Rambler's Top100