Вы здесь

Унификация - есть идея. Нужны комменты.

Есть идея:
Берём за основу от же подход что и применяемый в разганичении прав - создание сущностей обеспечивающих разделение - аккаунты (групповые, пользовательские).
и так покажу на примере:
есть некий комплекс Xorg
в обычном своём поведении при установке данный комплекс распихивает свои файлы по каталогам

/etc
/bin
/usr/bin
/home/user

и другим

что я предлагаю:
перед установкой xorg запрашивает себе, условно назовём, "аппдомен" - генерируемый случайно уникальный идентификатор, например в таком виде 77b3-4f76-1c01-1a24
получив id комплекс начинает распихивать себя по каталогам: но везде перед своими файлами втыкается полученный ранее id

/bin/77b3-4f76-1c01-1a24/файлы и каталоги
/etc/77b3-4f76-1c01-1a24/файлы и каталоги
/lib/77b3-4f76-1c01-1a24/файлы и каталоги
/usr/bin/77b3-4f76-1c01-1a24/файлы и каталоги
/usr/local/77b3-4f76-1c01-1a24/файлы и каталоги

как вариант:

/bin/appdomains/77b3-4f76-1c01-1a24/файлы и каталоги
/etc/appdomains/77b3-4f76-1c01-1a24/файлы и каталоги
/lib/appdomains/77b3-4f76-1c01-1a24/файлы и каталоги
/usr/bin/appdomains/77b3-4f76-1c01-1a24/файлы и каталоги
/usr/local/appdomains/77b3-4f76-1c01-1a24/файлы и каталоги

в каждом каталоге лежит файл допустим .desc содержащий линейный конфиг вида:

app_id=77b3-4f76-1c01-1a24
app_title=Xorg
dir_title=Config Directory
app_version=7.1
dir_version=001
...

вот вкрадце и вся идея.

для сохранения совместимости делаются ссылки на старые места, ну типа:
ln -s /etc/appdomains/77b3-4f76-1c01-1a24/xorg.conf /etc/X11/xorg.conf

в утилиты типа ls вносятся дополнительные параметры, для отображения дескрпшинов, хотя можно и не вносить, grep вполне сгодится.

плюсы такого решения:
1) сохранняется совместимость с POSIX (никто не забыт ни что не забыто 8) )
2) унифицируются место положение файлов каждой программы индивидуально
3) упрощаются установка, удаление, контроль приложений, сбор информации по ним, упрощаются возможности по поддержанию в рабочем состоянии нескольких версии какой либо программы с несколькими версиями сопутствующих данных
4) может ещё какие есть? 8)

минусы:
1) немножечко усложняется представление.
2) может ещё какие есть?

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

хачу комменты 8)

Форум: 

С моей колокольни: Зачем плодить сущности?

Зачем все так усложнять, ведь есть переменная preffix...

--prefix не обеспечивает контроля, лишь обеспечивает другой путь для различных операций, контроль же остаётся на плечах создателя программы.

Предлагаемая идея даёт возможность переложить контрольна на саму ось. Упрощается установка/обновление/удаление/восстановление/ программ, либов, настроечных файлов и другой лабуды.

Zzzz....

Сначало Вы написали

RNZ написал:
Предлагаемая идея даёт возможность переложить контрольна на саму ось. Упрощается установка/обновление/удаление/восстановление/ программ, либов, настроечных файлов и другой лабуды.

Через несколько постов Вы написали

RNZ написал:
Можно будет избавиться от всей кучи менеджеров пакетов одним махом. Упростить жизнь программисту и пользователю.

А не менеджером пакетов ли называется то, что будет устанавливать/обновлять/удалять/восстанавливать программы, либы, "настроечные" :) файлы и другую лабуду? А если будет менеджер пакетов, какая ему разница с каким расположением файлов работать? А вот нам, человекам, разница есть...

Думаю, эта система подойдет только если будут устанавливаться различные версии одних и тех же программ. Но я не думаю что кому то нужны установленные все версии того же xorg'a, например :) а для пары-тройки приложений можно обойтись родным prefix'ом...

Кстати есть дистр http://gobolinux.org/index.php
который как раз пытается реализовать упращённу систему управления программами через --prefix, но это не то... хотя цели близки.

Zzzz....

а зачем, собсно, такой огород городить?
и так от количества файлов и директорий глаза в кучу, а от этих циферок вобще крыша съедет :(

Можно будет избавиться от всей кучи менеджеров пакетов одним махом. Упростить жизнь программисту и пользователю.

Zzzz....

не совсем в тему но что то подобное я уже вижу на телефонах сименс
там такое управление реализовано для явы...
На мой взгляд всё это только усложнит и добавит много гемороя....
Особенно пользователям...
Разбираться с аброй кадаброй в именах файлов это уже бред...
начинает походитьь на реестр вантуза и их системные папки
_________________
Gentoo GNU/Linux 2.6.17 GCC 4.1.1 Dual Xeon

___________________________________________
Working on Gentoo for iPAQ hx4700 and Openmoko Neo Freerunner :-)
Если у вас компьютер с Windows, есть два выхода: выбросить компьютер в форточку или выбросить форточки с компьютера

Система должнга быть проста как автомат калашникова. Мне лично менеджер пакетов не мешает. B базу установленных пакетов руками лезут нечасто. Потому его содержимое меня совершенно не волнует. Вы же предлагаете вывалить сие в рабочие каталоги , да еще и удвоить количество файлов. Думаю не стоит раскидывать один "ненужный" каталог по всему диску.

Alexxy, wi - Вы не вникли в идею, вероятно потому что я не достаточно ясно выразил мысль:

я не предлагаю вываливать в рабочии каталогии, я же сказал как вариант существование appdomainS и только как под уровень первичных каталогов:
<dir>/appdomains/77b3-4f76-1c01-1a24/файлы,каталоги
т.е.:

