Пользовательские каталоги установки - PullRequest
1 голос
/ 16 марта 2010

Допустим, я пишу установочный скрипт для программы, который содержит исполняемый файл и разделяемую библиотеку. По умолчанию этот сценарий размещает исполняемый файл в / usr / local / bin, а разделяемую библиотеку - в / usr / local / lib. В этом случае моя программа может быть выполнена любым пользователем, введя его имя в командной строке.

Предположим, что пользователь выбирает пользовательский каталог установки, например ~ / myprogram /. Ответственность за выполнение моей программы лежит на пользователе, или скрипт установки должен это сделать?

Ответы [ 2 ]

2 голосов
/ 16 марта 2010

Обычно сценарий «make install» или сценарий установки использует команду install для копирования файла и установки разрешений (включая биты выполнения).

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

Для справки вы можете обратиться к двум основным рекомендациям по упаковке: Стандартная база Linux и Руководство по политике Debian .

Надеюсьчто отвечает на ваш вопрос.

1 голос
/ 16 марта 2010

Это будет зависеть от того, запущен ли ваш установщик с правами root.

Если программное обеспечение установлено в / opt / myprogram, то каждый может использовать его, и было бы целесообразно исправить /etc/ld.so.conf (или его эквивалент), чтобы любой мог использовать его.

В домашнем каталоге отдельного пользователя или когда установщик не запускается пользователем root, лучшее, что вы можете сделать, это сказать «Добавить ~ / myprogram / lib в LD_LIBRARY_PATH».

Если есть переменная среды, которую вы можете использовать для определения места установки, то вы можете установить скрипт, который гарантирует, что LD_LIBRARY_PATH установлен в ~ / myprogram / bin, который затем запускает исполняемый файл с набором среды. Может быть в ~ / myprogram / libexec, если я правильно помню FHS 1 .


1 Каталог libexec, по-видимому, не упоминается в FHS. Обычно используется в autoconf и связанных системах установки GNU.

...