Методы инсталляции и обновления программного обеспечения под openSuSE 10.3

  • Идея написания этого коротенького обзора, для самых, что называется, "новичков", делающих свои первые шаги в openSuSE, послужили на мой взгляд не совсем верные приоритеты, которые ставят перед собой некоторые, в выборе дистрибутива. Выбирать дистрибутив по наличию определённого браузера или красивых обоев для рабочего стола, несерьёзно!
    Одним из важных критериев в выборе дистрибутива является менеджер пакетов. Высокое качество которого позволяет сэкономить не только массу времени, но и нервы. К примеру"Mandriva", быстрый, радующий хорошей поддержкой железа дистрибутив. Но встроенный менеджер пакетов совсем никудышный, несмотря на всю его красочность.



    openSuSE поддерживает следующие менеджеры пакетов:

    • YAST - менеджер пакетов, работающий в графическом и в текстовом режиме //надёжный, но сравнительно медленный Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.
    • ZYPPER - простой консольный менеджер пакетов //немного быстрей, чем YASTПожалуйста зарегистрируйся для просмотра данной ссылки на страницу. Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.
    • SMART - менеджер пакетов, работающий в графическом и в текстовом режиме //поддерживает deb, Slackware, yum, APT, Urpm, rpm, не совсем надёжных, но очень быстрый Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.
    • APT-RPM - консольный менеджер пакетов, портирован из Debian //ещё пока сыроват, но быстрый Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.
    • Yum - менеджер пакетов, работающий в графическом и в текстовом режиме, схож с APT-RPM //имеет собственный shell, значительно ускоряющий обращение с нимПожалуйста зарегистрируйся для просмотра данной ссылки на страницу.
    • RPM - консольный менеджер пакетов //позволяет создавать RPM пакеты Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.


    Как видите, для каждого найдётся что-нибудь. Любой, из перечисленных выше менеджер пакетов, устанавливается через YAST. Если вам не так часто требуется что-нибудь инсталлировать, рекомендую YAST, для более частого использования SMART.



    Работаем с YAST & ZYPPER


    Например, для того, чтобы установить менеджер пакетов SMART нужно:


    • добавить в YAST репозиторий с пакетами для SMART: sudo zypper ar -t YUM Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу. Smart
    • заинсталлировать SMART: sudo zypper in smart


    • К сообщению подвесил список с различными репозиториями.


    Ещё один пример, обновляем Firefox и Thunderbird :

    • добавить в YAST репозиторий с пакетами для Mozilla: sudo zypper ar -t YUM Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу. Mozilla
    • обновить все репозитории: sudo zypper refresh
    • запросить список обновлений для Mozilla: sudo zypper lu --type package --repo Mozilla
    • если есть обновления, обновить: sudo zypper up --type package --repo Mozilla



    Обновить всю систему:
    sudo zypper up --type package


    • Или произвести обновление через графическую оболочку YAST, не так быстро, зато очень удобно.



    Работаем с SMART

    • Для начала добавим репозитории: sudo smart channel --add Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.
    • Импортируем GPG ключики:
      Исходный код
      su -c "cd /tmp && wget http://linuxhilfe.org/smart-channel/gpg.keys && chmod +x gpg.keys && ./gpg.keys"


    • Если вдруг возникнут проблемы с ключами, то:

      Исходный код
      отключить проверку сертификатов: smart config --set rpm-check-signatures=false
      включить проверку сертификатов : smart config --set rpm-check-signatures=true


      Основные команды:

    • очистить базу от всех репозиториев: smart channel -y --remove-all
    • перестроить базу пакетов: rpm -- rebuilddb
    • инсталл.пакет при помощи SMART: smart install желаемый_пакет
    • удалить пакет при помощи SMART: smart remove желаемый_пакет
    • Запустить в графическом режиме: smart --gui
    • обновить все репозитории: smart update
    • найти пакет "kmplayer": smart search kmplayer
    • обновить пакет "kmplayer": smart upgrade kmplayer
    • обновить все пакеты: smart upgrade //советую использовать YAST



    Чрезмерно не увлекайтесь обновлениями. Каждый день в репозиториях появляется огромное количество обновлений. В большинстве которых абсолютно нет нужды.

    Файлы

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

    Под openSUSE 10.3 имеются 2 вида банков данных для управления пакетами:

    • Zypp - базируется на SQLITE-базе данных => /var/cache/zypp/zypp.db
    • RPM - база данных => /var/lib/rpm/



    Внутренняя дефрагментация

    • SQLITE - база данных подчищается командой "vacuum" : sqlite3 /var/cache/zypp/zypp.db vacuum //для "zypp"
    • Или создаётся заново командой: rm /var/cache/zypp/zypp.db ; zypper refresh


    • RPM - база данных создаётся заново командой: rpm -- rebuilddb //довольно долгий процесс



    Внешняя дефрагментация


    Хотя файловые системы Linux пытаются не производить сильной фрагментации, но постоянный прирост данных, и её увеличение, всё же ведёт к образованию фрагментарности.


    Лучший метод избавится от фрагментации - это заново создать базу данных:

    • Для Zypp - базы данных:
      * Стереть базу данных и создать заново: rm /var/cache/zypp/zypp.db && zypper refresh
      * Или применить следующий набор команд

      Исходный код
      cp -p /var/cache/zypp/zypp.db  /var/cache/zypp/zypp.db.new  //проверит на наличие ошибок
      rm /var/cache/zypp/zypp.db //стереть файл
      mv /var/cache/zypp/zypp.db.new  /var/cache/zypp/zypp.db //переименовать


    • Для RPM - базы данных:

      Исходный код
      cp -p /var/lib/rpm/Packages /var/lib/rpm/Packages.new && rm /var/lib/rpm/Packages && mv /var/lib/rpm/Packages.new /var/lib/rpm/Packages 
      cp -p /var/lib/rpm/Filemd5s /var/lib/rpm/Filemd5s.new && rm /var/lib/rpm/Filemd5s && mv /var/lib/rpm/Filemd5s.new /var/lib/rpm/Filemd5s
      cp -p /var/lib/rpm/Dirnames /var/lib/rpm/Dirnamess.new && rm /var/lib/rpm/Dirnames && mv /var/lib/rpm/Dirnames.new /var/lib/rpm/Dirnames
      cp -p /var/lib/rpm/Basenames /var/lib/rpm/Basenames.new && rm /var/lib/rpm/Basenames && mv /var/lib/rpm/Basenames.new /var/lib/rpm/Basenames




    Пример создания и использования скрипта для дефрагментации базы данных

    • su //как root
    • vim /root/.bashrc//редактировать .bashrc
    • Добавить следующий код


    • . /root/.bashrc //перезагрузить .bashrc
    • defrag//запустить деграгментацию (довольно долгий процесс)


    Источник:

    Исходный код
    http://de.opensuse.org/SDB:Paketverwaltungsstapelspeicher_beschleunigen
  • Частенько приходится что нибудь устанавливать из исходных текстов. Правда, установленные таким методом программы обычно не отображаются в менеджере пакетов, затрудняя тем самым обращение с ними.


    Существуют несколько методов удаления таких программ:

    • Вручную //долгий процесс
    • make uninstall //требует сохранившегося MAKEFILES программы
    • checkinstall //программа удаляется через менеджер пакетов


    Вручную:
    Никогда точно не знаешь, какие именно файлы пренадлежат данной программе, можно много лишнего удалить. Существует также возможность запротоколировать инсталляцию "make install > make.log". Выфильтровать же правильную информацию из такого протокола в ручную, довольно сложно. Поэтому существуют специально заточенные на такие протоколы скрипты, которые автоматизируют данный процесс.

    make uninstall:

    Некоторые программы предлагают такую фичу, но увы, далеко не все. Достаточно сохранить созданный при конфигурации "MAKEFILES". И при удалении программы воспользоваться им. Метод очень удобный, и не оставляет после удаления программы мусора.

    checkinstall

    Это своеобразный скрип, протоколирующий при инсталляции программы все привнесённые в систему изменения, и автоматически создающий из исходников РПМ-Пакет, со внесением всей нужной для удаления пакета информации в базу данных менеджера пакетов. Другими словами, удалить программу можно воспользовавшись любым менеджером пакетов: smart remove paket; zypper remove paket; rpm -e paket, ...




    Инсталляция программы:


    "sudo zypper in checkinstall" или по быстрому "sudo smart install checkinstall"
    Если менеджер пакетов не найдёт такого пакета, то добавьте следующий депозитор:
    sudo zypper ar -t YUM Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу. Opensuse 10.3 OSS Repository


    Или произвести инсталляцию на прямую:
    sudo rpm -ihv Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.


    Использование программы:

    • wget Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.#скачать исходники
    • tar xfvz программа.tar.gz#распаковать
    • cd /папка с программой
    • ./configure #создать MAKEFILE
    • make #скомпилировать программу
    • su #как root
    • checkinstall --fstrans=no #заинсталлировать программу


    При инсталляции последуют три вопроса, нужные checkinstall для создания RPM-пакета. В конце инсталляции checkinstall укажет место нахождения RPM-пакета. Который по желанию можете отправить создателю программы, облегчив тем самым инсталляцию другим пользователям.


    Ошибки:
    Иногда по непонятным причинам checkinstall прерывает инсталляцию. Происходит это зачастую из за того, что checkinstall не может создать новые файлы. Достаточно запустить сначала "make install" и лишь затем checkinstall и больше ни каких проблем у checkinstall не возникает. Также можно воспользоватся параметром --fstrans=no отключающем создание виртуальной файловой системы "file translation code". Которая создаётся только для того, чтобы не затрагивать существующую файловую систему при инсталляции.