/etc/appdomains/77b3-4f7...
/etc/X11/
/etc/zsh/
/etc/hosts
/etc/rc.conf
/etc/resolv.conf

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

# ls -lM /etc/appdomains
1233-434a-111c-a124/ {bind 9.3.2}
13cf-236d-dc22-df14/ {wget 1.10.2}
6341-7184-892d-0c89/ {samba 3.0.23a}
77b3-4f76-1c01-1a24/ {xorg 7.1}

можно и наоборот отображать:

bind-9.3.2 {1233-434a-111c-a124/} {всякая инфа}
wget-1.10.2 {13cf-236d-dc22-df14/} {всякая инфа}
samba-3.0.23a {6341-7184-892d-0c89/} {всякая инфа}
xorg-7.1 {77b3-4f76-1c01-1a24/} {всякая инфа}

или так, со своими комментариями:

net-www/apache-2.0.59 {c5b3-af76-c012-12c4/} {переход форума на новый апач}
net-www/apache-2.0.59(2) {113c-7456-ce12-9c31/} {для отладки с mod_security}
net-www/apache-1.3.21 {7b36-1c23-31c1-5a46/} {для старого форума}

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

Zzzz....

Ещё можно ввести, на базе того что предлагаю, такую штуку как PgID в добавок к UID и GID. Т.о. можно отделить пользовательские аккаунты от аккаунтов программ. Хотя в этом нет такой уж большой необходимости, но как вариант.

Zzzz....

RNZ написал:
плюсы такого решения:
1) сохранняется совместимость с POSIX (никто не забыт ни что не забыто 8) )

Допустим...

Цитата:
2) унифицируются место положение файлов каждой программы индивидуально

с этим прекрасно справляется --prefix

Цитата:
3) упрощаются установка, удаление, контроль приложений, сбор информации по ним, упрощаются возможности по поддержанию в рабочем состоянии нескольких версии какой либо программы с несколькими версиями сопутствующих данных

Установка? какие отличия от --prefix ?
Удаление? А как быть с либами которые используются совместно несколькими приложениями? и т.д. Вообщем я либо чего-то не понимаю, либо это костыль смахивающий на --prefix
Что конкретно и в каком месте станет проще?

я вот вчера openssl обновил - 64 проги пересобирать понадобилось, чем эта концепция мне бы помогла?

Вобще существует стандарт LSB (Linux Standart Base)
Этот стандарт разрабатывался для упрощения жизни и разработчиков и пользователей... Советую про него почитать...

А установка програм каждую в свою папку не продуктивно так как линукс является модульной системой и многие (если почти не все) компоненты взаимосвязаны... Любой динамический бинарник как минимум ссылаеться на glibc
Можно конечно собирать статичную систему но это только добавит головной боли.....
_________________
Gentoo GNU/Linux 2.6.17 GCC 4.1.1 Dual Xeon

___________________________________________
Working on Gentoo for iPAQ hx4700 and Openmoko Neo Freerunner :-)
Если у вас компьютер с Windows, есть два выхода: выбросить компьютер в форточку или выбросить форточки с компьютера

LSB поддерживают плохо, в разных дистрах по разному извращаются. Именно по этому предлагаю по сути убрать ручное именование директорий по которым распределяется программа, пусть это делается автоматом, на уникальной основе. А userlike представление реализуется файлом описания лежащим в директории. Косвенный аналог можно подсмотреть в DNS - установление соответствия ip<->имя

О модулях тоже сказал, раньше

--
тут мат убрал - два слова были 8)

Zzzz....

aluk я бы несказал что --prefix хорошо с этим справляется. И ответьте честно, часто-ли Вы пользуетесь при установке переопределением через --prefix? Могу с большой вероятностью сказать что почти любой кто использует gentoo делает это карайне редко, оставляя всё по умолчанию параметры заданные в ebuild, задав несколько флагов.

evadim в данном конкретном случае может ничего и не дала бы.

Что касается либов, то я уже говорил про ссылки, тем более что этот подход применяется давно и с успехом и именно с либами.

С другой стороны совсем не факт, что для либов стоит использовать данную концепцию. Пока я рассматриваю применение этой концепции для /etc, /<*>/bin, /var, /tmp . Но думаюю и для либов может сгодится

Zzzz....

так косяк в том что openssh ABI каждый раз ломает...

Согласен, тоже что и с libexpat - также ABI ломает, правда по реже.
Ну я и не панацею от всего предлагаю.

Zzzz....

--prefix я применяю только там где считаю это удобным и необходимым.
Чем именно и в каких случаях мне поможет ваша система? Что от этого станет проще?

Ответьте на вопрос: что Вам дала система DNS?
А потом проведите аналогии.

Zzzz....

Мне непонятно, что Вас не устраивает в существующих соглашениях, ведь они слабо отличаются от того что предложили Вы.
Во первых сейчас если у приложения один конфигурационный файл, то оно хранит его в /etc/ если больше 1 то в /etc/название_приложения
То же и с другими папками. Вобще все названия должны быть просты и понятны. Вот сразу понятно что хранится в каталоге /usr/bin/X11. А что хранится в /bin/appdomains/77b3-4f76-1c01-1a24/ непоймеёщь, пока не сделаешь лишних телодвижений. Похожая система с базойданных и описанием приложений есть в KDE, так вот попробуйте на досуге найти, где хранится настройка текущего хранителя экрана или где находятся сами хранители экранов...

Добавлю минусы:
3) это необычно и требует дополнительных усилий по реализации и внедрению
4) непонятные названия каталогов
6) усложнение работы с файлами в этих каталогах

P.S. что-то к концу дня Вы стали очень раздражительным, успокойтесь...

Уважаемый я абсолютно спокоен, грош цена моим мозгам если бы я раздражался из-за того что меня не понимают несколько человек с форума. С чего вам вдруг стало мерещиться что я раздражен? С того что я начал употреблять слова с корнем "хер" - читаем словарь Даля.

