The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Сборка бинарных пакетов для PC-BSD (bsd gui desktop packet build)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: bsd, gui, desktop, packet, build,  (найти похожие документы)
From: Михаил Сгибнев <mixa(@).dreamcatcher.ru> Date: 2006-09-13 15:59:35 Subject: Сборка бинарных пакетов для PC-BSD
by Dru Lavigne
01/05/2006
Original

Перевод: Сгибнев Михаил

FreeBSD начала все больше и больше привлекать внимание пользователей в качестве операционной системы для рабочих станций. В последние годы появилось несколько ОС, базирующихся на FreeBSD, позволяющих неквалифицированному пользователю установить систему, настроить звук, сеть и необходимые приложения. В дополнение к легкости использования, пользователь получает безопасность и стабильность, свойственную всем BSD системам, отсутствие какой-либо платы и преимущества BSD license.

Одним из таких проектов является PC-BSD, который предоставляет две отличительные особенности, делающие его сильным игроком на рынке настолькых систем. Первый - это Online Update Manager, позволяющий пользователю одним щелчком мыши задавать расписание или проверять в ручном режиме доступность обновлений системы и приложений. В случае наличия обновлений, они загружаются и устанавливаются, делая это процесс легким и незамысловатым.

Второй особенностью является наличие GUI инсталлятора. В то время, как опытные пользователи могут работать с системой портов FreeBSD и прекомпилированными пакетами, обычные люди могут скачать PBI (пакет PC-BSD) из каталога приложений PBI, дважды щелкнуть на нем и приложение будет установлено как по волшебству.

Преимущество PBI заключается в самодостаточности. Это значит, что пользователь случайно не перезапишет существующие библиотеки или файлы, устанавливая или удаляя приложения.

В этой статье показано, как создать ваш собственный PBI, используя в качестве примера Digikam, поскольку это приложение содержит довольно много зависимостей. Хотя, среднее PBI будет значительно проще, я хотела бы показать те подводные камни, с которыми вам предстоит столкнуться.

Хотя вряд ли случайные пользователи будут собирать PBI, быть программистом для этого совсем не обязательно. Если у вас есть некоторые навыки работы в Unix, вам нравится коллекция портов FreeBSD и вы обладаете достаточным количеством настойчивости и упорства то легко можете создать ваш первый PBI в течение дня. В данной статье мы предполагаем, что вы работаете в PC-BSD.

Шаг 1: Создаем рабочую область

Начните с поиска на http://www.pbidir.com, чтобы удостовериться в отсутствии уже собранного PBI. Так же удостоверьтесь, что необходимый пакет FreeBSD имеется в каталоге пакетов FreeBSD.

Обратите внимание на то, что на момент написания статьи 6.0-RELEASE только вышла и для нее не было достаточного количества пакетов в 6.0-RELEASE/packages/. Я рекомендую обратиться сначала туда, поскольку там находятся более новые версии пакетов, в случае неудачи, используйте 5.4-RELEASE/packages/.

Затем создайте каталог приложения в вашем домашнем каталоге, при этом необходимо иметь права суперпользователя:
    
    % pwd
    /home/dru
    % su
    Password:
    
    # mkdir -p pbi/digikam
    # cd pbi/digikam
    
    

Шаг 2: Скачиваем пакет FreeBSD и необходимые библиотеки

Получаем пакет:
    
    # fetch ftp.freebsd.org/pub/FreeBSD/releases/i386/5.4-RELEASE/packages/graphics/digikam-0.7.2.tbz
    
    
Затем, устанавливаем пакет, чтобы удостовериться, что не имеем неразрешенных зависимостей. Если вы получите сообщение об ошибке, доустановите требуемые зависимости:
    
    # pkg_add digikam-0.7.2.tbz
    pkg_add: could not find package libltdl-1.5.10 !
    pkg_add: could not find package libexif-0.6.10 !
    
    
    # fetch ftp.freebsd.org/pub/FreeBSD/releases/i386/5.4-RELEASE/packages/All/libltdl-1.5.10.tbz
    # fetch ftp.freebsd.org/pub/FreeBSD/releases/i386/5.4-RELEASE/packages/All/libexif-0.6.10.tbz
    
    
    
Снова делаем попытку установки пакета:
    
    # pkg_add digikam-0.7.2.tbz
    
    
