KAN`ский блог Мысли вслух…
  • Мар
    1

    Обновление портов FreeBSD через cvsup

    Filed under: Без рубрики;

    основа написана Veles

    Если вам ничего не говорят такие слова как «фрибээсдэ», «порты», «компиляция», «конфиги» и так далее — вам совсем не нужно читать эту статью. Если всё же тема FreeBSD вам интересна — прочтите для начала официальное руководство (на русском!)
    Итак, я не буду рассказывать процесс установки «фряхи». Там всё довольно очевидно и у подготовленного человека никаких затруднений не вызовет. Если вызовет — можно почитать в том же руководстве серию статеечек по теме.
    Так вот, допустим, поставили вы себе, или не себе, это чудо. Но ведь система сама по себе лишь платформа для выполнения различных приложений. И скорее всего вам таки нужно установить некоторые программы, да? Как я уже упоминал, программы во FreeBSD ставятся обычно с портов или пакетов. Мы пойдём не самым простым путём, зато самым клёвым — будем собирать софт с портов. И для начала эти самые порты нужно обновить. Небольшое примечание для тех, кто вообще не в теме. Порт — это, грубо говоря, несколько файлов с описаниями и инструкциями вида «что за прога, как её собирать, какие зависимости от других прог» и тому подобное. Сами исходники в портах не хранятся, а скачиваются по запросу с интернета (обычно). А обновлять порты нужно потому, что ссылки меняются, зависимости обновляются, софт развивается и порты должны быть в курсе происходящего. Нам не нужны старые дырявые программы, верно?

    Обновить список и данные о портах

    Я использую последний стабильный на сегодняшний день релиз FreeBSD — 7.1. Но рецепт должен работать и на более старых версиях.
    CVSup — это пакет программного обеспечения для распространения и обновления исходных текстов с основного репозитория CVS на удаленном сервере. Исходные тексты FreeBSD поддерживаются в репозитории CVS на центральной машине разработки в Калифорнии. С помощью CVSup пользователи FreeBSD легко могут поддерживать собственные исходные тексты в актуальном состоянии.
    Вот такую штуку мы сейчас и настроим.
    На сервере не стоит ставить GUI, поэтому если вы уже поставили иксы… то зря вы это сделали, удаляйте 🙂 Ставим с портов саму программу — cvsup-without-gui
    1.cd /usr/ports/net/cvsup-without-gui make install clean
    cvsup тащит за собой немало зависимостей, но они все ей нужны для нормальной работы. После установки копируем файл настроек и редактируем его.
    1.cd /usr/share/examples/cvsup/
    2.cp ports-supfile /usr/local/etc/supfile
    3.cd /usr/local/etc/
    4.ee supfile
    Приведите файл к такому виду:
    1.# cvsup -g -L 2 /usr/local/etc/supfile — именно с помощью такой команды мы будем в дальнейшем обновлять порты
    2.*default host=cvsup7.ru.FreeBSD.org # яндекс
    3.*default base=/usr
    4.*default prefix=/usr
    5.*default release=cvs tag=RELENG_7_2 # у меня такая версия системы, у вас может отличаться
    6.*default delete use-rel-suffix
    7.*default compress
    8.ports-all tag=.
    После всех этих манипуляций — обновляем, наконец, порты:
    1.rehash
    2.cvsup -g -L 2 /usr/local/etc/supfile
    3. cd /usr/ports && make fetchindex
    Первый раз — всегда самый напряжный. Занимает много времени (у меня часа 2) и трафика (не считал, но пару десятков мегабайт — точно). Зато потом процесс будет происходить довольно быстро и безболезненно.
    Перед каждой установкой новой программы набираем
    1.cvsup -g -L 2 /usr/local/etc/supfile

    ждём немного и наслаждаемся свежайшими портами стабильного софта.

     

    Обновить программу

    Чтобы обновить программу, надо зайти в соответствующий ей порт и выполнить следующие шаги (команды):
    # make clean
    # make
    # pkg_delete -f полное_имя_пакета
    # make install
    или:
    # make clean
    # make
    # make deinstall
    # make install

    Обновить все программы

    Но лучше вместо этих действий для обновления программ использовать утилиту portupgrade.
    Для этого необходимо:
    1. установить ее из пакета или порта (/usr/ports/ports-mgmt/portupgrade).
    2. создать базу данных установленных портов командой:
    # pkgdb -F
    (регулярно выполняйте эту команду для обновления базы данных пакетов)
    Обновить определенный пакет можно командой:
    # portupgrade имя_пакета
    с флагом -r, если portupgrade должен отработать все пакеты, которые зависят от указанного, и использовать флаг -R для отработки всех пакетов, от которых зависит указанный пакет. Для использования при установке пакетов, а не портов, укажите флаг -P, а для простой загрузки дистрибутивных файлов без построения или установки чего бы то ни было задайте флаг -F. Имя_пакета — это либо имя пакета с указанием версии, либо имя пакета без указания версии, либо шаблон.
    Командой
    # portupgrade -a
    можно проверить и обновить все инсталлированные программы (эквивалентна команде portupgrade *).
    Приведу еще несколько флагов утилиты portupgrade:
    Флаг -f позволяет принудительно обновить порт даже в том случае, если версия устанавливаемой программы меньше уже установленной или требуется переустановить программу на ту же версию.
    Флаг -N указывает, что надо установить программу, если она еще не установленна. Перед установкой программы все требуемые для нее пакеты будут обновлены.
    Подробнее см. man portupgrade.
    Внимание: не прерывайте работу утилит portupgrade и pkgdb — это может привести к повреждению базы данных пакетов. Если это произошло, воспользуйтесь командой pkgdb -fu.

    # перед обновлением хорошо бы проверить базу данных на ошибки...
    pkgdb -Fa
    # ...и на потерянные зависимости
    pkgdb -L

     

     

    No Comments

Leave a reply

Для отправки комментария вам необходимо авторизоваться.