Насчёт "лишних телодвижений"
Я же предложил - можно задать представление например в конфиге шела, и забыть о постоянных телодвижения.
таже cd может обрабатывать например имя

$ cd /etc/appdomains/apache	
apache-2.0.59/        apache-2.0.59(2)/        apache-1.3.21/

или

$ cd /etc/appdomains/apache	
apache-2.0.59 {c5b3-af76-c012-12c4} {2006.10.14} {переход форума на новый апач}
apache-2.0.59(2) {113c-7456-ce12-9c31} {2006.10.28} {для отладки с mod_security}
apache-1.3.21 {7b36-1c23-31c1-5a46} {2006.09.20} {для старого форума}

"Мне непонятно, что Вас не устраивает в существующих соглашениях, ведь они слабо отличаются от того что предложили Вы."
http://gentoo.ru/node/4212#comment-21404
- POSIX унификация слабая, недостаточная, не глубокая - она разруливает одно, но при этом ниже берклевской иерахии ничто не ограничевает в движении в сторону бардака.

Вообще говоря почему родилась такая идея, и что бы уменьшить кол-во кривотолков:
Изначально я думал о том, как бы унифицировать систему конфигурирования, потому как меня не устраивает текущее положение в /etc. Думал попробовать всё это дело разрулить в xml, позднее отказался от этой идеи, но желание унифицировать, как можете налюдать, никуда не исчезло.
В ходе дальнейших размышлений и в свете происходящих событий в IT индустрии, появилась идея которая открывает это обсуждение.
Вот мои мысли:
Я предполагаю что в скором времени объём установленного ПО на компах будет зашкаливать, а если вспомнить об объёмах винтов которые были объявлены - 2,5 террабайта от seagate например, то именование каталогов файлов привычным способом может сильно усложнить жизнь.
Зададимся вопросом - Что происходит при увеличении кол-ва программ?
Возьмём за пример windows и её развитие (только не надо воротить нос, windows существует, процветает и от этого факта отворачиваться нельзя) в отдельно взятом ключе - Кнопка "Пуск"/"Start". Сразу двинемся от win95 - появилось меню Пуск - цель которую преследовали этим - ускорение доступа к установленным программам. Затем в win98 и win2k была сделана попытка отделить наиболее часто выполняемые программы и дать возможность управлять списком программ, далее в xp это было ещё немного "развито", попытались автоматизировать формирование списка наиболе часто запускаемых программ и вынести его в удобное место, теперь в vista планируется ввести в Пуск фильтр скооперировав его с run для быстрого досупа ко всем программам установленным в системе. T. о., что мы имеем - с увеличеним кол-ва установенных программ потребовалось менять способ доступа к ним, не будем спорить о том как это сделала ms (и так понятно что сущностей там наплодили выше крыши), остановимся на том факте, то увеличение кол-ва программ требует более продвинутые способы доступа к ним. Вспомните почему и когда стали появляться домашние индексаторы типа beagle или googledesktop?
Теперь зададимся другим вопросом - Было ли подобное ранее и как это решалось при больших объёмах?
Хотя примеров много, но мне почему-то более всего показался показательным пример с появлением DNS. Во много причины появления DNS сходны с предпологаемой грядущей проблемой (хотя конешно кто-то обязательно скажет что проблема с толпой программ "высосана из пальца", надумана), но решение которое предлагает DNS не слишком подходит для решении обозначенной проблемы, тут скорее подойдёт, с некоторыми оговоркаи, система которая существовала до DNS - обмен систем между собой файлами сопоставления ip-name.
Итак что можно сделать - можно избавиться от имени каталога программы - сделать его уникальным-случайным, а в качестве сопоставления в каталоге положить файл с описанием. Конешно есть ещё ворох нюансов, но в целом решение имет право на жизнь. Всё. Остальное можно читать выше.

Zzzz....

Этак мы докатимся до подобия реестра в Linux, и хранить его будем в локальной БД, чтоб поиск быстрее был, и удобней... А команды ls и т.д. можно немного переделать, чтоб запросы к БД слали.

А это ничего не даст.
есть и файловые системы на основе БД.

получатся те же яйца, вид сбоку.

1) locate - уже давно существует.

2) Так ведь в том то и дело, что для хранения сопоставления достаточно иметь всего один файл в системе, вида подобного следующему:

bind-9.3.2 {1233-434a-111c-a124}
wget-1.10.2 {13cf-236d-dc22-df14}
samba-3.0.23a {6341-7184-892d-0c89}
Xorg-7.1 {77b3-4f76-1c01-1a24}
Xorg-6.9 {5393-76e6-0d1a-6e4f}

Вот и весь реестр. Можно конешно понавтыкать, в файле даты, начальный объём установленного пакета и другую инфу, но не так уж это и важно, инфу можно поднять уже потом из каталогов программы.
Зато можно, например, использовать следующий подход для навигации:

# что у нас есть начинающееся на Xorg?
user1@tux ~ $ select Xorg
Xorg-7.1 {77b3-4f76-1c01-1a24}
Xorg-6.9 {5393-76e6-0d1a-6e4f}
#куда пожно пойти по поводу Xorg-7.1
user1@tux ~ $ select Xorg-7.1
/bin
/etc
/usr/bin
/var
/tmp
...
#двинемся в /etc/Xorg-7.1
user1@tux ~ $ select Xorg-7.1/etc
# смотрим что у нас в каталоге /etc/77b3-4f76-1c01-1a24 aka /etc/Xorg-7.1
user1@tux /etc/77b3-4f76-1c01-1a24/ {Xorg-7.1} $ ls
#или
user1@tux /etc/Xorg-7.1/ {/etc/77b3-4f76-1c01-1a24/} $ ls

Кто видит в этом что-то сложное для понимания? Разве не упрощается доступ к различным секциям программы?

Zzzz....

