Могу ли я совместно использовать /usr/local между несколькими дистрибутивами Linux?

Могу ли я совместно использовать /usr/local между несколькими дистрибутивами Linux?

Я попробовал Ubuntu 12.04 и на основе своих знаний создал следующие разделы:

  • 2 ГБ подкачки (у меня 2 ГБ ОЗУ)
  • 1 ГБ /boot, так как я буду устанавливать разные версии ядра (начинаю разработку ядра)
  • 35ГБ/var
  • 40ГБ/usr/local
  • 407 ГБ/home
  • 15 ГБ /(корень)

Теперь я хочу установить OpenSUSE 12.2 вместе с Ubuntu 12.04. Могу ли я разделить /varи /usr/localмежду двумя ОС? Я знаю, что это два разных дистрибутива с разными пакетами, но есть ли способ разделить дисковое пространство? Так, чтобы обе ОС могли иметь свои собственные /usr/localв одном разделе или что-то в этом роде?

решение1

Вы можете поделиться /usr/local. Иногда два дистрибутива будут иметь разные версии библиотек, поэтому вам может потребоваться установить несколько библиотек на одной или другой стороне или в /usr/localсамой себе. Бремя установки дополнительной библиотеки, скорее всего, будет компенсировано отсутствием необходимости поддерживать две установки каждой программы в /usr/local.

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

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

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

35 ГБ для /var— это много. Для базовой системы это не нужно. Если вы собираетесь разместить там много данных (например, потому что там находится корень вашего веб-сервера), определите размер файловой системы в соответствии с вашими данными. Нет смысла отделять /varот корневого раздела, поэтому объедините их. Вы не упоминаете /usrв своем списке: это тоже не нужно отделять от корневого раздела. Просто создайте один системный раздел для каждой ОС, плюс общий /home. Вам действительно нужно больше 15 ГБ для системного раздела, если только вы не собираетесь быть очень консервативными в программах, которые вы будете устанавливать. Создайте системный раздел размером 50 ГБ, и все будет в порядке.

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

решение2

Помимо символических ссылок вы также можете использовать bind mounts: http://docs.1h.com/Bind_mounts

По сути, вы можете иметь один раздел с одной файловой системой (аналогично настройке Энтона). В этом случае, предполагая, что у вас смонтирована файловая система, /mnt/localвы просто сделаете это mount --bind /mnt/local/ubuntu /usr/localна вашей установке Ubuntu и mount --bind /mnt/local/suse /usr/localна вашей установке Suse.

Одним из преимуществ этого способа является то, что вы можете сделать это поверх существующего, /usr/localне уничтожая/не перемещая сам /usr/localкаталог.

Вот пример:

# mkdir foo
# touch foo/nowyouseeme
# mkdir bar
# touch bar/nowyoudont
# ls foo
nowyouseeme
# mount --bind ./bar ./foo
# ls foo
nowyoudont
# umount foo
# ls foo
nowyouseeme

решение3

/usr/local(т.е. локально скомпилированное/установленное программное обеспечение) должно работать нормально,при условии, что системные библиотеки, используемые всем, что там есть, совместимы. Это означает, что вы можете обойтись без этого с довольно современными дистрибутивами "для настольных компьютеров". Если вы попытаетесь смешать и сопоставить, скажем, Fedora и RHEL/CentOS,всепостроение на основе дистрибутива со старыми библиотеками (в данном случае RHEL/CentOS), поскольку базовые библиотеки ( glibcв основном) достаточно совместимы с предыдущими версиями. Выволястолкнуться с проблемами с C++ (среда выполнения C++ имеет тенденцию сильно меняться между версиями), некоторые графические библиотеки меняют интерфейсы по своему усмотрению. Все, что связано с окружением рабочего стола (будь то KDE или Gnome или что-то еще), вероятно, исключено.

решение4

Как настроить несколько установок на машине, зависит от вашего стиля работы с этими установками. Еще одно, что следует иметь в виду, это то, что если вы не собираетесь делать какую-то изящную работу виртуальной машины с использованием реальных разделов, эти две установки не будут работать одновременно.

По моему опыту, /homeраздел должен быть общим без особых проблем. Любые пользователи, которые специально созданы для приложений ( dovecot, fetchmail), но ни одна из систем обычно не имеет настоящих каталогов в, /homeкак «обычные пользователи». Я разделяю имена входа между разными версиями Ubuntu, но это иногда создает проблемы при возврате к старой установке, потому что файлы конфигурации в вашем домашнем каталоге были автоматически преобразованы. Чтобы решить такие проблемы, у меня есть один и тот же логин с разными домашними каталогами в /home, но с тем же идентификатором пользователя и идентификатором группы для совместного использования данных. Вы всегда можете создать ссылку между определенными подкаталогами (например, теми, в которых находится ваша музыка), для которых нет риска несовместимых/необратимых обновлений.

У меня не было отдельного раздела с тех пор, как я работал на PDP 11/70 в середине 80-х, поэтому я не знаю, почему ваш друг рекомендовал это. Более того, несколько программ по умолчанию будут устанавливаться в, /usr/localесли вы устанавливаете из исходников, и, например, pipустановки для модулей Python делают то же самое. Чтобы предотвратить проблемы там, я бы сделал /mnt/localна каждой машине монтирование раздела, предназначенного для /usr/localнего, создал каталоги ubuntuи suseв этом разделе и мягкую ссылку ( ln -s /usr/local /mnt/local/ubuntu) для каждой соответствующей машины. Таким образом, вы разделяете пространство на этом разделе, не подвергаясь риску случайной перезаписи. Вы всегда можете позже создать ссылки между вещами, которые вы явно хотите разделить.

Дополнительно я могу порекомендовать вести какой-то журнал для того, что вы установили для каждой установки (я использую emacs в режиме журнала изменений с файлом для каждой комбинации машина-дистрибутив-ревизия), чтобы вы могли повторить установку, если вы обновляетесь, и вам не нужно было помнить, какие дополнительные вещи вы установили. Сейчас у меня есть скрипт, setupnewsystemкоторый делает все дополнительные вещи за меня, включая установку /etcпод контроль версий после установкиmercurial

Связанный контент