Как написать ebuild

Calculate Forum

Loading

Это руководство о том, как начать писать ebuild-файлы, чтобы использовать возможности Portage для установки и управления ещё большим количеством программного обеспечения.

Вы можете написать ebuild-файл для установки какого-либо программного обеспечения в Gentoo, если нет подходящих существующих ebuild-файлов. Это относительно простая задача, и это единственный способ чисто и аккуратно установить большинство «сторонних» программ в системе. ebuild-файл позволяет менеджеру пакетов отслеживать каждый файл, установленный в систему, чтобы обеспечить корректное обновление и удаление.

Совет
Из статьи ebuild: ebuild-файл — это текстовый файл, обычно хранящийся в репозитории, который определяет конкретный программный пакет и указывает менеджеру пакетов Gentoo, как с ним работать. Ebuild-файлы используют bash-подобный стиль синтаксиса и стандартизированы путём Package Manager Specification, придерживаясь определённой версии EAPI.

Ebuild-файлы содержат информацию о каждой версии доступного программного обеспечения (название, версию, лицензию, домашнюю страницу…), информацию о зависимостях (как во время сборки, так и во время выполнения), а также инструкции по сборке и установке программного обеспечения (конфигурирование, компиляция, сборка, установка, тестирование…).

После того, как ebuild-файл заработал, им можно поделиться, отправив его в запросе на слияние, или в отдельный репозиторий ebuild-файлов и сделав его общедоступным. С небольшими затратами можно вносить предложения и сопровождать ebuild-файлы в репозитории GURU.

Репозитории ebuild-файлов

Чтобы ebuild-файлы были видны Portage, они помещаются в репозиторий ebuild-файлов, который настроен для Portage через /etc/portage/repos.conf (общую информацию о работе с репозиториями ebuild-файлов см. в разделе Управление репозиторием).

Создайте репозиторий ebuild-файлов для экспериментов, следуя этому руководству. В данной статье будет использоваться пример репозитория в /var/db/repos/example_repository.

eselect repository упрощает создание репозитория:

root #eselect repository create example_repository

Заметка
Ebuild-файлы можно установить с помощью команды ebuild, однако это не рекомендуется — эта команда предназначена только для целей разработки. В этой статье будет использоваться команда ebuild с ebuild-файлом для тестирования во время разработки, но в других случаях обязательно используйте команду emerge с ebuild-файлом в репозитории.

Как создать ebuild-файл

Короче говоря, ebuild-файлы — это просто текстовые файлы. Все, что нужно, чтобы начать писать ebuild-файлы — это текстовый редактор, чтобы предоставить возможность устанавливать пакеты программ для Gentoo.

Заметка
В этом разделе {CATEGORY}, {PN} и {P} представляют категорию пакета, имя пакета и имя пакета и версию соответственно, и являются стандартными переменными, используемыми в ebuild-файлах. Вместе эти переменные могут представлять указатель версии.

Некоторые редакторы имеют опциональную функцию создания ebuild-файлов, в этом случае переходите к соответствующему разделу. В противном случае для более быстрого начала работы можно использовать каркас («шаблон»).

Начните с каркаса

If the editor does not have integrated ebuild functionality to help to start off, there is a skeleton ebuild file (skel.ebuild) located in the Gentoo ebuild repository. To start with that file as a base, simply copy it to an appropriate location (nano is used as the text editor in this example):

user $mkdir --parents /var/db/repos/example_repository/{CATEGORY}/{PN}

user $cp /var/db/repos/gentoo/skel.ebuild /var/db/repos/example_repository/{CATEGORY}/{PN}

user $cd /var/db/repos/example_repository/{CATEGORY}/{PN}

user $nano {P}.ebuild

Vim

There is a vim plugin to automatically start from a skeleton when creating an empty ebuild file.

After installing app-vim/gentoo-syntax, create the appropriate directory for the ebuild, then launch vim with a new «{P}.ebuild» filename provided on the command line, to be automatically met with a basic skeleton that can be modified and saved:

user $mkdir --parents /var/db/repos/example_repository/{CATEGORY}/{PN}

user $cd /var/db/repos/example_repository/{CATEGORY}/{PN}

user $vim {P}.ebuild

Emacs

A similar tool is available for users of Emacs, provided by app-emacs/ebuild-mode or app-xemacs/ebuild-mode, depending on Emacs distribution.

Демонстрация на примере

This example will create an ebuild for scrub, version 2.6.1 (if it didn’t already exist), to show how a typical process might go.

Create a directory to house the ebuild, in the ebuild repository created earlier:

user $mkdir -p /var/db/repos/example_repository/app-misc/scrub

Change the shell working directory to the new path:

user $cd /var/db/repos/example_repository/app-misc/scrub

Совет
Some shells, such as Bash, provide the last parameter of the previous command in the «$_» variable. This can be used to call the newly created directory without specifying the path on the command line, as long as this is used as the directly next command.

This example will use Vim to create the ebuild file and provide a skeleton to serve as a basis to write the ebuild on, but use editor of choice (see previous section about using Emacs, or the skeleton file):

user $vim ./scrub-2.6.1.ebuild

Add important information about the new package by setting the ebuild-defined variables: DESCRIPTION, HOMEPAGE, SRC_URI, LICENSE:

Файл scrub-2.6.1.ebuildРедактирование нового файла в vim с шаблона

# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
 
EAPI=8
 
DESCRIPTION="Some words here"
HOMEPAGE="https://github.com/chaos/scrub"
SRC_URI="https://github.com/chaos/scrub/releases/download/2.6.1/scrub-2.6.1.tar.gz"
 
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE=""
 
DEPEND=""
RDEPEND="${DEPEND}"
BDEPEND=""

This— with the omission of those lines with =""— is the minimum information necessary to get something that will work. Ebuilds inheriting certain eclasses might come with a different set of minimal information, e.g. ant-jsch-1.10.9.ebuild. Save the file — voila an ebuild, in it’s most basic form,it’s that simple!

Заметка
Using the ${PN} variable inside SRC_URI is allowed, though this is not necessarily best practice. While it may be shorter to type, there is some reasoning on why not to use it that may be worth consideration.

Код avoid using PN as such