Всё вышеописанное реализуется с помощью --prefix...
Сделал я папочку в системе: /usr/local/programs/ например,
ставлю все проги туда с префиксом.
Достаточно иметь один файлик (если уж очень хочется):

bind-9.3.2 {/usr/local/programs/bind-9.3.2}
wget-1.10.2 {/usr/local/programs/wget-1.10.2}
Xorg-7.1 {/usr/local/programs/Xorg-7.1}
Xorg-6.9 {/usr/local/programs/Xorg-6.9}

Можно использовать следующий подход для навигации:

# что у нас начинается с Xorg?
$$ cd /usr/local/programs/
$$ cd Xorg<жмякнуть Tab>
Xorg-7.1
Xorg-6.9

#куда пожно пойти по поводу Xorg-7.1
$$ cd Xorg-7.1 ; ls
bin
etc
usr/bin
var
tmp
...

и т.д

Так ведь проще получать доступ к различным частям программы? А главное ничего нового городить не надо, особенно когда выгода от этого далеко не очевидна.

--
Как было верно замечано:
"Those who do not understand UNIX are condemned to reinvent it, poorly. -- Henry Spencer"

А Вы взгляние на это дело под другим ракурсом:
а) Возможно отказаться от создания и указания каталога установки (то, что --prefix, можно задать глобально мне известно)? Если я захочу установить рядом ещё один экземпляр программы, опять создавать каталог, менять префикс?
б) Насколько остаёмся в рамках концепции файловой системы, описываемой POSIX, создавая /usr/local/programs/Xorg-7.1/ ?

В варианте который я предлагаю:
а) Возможно полностью отказаться, при установке/обновлении, от ручного создания каталогов и задания префикса.
б) файлы и каталоги располагаются строго по предписываемым POSIX правилам размешения.

Кроме того можно например перед установкой, создавать каталоги для программы автоматом, сразу устанавливая на неё права и создавая для неё пользователя, например с тем же самым идентификатором appdomen, тогда можно ещё и усилить безопастность при установке программы, локализуя работу установщика в пределах созданых директорий (заранее -пугать chroot, sandbox меня не надо, пуганые уже), и не применяя рутовые права, тут коненшно ещё много нюансов, но в целом надеюсь мысль ясна.

Пример, на основе сказанного, - Человек устанавливает Xorg 7.1, в то время как в системе есть Xorg 6.9 (не будем вдаваться в то, как они будут разделять видеокарту при совместном запуске, это сейчас не важно):

у. (Установщик) - Ось? Есть в системе Xorg? 
о. (ось) - Есть, вот его id(appdomen), вот его имя(Xorg-6.9) 
у. Человек? В системе уже есть Xorg-6.9 c id(appdomen) таким-то, что будем делать? Обновлять/Ставить рядом/или Тормознёмся?
ч. (Человек) - Ставить рядом.
y. - Ось? Человек сказал будем ставить рядом.
о. - Ну тогда держи новый id(appdomen), и вот тебе права на втыкание своей лабуды, скажешь когда закончишь.
у. - Ок.
...

Zzzz....

То что описано в вашем примере реализуется установкой в слот.

а) один раз создать каталог при установке не тяжело, так даже удобней, я могу придумать удобные мне названия - Xorg7.1_with_xgl, Xorg7.1_original и т.д

б) POSIX это конечно очень хорошо, но Linux его поддерживает довольно слабо, так что не думаю что это уж очень большая беда.

А автоматическая установка прав на катологи - это не есть очень хорошо, а если мне не понравятся эти права, или я понадеюсь на это, а потом кто-нить получит доступ к файлам... Я лучше сам всё поставлю и буду уверен. Ограничить область установки можно и стандартными средствами.

>>Пример, на основе сказанного, - Человек устанавливает Xorg 7.1

Плохой пример. Приводит к еще болшему непониманию Вашей идеи. Лично моя реакция на на любую излишне болтливую ось - снести к чертям собачим и поставить генто.

С моей точки зрения идеальный установщик вообще ничего не должен спрашивать, Его задача не парить ЧЕЛОВЕКА глупыми вопросами, а скромно сообщать Великому Руту об успехе (провале?!) запрошенной операции. Сделать это в вашей систме доменов - задачка нетривиальная, бо программно порешать в какую из связок МНОГИЕ-КО-МНОГИМ воткнуть новую сущность с ее глубоко идущими зависимостями практически невозможно. Скажите emerge -pve xorg и попытайтесь хотя бы руками ответить на Ваши вопросы из примера. Теперь представте - надо написать программку которая без Вас все порешает.

К тому же Ваш метод вероятно будет полезен ежели я буду держать зоопарк из софтового обеспечения. В чем лично я не вижу особой необходимости. Из того что стоит у меня в двух экземплярах могу припомнить только gtk. И то исключительно потому что gtk1 и gtk2 реально не являются версией одного и того же пакета (это скорее всего две совершенно разные вещи). Ну дак с этой нетривиальной задачей слоты вроде как справляются на ура.

Что касается слетевших прог при установке очередной версии динамической библиотеки это проблема для бинарных дистров (виндовс входит). В сурсовых дистрах принято пересобирать отвалившиеся пакеты. Проблем с этим за 2 года использования Gentoo не встречал.

1. POSIX - вполне органичная и логичная система организации, положения её вполне понятны и практически однозначно понимаемы.
2. Как ни исхитряйся, а бардак плодить программасты-неумехи будут с неизменным успехом, ибо порядок начинается в голове.
3. Усложнение существующей системы размещения файлов программ повлечет за собой усложнение систем управления новой системой, что, с моей точки зрения нерационально, ибо повлечет за собой новый виток "несостыковок" между создателями программ.

Мне представляется, что двигаться нужно к упрощению. Как тут уже было сказано "система должна быть простой и надёжной, как АКМ"

Что же касается увеличение количества ипользуемых программ...

