LINUX.ORG.RU

Разработчики Fedora обсуждают объединение каталогов для исполняемых файлов

 


0

0

Разработчики Fedora обсуждают возможное объединение каталогов /bin, /sbin/, /usr/bin и /usr/sbin: предлагается все исполняемые файлы помещать в каталог /usr/bin, а другие каталоги сделать символическими ссылками на него для совместимости.

Леннарт Поттеринг в списке рассылки разработчиков предоставляет список преимуществ такого подхода:

  • разделение на /bin и /sbin приводит к усложнению работы разработчиков, которые зачастую ошибаются с выбором каталога, либо бездумно помещают файлы в /usr/bin;
  • первоначальное назначение каталога /sbin (размещение статически собранных файлов, на что указывает буква «s») давно неактуально;
  • разделение на /bin и /sbin не имеет отношения к безопасности (это был бы глупый принцип «security by obscurity»);
  • разделение на /bin и /sbin имеет значение только для переменной $PATH, однако усложнять доступ пользователей к некоторым инструментам - плохая затея; к тому же для этого есть более подходящие каталоги;
  • разделение на /bin и /sbin в любом случае бессмысленно уже пару версий Fedora, поскольку оба каталога включены в переменную $PATH для всех пользователей;
  • разделение приводит к усложнению, а мы должны стремиться к упрощению;
  • различные дистрибутивы размещают некоторые бинарные файлы в различных каталогах, что приводит к проблемам с переносимостью скриптов;
  • разделение на /bin и /usr/bin в основном было сделано для этапа ранней загрузки системы - минимальный набор загрузочных файлов находится в /. Но это давно не работает, и соответствующая опция убрана из инсталлятора anaconda. Более того, размещение /usr на отдельной файловой системе вызывает проблемы при загрузе посредством systemd;
  • разделение на минимальную систему в / и полную в /usr также стало бессмысленно благодаря initrd, а содержание двух уровней «минимальной загрузочной системы» - дурацкая затея;
  • существенно упростится установка «read-only» системы: так, libc и другие системные библиотеки будут доступны только на чтение, а /etc - на чтение и запись;
  • снятие снапшотов станет действительно атомарной операцией. В настоящее время btrfs требует 5 снимков - /lib, /lib64, /bin, /sbin и /usr вместо одного, что неудобно и может приводить к состояниям гонки;
  • существенно упростятся сетевая и контейнерная установки;
  • сборочные скрипты упростятся: в частности, autoconf не знает о разделении на / и /usr, и для правильной работы с ними приходится прилагать специальные усилия;
  • эксперименты уже показали жизнеспособность предложенной схемы и отсутствие серьезных проблем;
  • есть разработчик (Harald Hoyer), готовый выполнить необходимую работу.

Таким образом, подобное изменение многое упрощает для разработчика, мейнтейнера и администратора. Если оно будет принято, то может быть реализовано уже в Fedora 17.

>>> Подробности

★★★★

Проверено: Shaman007 ()
Последнее исправление: JB (всего исправлений: 2)
Ответ на: комментарий от Magister2k7

> А вот /usr/etc видел, не помню уже какая софтина норовила

Приплыли.... все «софтины» с автоконфом отталкиваются от дефолтового префикса /usr, угадай с 3х попыток где окажется $PREFIX/etc ?

iBliss
()

Они совсем упоролись?

m0rph ★★★★★
()

