Разница между bin, sbin, usr/bin, usr/sbin

http://lists.busybox.net/pipermail/busybox/2010-December/074114.html
  • Перевод
30 ноября 2010 года Дэвид Коллиер (David Collier) писал:
Я заметил, что в busybox ссылки разложены по этим четырём директориям.
Есть ли какое-то простое правило, чтобы определить, в какой директории какая из ссылок должна лежать…
К примеру, kill лежит в /bin, а killall — в /usr/bin… Я не вижу никакой логики в таком разделении.

Вы, наверное, знаете, что Кен Томпсон и Дэннис Ритчи создали Unix на PDP-7 в 1969-ом. Так вот, примерно в 1971 они проапгрейдились до PDP-11 с парой дисков RK05 (по 1,5 мегабайта каждый).

Когда операционная система разрослась и перестала помещаться на первом диске (на котором была расположена корневая ФС), они перенесли часть на второй, где располагались домашние директории (поэтому точка монтирования называлась /usr — от слова user). Они продублировали там все необходимые директории ОС (/bin, /sbin, /lib, /tmp ...) и складывали файлы на новый диск, потому что на старом кончилось место. Потом у них появился третий диск, они примонтировали его в директории /home и перенесли туда домашние директории пользователей, чтобы ОС могла занять всё оставшееся место на двух дисках, а это были целых три мегабайта (огого!).

Разумеется, им пришлось ввести правило, что «когда операционная система загружается, она должна быть в состоянии примонтировать второй диск в директорию /usr, поэтому не надо класть программы типа mount на второй диск в /usr, а то получим проблему курицы и яйца». Вот так просто. И это относилось к Unix V6 35 лет назад.

Разделение /bin и /usr/bin (и всех подобных директорий) — это последствие тех событий, деталь реализации из 70-х, которая до сих пор, в течение десятилетий, копировалась бюрократами. Они никогда не задавали вопрос почему, они просто делали так. Это разделение перестало иметь смысл ещё до того, как Linux был создан, по нескольким причинам:
  1. При загрузке используется initrd или initramfs, который берёт на себя проблемы типа «этот файл нам нужен раньше чем тот». Таким образом, у нас уже есть временная файловая система, которая используется для загрузки всего остального.
  2. Разделяемые библиотеки (которые были добавлены в Unix ребятами из Berkley) не позволяют вам независимо менять содержимое /lib и /usr/lib. Эти две части должны соответствовать друг другу, иначе они не будут работать. Этого не происходило в 1974-ом, поскольку тогда у них была некоторая независимость из-за статической линковки.
  3. Дешёвые жёсткие диски преодолели барьер в 100 мегабайт где-то в 1990-ом и примерно в то же время появились программы для изменения размера разделов (partition magic 3.0 вышла в 1997-ом).

Разумеется, поскольку разделение есть, некоторые люди придумали правила, которые его оправдывают. Типа, корневой раздел нужен для всяких общих штучек ОС, а в /usr надо класть свои локальные файлы. Или в / помещают то, что распространяет AT&T, а в /usr — то, что твой дистрибутив, IBM AIX, или Dec Ultrix, или SGI Irix добавили, а в /usr/local лежат файлы, специфичные для твоей системы. А потом кто-то решил, что /usr/local — это не подходящее место, чтобы туда устанавливать новый софт, так что давайте ещё добавим /opt! Не удивлюсь, если появится ещё и /opt/local…

Разумеется, за 30 лет из-за такого разделения появлялись и исчезали всякие интересные специфичные для отдельных дистрибутивов правила. Например, «/tmp очищается при перезагрузке, а /usr/tmp — нет». (И в Ubuntu /usr/tmp нет в принципе, а в Gentoo /usr/tmp — это символическая ссылка на /var/tmp, на который теперь распространяется то правило, и он не очищается при перезагрузке. Да, это всё было ещё до tmpfs. А ещё бывает, что корневая ФС доступна только на чтение, и тогда в /usr тоже не надо ничего писать, а надо писать в /var. Или в / в основном нельзя писать, не считая того, что в /etc, которую иногда пытались перенести в /var...)

Бюрократы вроде Linux Foundation (которые поглотили Free Standards Group во время расширения годы назад) с радостью документируют и усложняют эти правила, даже не пытаясь понять, почему они появились. Они не догадываются, что Кен и Дэннис просто перенесли часть ОС в их домашнюю директорию, из-за того, что диск RK05 на PDP-11 был слишком мал.