Позвольте задать Вам вопрос: "Сколько программ используете лично вы? И что мешает сложить линки на их "стартовые" файлы в удобном для Вас месте?"

Вот только не надо говорить о "рядовом пользователе". Для "рядовых" есть продвинутые, которые ему все настроят, налядят и не дадут поломать. :)

_________________
emerge is not apt-get

emerge Your world
Gentoogle

Цитата:
Насчёт "лишних телодвижений"
Я же предложил - можно задать представление например в конфиге шела, и забыть о постоянных телодвижения.
таже cd может обрабатывать например имя

Кто будет динамически изменять шелл? Без написания менеджера не обойтись.

Цитата:
POSIX унификация слабая, недостаточная, не глубокая - она разруливает одно, но при этом ниже берклевской иерахии ничто не ограничевает в движении в сторону бардака.

Я говорю не конкретно о POSIX, а о соглашениях, которые отчасти зафиксированы в LSB. Примеры я привёл. Хотите больше примеров - побродите по файловой системе gentoo.

Насчёт унификации /etc:
Настоятельно рекомендую посмотрите как устроена KDE. Это целостная система состоящая из множества относительно независимых компанент. Там рассмотрены очень много вопросов из тех что беспокоят именно Вас. Особенно рекомендую посмотреть на KDE4. Там они много чего хотят переделать и изменить.

Вы привели несколько некорректный пример с количеством программ.

Во первых:В GNU подобной системе таких программ уже давно тысячи (посмотрите как изменялось количество портов в BSD).

во вторых: В Windows пльзователю НЕПОЛОЖЕНО копаться в системных папках, о чём она неоднократно предупреждает. В *NIX системах все каталоги открыты, пользователь наоборот побуждается к тому чтобы понять как всё устроено.

В третьих: Приведу логичное продолжение. Если программ очень много, то лучше вообще сделать что-то вроде базы данных (WinFS), тогда вообще всё будет гораздо проще. А теперь подумайте, почему Microsoft со своими ресурсами не смогли этого сделать и отложила эту идею...

На последок: Как-нибудь прокомментируйте те минусы которые написал я. Попробуйте, всё-таки, найти то что я посоветовал в KDE. И помните что чем проще - тем лучше (быстрее, понятнее, и т.д.).

ArtSh
"Кто будет динамически изменять шелл? Без написания менеджера не обойтись."
- если почитаете выше, найдёте моё высказывание относительно менеджера, но раз уж начал скажу ещё раз - я не предлагаю избаться от менеджера, я предлагаю избавиться от их многобразия сведя всё к одному, унифицированному подходу. И что вы понимаете под динамически изменять шел? Прописать строку в одном из конфигов?

"рекомендую посмотреть на KDE"
- А потом меня IsakovAN опять обвинит в плагиате - "ничего нового, RNZ скопировал с KDE вид конфига (плоский ini)" 8).
После libexpat, KDE снёс, заново ставить влом, пока только либы установил, чуть позже установлю.

"Во первых"
- кол-во портов и то сколько стоит программ на ws, есть разные вещи, но всем прекрасно известно что список обычно устанавливаемых программ растёт с каждым днём, завтра в linux будуд кучи графических, звуковых, видео, 3d редакторов, игр, сред разработки, мелких userlike-ориентированных утилит. А кому из разработчику нравится делать разные сборки пакета своей программы под разные дистрибутивы? Межу прочим, это снижает/замедляет распространение программы.

"во вторых"
- Очень многие люди не любят когда их к чему либо побуждают, впрочем так же как и ограничивают.Но сейчас linux набирает обороты в пользовательском секторе, так почему бы не сделать linux ближе к пользователю, престать побуждать его ковыряться в системе и просто дать ему возможность без напряг пользоваться ей? Другими словами - сделать именно СИСТЕМУ, а не набор разнородных и розненых конфигурации?

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

Zzzz....

На счёт менеджера:
-Прочитайте свой пост от 21 сентября (03.12) там приведён пример. Прикиньте какой код и где надо написать чтобы всё это выглядело так как Вы хотите.

Чуствую я буду в каждом посте повторять Вам: "рекомендую посмотреть на KDE" :) KDE на мой взгляд самый большой проект в мире, причём связанный именно с взаимодействием с человеком, зачастую некомпетентным, и разработчикам приходится сталкиваться с очень многими проблемами.

"кол-во портов и то сколько стоит программ на ws, есть разные вещи"
-И опять мимо! У меня сейчас установлен 1021 пакет в gentoo и около 50-100 в WinXP. Здесь сказывается широко известный UNIX-way!

На счёт побуждения и НЕПОЛОЖЕНО Вы видимо не поняли... Поясню на примере: Пользоваться молотком надо уметь! Если Вы забиваете гвоздь раз в год, то можно взять в руку как угодно первый попавшийся молоток, и как-нибудь забить гвоздь. Если Вы начинаете забивать 100 гвоздей в день, то Вы уже ПРАВИЛЬНО возмёте в руку ПРАВИЛЬНЫЙ молоток, или улучшите сами его конструкцию. Наверняка у Вас будет несколько молотков для разных гвоздей...
То же самое и здесь! Если пользователь неопытный, то ему нужен ровно один экземпляр каждой программы, и как оно там работает ему абсолютно безразлично. Если он начинает активно пользоваться системой, вот тут и появляется необходимость ковыряться в системе, и то что Вы используете gentoo линукс, я бы приравнял к выбору разных молотков и попыткам улучшить конструкцию. Линукс способствет этому процессу, Виндовс пресекает подобные попытки в корне. Кстати выше Вы приводите пример именно с Продвинутым Пользователем. Для того, чтобы Ваша система принесла ему пользу, Вам надо сделать чтобы ему было удобно. Как это сделать просто в рамках Ваше модели я не вижу, а вижу дополнительные программы и сложности...

На счёт субд:
-прочитайте самый первый пост - типичные пары ключ - значение и несколько таблиц с данными ключами. При желании в базу данных можно запихнуть очень много параметров...