Не волнуйтесь, если получите предупреждение о несоответствии версий некоторых библиотек. Вы можете проверить успешность установки следующей командой:
    
    # pkg_info | grep digikam
    digikam-0.7.2    Photo album manager for KDE with gphoto2 backend
    
    

Шаг 3: Подготовка пакета и сценария установки/удаления

Для начала, распакуем пакет:
    
    # bunzip2 *.tbz
    
    
Таким образом, распакуем все пакеты, удалив оригиналы:
    
    # tar xvf digikam-0.7.2.tbz && rm digikam-0.7.2.tbz
    # tar xvf libltdl-1.5.10.tbz && rm libltdl-1.5.10.tbz
    
    
    
Обратите внимание на то, что в результате этих действий было создано несколько каталогов, один из которых bin/. PBI, который вы создаете, будет сжатым снимком этого каталога. В остальной части статьи мы рассмотрим, как поместить в него все необходимое.

Создадим новый тарбалл, называющийся base_changes.tar, содержащий все, за исключением bin/:
    
    # tar cv --exclude bin -f bin/base_changes.tar .
    
    
Создаем сценарий установки и делаем его исполняемым:
    
    # vi bin/PBI.SetupScript.sh
    #!/bin/sh
    cd /usr/local/MyPrograms/$1
    tar xvjpf base_changes.tar
    rm base_changes.tar
    
    # chmod +x bin/PBI.SetupScript.sh
    
    
Аналогично со сценарием удаления PBI:
    
    # vi bin/PBI.RemoveScript.sh
    #!/bin/sh
    cd /usr/local/MyPrograms
    rm -Rf $1
    
    # chmod +x bin/PBI.RemoveScript.sh
    
    
Обратите внимание на то, что во время установки PBI все необходимое (base_changes.tar) распаковывается в /usr/local/MyPrograms/$1, где $1 означает имя PBI. При деинсталляции PBI этот каталог удаляется.

Поскольку вы можете использовать эти сценарии с любым PBI, то не стоит удалять их, лично я сохраняю копию в моем каталоге pbi/.
    
    # cp bin/PBI.* ~dru/pbi
    
    

Шаг 4: Копирование библиотек

Создаем подкаталог lib/ в каталоге bin/:
    
    # pwd
    /home/dru/pbi/digikam/bin
    # mkdir lib
    
    
Если приложение не самое простое, то может быть довольно большое число библиотек, которые необходимо будет разместить в lib/. ldd даст вам их имена, но процесс необходимо автоматизировать. Поскольку этот сценарий пригодится вам еще не раз, сохраните его в ~user_account/pbi/.
    
    # more ~dru/pbi/lib.sh
    
    --- Cut here ---
    
    #!/bin/sh
    
    # this script requires you to input the name of an executable 
    # which is referred to as $1 in the script
    
    # copy the output of ldd into a file
    # ldd gives the paths to required libraries
    
    ldd $1 > $1_lib.sh
    
    # these statements clean up the output of ldd
    # and transforms it into a series of "cp path lib" statements
    
    cat $1_lib.sh | cut -d = -f 2 | cut -d '(' -f 1 > $1_tmp1
    sed 's/\>/cp/g' $1_tmp1 > $1_tmp2 ; mv $1_tmp2 $1_tmp1
    sed 's/$/ lib/g' $1_tmp1 > $1_tmp2 ; mv $1_tmp2 $1_lib.sh
    
    # this transforms the first non-path line
    # into a shebang
    
    sed 's/.*\:.*/\#\!\/bin\/sh/'g $1_lib.sh > $1_tmp1 ; mv $1_tmp1 $1_lib.sh
    
    # this makes the resulting file executable
    
    chmod +x $1_lib.sh
    
    echo "Run the script $1_lib.sh to copy the required libraries"
    
    --- Cut here ---
    
    
Не забудьте сделать этот сценарий выполняемым:
    
    # chmod +x ~dru/pbi/lib.sh
    
    
В качестве параметра сценарий берет имя бинарного файла:
    
    # pwd
    /home/dru/pbi/digikam/bin
    # file * | grep LSB
    dcraw:  ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), for 
        FreeBSD 5.3-CURRENT (rev 5), dynamically linked (uses shared libs), 
        stripped
    digikam: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), for 
         FreeBSD 5.3-CURRENT (rev 5), dynamically linked (uses shared libs), 
        stripped
    
    
    