Я практически уверен, что в busybox просто помещает файлы так же, как это исторически сложилось. Нет никакой реальной причины делать так до сих пор. Лично я просто делаю /bin, /sbin и /lib ссылками на аналогичные директории в /usr. Ведь люди, которые работают со встраиваемым софтом, стараются разбираться и упрощать…
Поделиться публикацией
Комментарии 149
  • НЛО прилетело и опубликовало эту надпись здесь
      +1
      Обычно /sbin и /usr/sbin присутствуют в переменной PATH только у рута
      • НЛО прилетело и опубликовало эту надпись здесь
          +16
          А он в него и не лазит, а посмотереть IP хочет, что бы попросить вендора выдать лицензию на софтинку которая с привязкой к IP. Более того `ip` лежит в /bin а `ifconfig` в /sbin. При этом `ip` более функционален. Автор статьи прав. Кроме того Solaris делает /bin /sbin симлинками внуть /usr много лет. Автор статьи прав на все 100%, разделение надуманно.
            –1
            в Gentoo ip лежит в /sbin, а ifconfig /bin =)
              +2
              Оба их в /sbin! :D
                +2
                Конечно

                $ which ifconfig
                /sbin/ifconfig
                $ which ip
                /sbin/ip
                $ cat /etc/gentoo-release
                Gentoo Base System release 2.0.3
                  –1
                  Обновитесь. (~amd64)
                  sys-apps/iproute2-3.3.0
                  sys-apps/net-tools-1.60_p20120127084908
                    0
                    Поставил iproute2-3.3.0, путь не изменился, x86 и amd64.
                      0
                      ifconfig из net-tools
                        0
                        ip зато из iproute2
                          0
                          Дык у нас-то ifconfig лежит в разных местах!
                            0
                            Заявлено было, что и ip, и ifconfig лежат в /bin.

                            iproute2 я обновил до означенной версии, ip остался лежать в /sbin.
                            net-tools обновлять до нестабильной версии не хочу, но мне и пофиг. Автор заявлял, что у него A и A, я показал, что первое A это Б. Доказывать второе А не вижу смысла.
                              0
                              читайте внимательнее, я писал это:
                              в Gentoo ip лежит в /sbin, а ifconfig /bin =)
                                0
                                Да, этот момент я просмотрел.

                                Ок, допустим, в нестабильной версии путь другой. Это еще ни о чем не говорит. На то она и нестабильная. Или официальное заявление о смене путей есть?
                                  0
                                  при конфигурировании net-tools-1.60_p20120127084908, пишет
                                  ##############################################
                                  Notice: ifconfig and route are now installed into /bin
                                  ##############################################
                                    0
                                    Ну вот начал бы с этого коммента и сэкономили б всеобщей энтропии :)
              • НЛО прилетело и опубликовало эту надпись здесь
                +1
                > Пользователю не за чем лезть в ifconfig
                До тех пор, пока он не захочет sudo ifconfig, на что он имеет право не но имеет в PATH ;)
                  +3
                  Что-то тут не чисто:
                  user@gentoo ~ $ ifconfig 
                  -bash: ifconfig: command not found
                  user@gentoo ~ $ sudo ifconfig
                  Password:
                  eth0      Link encap:Ethernet  HWaddr 00:02:44:13:26:5a  
                            inet addr:10.64.69.44  Bcast:10.64.71.255  Mask:255.255.248.0
                            inet6 addr: fe80::202:44ff:fe13:265a/64 Scope:Link
                  ....
                  
                    +1
                    Потому что sudo запусает от имени суперпользователя (кэп) и, вероятно, использует его переменную $PATH. Нет возможности проверить, на моей серверной убунте:
                    someuser@pyxis-server:/$ echo $PATH
                    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
                      –1
                      ответ кроется в сравнении ввывода:

                      someuser@pyxis-server:/$ echo $PATH
                      и
                      someuser@pyxis-server:/$ sudo echo $PATH
                        –1
                        Я онечно дурак, но не совсем, проверил, прежде чем отписываться.
                        someuser@pyxis-server:~$ sudo echo $PATH
                        /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

                        P.S. Вручную $PATH не правил.
                          +2
                          для sudo задётся свой secure_path
                          смотрите /etc/sudoers.
                          можно настроить как угодно
                            0
                            Действительно, спасибо, буду знать.
                          0
                          Такое сравнение некорректно, вывод будет идентичен: шелл подставляет переменные окружения ещё до запуска команды, реально выполняться будут echo /usr/local/bin:… и sudo echo /usr/local/bin:…
                          Для корректного сравнения вторая команда должна быть, например, sudo bash -c 'echo $PATH' с одинарными кавычками.
                            0
                            То же самое, но без игр :)
                          0
                          И ведь правда:
                          user@gentoo / $ echo $PATH
                          /bin:/usr/bin
                          user@gentoo / $ sudo sh -c 'echo $PATH'
                          Password:
                          /bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/opt/bin
                          
                      0
                      Пользователь и в консоль не полезет никогда. А если уж полезет, чертыхнется и допишет /sbin перед ifconfig.

                      Разные пути — это не защита от юзера. Не пофиг ли ему, сколько команд будет после нажатия на tab — 5000 или 5500?
                    +1
                    Радостно, что кто-то занимается такими вопросами, а то ведь пользователям Ubuntu, наверное, вообще без разницы, а там накручено так много, что мои эстетические чувства тошнит моментально.


                    А пользователей это и не должно волновать. Система должна работать, а как это будет реализовано дело десятое. Это проблемы вендоров дистрибутива и эстетствующих перфекционистов.
                    • НЛО прилетело и опубликовало эту надпись здесь
                        0
                        1. Не сломалось не чини.
                        2. Обратная совместимость.

                        Что поделать, мир вообще несовершенное место.
                          0
                          почему косяки то? всё логично, не нравится — каждый может сделать в своей системе как ему удобно.
                          а с давних пор тянется много чего, в солярис можно в /etc наткнуться на упоминания arpanet;)
                          • НЛО прилетело и опубликовало эту надпись здесь
                              0
                              Ну так есть же другие дистрибутивы, например Gentoo?

                              В конце концов, вы можете себе собрать собственный идеальный дистрибутив.
                              Заодно и нам покажите =)
                              • НЛО прилетело и опубликовало эту надпись здесь
                          +1
                          Может быть и не должно, но иногда волнует. Иногда пользователю нужно погрузиться в недра системы, поправить там что-нибудь. Чем более логично там все устроено (сейчас не конкретно про FHS), тем более вероятно что пользователь разберется, а не скажет «Непонятный этот ваш Linux».
                            0
                            То что пользователю не обязательно знать детали реализации системы не означает что система должна быть неоправданно сложной. Она должна быть настолько сложной насколько это необходимо для решения задачи.
                            Чем более логично там все устроено (сейчас не конкретно про FHS), тем более вероятно что пользователь разберется, а не скажет «Непонятный этот ваш Linux».

                            «Логично» в данном случае очень условная величина. Кому логично? Разработчику системы/софта/специалисту в данной области или пользователю который только что узнал кучу новых непонятных слов?

                            Ставлю плитку шоколада Алёнка на то что среднестатистический пользователь пойдёт в гугл и будет искать что то вроде «как сделать %action% в %distrib%», найдёт howto (хороший или не очень) и будет вбивать команду за командой (make & make install — яркий представитель плохого совета. люди, собирайте пакеты =( ), не читая маны по используемым инструментам. И очень хорошо если после этого обновление до новой версии пройдёт без приключений. И не надо говорить что пользователь ССЗБ, если он использует левые howto.
                            Логичность/простота системы очень слабый мотиватор. Пользователь хочет решить проблему, а не изучать инструмент для решения проблемы.
                            • НЛО прилетело и опубликовало эту надпись здесь
                                0
                                Если про разных людей, то айтишников отдельно, пользователей отдельно. И я тебя уверяю что если человеку не наплевать как работает компьютер пока он работает, то это либо айтишник, либо сочувствующий. Обычным пользователям плевать как реализована звуковая подсистема пока она исправно воспроизводит музыку. OSS, ALSA, etc ему ничего не скажет и душевной травмы от особенностей подсистемы он не испытает.
                                И это правильно.

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

                                Кому надо сам соберёт OS своей мечты, благо Gentoo и LFS в помощь.
                                  0
                                  Мне кажется что не нужно создавать лишние препятствия на пути «пользователь -> IT-шник». Да и простых пользователей не надо отпугивать. Система должна быть понятной, красивой, прозрачной. Она должна строиться по принципу «Понял общую концепцию, во многом разберешься интуитивно», а не «Запомнить всё!».
                                  Конечно это не распространяется на всё, например, написать драйвер все равно сложно, какой бы логичной не была система в целом. Но «домашне-малоофисно-административные» задачи должны выполняться легко. Точнее, не должно быть лишней, надуманной сложности.
                                    +1
                                    Тут наши взгляды совпадают. Правда я не верю что при нынешнем уровне абстракций система может оставаться простой и прозрачной для конечного пользователя.
                                      0
                                      Для этого должно быть логичное разделение системы на слои абстракций. Простой пользователь пользуется верхним слоем, продвинутый опускается ниже и т. п.
                                  • НЛО прилетело и опубликовало эту надпись здесь
                            0
                            Не понимаю смысл разделения /bin и /usr/bin. Оно реально не нужно, /use/local вполне понятно почему существует, /opt костыль для злобных буратино которые используют бинарные дистрибутивы. А sbin это просто то, что должно быть доступно только руту.
                              +12
                              > /opt костыль для злобных буратино которые используют бинарные дистрибутивы.

                              В /opt лежат программы и приложения, которые обычно независимы от системных библиотек: коммерческие продукты, игры etc.
                                +4
                                Вот только чаще всего там лежит собранный из сорцев nginx с пачкой модулей и ffmpeg со свежими либами.
                                  +2
                                  Это у кого там nginx и т.п.?
                                    +2
                                    У рубистов и тех кому нужны 3rd-party модули.
                                      0
                                      я имею ввиду в каком дистрибутиве?
                                        +1
                                        В это в любом дистрибутиве. passanger например туда по-дефолту ставит в налюбой ОС nginx со своим модулем. Туда же все кому лень собирать свой пакет ставят его с 3rd-party модулями. Туда же некоторые мэинтейнеры ставят свои пакеты если они сильно отличаются от официальный (например официально пакет разбит на 10 частей, а тут один пакет все в одном). Вообщем ситуаций когда туда ставится, что-то много. и такие ситуации обычно возникают в дистрибутивах с бинарной дистрибьюцией.
                                          +1
                                          ./configure && make && make install — поставит пакет в /usr/local/
                                          Как выше написал John_Minority, туда ставятся коммерческие продукты и и.п.
                                          Например java.
                                            0
                                            Я о адекватных людях говорю. Вы просили пример, я вам дал пример — passanger. Что вам еще надо? Показать другие примеры?
                                              0
                                              Не все программы, которые инсталлируются в /usr/local, позволяют потом себя деинсталлировать. Поэтому некоторые программы ставят в /opt
                                  0
                                  > Не понимаю смысл разделения /bin и /usr/bin. Оно реально не нужно.

                                  Разделение на /bin и /usr/bin тебе очень пригодится, когда однажды вдруг окажется, что для установки нового софта уже не хватает места. Или если придется как-либо поменять разбиение диска на разделы, затрагивая /usr. Ты запросто загрузишь систему, не монтируя раздел /usr (и система будет работоспособна), расширишь этот раздел и продолжишь работу.

                                  Не будь эти разделы отделены друг от друга, для работы с разделами пришлось бы грузиться с установочного диска или Live-CD.
                                    +3
                                    Используйте LVM или еще лучше — ZFS.
                                      0
                                      ZFS по лицензионным соображениям никогда не будет в Linux в виде, ином, чем FUSE. Поэтому для систменых разделов он не годится.
                                        –1
                                        линукспроблемы
                                          0
                                          в линукс есть btrfs
                                            0
                                            Те кто предлагает btrfs как замену zfs, не видели zfs…
                                              0
                                              Люто бешено плюсую.
                                              Имел много гемора с зависаниями, тормозами и некоторую потерю данных с btrfs.
                                              И много хорошего опыта с ZFS. Кто не видел, очень рекомендую посмотреть, хотя бы в ознакомительных целях. Естественно, не на линуксе, а на Solaris'е или хотя бы FreeBSD.
                                          0
                                          zfsonlinux.org/
                                          LVM решает почти все проблемы. Ext* ФС позволяют увеличение раздела «на лету» без отмонтирование, правда придется перевести его в ro.
                                            0
                                            ой, пардон, не углядел ссылку в Вашем комменте, перед тем, как оставил свой :)
                                            0
                                            наглая, просто наглейшая ложь. zfsonlinux.org/
                                          +3
                                          Эти проблемы уже давно решаются с помощью LVM. И вообще, что страшного в загрузке с LiveCD?

                                          Ну и можно сделать жирный initrd с тулзами для работы с разделами и надуманность проблемы станет ещё очевиднее.
                                            0
                                            Вот как раз LVM я использую. Но LVM не отменит факта, что перед изменения объема раздела /usr его придется отмонтировать.

                                            Насколько я знаю, нельзя остановить загрузку системы сразу после initrd, не монтируя «рабочие» разделы. Значит, и в этом случае для переразбиения /usr придется останавливать систему.

                                            В загрузке LiceCD ничего особо страшного нет, кроме некоторых неудобств. LiveCD сначала надо отыскать (или скачать и прожечь), и работа с него гораздо медленнее.

                                            Так что мне будет удобнее сделать «telinit S; umount /usr; увеличить /usr тем или иным способом; mount /usr; telinit 3», чем обслуживаться с помощью LiveCD. И если дистростроители всё-таки решат слить вместе /bin и /usr/bin, то лично мне станет грустно.
                                              0
                                              Можно делать второй, чуть более толстый, initrd/initramfs, содержащий необходимый минимум административных программ. выбор через GRUB/LILO.
                                              Да, это небольшое дублирование файлов, но, думаю, потратить несколько десятков мегабайт не проблема при современных HDD/SSD.
                                                0
                                                > Но LVM не отменит факта, что перед изменения объема раздела /usr его придется отмонтировать.

                                                Нет, не придется. Увеличение раздела в основых файловых системах идет на лету, без отмонтирываний.

                                                  0
                                                  Давайте более конкретно.
                                                  Основные файловые системы — это какие? Из наиболее распространенных далеко не все поддерживают изменение размеров без отмонтирования. XFS, например, поддерживает, а EXT3?
                                                    0
                                                    ext2/3/4, reiser3/4, xfs/jfs. Еще какие-то нужны? btrfs/zfs, by design из коробки обязаны, но лично не проверял.
                                                      0
                                                      По-моему, из перечисленных ФС менять размер на ходу умеют только xfs, btrfs, zfs. Ни одна из которых не предназначена для хранения корневого раздела.
                                                        0
                                                        Ну пойди и проверь. Я ресайзю xfs, ext3/4 и reiserfs по несколько раз в неделю иногда. А тут внезапно узнаю, что по чьему-то — нельзя. Огащаз.
                                                          0
                                                          Прочитал man. Ты прав (отчасти). У ext3 и reiserfs на ходу менять размер можно, но только в сторону увеличения и только если ядро поддерживает online resize (как правило, для ядер версий 2.6 и новее это так).
                                                            0
                                                            Ну так про ресайз вверх и был разговор. Вниз — у всех файлух плохо. Кто-то умеет только offline (extX), кто-то при mount -o ro (reiserfs), кто-то вообще не умеет (xfs).
                                                              0
                                                              Чтобы увеличить один раздел нужно же уменьшить другой, не?
                                                                0
                                                                1. Тот диск, с которого будешь брать свободное место, обычно может быть безболезненно отмонтирован
                                                                2. Если нет, можно создать loop-диск из файла, который положить диск со свободным местом и уже этот loop подключить как дополнительный раздел к исходному (если все-таки он изначально был на lvm, иначе никак).
                                                                3. Можно добавить дисков в систему
                                                                4. Можно увеличить исходные диски (были терабайтные — поставили двухтерабайтные — те же разделы остались, а свободного, неразмеченного места прибавилось).
                                                                5. Может быть тупо запасное место в volumegroup.
                                              +3
                                              AFAIK, /usr частенько монтировался по сети, это некогда был основной, а то и единственный вариант во многих *nix-системах, собственно, отсюда и разделение. /bin (binaries), /sbin (system binaries) должны содержать программы, необходимые для минимальной загрузки и монтирования основных и пользовательских директорий, все пользовательские программы не являются системным минимумом и содержащие их разделы могут быть примонтированы по сети, в том числе после полной загрузки, в том числе и вручную. Это сейчас стандарт FHS (версии 2.3 вроде) не предусматривает обязательного монтирования по сети, и теоретически такое разделение в следующих версиях стандарта могут упразднить.

                                              Дело тут не в разделах, можно вообще любую директорию в отдельный раздел выделить, если вы помните устройство иерархии файловых систем, и не обязательно это будет локальный носитель. Это вопрос логически правильного разделения системных и пользовательских файлов изначально.
                                              0
                                              Ну, мы вот разрабатываем некий софт. Это, конечно, не встраиваемая система, но софт запускается на бездисковых рабочих станциях с загрузкой по сети. Из-за кривущего TFTP, который качает файлы с черепашьей скоростью, родилось вынужденное решение: корневой образ в squashfs грузится через tftp (сейчас примерно 5 Мб), а /usr монтируется к нему уже в процессе выполнения init.
                                                0
                                                О_О по tftp качается initrd, потом по nfs.
                                                  0
                                                  Так оно и есть. Но это всё равно костыли и подпорки, у нас тот образ не такой большой, чтобы был смысл его по NFS монтировать, а не сразу в память разворачивать.

                                                  Просто по tftp init весом в 60 мегабайт качается примерно минуту вместо логичных 6 секунд :(
                                                    0
                                                    60 мегабайт?!? Я знал, что линукс разжирел, но не настолько же!
                                                      +1
                                                      Я лишу вас этих страданий. Расскажите-же уже, на чем вы сидите?
                                                        –1
                                                        FreeBSD же. Фряха загружалась по-сети и конектилась по rdp на сервер быстрее чем винда загружалась.
                                                      +1
                                                      pxelinux/ipxe/gpxe сто лет как умеют забирать файлы по http без ущербного tftp, 21-й век на дворе, очнитесь!
                                                0
                                                Но там по крайней мере понятно всегда, где искать настройки софта. А вот угадайте, в какой папке хранятся конфиги постгреса на федоре?
                                                  0
                                                  Неправильно понимаете назначение sbin. sbin — статическая сборка. Да, там критически важные для работы системы бинарники. И их собирают статически. А те бинарники, что не статические — в bin.
                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                      +1
                                                      Может быть разве что когда-то были:
                                                      $ ls /sbin/* | wc -l
                                                      154
                                                      $ ldd /sbin/* | grep 'not a dynamic executable' | wc -l
                                                      10
                                                      

                                                        0
                                                        Это у вас еще оптимистично получилось.
                                                        У меня вот так:
                                                        $ ls /sbin/* | wc -l
                                                        161
                                                        $ ldd /sbin/* | grep 'not a dynamic executable' | wc -l
                                                        0
                                                        

                                                        Debian Squeeze + немного из wheezy
                                                          0
                                                          В арчике тоже все плачевно:
                                                          ls /sbin/* | wc -l
                                                          179
                                                          ldd /sbin/* | grep 'not a dynamic executable' | wc -l
                                                          0
                                                          

                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                        0
                                                        так было. но к сожалению сейчас уже нет — слишком много людей не подозревают о man 7 hier применительно к их системе и лепят отсебятину.
                                                      +5
                                                      ru.wikipedia.org/wiki/FHS Все четко описано что и зачем.
                                                        +1
                                                        Ну вообще я согласен с автором, скорее всего изначально деление было из-за ограничений в размере. А потом, все временное становится постоянным.
                                                          +2
                                                          Fedora 17 будет делать линки в /usr fedoraproject.org/wiki/Features/UsrMove, высоки шансы что это же перейдет в RHEL.
                                                            +4
                                                            На революцию уйдет как минимум несколько лет, потом забудут зачем это делали +)
                                                        –5
                                                        Интересно, что события всего 40-летней давности, но для ежедневно использующих *nix-системы воспринимаются подобно тому, как верующие воспринимают события священного писания.
                                                          +2
                                                          Вам это приснилось?
                                                            0
                                                            Почему же? Писал исключительно в положительном ключе. Просто монтирование директорий в файловой системе, grep, ed/sed и многое другое настолько привычны, что тот факт, что их кто-то создал, что могли создать иначе, не всегда осознаётся.
                                                          +23
                                                          Кто-нибудь напишите автору, чтобы он написал об этом в Linux Foundation.
                                                            –10
                                                            Да что им туда писать. Там же одни идиоты и дауны сидят. Не знают что и почему, так же как и зачем. Ничего не понимают, исторических подоплёк не помнят, ни знаний ни опыта у них нет. В общем компания «бюрократов» с улицы.
                                                            Зато ТС — вот он могуч. Он аж студент МГУ, знает всё на свете. Он читал этот их FHS и понял, что это полная чушь. Его опыт будет покруче, чем опыт всех, кто пишет FHS.

                                                            И поэтому он будет писать свои предложения не в список рассылки FHS beta 3.0 (https://lists.linux-foundation.org/mailman/listinfo/fhs-discuss), а на Хабр, где полно таких же хомячков, которые его тут же поддержат.
                                                              +23
                                                              На всякий случай напомню, что это перевод. Я и настоящий автор письма — разные люди.
                                                                –1
                                                                Тогда извиняюсь. Однако хочу заметить, что о «переводе» свидетельствует ссылочка супер мелким шрифтом. Ни тебе тега, ни хаба, даже в начале статьи не указано, а написано от первого лица. Т.о. так это и воспринимается.
                                                                  +1
                                                                  В хаб поместил и тег добавил, спасибо, что указали на это. В интерфейсе хабра действительно не очень заметно выделяются переводы.
                                                                    +5
                                                                    О переводе говорит значок перед заголовком топика.
                                                              –2
                                                              Разделение вполне грамотное. Главное, чтобы всякие поцтеринги не совали свой нос и не переносили основные бинарники из coreutils в /usr/bin или (еще хуже) /usr/local/bin.
                                                              Вот, кстати, по-моему, директория /usr/local не нужна. Так же, как и /opt.
                                                                0
                                                                /usr/local и /opt нужны, чтобы система не превращалась в файлопомойку. Этакие резервации для файлов, не контролируемых пакетным менеджером.
                                                                  0
                                                                  зачем тут /usr/local? У меня все поместится в /opt!
                                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                                      0
                                                                      Убивать надо за make install если у вас не LFS
                                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                                          0
                                                                          это если есть make uninstall. в тех же .deb системах есть checkinstall который собирает пакетик сам и потом этот пакетик пакетным менеджером легко удалить
                                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                                  0
                                                                  Кстати, насчет ненужных директорий. Даже в арче есть всякая гадость, которая гадит где попало:
                                                                  ls /opt/
                                                                  cuda-toolkit/  google/  qt/
                                                                  

                                                                  chrome, CUDA SDK и qt3 (?) почему-то мусорят в неподходящие директории.

                                                                  Еще в арче есть любители поднамусорить в ненужную директорию /usr/local:
                                                                  ls /usr/local/bin/
                                                                  mglconv*  mgl_example*  mgl_glut_example*
                                                                  
                                                                  ls /usr/local/lib/
                                                                  libmgl.a  libmgl-glut.a  libmgl-glut.so@  libmgl-glut.so.6.0.0*  libmgl.so@  libmgl.so.6.0.0*  libmgl-wnd.a  libmgl-wnd.so@  libmgl-wnd.so.6.0.0*
                                                                  

                                                                  mathGL установился в /usr/local, а не /usr. Но это я сам виноват: в репозитории староватая версия была, а новую я собрал наспех — вот и получил мусор там, где его быть не должно.
                                                                    0
                                                                    Уж лучше /opt с внятными «подгруппами», чем выкорчевывать эти «произведения aur» из /usr /usr/local /usr/opt /usr/local/opt…
                                                                    +13
                                                                    Не удивлюсь, если появится ещё и /opt/local…

                                                                    Значит, вы были к этому готовы, сказал MacPorts… =)
                                                                      +6
                                                                      Спасибо, очень познавательно! Стало намного понятнее эта каша из директорий.
                                                                        –2
                                                                        Леннарт, перелогиньтесь.
                                                                          +9
                                                                          Товарищи! Посмотрите на Plan9, его сделала партия Отцы Unix, там иерархия FS совсем другая. При этом Отцы считают его более Unix-way'ным чем сам Unix., еретики!
                                                                          Так что, если что-то из-за исторических причин стало стандартом (FHS), это еще не значит что так должно быть всегда. Надо проще относиться к изменениям.
                                                                            0
                                                                            ну некоторые штуки, например, /proc, пришли из plan9.
                                                                              0
                                                                              Кстати да, в Plan9 /usr как раз пользовательский каталог :-)
                                                                              0
                                                                              Имею /bin и /usr/bin отдельно по единственной причине: /bin это часть iniramfs и он доступен до монтирования /usr, где лежат все жирные программы. Таким образом, я имею минимальную систему размером 2 мегабайта, способную скачать с сети и прошить остальную систему.
                                                                                +6
                                                                                Как меня радуют такие люди! Сказал А, а про Б забыл. Критикуешь — предлагай.

                                                                                Есть FHS, о которой писали выше. Фактически критике подвергать следует её, но при этом он не затронул эту тему, основные аргументы — всё было сделано 40 лет назад и все, кто сидит в Linux Foundation — дебилы. И все, кто линуксом пользовался и пользуется уже 20 лет, тоже дебилы. Не задумывался никто.

                                                                                Ну раз ты такой умный, внимательный и додельный, предложи, что нам всем, смертным делать. Finish your investigation and complete the challenge.

                                                                                (Крик души относится к автору, а не к переводчику) (Извините, если что...)
                                                                                  +6
                                                                                  Автор, динамически слинкованного баша тебе.
                                                                                    0
                                                                                    собственно баш давно уже никто статикой не делает. опять же к сожалению.

                                                                                    а для /bin/sh в debian например /bin/dash. но тоже динамикой сделанный.
                                                                                      0
                                                                                      C динамическим башем бывает немного трудно загрузиться, если все необходимое не запихали в initrd.img.
                                                                                    –1
                                                                                    Это опенсорс. Не нравится? Сделай по-своему, а не пиши глупые высеры.
                                                                                      +2
                                                                                      Не стоит забывать, что unix — очень универсальная система. Она может работать не только на домашнем компьютере с гигабайтами оперативки и терабайтными дисками, но и на устройстве с очень ограниченными ресурсами, вроде маршрутизатора.
                                                                                      Тот факт, что решение сделать иерархию /usr было принято больше 30 лет назад из-за нового диска, вовсе не значит, что оно устарело. Если его отменить, unix потеряет заметную часть своей гибкости.

                                                                                      А кто такой David Collier, которого автор цитирует в начале?
                                                                                        0
                                                                                        Топик — это в оригинале письмо из рассылки busybox, и David Collier — просто автор предыдущего письма.
                                                                                          0
                                                                                          Наверное, надо было сходить по ссылке…
                                                                                          В качестве поста получилось двояко: с одной стороны, фрагмент истории unix, а с другой — суждение в стиле «я это не понимаю, значит это ненужно».
                                                                                        –1
                                                                                        «Я обеими рогами за! (с)» Наибольшей «тупорылостью» с точки зрения «насрать во все 100500 папок *bin» отличаются *bsd системы, IMHO это ужас.
                                                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                                                            0
                                                                                            Вы просто не читали ман от ld.
                                                                                            • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                0
                                                                                                В процессе работы, если что.
                                                                                              0
                                                                                              вы просто не читали man 7 hier.

                                                                                              давно уже никто не делает что-то своё в этом плане. во всяком случае .deb и .rpm-based системы уже все одинаковые
                                                                                              +1
                                                                                              При загрузке используется initrd или initramfs

                                                                                              Внимание, вопрос: для чего нужен этот костыль при самосборном ядре? Мне проще вкомпилировать нужные фичи (такие как драйверы для дискового контроллера и файловой системы на /), чем ковыряться с каким-то initrd, который по большому счету нигде кроме livecd не нужен.

                                                                                              Я так понимаю, нам еще автоматом предлагают отказаться от отдельного boot, потому что при современных тенденциях тянуть всякое г-но как можно ближе к ядру, размер initrd-образов через пару лет перевалит за те самые упоминаемые 100Mb.
                                                                                                0
                                                                                                инициализацию root на lvm в ядро пока вкомпилить нельзя, к сожалению. Но вроде собираются сделать. В остальном согласен.
                                                                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                  +2
                                                                                                  А вот я в восторге от того, что есть стандарт на файловую систему и достаточно прозрачно и логично расписано, какие и где файлы должны находится.
                                                                                                  Все эти призывы к упрощению и отказу от системы, «разработчик лучше знает» обычно кончаются неописуемым бардаком в расположении директориев и файлов. Типа, как на Андроиде. Есть остатки порядка, от Линукса и есть бардак, там где отступили от стандарта.
                                                                                                  Я предпочитаю порядок.
                                                                                                    0
                                                                                                    Видимо недостаточно раз возникают с этим проблемы и такие посты.
                                                                                                      0
                                                                                                      А где на Андроиде бардак?
                                                                                                        0
                                                                                                        вы пробовали посмотреть в home пользователя на android?

                                                                                                        в linux такое было где-то в начале 00х. потом одумались и сделали

                                                                                                        .config .local и прочие «консолидирующие» каталоги.

                                                                                                        ну и то что все называют свои каталоги кто как хочет — нет единого стиля и непонятно что есть конфиг программы и что есть данные программы.

                                                                                                        а ещё часть народа хранит настройки на sdcard если её видят. а часть на external_sd. в итоге если sdcard это внутренняя память телефона, то всё там и хранится.

                                                                                                        в общем бардачина полнейшая
                                                                                                      0
                                                                                                      Надо было бы ещё и lists.busybox.net/pipermail/busybox/2010-December/074202.html перевести — для полноты картины. ;-P
                                                                                                        0
                                                                                                        Стоп.

                                                                                                        Флуд о /bin и /usr/bin — это пожалуйста. А вот sbin, просьба не трогать.

                                                                                                        sbin — statically linked binary. Файлы, которые могут работать при любых обстоятельствах с файловой системой и недоступностью /lib.
                                                                                                        0
                                                                                                        А еще есть (был) GoboLinux. Вполне себе красивая концепция: www.gobolinux.org/index.php?lang=ru_RU&page=k5
                                                                                                          0
                                                                                                          В Mac OS X есть потуги разобраться с этим бардаком. Но у них и нет задачи запускать систему в embedded

                                                                                                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                                          Самое читаемое