"Прикиньте какой код и где надо написать чтобы всё это выглядело так как Вы хотите."
- Ну прикинул, а что Вы хотели этим хотите сказать? Да схема в реализации не проста, это и так ясно.
1) скрипт который генерит app-id, заносит его в файл, создаёт каталоги, ставит права на них, устанавливает соответствие в реестр-файле;
2) скрипт который проводит обновление локального репозитария или только вспомогательного реестр-файла;
3) скрипт инициализации операций install/reinstall/delete/update/check/fetch/depence и других для устанавливаемых/установленных пакетов;
4) имплементация в шел, которая будет оверрайдить/релоцировать прямой путь описаловом из реестр-файла и файлов дескрипшинов из директорий программы.
...
N) ...., где N пока не определено.
Но всё это ходя из пункта 4) скрыто, и глаза пользователю не мозолит без надобности, ниже приведу пример.

"рекомендую посмотреть на KDE"
- KDE на мой взгляд несмотря на всю его мощь достаточно противоречивый комплекс, со множеством подходов которые не были правильными изначально. Пример - следования идеалогии кнопки "пуск" и списка программ аля microsoft - первый из не правильных подходов который применили в KDE, точнее неправильность выражается в ограничении ф-ционала управления, постулатами предложеными ms, а ранее nextstep, при этом конешно осталась консоль которая как раз и заменила тот самый скоростной доступ по фильтру. Ещё при первом опыте использования win95, мне стало не понятно - почему нет возможности использовать фильтр для установленных программ, я в каждой версии windows ожидал увидеть нормальный способ доступа к установленным программам, но наиболее правильный подход увидел только в бетке vista'ы. Точно так же я недоумевал почему в KDE, а потом и в Gnome (при том что кол-во программ установленных в типичном linux в разы больше чем в windows), до сих пор нет нормальных гуй средств навигации по установелнному ПО. И только сейчас в KDE 4 наконец появился фильтр, причём после появления оного в windows, только сейчас в Gnome начали осознавать что концепция предлагаемая ms не есть самая верная, начали тотальную конверсию gnome-panel, кажется gimmie зовётся.

"И опять мимо!..."
- Знаю я что в nix на порядок больше пакетов обычно стоит - и тем паче нужна более унифицирующая система, чем та, что существует сейчас.

"На счёт побуждения и НЕПОЛОЖЕНО Вы видимо не поняли ... Для того, чтобы Ваша система принесла ему пользу, Вам надо сделать чтобы ему было удобно. Как это сделать просто в рамках Ваше модели я не вижу, а вижу дополнительные программы и сложности..."
- Вот как раз Вы меня и не поняли, равно как и другие. Я говорю о всём том же самом. Просто я предположил что люди которые пользуют gentoo, являются менее законсервированными в рамках различных идеологий, и потому думал, что сходу сумеют развить идею и оценить плюсы предлагаемой концепции. Но видать я ошибся. Gentoo'шникам так же как и другим людям очень трудно абстрагироваться от привычных вещей (ИМХО). Потому приведу другой пример, который не давно привёл на nclug.ru:
Развивая идею:
Можно определить список всевозможного программного обеспечения, и установить статус локально -[не]установлен в файле-реестра, типа:

bind-9.3.2 {1233-434a-111c-a124} 
wget-1.10.2 {} 
samba-3.0.23a {} 
xorg-7.1 {77b3-4f76-1c01-1a24}

соотвественно, пустые {} (их может и вообще не существовать) указывают на состояние НЕ Установлен.
т.е. набрав
samba<tab> дорисуем -3.0.23a
а строкой ниже увидим samba-3.0.23a {not installed}
жмякним выбираем действия

You have next commands to manipulate with samba-3.0.23a 
ask(a) - ...
depends(d) - list all direct dependencies 
check(c) - ... 
install(i) - ... 
fetch(f) - ... 
pretend(p) - ... 
... 
other commands 
...
wait for command: 

хотим обновить/удалить? Тоже самое жмякаем
samba-3.0.23a<enter>
и нам на выбор варианты
Do you want samba-3.0.23a to reinstall|update|delete|cancel? [r|u|d|c]

Если нам надо без вопросов ставить, то можно например предусмотреть
samba-3.0.23a --help
и среди всего списка команд добавить
--silent(s) или --quiet(q)
да и --help можно задвинуть, все опции по enter'у светить.

т.е. имеем для продвинутого пользователя:
samba<tab>-3.0.23a -qi
для новичка можно и gui нарисовать, причём можно вполне обойтись dialog/Xdialog

Это, на Ваш взгляд, сложнее чем emerge samba ?

Кроме того можно ставить пакет который никогда не был в репозитории, но который подчинен общим правилам, с тем лишь нюансом, что зависмости описаны в самом пакете (что можно и нужно взять за правило для всех пакетов вообще). Это в пику того что не продвинутому пользователю, например всё той же gentoo, совсем не обязательно ждать очередного ebuild'a для его любимой программы которую он обновляет чаще чем ментейнеры репозитария.

"На счёт субд"
- Разве я с этим спорю? Да СУБД расширяет возможности, но при этом ещё усложняет и делает более уязвимой систему к сбоям, поэтому в данном случае можно обойтись без СУБД, и если это "можно" не есть значительно сложнее чем реализация на СУБД, на мой взгляд, нужно обойтись без CУБД.

Zzzz....

Знаете, наш разговор напоминает разговор глухого со слепым поэтому отвечу в последний раз:

-У Вас набрался список из 4х пунктов, я бы ещё туда добавил программы для просмотра и редактирования реестра и программы автоматизации и т.д и т.п. То есть получается набор инструментов не хуже emerge...
Теперь оцените на каком языке лучше всего будет реализовать это, продумайте общую архитектуру и то что нужно обеспечить удобный интерфейс программный интерфейс для других программ. А теперь посчитаете сколько времени у Вас займёт реализация...

