Как установить приложения на отдельный жесткий диск?

10

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

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

  • (РЕШЕНО ->) У меня также возникают проблемы с поиском "/ etc /". В частности, чтобы изменить Conky.
    Поиск по этому термину приводит только к случаям, когда люди говорят вам, чтобы получить доступ к этому файлу, а не как получить к нему доступ.
чумной доктор
источник
1
Посмотрите на это , это поможет вам начать.
Митч
У меня сложилось впечатление, что все вышло из домашней папки. Упс. Та страница, на которую вы ссылались, была бесполезна в отношении моей проблемы, но сейчас я читаю ее и многому учусь, так что спасибо.
plaguedoctor
Я добавил теги mount и fstab; Вы можете сделать то, что вы описываете, вручную установив определенные файловые системы для монтирования на определенных разделах или дисках.
belacqua
@belacqua, есть ли другой способ? Я не просто хочу конкретные файловые системы на другом диске, я хочу все файловые системы конкретных программ. Таким образом, я могу отсортировать их по интенсивности своей системы, имея игры / virtualbox / etc полностью на моем SSD и такие вещи, как libreoffice / thunderbird полностью на одном из жестких дисков.
plaguedoctor
Не так просто определить, где может находиться данная установка и ее файлы - посмотрите ответы в ссылке, упомянутой Митчем. Вы также можете использовать такие вещи, как символические ссылки, но я рекомендую начать с простого. Найдите пример приложения, задайте здесь конкретный вопрос (или измените его, чтобы он был менее общим), и перейдите оттуда. Или экспериментируйте осторожно.
Белаква

Ответы:

22

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

В Linux программы устанавливаются в соответствии со стандартом иерархии файловых систем (FHS). Это означает, что библиотеки, от которых зависят программы, устанавливаются в общем выделенном месте, так что они обычно устанавливаются только один раз, независимо от того, сколько программ их используют. Кроме того, программы построены таким образом, что все они используют одну и ту же версию определенной библиотеки. Это экономит дисковое пространство (и оперативную память во время выполнения), но имеет недостаток, заключающийся в том, что нельзя свободно устанавливать программы на разные разделы или жесткие диски, по крайней мере, без редактирования файлов конфигурации системы (например, /etc/ld.so.conf.d). включить разные папки библиотеки).

Поскольку система пакетов Debian была реализована с учетом требований FHS, насколько я знаю, не существует простого способа установить пакеты Debian в папку, отличную от той, в которую они были предназначены, и заставить их работать без перемещения вручную. и редактирование файлов впоследствии. Это потому, что пути часто жестко закодированы во время компиляции. Таким образом, даже если вы устанавливаете пакет в другую папку, например, с помощью dpkg --instdir=folder/ package.debкомандной строки, программа все равно будет искать свою конфигурацию в «/ etc», а не в «папке / etc», а в файлах конфигурации, которые были отправлены с пакет, конечно, был установлен в «папку / etc» ... Программа также не будет добавлена ​​в меню, поскольку файлы меню должны находиться в «/ usr / share apps», а не в папке / usr / share / Приложения.

Конечно, вы можете вручную настроить и скомпилировать программу из ее исходного кода, чтобы она могла устанавливать двоичные файлы и части данных в любом месте, в то же время устанавливая файлы конфигурации в места, совместимые с FHS, но это то, что я рекомендую только для продвинутые пользователи. Если вы собираетесь компилировать из исходного кода, посмотрите на checkinstall , инструмент, который автоматически создает пакеты debian.

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

Поскольку в комментариях вы имели в виду игры: многие игры, которые не покупаются через Ubuntu Software Center, поставляются в виде исполняемого файла установщика, и их можно, конечно, установить в любую папку, обычно в подпапку вашего домашнего каталога. Игры для Windows, которые запускаются с использованием WINE, также могут быть установлены в любой каталог, который вы хотите. Для wine существует переменная окружения WINEPREFIX, с помощью которой вы можете настроить множество независимых папок WINE, каждая из которых имеет собственный виртуальный диск C :. Прочитайте справочную страницу WINE для получения дополнительной информации.

Даже если игры / программы поставляются в виде пакетов Debian, вы можете посмотреть содержимое пакета в вашем любимом менеджере архивов. Если игра будет установлена ​​в / opt, вы обычно можете безопасно установить ее в другую папку, поскольку / opt часто используется в качестве места установки для программ, которые не придерживаются FHS.

soulsource
источник
Правильный и достойный голосов O
Rinzwind
1
Тем не менее, он не завершен, так как я не объяснил подробно, что потребуется для установки пакета в произвольном месте, какие файлы нужно будет отредактировать, а какие переменные среды нужно будет установить. Я просто боюсь, что тогда он станет романом среднего размера ...
soulsource
1
Я бы не стал беспокоиться. Просто смонтируйте / etc / в другом месте. Требуется 90% загрузки диска от ssd.
Rinzwind
5

