Установка программ на флеш-накопителе так, чтобы они могли быть выполнены на месте

Это не подстановочные символы. @val0x00ff уже объяснил, каковы они.

Для получения дополнительной информации о них просто проходят http://www.tldp.org/LDP/GNU-Linux-Tools-Summary/html/x11655.htm

Я предполагаю, что Вы плохо знакомы со всеми 3 - Unix, C и удар, таким образом, я также рекомендую Вам пройти http://en.wikipedia.org/wiki/Printf_format_string и http://www.tldp.org/LDP/Bash-Beginners-Guide/html/Bash-Beginners-Guide.html

3
20.03.2017, 12:18
2 ответа

Да, вы можете это сделать . Это больше работы, чем полагаться на диспетчер пакетов - главная привлекательность «портативных» установок под Windows - это отсутствие необходимости бороться с отсутствием достойного диспетчера пакетов.

Вам нужно будет организовать, чтобы программы находили свои зависимости: файлы данных, библиотеки и т. Д. Многие программы поддерживают для этого переменные среды. Некоторые проверяют каталог, в котором находится двоичный файл, или относительные каталоги, такие как ../ lib , на предмет сопутствующих файлов

. Устанавливают программное обеспечение в какой-либо корневой каталог. Создайте обычные каталоги категорий в этом корне: bin , lib , man и т. Д. Чтобы управлять всем программным обеспечением, установите каждый из них отдельно, а затем используйте программу например, Stow создает лес символических ссылок, чтобы связать их с каталогами категорий. См. Отслеживание программ для ознакомления с Stow. Таким образом, у вас будут символические ссылки вроде

bin/foo -> ../stow/foo-1.42/bin/foo
bin/foobar -> ../stow/foo-1.42/bin/foobar
man/man1/foo.1 -> ../../stow/foo-1.42/man/man1/foo.1
…

. Вам понадобится сценарий для установки переменных среды. Поместите его в корень вашей установки и используйте $ 0 , чтобы найти сценарий. Поскольку сценарий не может влиять на своего родителя, обычный подход состоит в том, чтобы заставить сценарий производить вывод, который может быть оценен вызывающей оболочкой. Назовем этот сценарий setup.sh .

#!/bin/sh
set -e
root=$(dirname -- "$0")
cd -- "$root"
printf "PORTABLE_ROOT='%s'\\n" "${PWD}" | sed "s/'/'\\\\''/g"
prepend () {
  eval "set -- \"\$1\" \"\$2\" \"${$1}\""
  case :$3: in
    *:$PORTABLE_ROOT/$2:*) :;; # already there (at any location)
    :: echo '$1=$PORTABLE_ROOT/$2; export $1';; # the path was empty
    *) echo '$1=$PORTABLE_ROOT/$2:$3; export $1';; # prepend
  esac
}
prepend PATH bin
prepend MANPATH man
prepend LD_LIBRARY_PATH lib
prepend PERL5LIB lib/perl
prepend PYTHONPATH lib/python
…

(Предупреждение: непроверенный код)

Чтобы использовать переносимую установку из оболочки, запустите eval "` /path/to/setup.sh`".

4
27.01.2020, 21:19

Конечно. Некоторые языки, такие как Java или Python, достигают уровня портативности, хотя он может быть побежден с включением системных системных вызовов ОС.

0
27.01.2020, 21:19

Теги

Похожие вопросы