The OpenNET Project
 
Поиск (ключи):    ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
  WIKI НОВОСТИ (+) MAN'ы ДОКУМЕНТАЦИЯ

Скрипт для создания всех пакетов, требуемых по зависимостям, для порта в ОС FreeBSD
По сути, выполняет действия, аналогичные pkg_create с ключём -R, который
появился только в FreeBSD 6.x.
Однако данный скрипт позволяет указывать короткое имя порта и каталог, 
в котором создавать пакеты. А главное, он работает и на тех системах, 
где pkg_create не поддерживает ключ -R.

#!/bin/sh
#
# pkg_depend
# Create all packages (with dependence) needed by some port for FreeBSD 5.x+
#
# Version: 1.4
# Copyright (c) 2005,2006 Alexey Tsvetnov, vorakl@fbsd.kiev.ua
#
 
# Path to packages directory
pkgpath="/usr/ports/packages/All"
 
# Command for get package's version
pkgvercmd="pkg_version -v"
#pkgvercmd="portversion -v"              # more faster than pkg_version
 
getdepend()
{
    [ ! -d $2 ] && echo -n "Creating directory ($2)..." && mkdir -p $2 && echo "Done."
 
    cd ${pkgpath}
    if [ ! -f ${pkgpath}/$1.tbz ]; then
        echo -n "Creating package ($1)..."
        pkg_create -yb $1
        echo "Done."
    fi
 
    echo -n "Copying package ($1)..."
    cp -f ${pkgpath}/$1.tbz $2
    echo "Done."
 
    for LINE in `pkg_info -r $1 | grep Dependency\: | awk '{print $2}'`
    do
        if [ ! -f ${pkgpath}/${LINE}.tbz ]; then
            echo -n "Creating package (${LINE})..."
            pkg_create -yb ${LINE}
            echo "Done."
        fi
        echo -n "Copying package (${LINE})..."
        cp -f ${pkgpath}/${LINE}.tbz $2
        echo "Done."
    done
}
 
gethelp()
{
    echo ""
    echo "Usage: `basename $0` <Full/Short pkg_name> <Directory>"
    echo ""
    echo "If specify short package name script will get first find entry"
    echo ""
    echo "Example: `basename $0` dia-gnome-0.94_4,1 /tmp/pkg/"
    echo "         `basename $0` dia-gnome /tmp/pkg/"
    echo ""
    exit 1
}
 
main()
{
if [ "$2" = "" ]; then gethelp
 else
    echo -n "Checking package name ($1)..."
    if [ "`echo $1 | grep '\-[0-9]'`" = "" ]; then
        pkgname=`${pkgvercmd} | grep -E '^'$1'-[0-9].*' | awk '{print $1}' | head -1`
    else
        pkgname=`${pkgvercmd} | grep $1 | awk '{print $1}' | head -1`
    fi
    echo "Done."
 
    if [ "${pkgname}" = "" ]; then
        echo "Package '$1' not found! Exit."
        exit 2
    else
        getdepend ${pkgname} $2
    fi
fi
}
 
main $1 $2
 
exit 0
 
31.05.2006 , Автор: Alexey Tsvetnov
Раздел:    Корень / Программисту и web-разработчику / Shell / Готовые скрипты

Обсуждение [ RSS ]
 
  • 1.1, grayich, 17:57, 04/06/2006 [ответить] [смотреть все]
  • +/
    http://wiki.bsdportal.ru/doc:sh_scripts
    кое что в дополнение (это скрипт там тоже есть)

     
  • 1.2, butcher, 18:36, 08/06/2006 [ответить] [смотреть все]
  • +/
    а make package-recursive чем плох?
     
  • 1.3, vorakl, 11:14, 09/06/2006 [ответить] [смотреть все]
  • +/
    Потому что перед тем, как make начнёт создавать пакет, произведётся сборка порта.

    Если после сборки порта ранее было выполнено 'make clean', то для 'make package' придётся снова выполнить 'make install'. Надо либо никогда не делать 'make clean' и держать в ветке портов не нужный work, либо пересобирать ВСЕ порты каждый раз... 8)

     
  • 1.4, Павел, 18:38, 21/06/2006 [ответить] [смотреть все]
  • +/
    расскажите плиз, как мне собрать порт в пакадж с нужными мне опциями? не теми что по дефолту, а с нужными...
    спасибо
     
     
  • 2.5, Сергей, 13:43, 22/06/2006 [^] [ответить] [смотреть все]
  • +/
    cd /usr/ports/<каталог>/<имя>
    make КЛЮЧ1=yes КЛЮЧ2=yes -DWITH_КЛЮЧ3 package clean
     
  • 1.6, basil, 14:14, 23/06/2006 [ответить] [смотреть все]  
  • +/
    а нафига ?
    есть пакет в портах - называется portupgrade
    /usr/ports/sysutils/portupgrade
    make install

    [13:14] ffu:/usr/ports ]#portinstall -pir databases/phpmyadmin/

    и получишь в /usr/ports/packages/ все зависимые  тарболы.

     
  • 1.7, Павел, 12:20, 28/07/2006 [ответить] [смотреть все]  
  • +/
    > а нафига ?
    хочу свой дистриб создать... чтоб в нем сразу нужные мне пакаджи были ;)
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:

     Добавить заметку
     Версия для печати
     
     Поиск заметки:
     

    Последние заметки
    - 12.05 Организация шифрованного бэкапа с помощью rdiff-backup, encfs и Dropbox
    - 11.05 Настройка беспроводного соединения в Debian GNU/Linux
    - 07.05 Использование Google Drive в Linux
    - 18.04 Использование нескольких сетевых стеков в Linux
    - 15.04 Восстановление стандартного KDE меню после его удаления (например, wine)
    - 11.04 Настройка gmirror при использовании GPT во FreeBSD 9
    - 09.04 Маршрутизатор на базе FreeBSD с приоритизация трафика средствами PF и ALTQ
    - 02.04 Частичное восстановление данных MySQL из бэкапа, созданного с использованием LVM
    - 21.03 Настройка DNSSEC в BIND 9.9
    - 17.03 Набор номера на Cisco IP Phone 7960/7940 из скрипта
    RSS | Следующие 15 записей >>


    ПОДПИШИСЬ НА ЖУРНАЛ Linux Format 2012!

    Журнал "Linux Format" (Линукс Формат)- Единственный в России и странах СНГ журнал на русском языке, посвящённый Linux и свободному ПО. Журнал для IT-директоров, IT-менеджеров, программистов, системных администраторов, учителей школ и преподавателей ВУЗов и всех пользователей ПК. В каждом выпуске: Новости индустрии OpenSource, обзоры новинок свободного ПО, обучающие и методические статьи.

    Каждый, кто оформит подписку, получает бонусы и подарки- объёмные наклейки на системный блок, диск с архивом номеров за 2005-2011 г.г. и ежемесячно электронную версию журнала в pdf-формате.

    Оформить подписку на год


      Закладки на сайте
      Проследить за страницей
    Created 1996-2012 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    RUNNet TopList