Вы здесь

Срез от Penguinux

Привет всем гентушникам! С наступившим новым годом! Сайт "Penguinux" предлагает вашему вниманию срезы для Gentoo. Мы делаем полный и урезанный срез в конце каждого месяца. В урезанный срез входят последние стабильные и тестовые версии файлов. Получается где-то около 6-7 dvd.
Каждый месяц срез обновляется примерно на 4G, регулярно его перезаказывать просто неудобно. Поэтому мы делаем dvd с обновлениями за месяц.
На сайте также выкладывается список добавленных в течение текущего месяца пакетов. Обновляется он каждые 1-2 дня.
Здесь же выкладываются обнаруженные ошибки в дереве портежей (ошибки имен файлов, размеров, контрольных сумм).
Для работы со срезом идет разработка проекта depack. С его помощью можно определить файлы, необходимые для установки пакета, их наличие в системе и носители (диски, флешки...), на которых эти файлы находятся. Как это выглядит можно посмотреть здесь.

Наш сайт penguinux.ru.

Форум: 

Незнаю, как на счет магазина, но лично меня заинтерисовал depack.
Накатал пока вот такой корявенький ебилд по мэйкфайлу.

# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-portage/depack/depack-0.78.ebuil,v 0.01 2008/01/05 00:48:43 Mellon Exp $

DESCRIPTION="DEpendencies PACKage"
HOMEPAGE="http://www.penguinux.ru/pr_Depack.php"
SRC_URI="http://penguinux.ru/projects/Depack/depack-0.78.tar.bz2"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~ia64 ~ppc ~ppc-macos ~ppc64 ~x86"
IUSE=""

RESTRICT="mirror"

RDEPEND="dev-lang/python
	 app-i18n/enca"

S="${WORKDIR}/${PN}"

src_unpack() {
	CHARSET="$(echo ${LANG} | sed s/"^.*\."//)"
	unpack ${A}
	cd ${S}
	find src/ -maxdepth 1 -type f -exec enconv -L ru -x ${CHARSET} {} \; || die
}

src_compile() {
        echo
        einfo "Nothing to compile."
        echo
}

