Мое намерение состоит в том, чтобы сгенерировать распространяемые двоичные файлы - я делаю ./configure - make - make install на моей машине сборки, и я заархивировал содержимое каталога установки (тот, к которому я дал префикс при выполнении ./configure и make install) и перенес его на другую машину под другим пользователем для тестирования. После тестирования я вижу, что скопированные файлы все еще пытаются получить доступ к некоторым файлам по пути, который был на моей сборочной машине - и, следовательно, я получаю ошибку « permissions denied в доступе». Ранее я думал, что это может быть проблема с tar при извлечении, но благодаря Дэниелу Беку, который помог мне понять, что это не имеет никакого отношения к процессу архивирования.

У меня нет привилегий root/sudo. Суть в том, как мне собрать одну машину и использовать установочные файлы во многих других, не сталкиваясь с проблемами, связанными с разрешениями? Каковы правила создания универсально распространяемых тарболлов?

Благодарю.

2 ответа2

1

Проблема в том, что многие программы Unix не перемещаются. Они всегда будут искать файлы по пути, указанному вами для настройки (не относительно его собственного местоположения). Если вы хотите, чтобы он был перемещаемым, то его можно установить в любой пользовательский каталог (или в любое другое место) и по-прежнему находить его файлы, где нет другого способа, кроме как изменить программу, чтобы она так себя вел.

Не существует общих правил для создания распространяемых tar-архивов, особенно для программ, созданных для установки из исходного кода. Большинство дистрибутивов Unix имеют какую-то специальную систему пакетов для распространения двоичных файлов. Лучше всего использовать это / те. Большинство коммерческих приложений, которые поставляются в виде двоичных файлов в tar-архивах, используют переменную окружения для определения местоположения своих файлов и используют сценарий оболочки-оболочки, который устанавливает эту переменную (например, путем поиска файлов относительно их собственного пути). С другой стороны, вы, вероятно, должны изменить программу, чтобы вести себя таким образом.

0

Используйте tar --no-same-owner (для версии GNU) при распаковке tarball. --no-same-permissions также может быть полезным.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .