Можно ли установить программу на внешний диск?

9

Я запускаю Ubuntu 14.04 на Chromebook Toshiba, используя гренки. Диск, на котором установлена ​​моя ОС, мал, всего 3,6 ГБ свободного места. Я хотел бы установить sageв своей системе, но sageтребуется 6 ГБ свободного места в системе.

Тем не менее, я всегда держу SD-карту в устройстве. Карта имеет 175 ГБ свободного места. Можно ли установить sageна SD-карту?

Способ, которым я пытаюсь скачать sageс помощью команд

apt-add-repository -y ppa:aims/sagemath
apt-get update
apt-get install sagemath-upstream-binary

как найдено здесь .

Брайан Фицпатрик
источник
Как вы устанавливаете Sage? Из пакетов deb? Распаковывая архив? Компилируя из источника?
Жиль "ТАК - перестань быть злым"
@ Жиль Я только что обновил вопрос, чтобы включить, как я устанавливаю sage.
Брайан Фицпатрик

Ответы:

4

Разделить пакеты Debian на разные диски по пакетам сложно. Там нет поддержки для этого; вам придется вызывать dpkgотдельно пакеты, которые вы хотите установить в нестандартном месте.

Поместить дерево каталогов на отдельный диск очень просто. К счастью для вас, насколько я могу судить по быстрому прочтению, пакеты Sage в PPA устанавливают большинство файлов в /usr/lib/sagemath. Вы можете легко положить это на SD-карту. Допустим, карта SD установлена ​​(если имеется) на /media/sdcard. Создайте каталог там и сделайте символическую ссылку.

mkdir /media/sdcard/sagemath
ln -s /media/sdcard/sagemath /usr/lib/sagemath

Тогда все файлы, которые устанавливает dpkg, /usr/lib/sagemathокажутся на SD-карте (независимо от того, из какого пакета они поступают).

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

Жиль "ТАК - прекрати быть злым"
источник
Спасибо за советы. Я следовал вашим предложениям и установил sage. Однако выдача $ sageвозвращается bash: /usr/bin/sage: Permission denied.
Брайан Фицпатрик,
На внешнем диске должна быть файловая система типа UNIX (например, ext4, btrfs и т. Д.), Если вам нужны такие атрибуты, как «исполняемый файл» и информация о владельце / группе.
Нед64
@ Ned64 У моей SD-карты есть ext4.
Брайан Фицпатрик
@BrianFitzpatrick Я собирался сказать, что вам нужен posixovlfs поверх vfat, но, поскольку это ext4, вам не нужно ничего особенного. Хотя ... как ты монтируешь SD-карту? Если у вас есть userопция /etc/fstab, добавьте эту execопцию.
Жиль "ТАК - перестань быть злым"
@ Жиль Мой etc/fstabчитает# UNCONFIGURED FSTAB FOR BASE SYSTEM
Брайан Фицпатрик
4

Это интересный вопрос. Давайте обсудим несколько способов, которыми можно попытаться.

Метод № 1: Управление местоположением во время установки apt-get

Используя apt-get, сделать это невозможно. Если вы устанавливаете с использованием .debфайлов, это снова невозможно. Причина в том, что место для установки жестко запрограммировано в этих пакетах.

Чтобы манипулировать местом установки, вам придется скомпилировать sageиз исходного кода и изменить его makefileперед установкой. Это придет с бременем управления зависимостями.

Тем не менее, были дискуссии по этому поводу. Возможно, люди сделали это. Возможно, они как-то манипулировали местом установки. Смотрите здесь и здесь . Если вы найдете способ сделать это, пожалуйста, добавьте комментарий.

Способ № 2: изменение расположения папки / usr

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

Для этого есть 2 способа:

  1. (Предпочтительно) Создайте раздел на вашей внешней карте и перенесите весь контент в текущий /usr папке в этот раздел. Затем измените ваш файл так, /etc/fstabчтобы он монтировал этот раздел как /usrпапку, и полностью удалите старую /usrпапку. Чтобы сделать все это, вам нужно будет загрузиться с какого-нибудь аварийного диска или с живого CD / USB.

  2. В этом методе также сначала загрузитесь с некоторого аварийного диска или live CD / USB, а затем переместите /usrпапку на внешнюю карту и затем создайте символическую ссылку на новую /usrпапку.

PS

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

ОБНОВИТЬ

Также смотрите ответ @gilles. Его предложение лучше. Вместо перемещения всей /usrпапки на внешнюю карту, просто переместите ее /usr/lib/sagemathна внешнюю карту, поскольку она занимает около 3,1 ГБ вашей установки. Таким образом, в методе № 2 вы можете переместить эту папку вместо /usr.

shivams
источник
Переход /usrна SD-карту сделает систему непригодной для использования, если SD-карта отсутствует. Это не очень хорошая идея.
Жиль "ТАК - перестань быть злым"
Да. Но ОП упомянул, что карта ВСЕГДА будет оставаться вставленной. Я упомянул это в своем ответе.
Шивамс
@ Жиль, я просто твой ответ. Ваше предложение определенно лучше.
Шивамс