TL; DR

  1. Загрузите внешний USB-диск с версией Ubuntu, которую вы только что установили, и я предполагаю, что /dev/sdaэто ваш SSD и /dev/sdbваш HDD.

  2. Создайте на жестком диске раздел, содержащий все приложения, которые вы хотите установить (скажем, 64 ГБ), используя gparted, и я предполагаю, что это будет третий раздел, который вы создадите на жестком диске ( /dev/sbd3)

  3. выполните следующие команды:

    mkdir /media/apps
    mount /dev/sdb3 /media/apps
    mkdir /media/apps/usr
    cp --preserve=all --recursive /opt /media/apps
    cp --preserve=all --recursive /usr/bin /media/apps/usr
    
  4. sudo nanofstabна /dev/sda1/etc/включать следующее право после /записи (корневой каталог)

    /dev/sdb3  /media/apps          ext4   errors=remount-ro  0   0 
    /opt       /media/apps/opt      none   defaults,bind      0   0
    /usr/bin   /media/apps/usr/bin  none   defaults,bind      0   0
    
  5. перезагрузка и проверка

Длинная версия:

Unix / Linux / Ubuntu была задумана как серверная ОС с настольным компьютером в качестве запоздалой мысли, тогда как Windows была задумана как настольная ОС, а сервер был задним числом.

Таким образом, стандарт иерархии файловой системы Linux позволяет вам располагать неограниченное количество дисков / разделов в любом месте и привязывать их к нужному диску или разделу с полной прозрачностью для пользователя, тогда как ОС Windows ограничена максимум 24 доступными дисками / разделы ( C:через Z:as A:и B:зарезервированы для дискет.)

Большинство приложений , которые вы установите себе получить установлены в /opt/и /usr/bin, поэтому установить Ubuntu нормально , а затем использовать следующие шаги , где я assuing /dev/sdaваш SSD, /dev/sdbваш жесткий диск и /dev/sddваш USB палку:

  1. Загрузите внешний USB-диск с версией Ubuntu, которую вы только что установили.
  2. Создайте на жестком диске раздел, содержащий все приложения, которые вы хотите установить (скажем, 64 ГБ), используя gparted, и я предполагаю, что это будет третий раздел, который вы создадите на жестком диске ( /dev/sbd3)
  3. Смонтируйте этот раздел во временный каталог:

    mkdir /media/apps
    mount /dev/sdb3 /media/apps
    
  4. скопировать существующий /optи /usr/binтуда:

    mkdir /media/apps/usr
    cp --preserve=all --recursive /opt /media/apps
    cp --preserve=all --recursive /usr/bin /media/apps/usr
    
  5. sudo nanofstabна /dev/sda1/etc/включать следующее право после /записи (корневой каталог)

    /dev/sdb3  /media/apps          ext4   errors=remount-ro  0   0 
    /opt       /media/apps/opt      none   defaults,bind      0   0
    /usr/bin   /media/apps/usr/bin  none   defaults,bind      0   0
    
  6. перезагрузка и проверка

  7. Если все работает правильно, перезагрузитесь на USB-накопитель снова и удалите все, что находится в, /dev/sda1/optи /dev/sda1/usr/binосвободите место на диске, которое все еще используется устаревшими каталогами, уже смонтированными где-то еще.

Предупреждение: последняя команда может также привести к сбою системы в маловероятном случае /dev/sbd3не монтирования из-за сбоя HW

Fabby
источник
На самом деле Windows имеет такую ​​же поддержку для монтирования дисков по некорневым путям, вот уже около десяти лет. И эти буквы дисков также могут быть сопоставлены для каждого пользователя, поэтому H: \ может быть домашним каталогом для каждого пользователя. Не удивительно: линейка Windows NT основана на VMS, очень многопользовательской системе. Unix также не задумывался как серверная ОС: AT & T производила телефонные коммутаторы. И UNIX, в частности, отличается от своего вдохновения Multics тем, что поначалу он был менее ориентирован на многопользовательский режим - просто не было необходимости в переключателе телефона.
MSalters
@MSalters Ого, не знал бит телефонного переключателя AT & T ... Я помню часть VMS / NT и того, что M $ нанял главного инженера DEC, а также часть OS / 2, но до этого это был Single- Пользователь преимущественно многозадачен для рабочего стола. > :-) Обновлено!
Fabby
1
Windows также поддерживает диски без букв ( 1:и !:т. Д.), Как и некоторые версии DOS (с другими символами и [:т. Д.). Windows не ограничена 24 разделами (посмотрите точки монтирования тома). Ранние версии Windows (до 95) использовали совместную многозадачность, а не упреждающую, между процессами Windows; только виртуальные машины DOS были преимущественно многозадачными (в расширенном режиме).
Стивен Китт
1
Я работал в AT & T, в группе UNIX. Это не начало жизни как телефонный коммутатор.
Stevegt
@MSalters Unix, похоже, не имеет ничего общего с телефонными коммутаторами, кроме того, что ответственная компания разработала оба; и, похоже, он был многопользовательским очень рано, примерно в то время, когда было придумано название. Смотрите этот ответ на SE RC.
Питер - Восстановить Монику
2

Решение, которое я использовал для своего Chromebook, заключается не в установке пакетов, а в загрузке их копии .tar.gz.

Это может быть не то, что вы ищете, но если у вас очень маленький диск и вы хотите отделить жизненно важное программное обеспечение (рабочий стол GNOME, веб-браузер) от дополнительного программного обеспечения (GIMP, IDE, игры), чтобы сэкономить на некотором локальном пространстве и оставьте компьютер работать без внешнего накопителя, это лучшее решение на сегодняшний день.

acerspyro
источник