Наш проект содержит 38 исполняемых файлов, что потребует соответствующее число раз запустить lib.sh. Сценарий lib.sh создает еще один сценарий, копирующий необходимые библиотеки, поэтому порядок действий представляется следующий:
    
    # ~dru/pbi/lib.sh dcraw
    Run the script dcraw_lib.sh to copy the required libraries
    # ./dcraw_lib.sh && rm dcraw_lib.sh
    
    # ~dru/pbi/lib.sh digikam
    Run the script dcraw_lib.sh to copy the required libraries
    # ./digikam_lib.sh && rm digikam_lib.sh
    
    
    
    
После того, как закончите этот увлекательный процесс, обратите внимание на каталог lib/:
    
    # ls lib | wc
        79   79   1055
    
    
Таким образом, собралось 79 библиотек.

Затем проверьте, имеются ли какие-либо подкаталоги в lib/:
    
    # ls -F ~dru/pbi/digikam/lib | grep "/"
    gphoto2/
    gphoto2_port/
    imlib2/
    kde3/
    
    
Переносим их в bin/lib/:
    
    # pwd
    /home/dru/pbi/digikam/bin/lib
    # mkdir gphoto2 gphoto2_port imlib2 kde3
    # cp -R ~dru/pbi/digikam/lib/gphoto2/* gphoto2
    # cp -R ~dru/pbi/digikam/lib/gphoto2_port/* gphoto2_port
    # cp -R ~dru/pbi/digikam/lib/imlib2/* imlib2
    # cp -R ~dru/pbi/digikam/lib/kde3/* kde3
    
    

Шаг 5: Ищем иконку и очищаем bin/

Было бы здорово добавить к вашему PBI иконку. Проверьте, есть ли она в вашем пакете:
    
    # grep -w icons ../+CONTENTS
    share/apps/digikam/icons/hicolor/32x32/actions/addimagefolder.png
    
    
    
Этот пакет определенно шел со многими иконками, и это - та, которую я ищу:
    
    # cp ../share/icons/crystalsvg/128x128/apps/digikam.png .
    
    
Если ваш пакет не имеет никаких иконок в своем составе, выберите себе любой из каталога /usr/local/share/icons/crystalsvg/128x128/ и копируйте его в bin/.

Когда вы закончите, удалите пакет со всеми зависимостями, чтобы они не мешали нам при проверке PBI:
    
    # pkg_delete -rx digikam
    
    
Еще раз проверьте каталог bin/ и убедитесь в том, что он содержит только архив base_changes.tar, сценарии установки/удаления, бинарные файлы и каталог lib/:

Шаг 6: Создаем PBI

PC-BSD предоставляет графический инструментарий для создания PBI - Package Creator. Он преобразует содержимое каталога bin/ в PBI. Для установки Package Creator просто дважды щелкните на скачанном файле. По умолчанию, он разместит иконку на рабочем столе и сделает запись в меню Programs.

Запустите Package Creator и на первом экране введите описание пакета:
    
    Package Name:        Digikam
    Package Version:    -0.7.2
    Author:            Dru Lavigne
    Website:        http://www.theopensourceadvocate.org/
    
    
На следующем экране можно установить значение "No" для экрана отображения лицензии, если PBI не требует обратного.

На следующем экране укажите расположение каталога bin/:
    
    /home/dru/pbi/digikam/bin/
    
    
В разделе Library Support выберите пункт Specify Library Directory, щелкните на кнопке Browse и дважды кликните на lib/. На следующем экране выберите пункт Default Program Icon и укажите расположение иконки PNG.

Нажмите Add в пункте Package Executables и укажите имя программы. Щелчок на кнопке Browse в пункте Package Executables позволит выбрать программу (в данном примере digikam).

Некоторые программы (например Ethereal) требуют права суперпользователя для запуска. Digikam к их числу не принадлежит, поэтому просто выбираем Save и Next для завершения.

Некоторые программы требуют указания типов Mime, которые вы можете добавить в следующем экране (Digikam не в их числе).

Создание PBI занимает некоторое время, которое зависит от количества и обьема библиотек и размера архива. По завершенни работы утилита оповестит вас и поместит готовый PBI в ваш домашний каталог. Если есть желание, то нажав кнопку Save preset, вы можете сохранить введенные данные в файле .pbc.