src_install() {
	insinto /usr/share/depack
		doins src/colorlib.py \
		      src/colorlib.pyc \
		      src/toolib.py \
		      src/toolib.pyc \
		      src/verlib.py \
		      src/verlib.pyc  || die
	insinto /usr/share/depack/locale	
		for x in src/locale/*
	        do
        	        doins  ${x} || die
        	done
	insinto /etc/depack
		doins src/config || die
	dobin src/depack || die
	dodir /var/depack/base || die
	dodoc AUTHOR COPYING || die
}

корявость заключается в неправильном складировании питоновских скриптов:

 * QA Notice: Precompiled python object files do not belong in /usr/share
 * /var/tmp/portage/app-portage/depack-0.78/image//usr/share/depack/toolib.pyc
/var/tmp/portage/app-portage/depack-0.78/image//usr/share/depack/verlib.pyc
/var/tmp/portage/app-portage/depack-0.78/image//usr/share/depack/colorlib.pyc

Пока не проверял, работает ли сама программка, и как именно она работает (утром постараюсь разобраться)

:)

Было бы не плохо "прикрутить" возможность совместной работы с app-portage/getdelta :)

Я Gentoo & Funtoo

В смысле как "прикрутить"? Можно, например, чтобы на выходе появлялись команды для скачки. Это оно?

getdelt'а перед попыткой скачать delt'у проверяет наличие предыдущих версий sources. Вот и было бы неплохо, чтобы getdelta искала их и в базе, созданной скриптом.
Т. е. скрипт проверяет наличие в /etc/make.conf опции FETCHCOMMAND="/usr/bin/getdelta.sh \${URI}" и, при её наличии и при отсутствии нужных исходников на локальных носителях, предлагает возможные версии исходников из своей базы.

Я Gentoo & Funtoo

Похоже смысл уловил. Придется все равно поразбираться в скрипте /usr/bin/getdelta.sh. Попытаюсь что-нибудь сообразить.

Доработал ебилдик до более-менее стандартного варианта.

# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-portage/depack/depack-0.78.ebuil,v 1.00 2008/01/04 23:59:43 Mellon Exp $

inherit python

DESCRIPTION="DEpendencies PACKage"
HOMEPAGE="http://www.penguinux.ru/pr_Depack.php"
SRC_URI="http://penguinux.ru/projects/Depack/${P}.tar.bz2"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~ia64 ~ppc ~ppc-macos ~ppc64 ~x86"
IUSE=""

RESTRICT="mirror"

DEPEND="sys-libs/glibc"

RDEPEND="dev-lang/python
	 >sys-apps/portage-2.1.2"

S="${WORKDIR}/${PN}"

convert_files() {
        CHARSET="$(echo ${LANG} | sed s/'^.*\.'//)"
        if [[ "x${CHARSET}" != "xKOI8-R" ]]; then
        	for x in src/*.py src/config src/depack
        	do
        	     iconv -f KOI8-R -t ${CHARSET} ${x} > ${x}.out || die
        	     mv ${x}.out ${x} || die
        	done
        fi
}
        	        
src_unpack() {
	unpack ${A}
	cd ${S}
	convert_files
}

src_compile() {
        echo
        einfo "Nothing to compile."
        echo
}

src_install() {
	insinto /usr/share/depack
                for x in src/*.py
                do
                        doins  ${x} || die
                done
	insinto /usr/share/depack/locale	
		for x in src/locale/*
	        do
        	        doins  ${x} || die
        	done
	insinto /etc/depack
		doins src/config || die
	dobin src/depack || die
	dodir /var/depack/base || die
	dodoc AUTHOR COPYING || die
}

pkg_postinst() {
        python_mod_optimize "${ROOT}"/usr/share/${PN}
}

pkg_postrm() {
        python_mod_cleanup "${ROOT}"/usr/share/${PN}
}

:)

:)

Проверил ebuild, все работает. Спасибо, Шаманыш!

Хотелось бы иметь определение путей
path_keywords
path_mask
path_use
через конфиг и командную строку, так как структура /etc/portage/package.* может сильно варьировать и отличаться от дефолтной.
Конкретно, это можно реализовать следующим образом. Возьмем для примера path_keywords.
a) Смотрим конфиг, если в нем определен path_keywords, то он должен буть определён как путь относительный к /etc/portage/package.keywords/, например, enlightenment/snapshot
b) Смотрим параметры командной строки, если в нем определен path_keywords, то он должен буть определён как путь относительный к /etc/portage/package.keywords/, например, enlightenment/cvs
c) Нигде не определено. Смотрим /etc/portage/package.keywords, если файл, то оставляем, иначе назначаем /etc/portage/package.keywords/common.

То есть, на bash это может выглядить примерно так:

path_keywords=""

source /etc/depack/config
if [[ "x${path_keywords}" != "x" ]] ; then
path_keywords="/etc/portage/package.keywords/${path_keywords}"
fi

until [ -z "$1" ]; do
if [ "$1" == "--path-keywords" ]; then
  path_keywords="/etc/portage/package.keywords/$2"
  shift
fi
shift
done

: ${path_keywords="/etc/portage/package.keywords"}
[[ -d ${path_keywords} ]] && export path_keywords="${path_keywords}/common"

:)

:)

Не могу понять почему берем относительный путь. Можно по-умолчанию в config'е прописать абсолютный, а те кому нужно уже подправят на свой.

потому, как удобней и единообразней получится. По аналогии с layman.
Например, писать в командной строке только нужный файл "--path-keywords xeffects", или раздел и файл "--path-keywords games/fps" более удобно чем прописывать полный путь. И в конфиге, тоже самое.
:)

:)

Извиняюсь, что долго отсутствовал - был на сессии. Постараюсь завтра сделать следующую версию depack.

Только что выложил depack на Penguinux.ru. Добавил ключи для путей к файлам /etc/portage/package.*.
Использовать так:

-U (--path_use) "путь" - путь задается относительно /etc/portage/package.use. Переменная PATH_USE в config содержит (если нужно) глобальный путь.
-K (--path_keyw) - путь задается относительно /etc/portage/package.keywords. Переменная PATH_KEYWORDS в config содержит (если нужно) глобальный путь.
-H (--path_mask) - путь задается относительно /etc/portage/package.mask. Переменная PATH_MASK в config содержит (если нужно) глобальный путь.

По умолчанию пути определены так:
/etc/portage/package.mask
/etc/portage/package.keywords
/etc/portage/package.use

Добавил привязку к getdelta. Работает следующим образом:
В качестве параметра depack передается пакет с ключом -g (--getdelta). Depack проверит наличие файлов в системе и на носителях и закажет патчи только на те файлы, которых нет. Пример:

#depack -g audacity

Также исправил различные мелкие ошибки. Чуть позже добавлю man-страницу.

Отлично, спасибо

:)

:)