SRC_URI="https://github.com/gentoo/${PN}/releases/download/${PV}/${P}.tar.gz"
# Reads better as, e.g.
SRC_URI="https://github.com/gentoo/gentoo/releases/download/${PV}/${P}.tar.gz"

See this ebuild file format policy guide page for more recommendations.

It is possible to test fetching and unpacking the upstream sources by the new ebuild, using the ebuild command:

root #ebuild ./scrub-2.6.1.ebuild manifest clean unpack

Appending /var/db/repos/example_repository to PORTDIR_OVERLAY...
>>> Downloading 'https://ftp.halifax.rwth-aachen.de/gentoo/distfiles/scrub-2.6.1.tar.gz'
--2019-06-03 16:42:57--  https://ftp.halifax.rwth-aachen.de/gentoo/distfiles/scrub-2.6.1.tar.gz
Resolving ftp.halifax.rwth-aachen.de... 137.226.34.46, 2a00:8a60:e012:a00::21
Connecting to ftp.halifax.rwth-aachen.de|137.226.34.46|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 362536 (354K) [application/octet-stream]
Saving to: '/usr/portage/distfiles/scrub-2.6.1.tar.gz.__download__'
 
/usr/portage/distfiles/scrub-2.6.1.tar.gz.__download__             100%[==============================================================================================================================================================>] 354.04K  --.-KB/s    in 0.08s   
 
2019-06-03 16:42:58 (4.24 MB/s) - '/usr/portage/distfiles/scrub-2.6.1.tar.gz.__download__' saved [362536/362536]
 
 * scrub-2.6.1.tar.gz BLAKE2B SHA512 size ;-) ...                                                                                                                                                                                                                  [ ok ]
>>> Unpacking source...
>>> Unpacking scrub-2.6.1.tar.gz to /var/tmp/portage/app-misc/scrub-2.6.1/work
>>> Source unpacked in /var/tmp/portage/app-misc/scrub-2.6.1/work

This should download and unpack the source tarball, without error, as in the example output.

For some exceptionally simple packages like this one, that do not need patching or other more advanced treatment, the ebuild may work just so — with no further adjustments needed.

For best practice, the test suite may be run at this stage — this is particularly true when starting out:

root #ebuild scrub-2.6.1.ebuild clean test install

To actually install the new ebuild on the system, run:

root #ebuild scrub-2.6.1.ebuild clean install merge

Patching upstream source in an ebuild

The source can be patched at installation time, to adapt to Gentoo specificities for example, by setting up patches from an ebuild.

Put the patches in the right directory:

user $cd /var/tmp/portage/app-misc/scrub-2.6.1/work/scrub-2.6.1/

A patch can be created from the unpacked source code as explained in the Creating a patch article. Patches should then be listed in an array called PATCHES as explained in the devmanual:

Код Patches will be applied during src_prepare

PATCHES=(
	"${FILESDIR}"/${P}-foo.patch
	"${FILESDIR}"/${P}-bar.patch
)
 
src_prepare() {
    default
    ...
}

QA testing

Use pkgcheck (dev-util/pkgcheck) to check for QA errors in an ebuild:

Смотрите также

  • GitHub Pull Requests — how to contribute to Gentoo by creating pull requests on GitHub.
  • java-ebuilder — an experimental package being developed by Gentoo Java developers to generate initial ebuilds from Maven pom.xml files.
  • Notes on ebuilds with GUI
  • Project:GURU — an official repository of new Gentoo packages that are maintained collaboratively by Gentoo users
  • Project:Proxy_Maintainers/User_Guide/Style_Guide
  • Project:Python — страницы проекта Python содержат информацию про создание ebuild-файлов для пакетов, написанных на Python
  • Project:X11/Ebuild_maintenance
  • Proxied Maintainer FAQ
  • Test environment
  • Writing go Ebuilds‎‎ — a short reference, intended to be read alongside Basic guide to write Gentoo Ebuilds and the go-module.eclass documentation

Внешние ресурсы

  • Gentoo Policy Guide
  • Quickstart Ebuild Guide
  • Gentoo Development guide
  • Michał Górny: Category: Ebuild writing
  • Michał Górny: The ultimate guide to EAPI 7
  • Michał Górny: The ultimate guide to EAPI 8
  • man 1 ebuild — The ebuild command’s man page.
  • man 5 ebuild — The ebuild file format man page.
  • The skel.ebuild
  • Adding new packages via proxy-maint project

Подписался на тред.

Чем новее EAPI выбираешь — тем лучше. EAPI — это стиль написания и поддержки. Старые EAPI поддерживаются для обратной совместимости. Исключительные случаи в расчет не берем.

Pinkbyte ★★★★★

(27.07.12 13:19:16 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от Pinkbyte 27.07.12 13:19:16 MSK

Тогда я выбираю 4, ок.
Эксперименты решил ставить на бинарном eclipse-sdk.
Как правильно выбрать имя для ebuild’а?
Обычно это название_программы-версия_с_префиксами, но у eclipse версия выглядит вот так: M20120726-1200.
Я долен назвать ebuild «eclipse-SDK-M20120726-1200»? По моему это странно. Или может просто назвать eclipse-sdk-3.6(4.2) и никак не зависит от имени файла?
Ссылка на скачивания архива выглядит так:

http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops4/M20120726-1200/eclipse-SDK-M20120726-1200-linux-gtk-x86_64.tar.gz&url=http://download.eclipse.org/eclipse/downloads/drops4/M20120726-1200/eclipse-SDK-M20120726-1200-linux-gtk-x86_64.tar.gz&mirror_id=1

deterok ★★★★★

(27.07.12 13:52:37 MSK)



Последнее исправление: deterok 27.07.12 13:54:03 MSK
(всего

исправлений: 1)

  • Показать ответы
  • Ссылка

Ответ на:

комментарий
от deterok 27.07.12 13:52:37 MSK

Ответ на:

комментарий
от deterok 27.07.12 13:52:37 MSK

Ответ на:

комментарий
от nCdy 27.07.12 13:54:37 MSK

Ответ на:

комментарий
от chelovek-bugurt 27.07.12 14:00:10 MSK

Ответ на:

комментарий
от deterok 27.07.12 13:52:37 MSK

если это снапшот-билд, то примерно так — eclipse-sdk-bin-0_p20120726

Дальше используешь versionator eclass и приводишь версию к виду, используемому в SRC_URI.

Pinkbyte ★★★★★

(27.07.12 14:11:58 MSK)

  • Показать ответ
  • Ссылка

По какому критерию я должен его выбирать?

определяется EAPI eclass’ов, которые ты импортируешь. В идеале максимальный поддерживаемый стабильным портажем.

qnikst ★★★★★

(27.07.12 14:25:05 MSK)

  • Ссылка

Ответ на:

комментарий
от deterok 27.07.12 14:01:17 MSK

ещё можно pms для порядку почитать, если уж совсем не лень :) т.к. например из девмануала ни разу не очевидно, что можно использовать несколько постфиксов в версии.