-Понимаете, у каждого мастера свой молоток, удобный для него, и выпускать унифицированные молотки на все случаи жизни, причём такие, что сами выскакивают из коробки и только тот какой нужен прямо сейчас... - это невозможно просто физически...
Кстати мне удобнее просто набрать emerge samba, или emerge -uDN world, даже последующее ручное удаление ненужных слотов и пересборка зависимогого софта и то удобнее, чем бродить по малопонятным пунктам меню, да ещё если в gui...
Ещё нюанс. Если у Вас есть программа Х которая работает со всеми версиями программы Y. Как определить в Ваше системе какую версию программы Y собирать и запускать, а если добавить программу Z которая работает только с определёнными версиями X и с ЛЮБЫМИ Y... Получаем типичный dll hell.

Рано или позно, но вы придёте к тому, что будет система управления программами на подобии того, что сейчас есть в Windows.

-КДЕ
Судить о том как устроена система изнутри, глядя на меню (которое кстати можно настроить так что будет поиск по пунктам, как например в SUSE, причём ещё с 3.4, если не ошибаюсь) просто наивно! Посмотрите что там внутри... Посмотрите как устроена система конфигурационных файлов, файлов описания, файлов ресурсов. Посмотрите как реализован обмен информацией между приложениями, смена стиля, локализация....

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

P.S. если что-то непонятно, перечитайте мои посты ещё раз... За сим флейм прошу считать закрытым...

И вот что я думаю...

Идея, в том виде, в каком она изложена - мало чем может изменить существующее положение вещей...

Ситуацию с libexpat я помню, но это ошибка майнтейнеров. новый libexpat надо было бы ставить в слот. и проблем бы не было. Но чем эта идея спасет от подобного? ставить новый и не удалять старый? пусть они копятся?

Другой разговор в том, что существующая система не позволяет иметь на одной системе два xorg к примеру с разными флагами оптимизации... это было бы интересно для сравнения.

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

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

Я так и не понял тайного сакрального смысла применения такого подхода. Эт что получается каждая новая прога будет будет отжирать место на венике? Предасавь сколько будет отжирать дистр после года использования?

Перечисли мне сколько програм РЕАЛЬНО нужно ставить по разным папкам. И что делать с копиями которые не будут запускаться после обновления glibc или чего нибудь еще. Ну как я понял тебе конфиги нравятся разбросаные по куче папок. Но что делать с логами? Тоже по папкам раскидывать? А многим то они нужны. Как например посмотреть статистику посещений сайта за год если логи будут в /appdomains/apache-1/logs, /appdomains/apache-2/logs и /appdomains/apache-3/logs. а если апач 3 устаноален до апача 2? как логи склеивать то?

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

И еще как поступать с бинарными пакетами? или всем по указу пересаживаться на сорс-бэйзд?

Афтар, твой моск захавала винда а идея всего навсего костыль на костыле и костылем погоняет!

Если хочещь простой установки програм то гугли на тему klick до полного просветления.

пакеты надо удалять... но только надо делатть это аккуратно. :)

Ставится к примеру новая либа. старая версия этой либы на данный момент отправляется фтопку, и многие программы могут тут же перестать работать.

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

Правда вот не знаю какие могут возникнуть проблемы при наличии нескольких glibc к примеру. (возможно собранных с разными возможностями)

А давайте в Linux все конфиги на PHP перепишим?

luchshe na common lisp

Я вот тут думаю - а в дженте есть slot'ы,

less /usr/portage/eclass/alternatives.eclass

про них что забыли? тем пакетам которым нужны разные версии одновременно, их дают: из большого кеды и gtk1/2 так стоят. автоконф тот-же(ох...) ядро.

да и ССЛ давеча при обновлении сказал что либы 0.9.7 у меня нашол(куда ж без них?) - ты revdep-rebuild сделай, и потом их можеш поубивать.

ну а нафиг мне 3 рразных cp ? есть ведь и проги которым это не нужно, нафиг они в системе нужны?

но что-то я автора непойму никак, он что-то хорошее хочет сделать, но вот что? Увы пока не въехал...

Загрипповал, голова толком не варит от температуры, при этом ещё и вынужден работать. 8( Так что приношу извинения всем учавствующим в обсуждении. Оклемаюсь через денёк, два - отвечу.
А пока лишь скажу - слоты мне никогда не нравились.
_________________
Gentoo 2006.1(~x86)Linux 2.6.17-gentoo-r7 SMP/GNOME 2.16/Xgl
ASUS P5LD2/Pentium D 805 2.66>3.50GHz/1Gb/4xSATA160Gb+2xIDE120Gb/Radeon X1600Pro/NEC-4571

Zzzz....

Продолжу:
1) обновление разделяемых библиотек
- с разделяемыми библиотеками ситуация сложна, но решаемая, возьмём за пример недавнее обновление libexpat - у нас была библиотека на которую было завязанного много софта, после её обновления, многие программы временно потеряли работоспособность, пришлось перекомпилировать. Можно было избежать момента когда программы становятся не работоспособными? Вполне, если использовать слоты, для этого нужно было произвести определённые манипуляции. Каким образом это можно сделать для world, если таких библиотек, например, за сотню-две перевалит? Или же, нужно что бы установка библиотеки всегда производилась в другой слот (что должны были сделать ментейнеры), но это небыло сделано. Из этого видно два не удобства:
а) пользователь может ошибиться;
б) ментейнер может ошибиться.
Можно этого избежать? Как вариант предлагаемая мной идея, с одним условием - запретить обновление файлов разделяемых библиотек при условии что есть вероятность при обновлении привести какую либо программу к не работоспособному состоянию. За пример можно взять тот же подход что используется при обновлении конфигов (etc-update), т.е. после установки библиотеки, при каждом вызове того же emerge - выдаётся предупреждение подобное, тому которое выдаётся для необходимости запуска etc-update, допустим скрипт зовётся lib-update. Запускаем lib-update, нас информируют какие lib'ы есть новые, какие устаревшие и какой софт стоит пререкомпилить под новые lib'ы так же, как это делает revdep-rebuild. После lib-update можно ещё раз проверить если необходимость в старых lib'aх и если нет, то предложить удалить их. При таком подходе мы имеем работоспособный софт на любой момент.

