Исследователь из Стендфордского университета представил (http://vimeo.com/16684443) проект CDE (http://stanford.edu/~pgbovine/cde.html), в рамках которого разработан инструментарий для автоматического формирования универсальных пакетов программ, которые могут быть запущены в любом Linux-дистрибутиве, без необходимости установки, конфигурирования и доустановки каких-либо компонентов. Самодостаточность пакетов достигается путем включения в состав всех зависимостей, включая системные библиотеки, шрифты, компоненты для динамического связывания, данные и другие элементы пользовательского окружения.По мнению разработчика, CDE может оказаться полезным для быстрой упаковки приложений для последующего развертывания в Cloud-окружениях или для ознакомительного обмена программами (для запуска не требуется установка, программу можно опробовать и безболезненно удалить). Гарантированная идентичность выполнения программы для разных систем позволяет использовать CDE для ознакомления коллег с ре...
URL: http://linux.slashdot.org/story/10/11/13/0029203/CDE-mdash-M...
Новость: http://www.opennet.me/opennews/art.shtml?num=28645
А прикольная хрень для отладки, вытаскивает не только либы, но
и, видимо, всю хрен над которыми делается stat() и open().
Хорошее дополнение к strace. :)----
Но не до деланная, она отслеживает только процесс запуска.
Например для firefox, она нихрена не сохранила профиль,
только ~/.mozilla/firefox/Crash Reports :)
На ..ую вертел я этот Стэнфорд...
#!/bin/bashNEW_ROOT="$PWD/new-root"
if [ ! -d $NEW_ROOT ]
then
mkdir $NEW_ROOT;
fi# проверку на $1 не делаем, strace сам отвалится
for i in `strace -ff -e stat,open $1 2>&1 | tee | tr '"' ' ' | awk '{print $4}' | sort -u`
do
if [ -d $i ];
then
mkdir -p $NEW_ROOT/$i
else if [ -f $i ]
then
cp -f $i $NEW_ROOT/$i
fi
fi
done5 мин.
не работает.строка 12: неожиданный EOF при поиске соответствующего `"'
строка 23: ошибка синтаксиса: неожиданный конец файла
Тут тебе не Стенфорд, тут за тебя думать не будут. :)
> for i in `strace -ff -e stat,open $1 2>&1 | tee | tr '"' ' ' | awk '{print $4}' | sort -u`с этим понятно
но всё равно не работает.
Да ни чего вам не понятно :) (модеры хватит орфографии править)
В строке for i in `exec`, exec должен выполняться,
то есть нужен ` - апостроф или как его, а не ' - одинарная кавычка.
Еще для нехороших людей придумали $()for i in $(strace -ff -e stat,open $1 2>&1 | tee | tr '"' ' ' | awk '{print $4}' | sort -u)
ver. 2
#!/bin/bashNEW_ROOT="$PWD/new-root"
if [ ! -d $NEW_ROOT ]
then
mkdir $NEW_ROOT;
fi# проверку на $1 не делаем, strace сам отвалится
# для прог без форков нужен 2-й аргумент для awk
# for i in $(strace -e stat,open $1 2>&1 | tee | tr '"' ' ' | awk '{print $2}' | sort -u)
# для прог с форками strace -ff и 4-й аргумент для awkfor i in $(strace -ff -e stat,open $1 2>&1 | tee | tr '"' ' ' | awk '{print $4}' | sort -u)
do
if [ -d $i ];
then
mkdir -p $NEW_ROOT/$i
else
if [ -f $i ]
then
if [ ! -d $NEW_ROOT/`dirname $i` ]
then
mkdir -p $NEW_ROOT/`dirname $i`;
fi
cp -f $i $NEW_ROOT/$i;
fi
fi
done
ещё один.. да когда ж их всех перевешают ?? вместо того чтоб создать универсальный формат пакетов удовлетворяющий всех велосипедистов по типу такого http://zlo.rt.mipt.ru/?read=6686384 они ж хреначат "Самодостаточность пакетов достигается путем включения в состав всех зависимостей"
>> "Самодостаточность пакетов достигается путем включения в состав всех зависимостей"Вообще прикольно. MS делает пакетный менеджер вместо самодостаточных приложений, *nix делает механизм самодостаточных приложений. Apple ржет над хомячками и имеет миллионы или уже миллиарды заявляя "Хочешь иметь бабло - пиши грамотно!".
где Microsoft делает пакетный менеджер вместо?
NuPack таки. Не полная замена конечно - то я так понимаю сравнению по ценности уместно.
Аппла ничего не делала. они только компилят продукты под свою систему и только. в случае линукса - каждый производитель по своему тюнит систему и свои патчи ложит для продуктов, по этому и есть несовместимость между.
> MS делает пакетный менеджер вместо самодостаточных приложений,У них сто лет есть MSI, только это буллшит а не менеджер пакетов. Какой-то эрзац, т.к. хотя и есть какое-то подобие пакетизации, но рюхание зависимостей в стандартном виде отсутствует как класс, поэтому каждый изгаляется как умеет. Стандартных репов откуда можно было бы запросить разные либы - тоже нет. В итоге в системе получается тотальный бардак. Если кому надо zlib.dll - он прет свой собственный вариант оной либы. И так - каждая программа. В итоге в системе оказывается 100500 копий одной либы. И по ресурсам неэффективно, и когда в либе находят дыру - пока там все программы все этим 100500 копий обновят и юзер раздуплится обновить зоопарк, рак на горе свистнет! В итоге даже у опытного администратора в системе вполне могут быть дырявые либы, например. Просто потому что нет никакого вменяемого инструментария для управления этими залежами барахла. MS вполне мог сделать из MSI такой инструментарий, однако вместо этого сделал какое-то тормозное, грабельное и убогое уродство. КГ/АМ, как обычно.
> *nix делает механизм самодостаточных приложений
Не, мистер, вот вы и юзайте это. Правда тогда вас посетят все те же виндовозные проблемы с 100500 копий никем не обновляемой либы в системе и неэффективным юзежом ресурсов :)
> Apple ржет над хомячками и имеет миллионы [хомячков] //fixed.
Вот так - правильнее :)))
>> *nix делает механизм самодостаточных приложений
> Не, мистер, вот вы и юзайте это. Правда тогда вас посетят все
> те же виндовозные проблемы с 100500 копий никем не обновляемой либы
> в системе и неэффективным юзежом ресурсов :)Вот интересно как вы без интернета поставите все зависимости приложений? Хотите X, нам нужно Y, но у вас полетят Z и W которым нужна библитека, которая конфликтует с Y версий выше xxx. Всё познается в сравнении.
>>> *nix делает механизм самодостаточных приложений
>> Не, мистер, вот вы и юзайте это. Правда тогда вас посетят все
>> те же виндовозные проблемы с 100500 копий никем не обновляемой либы
>> в системе и неэффективным юзежом ресурсов :)
> Вот интересно как вы без интернета поставите все зависимости приложений? Хотите X,
> нам нужно Y, но у вас полетят Z и W которым
> нужна библитека, которая конфликтует с Y версий выше xxx. Всё познается
> в сравнении.А откуда у людей без интернета новое приложение, которое надо установить?)
Проблема курицы и яйца, не находите?Люди без интернетаДля людей без интернета есть специальные дистрибутивы, где все включено.
linux mint, или debian с его 14ти DVD дисками.Вообще ваш аргумент неуместен - CDE придумывался совсем не для того, чтобы его юзали люди без интернета.
А для того, чтобы делиться пакетами с друзьями по интернету.
>ещё один.. да когда ж их всех перевешают ??В своем скринкасте автор ясно показал, в каких случаях это нужно.
> ещё один.. да когда ж их всех перевешают ?? вместо того чтоб
> создать универсальный формат пакетов удовлетворяющий всех велосипедистов1) www.epmhome.org - пример формата портабельных *пакетов*.
pkgsrc.org, SuSE Build Service, Gentoo portages -- примеры
портабельной системы *сборки*.
Чего тебе еще не хватает? Иди работай!
2) Всех велосипедистов удовлетворить невозможно. Смирись с этим.
Я лично в гробу видел ваши .rpm или .deb. Это просто к примеру.> по типу такого
> http://zlo.rt.mipt.ru/?read=6686384 они ж хреначат "Самодостаточность пакетов достигается
> путем включения в состав всех зависимостей""с указанием имени дистриба и нужных зависимостей для этого дистриба, причём
с возможностью как затребовать пакетА-версияБ-дистрибВ-версия_пакета_в_дистрибеГ-
патчиДЕЁЖ так и (/или) пакетА-версияБ-*-*-патчиДЕЁЖ + конфликт пакетА
версияБ-*-*-патчиЗИК""LOL. Реально очень смешно :-D
> Всех велосипедистов удовлетворить невозможноа почему собсно ?
> LOL. Реально очень смешно :-D
а почему собсно ?
>> Всех велосипедистов удовлетворить невозможно
> а почему собсно ?Потому что человеческая натура такова, что она постоянно ищет совершенства.
Во всем и всегда! А понятие о совершенстве у всех людей разное. Увы и ах.
К примеру, Линупсоиды в принципе не понимают, что означают слова bloat или overbloated
применительно к софту, которое так любят BSD-ки, а BSD-ки не понимают,
как можно воспевать "базарную" модель разработки, которая, как они считают, приводит
к бардаку. У каждого своя правда, и каждый будет гнуть свою истину,
потому что он в ней УБЕЖДЕН, а не потому что он упертый тупоголовый баран,
как многим нравится думать>> LOL. Реально очень смешно :-D
> а почему собсно ?Если ты никогда не занимался пакетированием софт,
я не смогу тебе этого объяснить. Извини, у меня нет столько времени.
> У каждого своя правда, и каждый будет гнуть свою истину,
> потому что он в ней УБЕЖДЕН, а не потому что он упертыйможно пример для деб или рпм что вас в ней отторгает и почему эта вещь не может быть включена в деб или рпм ? просто я не смог такого придумать и мне пока не привели примера
Вопрос надо ставить не так. Не чем он меня лично отторгает, а чем он ЛУЧШЕ
использующегося у меня в данный момент. То есть вопрос задам я,
чем форматы .deb и .rpm лучше .t[gb]z, использующмийся в pkgsrc
или Free/OpenBSD портах? На данный момент я вижу, что
формат pkgsrc предоставляет мне гораздо больше информации, чем .rpm
и .deb, и соответственно утилита pkg_info дает мне всю
необходимую информацию и даже больше.Что касается rpm, то с ним все давно ясно.
Его нельзя превратить в cpio стандартными средствами без грязных хаков или
внешних утилит. .deb в этом плане намного лучше. Но в нем меня просто
бесит подверкивание в тех местах, где в апстриме и в других нормальных
местах положен быть минус. Мелочь, но неприятно, за много лет использования
Debian я так и понял сакрального смысла смысла изобретать велосипед
в этом месте. Когда Debian создавался, в начале 90-х,
тарболы с исхониками уже были, и звались они software-1.2.3.tar.gz, а не
software_1.2.3.tar.gz
Штука полезная иногда; надеюсь только, что всерьёз её массово применять не станут.
PBIdir.com ?
Тс-с-с.. "улыбаемся и машем"
А почему сразу образ системы для виртуальной машины не делают? тогда бы вообще было все равно на чем запускают.... У нас же сейчас места много на дисках, нужно обязательно забить.
+1 К тому же найдется применение BR дискам) прогресс будем двигать!)))
Хоть по сути и костылесипед, но, ИМХО, для портирования игрушек под линукс - самое то будет.
А что, удобно же. Как Portable-приложения.
конечно удобно. давай переносить приложения, будет у нас и ФФ, на 2 гига и почтовик на 2 гига и вся остальная хрень. А за железо ты заплатишь
Какие еще 2 гига? Ерунды-то не порите. 2 гига - это полностью установленная система, а ФФ-статик занимает 20Мб от силы. Будет занят лишний гигабайт на библиотеки. При цене на гигабайт в современных винчестерах это мелочи.
Хотя, конечно, проще просто класть все библиотеки при сборке и не париться.
>Будет занят лишний гигабайт на библиотеки. При цене на гигабайт в современных винчестерах это мелочи.И да, для тех троллей, кто считает себя очень умными. 1 гигабайт - имеется ввиду для всех нескольких приложений, которыми вы пользуетесь. С большим-большим запасом. Ага, для Опенофиса.
> Какие еще 2 гига? Ерунды-то не порите. 2 гига - это полностью
> установленная система, а ФФ-статик занимает 20Мб от силы.Угу, зато как наберется у вас с пару десятков приложений - тут то вы и поймете что обновлять жирные чушки нифига не удобно. И качать много, и следить за ними надо самому, и дырявых либ там может быть куча, и вирье таким манером можно получить запросто. Уродский подход из девяностых годов прошлого века. Кому нравятся дыры, вирье, неэффективный юзеж ресурсов и прочая? Налетай! Пролетай! :)
Firefox с зависимостями занимает 427682221. Примерное столько же будет занимать любое серьёзное приложение. Жуйте и молчите.
> А че, удобно же. Как Portable-приложения.Ага, запускающиеся только под линухом? Тогда и линуховый кернель придется тащить с собой. На случай если вдруг в энной локации его ... нет. Получится обычный такой ливцд.
> достигается путем включения в состав всех зависимостей, включая
> системные библиотеки, шрифты, компоненты для динамического связывания,
> данные и другие элементы пользовательского окружения.Кажется это до него уже изобрели. Называется "исошка с линуксом в который заинтегрена наша програма". Там еще и кернел включен заведомо подходящий, во! :)
VMWare ThinApp for Linux :)Отличная идея.
Для всех китайцев, москвичей и прочих неграмотных:Uhhh, CDE seems far inferior to DEB, RPM, or any real Linux package management system, because of reasons X, Y, Z, etc...
Ok, that wasn't a question, but some people have been comparing CDE to real package managers used in the GNU/Linux ecosystem (e.g., DEB, RPM). CDE isn't meant to compete with these systems: It's simply meant as an easy way to allow colleagues to run your code, not as a replacement for real package managers.
CDE... Не могли другое название придумать?
> CDE... Не могли другое название придумать?PBI уже занято.
думаешь CDE не занято? Подумай еще раз
> думаешь CDE не занято? Подумай еще разО том и речь...
это еще что...вот дистриб назвали так назвали ConnochaetOS
http://www.connochaetos.org/wiki/doku.php
Ну назвали, и назвали. А что особенного?
Этот проект возродил работы по сборке дистрибутива для старых машин - DeLi Linux. Я сам когда-то его использовал на одной допотопной машинке, вполне годная вещь.Ну а что до названия - так оно тоже в честь антилопы гну. :)
Эволюция CDE пришел из MacOSX. Припозднился правда.
Беспорно, очень полезная программа. Вот только бы её до ума довести... Выполнил у себя ./cde gcalctool и с радостью заметил в образовавшейся папочке файл passwd. Без правки ручками такой пакет отсылать даже коллегам я бы не стал)
> Беспорно, очень полезная программа. Вот только бы её до ума довести... Выполнил
> у себя ./cde gcalctool и с радостью заметил в образовавшейся папочке
> файл passwd. Без правки ручками такой пакет отсылать даже коллегам я
> бы не стал)Чего ж у Вас там такого секретного в /etc/passwd?
> Чего ж у Вас там такого секретного в /etc/passwd?Имя пользователя уже достаточно секретно. Вы не знали? А шелл - вообще бесценная информация.
> Выполнил у себя ./cde gcalctool и с радостью заметил
> в образовавшейся папочке файл passwd.Дык, это надо у создателей gcalctool спросить, зачем калькулятору passwd нужен?!
> Выполнил у себя ./cde gcalctool и с радостью заметил в образовавшейся папочке
> файл passwd.Тоже об этом подумал.
Мало ли какие либы юзает прога, и мало ли какие файлы читают либы.Кстати, если вспомнить про вирусы и руткиты под linux - вот такой способ "поделиться прогой с другом" отлично поможет вирусу перебраться на следующий комп.
Всего-то надо - заразить elf файл, или библиотеку.Тут уже сказали про веселый путь обновления библиотек с таким подходом.
И про то, что 10 ОДИНАКОВЫХ библиотек в системе занимают места, далеко не как одна.
А ещё плюс - я хз, когда все полностью перейдут на новый libpng (1.4).
Но вот с такими "инструментами" - нескоро.А в остальном - штука прикольная.
Хотя я бы посоветовал посмотреть в сторону chroot и, раз пошла такая пьянка, openvz/jail.
Хоть намек на безопасность будет.
да когда же кто-нибудь уже сотворит целый дистрибутив, где всё собрано статично, специально для любителей этих извращений ? какая это уже подобная поделка: третья, четвертая ?
одолели уже высерами аля setup.exe и bullshit.pkg, в Gobolinux их, вместе с их любителями !понародили делфокодеров под win32 в универах по всей планетке, дак они теперь по старым привычкам софт и толкают друг другу. действително, лучше бы уж научились стряпать виртуальные мини образы под qemu/kvm, если так важно перепереть целые окружения.
> да когда же кто-нибудь уже сотворит целый дистрибутив, где всё собрано статично, специально для любителей этих извращений ?Если не ошибаюсь, программы на forth со всем необходимым (в том числе со встроенной forth-машиной) так и собираются. При этом имеют размер раз в 20 меньше любого откомпилированного с языка C программного "стека", готового к "нулёвой" загрузке и выполнению.
GoboLinux - один из моих первых дистрибутивов. Что с ним не так?
а FatELF и прочие есть одни из любимых вами проектов, как видно. ну так вот все три - одного поля ягоды, потому и неплохо собрать это вместе, чтобы получилась такая резервация-сообщество, откуда подобные проекты-высеры с их адептами не портили устоявщейся хорошей картины с software management'ом в GNU/Linux.
не передам я словами печаль, в которую меня вводит мысль, что можно вот так вот изговнякать один из основопологающих принципов моей любимой ОС :\но видимо желающих не так много в действительности, ибо подобного дистрибутива-урода наблюдать не приходится, даже не смотря на существование самого Gobolonux с его иерархией ФС. ему бы пошло, но не думаю, что услышу о новости об интеграции подобного даже в него в ближайшее время.
Что-то давно ничего не слышал про FatELF и Bundles.
> Что-то давно ничего не слышал про FatELF и Bundles.А что вы хотли бы о них услышать? Это больные идеи выродочных проприетарщиков, их похоронили сразу по рождении. Больше новостей не будет.
Классная штука! Но как поступить с процессорными функциями? Скачиваю я VLC для Windows и он каким-то чудом определяет, какие SSE есть в моём процессоре, задействуя только имеющиеся. В крайнем случае в окне настройки есть галочки "Использовать MMX-SSSE4.2" - галочек 20.В Linux я вижу только этот способ задействовать процессорные инструкции: скомпилировать программу на нужном процессоре. А на старом процессоре (без SSE3) программа уже работать не будет: надо собирать тогда без флагов оптимизации. Яркий пример Unigine: нет SSE? Программа не запускается, хотя процессор и видеокарта тянут её.
Это что же тогда, делать как минимум 4 бинарника надо? 32 бита, 64 бита, с оптимизацией, без оптимизации... Или есть решение? Pavlinux подскажи?
Не знаю, почему никто не задумался о вирусах и их распространении: вместо системных библиотек в пакете может быть её аналог с незакрытой уязвимостью. Но мне кажется бояться нечего: и без таких пакетов никто не мешает запускать абсолютно любые программы в юзерспейсе, с совершенно любыми библиотеками. А вот насчёт дублирования огромного количества одной и той же информации в памяти... 8 glibc, 8 iconv, 4 gtk, 3 qt, 7 libxml - и так далее, многовато будет. Хотя бы некоторые библиотеки думаю стоит брать из системы, в процессе запуска программы проверить соответствование установленных в систему библиотек нужным требованиям.
> Это что же тогда, делать как минимум 4 бинарника надо? 32 бита,
> 64 бита, с оптимизацией, без оптимизации... Или есть решение? Pavlinux подскажи?Ща закидают камнями - Java :)
1. x86_64 без SSE точно не бывает.
2. 32 бита c SSE только Пень IIIТак что думаю 32 и 64 версий хватит.
Ошибку сегментирования в Unigine выловил опытным путём. На компьютере с GeForce 8500 жёсткий диск с ОС запускает игру, на другом компьютере с 7600 - нет. Тот же жёсткий диск... Меняю процессор Athlon XP 2000+ на Семпрон - работает! Значит SSE.
> Меняю процессор Athlon XP 2000+ на Семпрон - работает! Значит SSE.А по-моему оба имеют SSE, как раз твой случай - x86_32 с SSE :)
> При этом обязательным условием является наличие одной серии Linux-ядер (программу из системы с ядром 2.6.x не перенести на систему с ядром 2.4.x) и идентичность процессорной архитектуры.IMHO если уж пихать все зависимости в пакет, то почему бы и бинарники для разных архитектур не приложить...
> IMHO если уж пихать все зависимости в пакет, то почему бы и
> бинарники для разных архитектур не приложить...Потому что задача не сделать пакет, а полностью повторить на другой машине поведения определенной, уже установленной и работающей программы.