qnikst ★★★★★

(27.07.12 14:26:41 MSK)

  • Ссылка

Бери макисмальную версию (4). И обязательно не забудь добавить поддержку Gentoo Prefix (${EPREFIX} и т.д.)

annulen ★★★★★

(27.07.12 14:31:32 MSK)

  • Ссылка

EAPI — последний стабильный.

Очень рекомендую пытаться отправлять свои ебилды в Санрайз. Дадут много советов по улучшению и со всех сторон протестируют и заставят вылизать.

question4 ★★★★★

(27.07.12 18:03:31 MSK)

  • Показать ответы
  • Ссылка

Ответ на:

комментарий
от question4 27.07.12 18:03:31 MSK

если есть знакомые генту-разработчики из прокси-мэйнтэйнеров — можно отправить и им. По крайней мере живительный пиз^W посыл в направлении нужных манов дадут :-)

Pinkbyte ★★★★★

(27.07.12 18:34:20 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от Pinkbyte 27.07.12 18:34:20 MSK

Кто бы направил этих живителных писателям ебилдов, лежащих в портеже.

anonymous

(27.07.12 18:37:52 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от anonymous 27.07.12 18:37:52 MSK

Что конкретно не устраивает? Какие номера багов открыты вами по этому поводу? Я вот стараюсь все, не устраивающее меня слать на багзиллу. Ну или хотя бы говорить с разработчиками об этом…

Pinkbyte ★★★★★

(27.07.12 18:45:57 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от Pinkbyte 27.07.12 18:45:57 MSK

Какой смысл, если такое висит неисправленным? Часто натыкаясь на косяки, иду в багзиллу — а там confirmed, но всем пох.

anonymous

(27.07.12 18:53:32 MSK)

  • Показать ответы
  • Ссылка

Ответ на:

комментарий
от anonymous 27.07.12 18:53:32 MSK

Я уже говорил — разрабов в генте нынче дефицит. В некоторых проектах их вообще — 1-2 штуки(например в desktop-effects, отсюда и плачевное состояние компиза в генте).

Но подумай сам — если разрабы не будут знать о баге — как они смогут его исправить?

И да, для чего-то критичного есть IRC, где можно связаться с нужными разработчиками и обосновать свою позицию на тему того что такой-то баг «must be fixed ASAP», если ты понимаешься, о чем я :-)

Pinkbyte ★★★★★

(27.07.12 19:03:50 MSK)

  • Ссылка

Ответ на:

комментарий
от anonymous 27.07.12 18:53:32 MSK

и кстати, спасибо за ссылку, подписался на баг, буду следить за прогрессом…

Pinkbyte ★★★★★

(27.07.12 19:04:43 MSK)

  • Ссылка

разные EAPI ведут себя по-разному
если не вкурил разницу, то не факт, что последний вообще рабочим будет
правда таких раскладов 1 на миллион, но всё же етсь вероятность
потому «последний стабильный» можешь слать нахер сходу — зависит от ситуации

megabaks ★★★★

(27.07.12 19:10:17 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от question4 27.07.12 18:03:31 MSK

Ответ на:

комментарий
от megabaks 27.07.12 19:15:05 MSK

Ответ на:

комментарий
от megabaks 27.07.12 19:10:17 MSK

как раз наоборот — лучше использовать в новых ебилдах последний EAPI(конечно при этом необходимо знать, что делают соответствующие ф-ции). А вот бампать EAPI в старых ебилдах надо с осторожностью, особенно для критически-важных утилит.

Pinkbyte ★★★★★

(27.07.12 19:30:29 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от Pinkbyte 27.07.12 19:30:29 MSK

вот как раз простой бамп версии в 99.9% случаев ничего не меняет
абсолютно
но не всегда, потому и говорю — слепо следовать «еапи Х» просто глупо, а тут таких камментов дохера

megabaks ★★★★

(27.07.12 20:29:58 MSK)

  • Ссылка

Ответ на:

комментарий
от question4 27.07.12 19:26:29 MSK

Ответ на:

комментарий
от megabaks 27.07.12 20:30:55 MSK

я вижу, как не приняли — это косяки дерева санрайза, а не некой песочницы

Поясни.

question4 ★★★★★

(29.07.12 15:35:52 MSK)

  • Ссылка

Ответ на:

комментарий
от Pinkbyte 27.07.12 14:11:58 MSK

Решил остановиться на стабильном версии под С. Пишу оглядываясь на http://gpo.zugaina.org/dev-util/eclipse-sdk-bin (самый первый ebuild)
Там есть:

src_install() {
	local dest=/opt/${PN}-${SLOT}

	insinto ${dest}
	doins -r features icon.xpm plugins artifacts.xml p2 eclipse.ini configuration dropins

	exeinto ${dest}
	doexe eclipse

	dohtml -r about.html about_files epl-v10.html notice.html readme/*

	insinto /etc
	doins "${FILESDIR}"/eclipserc-bin-${SLOT}

	dobin "${FILESDIR}"/eclipse-bin-${SLOT}
	make_desktop_entry "eclipse-bin-${SLOT}" "Eclipse ${PV} (bin)" "${dest}/icon.xpm"
}

Непонятен смысл вот этого куска:

insinto /etc
doins "${FILESDIR}"/eclipserc-bin-${SLOT}

dobin "${FILESDIR}"/eclipse-bin-${SLOT}

deterok ★★★★★

(31.07.12 01:42:38 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от deterok 31.07.12 01:42:38 MSK

устанавливает в etc конфиг и бинарник(?, я щитаю это не очень хорошо, особенно если там действительно бинарь, а не шелл-скрипт, допустим) с именем, содержащим слот данного пакета. Нужно для установки несколькоих eclipse-sdk-bin одновременно(из разных слотов)

Pinkbyte ★★★★★

(31.07.12 10:38:37 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от Pinkbyte 31.07.12 10:38:37 MSK

Еще 2 вопроса:
Почему «${FILESDIR}» в кавычках?
Причем здесь ${FILESDIR}? Он же ведет до директории с ebuild’ом.

deterok ★★★★★

(31.07.12 12:33:58 MSK)

  • Показать ответы
  • Ссылка

Ответ на:

комментарий
от deterok 31.07.12 12:33:58 MSK

FILESDIR в кавычках потому-что если в нем, не дай Бог будут пробелы(юзер переопределит расположение портажа на директорию с пробелами) — будет ой.

FILESDIR указывает на поддиректорию files в директории с ебилдом. Оттуда часто берутся gentoo-специфичные конфиги/инитскрипты, т.к. авторы далеко не всегда обеспечивают ими свои программы

Pinkbyte ★★★★★

(31.07.12 12:40:12 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от deterok 31.07.12 12:33:58 MSK

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

qnikst ★★★★★

(31.07.12 12:42:52 MSK)

  • Ссылка

Ответ на:

комментарий
от Pinkbyte 31.07.12 12:40:12 MSK

В общем скрипт там такой:

#! /bin/sh
SLOT="4.2"

[ -f "/etc/eclipserc-bin-${SLOT}" ] && . "/etc/eclipserc-bin-${SLOT}"
[ -f "$HOME/gentoo/.eclipserc" ] && . "$HOME/gentoo/.eclipserc"

ECLIPSE_HOME=${ECLIPSE_HOME:="/opt/eclipse-sdk-bin-4.2"}
ECLIPSE_BIN="${ECLIPSE_HOME}/eclipse"

if [ ! -x "${ECLIPSE_BIN}" ] ; then
	echo "Failed to find executable '${ECLIPSE_BIN}'" > /dev/stderr
	exit 1
fi

if [ $(id -u) -eq 0 ] ; then
	echo "Do not run eclipse as root user! Exiting ..." > /dev/stderr
	exit 1
fi

case "$(java-config -f)" in
	*gcj*)
		export JAVA_PKG_CLASSMAP="${ECLIPSE_HOME}/eclipse.gcjdb"
		;;
esac

#eval $(gjl --package "swt-${SLOT}" --get-args)

[ -n "${ECLIPSE_XMS}" ] && VM_ARGS="${VM_ARGS} -Xms${ECLIPSE_XMS}"
[ -n "${ECLIPSE_XMX}" ] && VM_ARGS="${VM_ARGS} -Xmx${ECLIPSE_XMX}"
[ -n "${ECLIPSE_PERMSIZE}" ] && VM_ARGS="${VM_ARGS} -XX:PermSize=${ECLIPSE_PERMSIZE}"
[ -n "${ECLIPSE_MAX_PERMSIZE}" ] && VM_ARGS="${VM_ARGS} -XX:MaxPermSize=${ECLIPSE_MAX_PERMSIZE}"

# Fix for JRE 1.5.
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/lib

exec "${ECLIPSE_BIN}" -vm $(java-config --java) "$@" "${ECLIPSE_USER_ARGS}" -vmargs ${VM_ARGS} 

На мой взгляд многое ненужно(например «Fix for JRE 1.5», так как в зависимостях >=jre-1.6), проще symlink сделать (Где? в /usr/bin?) и все.

deterok ★★★★★

(31.07.12 12:51:09 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от deterok 31.07.12 12:33:58 MSK

чтоб реже задавать вопросы о синтаксисе — прогоняй repoman на свои ебилды и читай что за ошибки/недостатки он выявляет. repoman — отличный первичный детектор ошибок новичков.

Pinkbyte ★★★★★

(31.07.12 12:53:56 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от deterok 31.07.12 12:51:09 MSK

проще symlink сделать

на что? на скрипт в /usr/portage? Окстись, так не делают.
Если считаешь что в скрипте что-то лишнее — правь. Но только аргументированно. Насчет jre 1.5 — согласен, если зависимость жесткая от jre 1.6 и выше — нафиг эту часть. Только убедись, что ничего не сломал этим

Pinkbyte ★★★★★

(31.07.12 12:55:10 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от Pinkbyte 31.07.12 12:53:56 MSK

Спасибо, нужная вещь!

deterok ★★★★★

(31.07.12 12:55:32 MSK)

  • Ссылка

Ответ на:

комментарий
от Pinkbyte 31.07.12 12:55:10 MSK

Мне на секунду показалось, что скрипт ненужен и можно просто symlink на бинарник сделать.(Немного непонятно, portage сам symlink или как?)

deterok ★★★★★

(31.07.12 13:04:14 MSK)

  • Показать ответы
  • Ссылка

Ответ на:

комментарий
от deterok 31.07.12 13:04:14 MSK

Ответ на:

комментарий
от deterok 31.07.12 13:04:14 MSK

симлинк можно сделать с помощью dosym. Но поверь, скрипт написали не просто так…

Pinkbyte ★★★★★

(31.07.12 13:18:08 MSK)

  • Ссылка

Ответ на:

комментарий
от Pinkbyte 31.07.12 13:17:40 MSK

Ответ на:

комментарий
от deterok 31.07.12 13:19:01 MSK

Ответ на:

комментарий
от Pinkbyte 31.07.12 13:24:25 MSK

Ответ на:

комментарий
от deterok 31.07.12 13:27:13 MSK

Ответ на:

комментарий
от Pinkbyte 31.07.12 13:40:45 MSK

В общем получилось:)
Оказалось все намного проще(проще чем rpm собрать). Portage все за меня сделал. Замечательный пакетный менеджер.
Вот ebuild:

eclipse-cpp-4.2.ebuild 


# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

EAPI=4

inherit eutils

DESCRIPTION="Eclipse C++ IDE"

HOMEPAGE="http://www.eclipse.org/"

SRC_BASE="http://mirror.tspu.ru/eclipse/technology/epp/downloads/release/juno/R"

SRC_URI="
        x86? ( ${SRC_BASE}/${PN}-juno-linux-gtk.tar.gz )
        amd64? ( ${SRC_BASE}/${PN}-juno-linux-gtk-x86_64.tar.gz )"

LICENSE="EPL-1.0"

SLOT="4.2"

KEYWORDS="-* ~x86 ~amd64"

IUSE=""

RDEPEND="
        >=virtual/jdk-1.6
        x11-libs/gtk+:2"

S="${WORKDIR}"/eclipse

src_install() {
        local dest=/opt/${PN}-${SLOT}

        insinto ${dest}
        doins -r features icon.xpm plugins artifacts.xml p2 eclipse.ini configuration dropins

        exeinto ${dest}
        doexe eclipse

        dohtml -r about.html about_files epl-v10.html notice.html readme/*

        insinto /etc
        doconfd "${FILESDIR}"/eclipserc-bin-${SLOT}

        dobin "${FILESDIR}"/eclipse-bin-${SLOT}
        make_desktop_entry "eclipse-bin-${SLOT}" "Eclipse ${PV} (bin)" "${dest}/icon.xpm"
}

Насколько корректно размещать скрипт запуска в /usr/bin?

deterok ★★★★★

(01.08.12 14:10:26 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от deterok 01.08.12 14:10:26 MSK

Абсолютно корректно. Только проверь, чтобы он был выполняемым :-)
Прогони

ebuild path/to/ebuild clean compile install

если не хочешь ставить приложение себе и посмотри в /var/tmp/portage/category/package/image — правильно ли права везде розданы. Ну или поставь через emerge и убедись в том же.

Теперь по ебилду(маленький нюансы):

KEYWORDS=»-* ~amd64 ~x86″ — незначительная мелочь, но если будешь куда в оверлей класть, могут придраться по QA. Да и вообще проще читать в алфавитном порядке кейворды.

Проверь desktop-файл через desktop-file-validate(из пакета dev-util/desktop-file-utils). А то часто кладут desktop-файлы устаревшие, а иногда вообще нерабочие. Если это будет так — пофиксь

Pinkbyte ★★★★★

(01.08.12 14:46:31 MSK)



Последнее исправление: Pinkbyte 01.08.12 14:46:39 MSK
(всего

исправлений: 1)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от Pinkbyte 01.08.12 14:46:31 MSK

Все работает:)

KEYWORDS="-* ~amd64 ~x86"

заменил на

KEYWORDS="~x86 ~amd64 -*"

deterok ★★★★★

(01.08.12 14:51:38 MSK)



Последнее исправление: deterok 01.08.12 14:52:05 MSK
(всего

исправлений: 1)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от deterok 01.08.12 14:51:38 MSK

по алфавиту это

KEYWORDS=«~amd64 ~x86»

а чо правда, что на остальных архитектурах принципиально незаработает?

qnikst ★★★★★

(01.08.12 14:55:35 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от qnikst 01.08.12 14:55:35 MSK

Ответ на:

комментарий
от deterok 01.08.12 14:57:01 MSK

Ответ на:

комментарий
от deterok 01.08.12 14:57:01 MSK

ok, тогда -* в тему.

qnikst ★★★★★

(01.08.12 14:58:23 MSK)



Последнее исправление: qnikst 01.08.12 14:59:23 MSK
(всего

исправлений: 1)

  • Ссылка

Ответ на:

комментарий
от deterok 01.08.12 14:57:38 MSK

Ответ на:

комментарий
от Pinkbyte 01.08.12 14:59:27 MSK

Ответ на:

комментарий
от Pinkbyte 01.08.12 14:59:27 MSK

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.

Если у вас нет желаемого пакета Gentoo, не бойтесь! Вы можете построить свой собственный! Для этого вам понадобится некоторый опыт компиляции программного обеспечения с использованием известных инструментов Linux make, gcc и других. Чтобы создать пакет Gentoo, emake используется для управления и настройки процесса. Используя эти инструменты, вы можете создавать очень тонкие пакеты, которые работают быстро и надежно.

Структура Ebuild

Чтобы создать свой собственный ебилд, вы должны начать с правильного *.файл ebuild. Ваш файл ebuild — это сердце всего вашего ebuild. Файл ebuild зависит от многих других файлов, как и make. Фактически, в большинстве случаев ваш ebuild будет зависеть от make, хотя это ваш выбор. Вот дерево неовим:
/ mnt / SW / projects / System / Gentoo / gentoo / редакторы приложений / neovim
├── файлы
│ ├── neovim-0.4.3-gcc-10-исправить.пластырь
│ ├── neovim-0.4.4-cmake_luaversion_patch
│ ├── neovim-0.4.4-cmake-релиз-тип.пластырь
│ └── sysinit.vim
├── Манифест
├── метаданные.xml
├── неовим-0.4.4-r100.ебилд
└── neovim-9999.ебилд

Итак, для чего вы используете эти файлы в своем приложении?? *.файл ebuild — очевидный файл. Этот файл содержит SRC_URI, который напрямую указывает на код. Другая информация в файле включает описание, веб-сайт и дополнительную информацию, необходимую для компиляции пакета.

Файл манифеста содержит хэш, который однозначно идентифицирует код.

Метаданные.xml содержит имя и адрес электронной почты сопровождающего, название проекта и несколько флагов для компиляции. Удаленное удостоверение также находится в этом файле, как и репозиторий GitHub для восходящего потока. Каталог файлов содержит любые патчи, которые могут вам понадобиться, и любые специальные настройки, которые вам нужны. В приведенном выше примере показан файл с соответствующими настройками по мнению специалистов по сопровождению Gentoo.

Внутри файла Ebuild

Значения внутри файла по большей части легко понять. Описание и домашняя страница предназначены для помощи разработчикам. Номер EAPI указывает, какая версия Gentoo будет запущена. У вас также есть Лицензия, что совершенно ясно; сопоставьте Лицензию с кодом, для которого вы создаете файл ebuild.

Еще сложнее SLOT, который используется, если вам нужно иметь несколько версий. Затем SLOT укажет эту сборку на версию, которую вы поддерживаете. Большинство программного обеспечения будет иметь значение 0, что позволяет одновременно использовать только одну версию.

KEYWORDS — это значение, указывающее, для каких платформ можно компилировать исходный код. Это amd65, x86 и, возможно, arm64. Полный список доступен в вашей системе Gentoo. Обратите внимание: если вы хотите внести свой вклад, вы должен установите тильду (~) перед архитектурой. Это означает, что код не протестирован, поэтому убедитесь, что код хорошо протестирован, прежде чем удалять этот символ. Желательно, чтобы многие пользователи просматривали код перед удалением тильды.

Переменная IUSE возвращает параметры, которые вы хотите установить для своего компилятора.

У вас также есть DEPEND, который бывает трех разных типов. Значения RDEPEND — это значения, которые вы используете при запуске кода. Значения BDEPEND являются значениями, зависящими от сборки. Пакет, который вы пытаетесь добавить в Gentoo, будет содержать файл с описанием необходимых зависимостей.

Для простых пакетов больше ничего не нужно. Однако в конкретном пакете, над которым вы работаете, вероятно, будут некоторые вещи, которые необходимо сделать перед компиляцией кода. Если это не соответствует ожиданиям разработчиков Gentoo, вы можете настроить свой собственный.

Функции

В файле установщик будет использовать определенные функции для всего процесса. Например, чтобы применить исправления перед запуском команды, src_prepare () функция справится с этой ситуацией.

В src_configure () функция использует econf для установки, я.е., ‘use_enable.’В этой функции вы можете распаковать свои файлы с помощью команды unpack. Вы также можете передавать аргументы в ./ configure для вашего проекта, используя эконф. Как видите, эти функции названы в соответствии с их эквивалентами make, и часто они передают аргументы через.

В src_install () функция выполняет ту же функцию, что и делать установить будет делать в сборке C / C ++. Тем не менее, он содержит множество параметров, которые вы можете найти в справочном документе.

Большинство функций доступны, когда у вас есть специальное программное обеспечение. Вы, вероятно, начнете копаться в этих функциях, когда попытаетесь реализовать свой первый пакет.

Пример: файл пакета SimulIDE

Здесь мы представляем файл, который был создан для пакета SimulIDE. Для пакета требуется среда разработки Qt5, поэтому вам нужно будет добавить ее в свой файл ebuild. На следующем изображении вы можете увидеть значения RDEPEND, отражающие эту идею. Библиотеки уже содержатся в репозиториях Gentoo, что позволяет легко указать на.

# Copyright 2021 Матс Таге Аксельссон
# Распространяется на условиях GNU General Public License v3
EAPI = 7
DESCRIPTION = «SimulIDE моделирует ваши схемы, включая эмуляцию Arduino.»
HOMEPAGE = «https: // www.симулид.com / p / home.html «
SRC_URI = «https: // mailfence.com / pub / docs / santigoro / web / SimulIDE_0.4.14 / simulide_0.4.14-SR4_Sources.деготь.gz «
ЛИЦЕНЗИЯ = «GPL-3»
SLOT = «0»
KEYWORDS = «~ x86 ~ amd64»
RDEPEND = «dev-qt / qtsvg
dev-qt / qtxml
dev-qt / qtscript
dev-qt / qtwidgets
dev-qt / qtconcurrent
dev-qt / qtserialport
dev-qt / qtmultimedia «
DEPEND = «$ RDEPEND
dev-библиотеки / libelf
dev-embedded / avr-libc «
src_prepare ()
распаковать simulide_0.4.14-SR4_Sources.деготь.gz

src_configure ()
econf —with-popt

в src_prepare () функция, вы можете увидеть, что пакет распаковывается перед использованием.

Оверлей

Когда вы исправили все свои ошибки, вы можете добавить свой пакет в проект Gentoo. Layman был создан для того, чтобы вы могли использовать экспериментальное программное обеспечение для установки основного дистрибутива. Проект называется Overlays, но команда для его установки называется Layman.

Заключение

Создание новых пакетов для Gentoo — это задача, которая может расширить ваши возможности. Даже в этом случае, если вы собрали много пакетов перед использованием make и набора инструментов gcc, вы сможете довольно быстро освоить этот процесс. Кроме того, не забудьте внести свой вклад в сообщество как можно больше.

February 17 2009, 14:25

Category:

  • IT
  • Cancel

Первый шаг определить оверлей, чтобы при sync’е не затереть свое творение.
Для этого в /etc/make.conf добавляется переменная PORTDIR_OVERLAY:

PORTDIR_OVERLAY=»/usr/local/portage»

естественно директорию надо создать, и одалее бязательно поддерживать правильную структуру оверлея.
Тоесть /usr/local/portage/категория/пакет/пакет-весия.подверсия.ebuild
допустим создаем ебилд пакета myPort версии 1.1.

mkdir -p /usr/local/portage/app-my/myPort/
touch /usr/local/portage/app-my/myPort/myPort-1.1.ebuild

Сам дистфайл должен называться точно также тока иметь расширение tar.gz
Теперь заполняем myPort.ebuild полезным содержимым.

DESCRIPTION=»my fucking port»

HOMEPAGE=»myhomesite.com»

LICENSE=»GPL-2″

SLOT=»0″

KEYWORDS=»alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86 ~x86-fbsd»

IUSE=»»

sys-apps/xinetd

sys-libs/libstdc++-v3

«

DEPEND=»»

Я указал SRC_URI, есть у мя возможность выложить пакет чтоб потом emerge его сам скачал, хотя можно просто положить его в
/usr/portage/distfiles.

И теперь последнее что нужно сделать

ebuild  /usr/local/portage/app-my/myPort/myPort-1.1.ebuild digest

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

Все теперь можно emerge -av myPort :)

Время на прочтение
5 мин

Количество просмотров 4.4K

Привет, #{username}!

Сегодня я хочу написать об одной маленькой проблеме и её решении. Проблема касается пользователей Linux, у которых после одного из последних обновлений стал падать Galculator. Не могу ручаться за достоверность информации, но похоже, что каким-то магическим образом это касается только пользователей Gentoo (но далеко не всех). Проблема неприятная, а решение оказалось очень простым. В официальном portage Galculator перестанет падать только через некоторое время, т.ч. пока можно воспользоваться моим решением.

Чтобы хоть как-то наполнить статью интеллектуальностью, я на примере конкретной проблемы покажу:
1. Как сделать свой ebuild-файл.
2. Как организовать своё хранилище ebuild’ов. Оно пригодится как раз при подобном случае, ставшем темой для статьи.

Кроме того, я был бы рад, если бы гентоо-менторы подсказали мне, где почитать о том, как вести себя в подобной ситуации. Куда лучше постить патчи к ebuild’ам (и стоит ли это делать вообще), как оформлять эти патчи, какие есть особенности оформления и т.д.

Заранее скажу, что статья окажется полезной и интересной только тем, кто уже по крайней мере уже собрал себе систему самостоятельно.

Описание проблемы

Для начала вот линк на баг #463459 в Gentoo Bugzilla: тынц.
Проблема воспроизводится не у всех. У меня — отлично воспроизводится.

Проблема заключается в том, что при попытке выполнить некоторые операции в Galculator, последний падает. Gdb даёт такой backtrace.

Сначала я грешил на множественные emerge критичных пакетов без пересборки мира. Но потом обстоятельства всё же меня припёрли к стенке и мир я пересобрал. Калькулятор всё равно падал.

Гугление быстро вывело меня на страницу по ссылке выше. В конце обсуждения Simon — один из maintainer’ов Galculator — сообщал о том, что переписал ту часть кода, которая одновременно использовала malloc и g_free (т.е. функции выделения памяти, находящиеся в разных библиотеках). Память под объекты выделялась функциями одной библиотеки, а освобождалась функциями другой. Выглядело правдоподобно. Сообщение сразу после подтверждало, что проблема была именно в этом (строго говоря, это нельзя считать доказанным; воспринимайте по-дефолту как «скорее всего»). Однако релиза калькулятора до сих пор нет, стало бы и нету нового ebuild’а.

Однако ещё до этого опытным путём выяснили, что отключение библиотеки quadmath решает проблему. Это, честно говоря, вызывает удивление, но на моей машине подтвердилось. Плохо то, что сам пакет Galculator позволяет собирать себя без quadmath, а ebuild эту возможность не использует. У него вообще нет ни одного USE флага. Ситуация тупиковая и глупая: есть SVN, в котором лежит рабочая версия; есть даже флаг, скормив который скрипту configure, можно избавиться от проблемы магическим образом. Но нет возможности воспользоваться ни одной из этих возможностей, не выходя за рамки системы сборки Gentoo…

Решение проблемы или как чукча стал писателем

Решения нет только в том случае, если вы только пользуетесь тем, что даёт репозиторий Gentoo. Однако, если вы хоть немного владете Shell’ом и умеете находить ответы на вопросы в стуктурированной документации, то проблема решаема.

«А почему бы мне не взять и поправить ebuild файл для Galculator, добавив в него нужную функциональность?» — подсказывает внутренний голос.

Не стоит это делать. При следующем emerge —sync ваши изменения перетрутся. Интуиция подсказывает, что должна быть возможность создать локальную «песочницу» билдов. И такая возможность действительно имеется.

Если вы ещё не знаете, что такое layman, то прочтите о нём. Всё достаточно просто. При установке layman’а у вас появляется дополнительный репозиторий ебилдов, работающий по несколько другой схеме, нежели production репозиторий. Подробное обяснение того, что такое layman и overlay, не входит в мои платы. Для решения нашей проблемы достаточно знать, что, после установки layman, вы смело можете создать свою папку /usr/local/portage/#{username} и скидывать туда свои сборки, перетирать их никто не станет.

В данном случае решение проблемы выглядит следующим образом:

mkdir /usr/local/portage/#{username}
cp -rv /usr/portage/sci-calculators/galculator /usr/local/portage/#{username}
cd /usr/local/portage/#{username}/galculator
edit galculator-2.1.3.ebuild
ebuild galculator-2.1.3.ebuild digest
emerge --unmerge galculator
emerge -av #{username}/galculator

Из приведённых команд прокомментирую только две.

edit — данная команда вызывает не какой-то конкретный редактор. Она вызывает редактор, указанный в переменной окружения EDIT. Если у вас до сих пор не настроена эта переменная и вы не пользуетесь командой edit, то часть вины за глобальное потепление лежит и на вас!

ebuild galculator-2.1.3.ebuild digest — этой командой мы подписываем наши исправления, чтобы подтвердить, что исправления произошли не из-за проблем с ЖД или эффектом случайного редактирования конфигов.

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

Изначально ebuild Galculator’а не содержит ни одной инструкции сборки. Все выполняется в default-манере. Нам нужно поменять метод конфигурирования. Для этого мы добавим в файл функцию src_configure(), которая вызывается как раз для конфигурирования пакета.

src_configure() {
	gnome2_src_configure $(use_enable quadmath)
}

ebuild’ы представляют собой просто Shell-скрипты. Существуют опредедённые соглашения о том, в каком формате эти скрипты пишутся. Сводятся эти соглашения в конечном итоге к трём вещам:
1. Какой перечень функций должен быть объявлен в файле, какая функция в какой момент вызывается и для чего она предназначена.
2. Какие переменные должны быть определены в файле, каковы их имена и что они означают (когда и как они используются).

Кроме того, конечно, у нас есть библиотеки, реализующие шаблонные действия. econf — вызвать configure скрипт, elog — вывести сообщение в лог сборки и т.д.

В данном случае мы пользуемся функцией gnome2_src_configure вместо стандартной econf. По всей видимости все пакеты из коллекции gnome2 имеют схожие методы конфигурирования и для них написали функцию, которая внутри уже вызывает econf. Я обнаружил это просто посмотрев ebuild похожего по набору используемых библиотек пакета.

Нашей основной задачей является добавление возможности собрать с опцией «—disable—quadmath». —disable-*, —enable-*, —with-* и —without-* — стандартные опции configure. Поэтому для них должны быть готовые обёртки. И они есть. Для enable/disable есть одна обёртка — use_enable. Эта функция вернёт —enable-#{flag}, если «flag» был установлен в списке USE-флагов при сборке, и —disable-#{flag} в противном случае. То, что надо. Осталось только сообщить в описании списка используемых пакетом флагов, что наш пакет использует флаг quadmath и по-умолчанию значение этого флага — disable. Делается это так:

IUSE="-quadmath"

Готово.

Послесловие

На самом деле, Gentoo — очень крупная, строго организованная организация. Как и любая крупная, не молодая организация, она имеет много общепринятых вещей, с которыми трудно познакомиться, читая мануалы. Там описано что-то, но далеко не всё. Разработчик Gentoo — это фактически должность. Разработчику предоставляют рабочую почту, рабочий аккаунт на сервере и много других удобных инструментов. Одна процедура принятия в разработчики стоит целой статьи, если бы были люди, которым это оказалось интересно.

Я уже год как пересел с LFS-дистрибутива на Gentoo и недавно окончательно определился, что это то, что мне надо. Поэтому я хочу стать активным участником сообщества Gentoo. Если на хабре есть Gentoo-менторы, я был бы признателен за возможность взять меня под свой патронаж для вступления в Gentoo Developers.

Удачи!

November 14 2012, 22:35

Category:

  • IT
  • Cancel

Анекдот: «Спешу вам сообщить, пока вы в ужасе не отбросили журнал, что написание ebuild для Gentoo намного проще, чем создание RPM-или Deb-пакетов, потому что большую часть работы выполняет portage.»
Я смеялся. Но знаете, это оказалось правдой.

С чего начать писать ебилд. С создения локального репозитария. Пишем в /etc/make.conf строчку
PORTDIR_OVERLAY=»${PORTDIR_OVERLAY} /usr/local/portage» в которой прописан адрес нашего репозитария.

Перед этим можно почитать справку, мне приглянулась http://ru.gentoo-wiki.com/wiki/Portage_Overlay и http://devmanual.gentoo.org/ebuild-writing/index.html. Русская кстати немного кривовата, видать устарела, морально.

Дальше создаем в репозитарии папку для категории и в ней папку с названием проекта. Категорию выбирайте по списку папок в /usr/portage. Я взял app-admin. В ней создаем папку проекта. Выйдет общий путь типа /usr/local/portage/app-admin/msvtest. Если выбрать папку не соответствующую категории будет вылетать ошибка.
В том, что получилось начинаем писать ебилд. Вот пример простой пример: http://rpm.centerix.ru/ebuild/msvtest-1.0.ebuild. Исходники http://rpm.centerix.ru/source/msvtest-1.0.zip. В исходниках один cpp файл выводящий «Hello World!» и простой Makefile для сборки пакета.

Полный текст:
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/test/msvtest/msvtest-1.0.ebuild,v 1.7 2006/11/15 12:58:38 corsair Exp $

inherit eutils

DESCRIPTION=»

This program is simple test projects. No more.«
SRC_URI=»http://rpm.centerix.ru/source/${P}.zip»

LICENSE=»GPL-2″
SLOT=»0″
KEYWORDS=»amd64 ppc ppc64 sparc x86″
IUSE=»»
#DEPEND=»»
#RDEPEND=»»

src_compile() {
cd ${PN}
make
}

src_install() {
cd ${PN}
mkdir -p ${D}/usr/bin/
cp ./${PN} ${D}/usr/bin/
}

Итак:


inherit — подключает какие-то опции, наверно можно удалить.
DESCRIPTION — описание.
SRC_URI — адрес с исходниками. Если нужно указать несколько адресов разделите их пробелами.
LICENSE — под какой лицензией выпускается.
KEYWORDS — под какие архитектуры можно собирать пакет. Значек ‘~‘ перед архитектурой наоборот запрещает сборку.
IUSE — здесь указываются флаги сборки пакета.

SLOT — равный нулю указывает, что пакет не множественный.

Теперь о переменных:
$P — полное имя пакета с версией, $PN — только имя пакета, $PV — версия пакета. Эти переменные берутся из названия ебилда, что как бы связывает ебилд и исходники.
$D — путь по которому в конце концов мы должны сложить файлы пакета.
Переменных еще дофига, читайте в справке.

Стоит сказать, что в ебилде намного больше секций, чем в rpm. Но пользоваться можно уже не всеми, а какими хочется.

Качаем http://rpm.centerix.ru/ebuild/msvtest-1.0.ebuild в /usr/local/portage/app-admin/msvtest и двигаемся дальше.

Поехали:
Для сборки пакета нам потребуется программа ebuild, благо она уже установлена в системе.
Первым делом следует сгенерировать Manifest командой ebuild ./msvtest-1.0.ebuild manifest, в нем хранятся хеши файлов в папке. Наверно так нужно. Можно не заморачиваться созданием этого файла, а дописать ключ игнорирования —skip-manifest. Опция хорошо помогает в процессе написания ебилда.

Запускаем сборку командой ebuild ./msvtest-1.0.ebuild install.
ebuild скачает исходники программы по указанному в SRC_URI адресу, если не скачал при создании манифеста. Если потребуется удалить исходники ищите их в /usr/portage/distfiles.
Далее ебилд пройдет все шаги, а именно: скачает и распакует. Нам останется скомпилировать проект в секции src_compile() и установить в секции src_install(), или банально скопировать.
Вся сборка будет происходить в /var/tmp/portage/app-admin/msvtest-1.0. Если что-то пошло не так, всегда можно залезть, покопаться в исходниках и скриптах.
Так же интересный момент: ebuild install выполняет все заново, а некоторые команды пропускают успешно выполненные секции. А это те которые хоть как-то завершились, даже с ошибками. Поэтому советуют добавлять команду die, она точно остановит выполнение. В rpm выполнение тормозилось сразу при появлении ошибки и я скучаю по этой особенности.

Когда сборка пройдет без проблем, а в тестовом варианте их помнится не предвещалось, пакет можно установить в систему командой emerge ./msvtest-1.0.ebuild. И наслаждаться новой командой msvtest. Удаляется это дело: emerge —unmerge msvtest-1.0 .

На этом мои знания кончаются. Как собирать под другую архитектуру и строить репозитарии я пока не знаю. Пока.

Понравилась статья? Поделить с друзьями:
  • Как написать dungeon synth
  • Как написать drill
  • Как написать dota
  • Как написать dolce milk
  • Как написать dockerfile