Шаг 7: Проверяем PBI

Важно убедиться в работоспособности созданного PBI, в его корректной установке и последующем удалении.

Я поместила PBI на рабочий стол:
    
    # mv ~dru/Digikam-0.7.2-PV.pbi ~dru/Desktop/
    
    
Теперь покинем учетную запись суперпользователя и убедимся, что приложение в настоящее время не установлено:
    
    # exit
    % pkg_info | grep digikam
    %
    
    
Дважды щелкните на PBI. Система спросит у вас пароль суперпользователя, дважды нажмите Next и затем Finish. На рабочем столе должна появиться иконка приложения, запустите его, чтобы убедиться в его работоспособности.

Тепрь убедитесь в корректном удалении.

Перейдите Computer -> PC-BSD Settings -> Remove Programs и удалите программу. После завершения процесса убедитесь, что каталог программы удален из /usr/local/MyPrograms/.

Если что-то не работает

Если вы получаете ошибку при запуске программы, проверьте содержимое каталога вашей программы в /usr/local/MyPrograms/. Возможно вы пропустили подкаталоги или файлы, допустили ошибку в сценарии установки, приведшей к нераспаковке архива. Соответственно, если после деинсталляции программы остаются неудаленные файлы, то ошибка допущена в сценарии удаления.

Если, на первый взгляд, все файлы на месте, возможно вы не выполнили lib.sh для какого-нибудь бинарного файла и теперь не хватает библиотек.

Иногда может оказаться так,что приложение запустится, но будет неработоспособно. В примере с Digikam оказалось бы недоступно большинство меню. Это случается, когда приложение использует файлы совместно с существующими приложениями, такими как KDE. Чтобы найти эти файлы я проверила список пакетов для Digikam.

Это были общие файлы, которые я пропустила. Поскольку я не хочу конфликтовать с существующими приложениями или копиями файлов вне рабочего каталога программы, я использовала символические ссылки. Я люблю добавлять ссылки по одной в командной строке и повторно запускать приложение, наблюдая, что из этого получится. Как только я поняла, какие символические ссылки добавили недостающие особенности, я добавила их в PBI.SetupScript.sh и впересобрала PBI. В случае Digikam недостающие особенности были добавлены следующими ссылками (в командной строке замените 1$ названием каталога, поскольку 1$ будет работать только в сценарии):
    
    % ln -s /usr/local/MyPrograms/$1/applications/kde/showfoto.desktop \ 
        /usr/local/share/applications/kde
    
    % ln -s /usr/local/MyPrograms/$1/share/applnk/Graphics/digikam.desktop \
        /usr/local/share/applnk/Graphics
    
    % ln -s /usr/local/MyPrograms/$1/share/apps/digikam/ \ 
        /usr/local/share/apps/digikam
    
    % ln -s /usr/local/MyPrograms/$1/share/icons/hicolor/ \
        /usr/local/share/icons/hicolor
    
    
В заключение, если ваше приложение использует GTK+ или Pango, обратитесь к документу GTK+ and Pango PBI packaging.

Шаг 8: Публикуем PBI

Если вы преодолели массу сложностей, чтобы сделать PBI, то вы могли бы отправить его для включения на сайт PC-BSD, таким образом другие пользователи PC-BSD смогут его использовать. Убедитесь, что полностью проверили работоспособность PBI, хотя разработчики PC-BSD еще раз оттестируют ваш пакет.

Перейдите в каталог PBI на сайте и нажмите ссылку "Submit PBI package for approval". Сам процесс разбит на две части. Первая заключается в том, чтобы загрузить PBI на проверку через ftp:
    
    % cd Desktop
    % ftp ftp://pcbsd.homeunix.org
    Name (ftp.pcbsd.homeunix.org:dru): anonymous
    Password: 
    ftp> binary
    ftp> put Digikam-0.7.2-PV.pbi
    ftp> bye
    
    
Затем в окне браузера укажите ваше имя, email, имя PBI и его описание, при необходимости добавьте комментарии. Ваш PBI теперь появится в списке пакетов, ждущих одобрения. Разработчики войдут в контакт с вами относительно состояния вашего PBI.

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

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





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