Тоже не фига не понятно :(
Ну ненужно к примеру теперь usr отдельно держать и что ?
Ведь тот же lib почему то на отдельной парции не держут ...

Просто нужно написать рекомендацию что usr теперь нельзя делать на отдельной партиции и ВСЕ !

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

>>> То, что раньше делалось из минимальной системы без смонтированной /usr, уже давно делается из initrd

А как быть тем, кто собирает монолит?

Монолит как бы абсолютно параллелен initrd...

При монолите initrd как бы не нужен. Всё уже и так в ядре.

anonymous
()

Ждем когда запилят диск C и ProgrammFiles

Sergius71
()
Ответ на: комментарий от Cancellor

> У меня в слаке initrd делает одну-единственную полезную вещь: подгружает reiserfs.ko.

И при чём тут монолит?

anonymous
()
Ответ на: комментарий от smartly

> Логика простая. Ты ставил в жизни только одну программу через make install, которая кладёт что-то в $(PREFIX)/etc и не прочитал внимательно configure --help

На самом деле все почти программы, которые ставятся через make install и хотят etc, установят что-то в /usr/local/etc/

Рассуждения верные, а вот вывод - странный. Я лишь ответил человеку, что его варианты - не только плод его фантазии, но и некоторые из них существуют на самом деле.

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

Magister2k7
()
Ответ на: комментарий от anonymous

> минимальную реально работающую систему

Минимально и сейчас работает, что-нибудь починить хватит (пару раз пригождалось). Зачем отламывать ступеньку у лесенки, предлагая подозрительно скрипящий лифт?

anonymous
()
Ответ на: комментарий от Magister2k7

>На тот момент мне абсолютно всё равно было, где будет лежать конфиг, т.к. нужно было просто собрать и потестить программу.

Вот потому ты и недоадмин, а не админ.

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

При том, что если вкомпилить reiserfs статически, initrd идёт лесом. Но мне лень.

Cancellor ★★★★☆
()

> первоначальное назначение каталога /sbin (размещение статически собранных файлов, на что указывает буква «s») давно неактуально;

Обкурились что ли?

http://www.pathname.com/fhs/pub/fhs-2.3.html#SBINSYSTEMBINARIES
Utilities used for system administration (and other root-only commands) are stored in /sbin...

Приставка 's' значит superuser. Это чтобы обычному пользователю по табу не выдавалось куча утилит, которые он все равно не может запустить.

Создателям Fedor'ы - RTFM!!!

Kroz ★★★★★
()

>Более того, размещение /usr на отдельной файловой системе вызывает проблемы при загрузе посредством systemd

Ждем, когда ядро Линукс начнет мешать работе PulseAudio, и Поттеринг предложит заменить его на - что там в Винде? Одно радует - есть в сообществе тролли толще самого Линуса, есть.

gaestur
()

ЯЩИТАЮ что имеет смысл рассмотреть концепцию хранения ВСЕХ файлов вообще (бинарники, конфиги, все) просто в одной директории, в корне, упразднить и объеденить все дисковое пространство других разделов в корень, и все. Будет просто в корне много файлов. Ну максимум-для home у каждого будет свой каталог. Каково?

anonymous
()

Блин, кто б прибил этого Леннарта Поттеринга! Он так достал своей писаниной!

alukin
()
Ответ на: комментарий от iBliss

>Приплыли.... все «софтины» с автоконфом отталкиваются от дефолтового префикса /usr, угадай с 3х попыток где окажется $PREFIX/etc ?

От дефолтового /usr/local, а окажется в /usr/local/etc

--prefix=PREFIX install architecture-independent files in PREFIX [/usr/local]

Но ты видимо из тех кто в состоянии написать ./configure --prefix=/usr, но добавить к этому --sysconfdir=/etc, это просто непосильная задача.

anonymous
()
Ответ на: комментарий от smartly

> Вот потому ты и недоадмин, а не админ.

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

Magister2k7
()

Линукс все время напоминает мне, за что я люблю FreeBSD - там таких вопросов даже не может возникнуть даже теоретически.

anonymous
()

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

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

Самое главное в конце выполнить man hier и вернуть как было.

anonymous
()
Ответ на: комментарий от skwish

> Тогда чем /bin отличается от /usr/bin ?

Тем, что в /bin лежат только статически собранные бинари, не требующие никаких библиотек.

anonymous
()
Ответ на: комментарий от DoctorSinus

> на главной подумал «опять Леннарт фигнёй страдает». Заглянул — надо же, так и есть!

Чтобы ты знал, — так, на секундочку, — Леннарт — автор этого стандарта.

А о том, кто страдает никому не нужной херней, можешь почитать в комментах к своим новостям.

anonymous
()

Самое интересное, что подавляющее количество говнокоменнаторов даже примерно не представляет, зачем в своё время разделили /usr/bin и /bin...

anonymous
()
Ответ на: комментарий от Deleted

IMHO - это возрастное недомогание некоторых разработчиков...
<sarcasm>
/ - тут всё положить
/home - тут всё для пользователя
</sarcasm>
Упрощение не должно приводить к примитивизму.
Как говорил Феофан Грек - «простота без пестроты».
А тут, похоже, «китайская реклама» получится.

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

>Во-первых мы с вами на «ты» не переходили.

Это инернет. Можешь перейти или не перейти куда угодно.

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

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

ps: не стоит обижаться, если чего-то не знаешь. лучше поучиться.

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

Для lvm initrd тоже не был нужен. Вот только недавно автораспознавание ядром суперблоков raid и lvm почему-то признано устаревшим.

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

Ещё один... ldd в зубы и вперёд искать разницу между /bin и /usr/bin.

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

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

for i in /bin/* ; do file «$i» ; done | grep statically
/bin/dash.static: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, BuildID[sha1]=0xe53e7fcb5c7db2976ae5731f3bbd2fe357b0b133, stripped

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

> Для lvm initrd тоже не был нужен. Вот только недавно автораспознавание ядром суперблоков raid и lvm почему-то признано устаревшим.

Есть ещё # mount LABEL=|UUID= /

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

> Есть ещё # mount LABEL=|UUID= /

Вопрос не в этом. А в том, что для сборки райда надо запускать mdadm. Вот его приходится класть в initrd.

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

Слинкованы, с кем бы то ни было, - уже не статично собраны.

# ldd /bin/ls
        libpthread.so.0 => /lib/libpthread.so.0 (0x40021000)
        librt.so.1 => /lib/librt.so.1 (0x40037000)
        libtermcap.so.2 => /lib/libtermcap.so.2 (0x40047000)
        libiss.so.0.3 => /lib/libiss.so.0.3 (0x4004b000)
        libacl.so.1 => /lib/libacl.so.1 (0x4005a000)
        libc.so.6 => /lib/libc.so.6 (0x40062000)
        libdl.so.2 => /lib/libdl.so.2 (0x40189000)
        libattr.so.1 => /usr/lib/libattr.so.1 (0x4018d000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
# ldd /usr/bin/awk
        libm.so.6 => /lib/libm.so.6 (0x40021000)
        libdl.so.2 => /lib/libdl.so.2 (0x40043000)
        libc.so.6 => /lib/libc.so.6 (0x40046000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
В чем аноним видит разницу?

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

> Это инернет. Можешь перейти или не перейти куда угодно.

Интернет не отменяет правил хорошего тона.

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

Ответа я не получил никакого. Назвать ответом цитату моего сообщения без каких-либо пояснений я не могу.

ps: не стоит обижаться, если чего-то не знаешь. лучше поучиться.

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

Вот кстати другой человек написал про --sysconfdir=/etc - спасибо ему за это.

Magister2k7
()

сначала всё запихают в /bin, потом переименуют /bin в /win, а потом перенесут и переименуют /lib в /bin/system32 :D

invy ★★★★★
()

Я могу понадеяться, что /usr/local они не тронут?

anonymous
()

Говно, нафиг не нужно, не ожидал от федоры, скатят линукс в сраное говно, вовремя я на винду пересел, хаха!

yoghurt ★★★★★
()
Ответ на: Ненависть. от legolegs

>> разделение на /bin и /sbin приводит к усложнению работы разработчиков, которые зачастую ошибаются с выбором каталога, либо бездумно помещают файлы в /usr/bin;

Написать уже нормальный гайдлайн.

Ты не понимаешь. Они тупые. Совсем.

P.S. Дальше не читал, первый пункт — уже достаточное основание для изменений.

anonymous
()
Ответ на: Ненависть. от legolegs

>> эксперименты уже показали жизнеспособность предложенной схемы и отсутствие серьезных проблем;

Ваши эксперименты в соответствии к критерием Попплера отправляются в /dev/null.


В /dev/null отправляются вовсе не они. То, что сегодня в Fedora, завтра в остальных дистрибутивах.

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

> А как систему восстанавливать в результате, если / еще жив, а /usr уже умер?

У нищебродов не хватает на винте или флешке места под дистрибутив Tiny Core?

geekless ★★
()

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

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

> Давайте уже всё в /bin, который и монтировать отдельным разделом.

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

Xenius ★★★★★
()

RedHat Windows 17

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