2) МНОГИЕ-КО-МНОГИМ или обновление софта (не lib'ов)
Насчёт задавания вопроса пользователю - это решается одним условием в скрипте и параметром в строке, вообще не существная фигня и за неё можно было даже не спрашивать, тот пример, что я привёл, жёстко утрирован, но можно же просто подумать с минуту-две и догадаться - скажем silent. Иными словами - правила для обновления можно задавать так же как задаются сейчас флаги USE - например, глобально в /etc/make.conf пишем что-то типа [not]silent, а для определённого софта выставлять в том же например /etc/portage/package.use, можно ещё разнообразить - флаг otherdir - типа пакет ставить всегда в новую директорию, ну и естественно в ebuild может быть задано поведение.

to wi и не только
Буквально не давно делал emerge -ave system, emerge -av world, emerge -ave1 gnome. Потому как ранее после очередного обновления перестал работать весь гном, даже gdm стал вылелать на старте. И самое интересно что я так и не нашёл от какой именно библиотеки исходила проблема, ни rev-rebuild и логи не помогли, решилось только после того как выполнил emerge -ave1 gnome, а то этого я грешным делом думал что флаги компиляции не удачно выставил, но атнюдь, флаги для системы в самый раз были и есть.

Zzzz....

вот читаю этот топик, и всё чаще вспоминается - если сделать чтонибудь чем сможет пользоваться и дурак, то только дурак зтим и будет пользоваться.
народ а вы про бритву Оккама слышали?

Ох не надо сейчас вплетать философов. Если взглянуть с точки зрения Платона, Окамма, Аристотеля, то может статься что само по себе существоание компьютеров - есть недоразумение. Равно как и человек может оказаться ощипаной курицей с широким ногтями 8)

Zzzz....

[offtop]
Щаз придут Дю Волон и Света Семененко и во всем разберутся. :)
[/offtop]

Я не очень давно работаю с Linux и мне тоже совсем не нравится как в линуксе хранятся либы, конфиги и бинарники.
Идея вроде прекрасная. Бинарник лежит в /bin , конфиг в /etc, либы в /libs, но результат выглядит плачевно.

вместо /bin мы имеем /bin и /usr/bin
вместо конфигов /etc мы имеем немалое количество конфигов как в /etc так и в /home/

Ко всему этому мы имеем костыль - менеджер пакетов, который ко всему еще и не всегда нормально работает.

Если говорить о Linux на десктопе, то linux way пока не good way.

Наиболее UserFriend структура была в MacOs 9: бинарник, который я могу положить в любое место и один конфиг к нему, который находится в общей папке конфигов и имеет тоже имя что и бинарник.

-----------------------------------------»
если хочешь послать в MAN, лучше промолчи.

Цитата:
конфигов как в /etc так и в /home/

Не обращал внимания, что они дублируются? Linux - многопользовательская система. В /etc - общие настройки, в /home/ твои личные. По другому быть не может.
/bin и /usr/bin
Это тоже не зря. В /bin лежит совсем небольшой набот самых главных системных утилит, необходимых для работы ОС. Все пользовательские программы в /usr/bin.

Цитата:
Ко всему этому мы имеем костыль - менеджер пакетов, который ко всему еще и не всегда нормально работает.

Это в виндах у тебя костыль в виде пользователя, ставящего все рукамию Не нравится менеджер пакетов, попробуй LFS (linux from scratch), ставь сотни пакетов руками.
А менеджер пакетов - чудо и великое изобретение.

KiberGus написал:
Не обращал внимания, что они дублируются? Linux - многопользовательская система. В /etc - общие настройки, в /home/ твои личные. По другому быть не может..

Я не спорю, что иметь индивидуальные настройки для каждого пользователя это хорошо. Но большинство программ прописывают свои настройки в папке пользователя автоматически, при первом старте, а вот удалять автоматически они их не умеют, отсюда имеем необратимое засирание системы. Уж если делать настройки, то делать их в одном файле, и руками, таким образом я буду знать какие настройки я туда положил и какие файлы мне нужно удалить.
Ну да бог с ними с настройками в home, те конфиги , что я правлю я обычно бекаплю, а остальное можно снести.

А посмотрите как обстоит дело с установокой программ. Часть программ лезет в /usr/bin, часть в /usr/local/bin, часть в /opt/
А как вам структура каталогов X.org и httpd?
Проблема в том, что такие программы как X.org и httpd имеют свою структуру каталогов и им глубоко плевать на структуру каталогов самой операционки и в результате получается ХАОС.

KiberGus написал:
Это в виндах у тебя костыль в виде пользователя, ставящего все рукамию Не нравится менеджер пакетов, попробуй LFS (linux from scratch), ставь сотни пакетов руками.
А менеджер пакетов - чудо и великое изобретение.

Интересный подход, почему это если мне не нравится что то в линукс, значит обязательно "это в виндах у тебя".
Во первых, не факт, что я поклонник Windows. Во вторых, в Виндах пользователь практически ничего сам не ставит, потому как есть инсталяторы и связка Инсталятор, системная папка, папка программ, реестр более всего напоминает менеджер пакетов и структуру каталогов Линукс.

-----------------------------------------»
если хочешь послать в MAN, лучше промолчи.

Цитата:
вместо /bin мы имеем /bin и /usr/bin

Вы знаете, у меня /usr находится на другом диске, как Вы думаете, чтобы я делал если все программы находились в /usr/bin (корневой раздел маленький по ряду причин). Так что всё продумано.