LINUX.ORG.RU
ФорумTalks

Где можно подискутировать?


0

1

Активно привожу потроха своего дистрибутива в «правильный» (по моему мнению) вид, в связи с чем возникает очень много мыслей/идей/вопросов для дискуссий. Реквестирую IRC каналы и Jabber конференции, где можно свободно говорить на тему линукса и меня не забанят за то, что я слишком много говорю, даже если никто не отвечает; но все-таки хотелось бы узнавать другие мнения тоже.

И сразу вопрос, чтобы тему зря не создавал).. Пишу пакетный менеджер (таким, каким хочу его видеть я), оглядываясь на crux, arch; и сейчас делаю собиралку пакетов (pkg_make). С общим форматом BUILD-файла (сценария) по которому пакет будет собран все понятно (такой-же как в crux, arch), но думаю над загрузкой исходников. У них в массиве source=() указываются просто ссылки, но я решил писать полностью команду, необходимую для загрузки.

source=(
        "$name-$version.tar.gz" "wget -c ftp://ftp.mutt.org/mutt/devel/$name-$version.tar.gz"
)
и один файл в массиве состоит из двух элементов, - (1) само название конечного файла, к которому сборщик будет обращаться, и (2) команда которая тупо через какой-нибудь eval будет выполняться, для получения этого файла. Сразу выполнить команду проще, чем работать с просто ссылками. И я не вижу бреши в безопасности, поскольку во-первых выполнение этой команды из source=() предполагается без прав рута, а во-вторых незнакомый BUILD-файл всегда просматривается пользователем, прежде чем запускается. Автор BUILD'а сам может вставить в нее любую команду и параметры к ней, указать каким образом файл будет загружен. А вы что думаете?

Я не Денис, однако не вижу ничего зазорного в том, что я хочу переделать некоторые вещи _для себя_, такими, какими их вижу _я_. И ищу комньюнити, где можно было бы услышать другие мнения в процессе вноса изменений в систему.

★★★★★

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

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

mlyaghost
()

Такое впечатление, что ты пишешь формат ебилда и Portage/Paludis

Chaser_Andrey ★★★★★
()
Ответ на: комментарий от Spoofing

Дурацкая затея. Программа загрузки должна браться из переменной окружения или проверять наличие wget/curl.

Chaser_Andrey ★★★★★
()

Подискутировать? Это сейчас так назвается, да?

VirRaa ★★★
()

Реквестирую IRC каналы

тоже ищу нормальные

xtraeft ★★☆☆
()

Лучше указывать просто протокол (http, ftp, git...) и сам URL, а где-нибудь в недрах конфига есть табличка протокол->команда.

Yareg ★★★
()

Действительно, кто-нибудь напишет wget, а его в системе-то и нету. А есть curl. Гипотетические юзеры тебя проклянут. И ещё, задумайся, стоит ли использовать массивы с магической семантикой, когда вместо них можно использовать map'ы с возможностью добавления новых ключей и проверки старых. В общем, я за именованные параметры.

Biga
()

А зеркала репозиториев как делать?

Ну и да - тюринг-полные конфиги - это в общем случае плохо. И ошибку проще допустить, и всё-таки небезопасно.

Концепт эксплоита: вместо wget мейнтейнер-злоумышленник использует скрипт на perl, который на первый взгляд ходит curl'ом по зубодробительному URL, а на самом деле этот URL расшифровывает и выполняет а-ля та самая строчка на перле..

legolegs ★★★★★
()

Spoofing

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

unixforum.org (админ и его модеры - му, но остальные отличные люди)
linuxforum.ru (среди модеров есть му, но и не мало нормальных и интересных людей)
/me, однако, на обоих забанен.

moscwich
()

Реквестирую IRC каналы и Jabber конференции, где можно свободно говорить на тему линукса

#linux, linux@conference.<jabber.domain>

Xenius ★★★★★
()

и один файл в массиве состоит из двух элементов, - (1) само название конечного файла, к которому сборщик будет обращаться, и (2) команда которая тупо через какой-нибудь eval будет выполняться, для получения этого файла.

Я думаю, подход, где только ссылка лучше — можно юзать любую качалку, а не только wget. С другой стороны, можно конечно предусмотреть какой-нибудь git clone... Тогда можно ввести ещё один параметр с командой, которая будет исполнятся, если переменная типа $GIT_DOWNLOAD не задана

Xenius ★★★★★
()
Ответ на: комментарий от Xenius

>С другой стороны, можно конечно предусмотреть какой-нибудь git clone...

В арче когда-то тупо пропускали source (кроме патчей/иконок/whatever) в этом случае и делали git clone в build(). Не знаю, как сейчас, впрочем.

Если очень хочется писать команду для скачивания в каждом билде, то, наверно, стоит заменить

source=(
        "$name-$version.tar.gz" "wget -c ftp://ftp.mutt.org/mutt/devel/$name-$version.tar.gz"
)
на
prepare() {
wget -c ftp://ftp.mutt.org/mutt/devel/$name-$version.tar.gz
tar xf $name-$version.tar.gz
}

x3al ★★★★★
()
Ответ на: комментарий от baverman

makepkg хороший, учитывает все ньюансы для сборки пакетов (как то, например, последующее удаление не нужной документации/файлов, strip бинарников, сжатие man'ов). pacman не нравится тем, что это программа; и в целом арч не устраивает форматом пакетов (их излишеством).

от пакетного менеджера мне нужно: 1) контроль установленных в системе файлов 2) больше ничего в нем быть не должно. поэтому взялся писать пакетный менеджер в 100-200 строчек кода, в трех скриптах pkg_{make,add,delete}.sh, лишь для удобства добавления/удаления файлов в системе. три скрипта (трудно назвать «пакетным менеджером»), которые должны уметь: собирать пакет (.build файл похожий на PKGBUILD), при его установке (распаковке) записывать список файлов в «/var/lib/pkg/<name>-<version>/files» чтобы знать какие файлы принадлежат какой программе, и при его удалении просто пройтись по списку файлов чтобы удалить их. по сути я изобретаю уже существующий «make install» и «make uninstall». у знающего человека это заняло бы один вечер, а я второй день читаю http://wiki.bash-hackers.org/doku.php :)

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