2016-11-02 8 views
0

В системах Gentoo, скажем, у меня много моих домашних компонентов с одним ebuild каждый (обычный случай), и я хочу применить разрешения по умолчанию для файлов на этапе установки.Автоматически устанавливать разрешения по умолчанию для установленных файлов для всей цели

Есть ли способ автоматически устанавливать/настраивать разрешения по умолчанию для установленных файлов без изменения каждого файла ebuild? Можно ли сделать это глобально (одна модификация работает для всех ebuild)?

Я столкнулся с «libopts», «diropts», «exeopts» и т. Д., Но для этого нужно изменить каждый ebuild, чтобы установить мои собственные разрешения по умолчанию.

+0

К сожалению у меня нет времени, чтобы дать правильный ответ, но это звучит, как вы могли бы быть заинтересован в написании экласа. eclasses дают вам возможность совместно использовать код и определять стандартные этапы фаз. В качестве примера вы можете взять 'autotools-utils.eclass', определить' src_install' по умолчанию, определив функцию '« eclass-name »_src_install()' и используя 'EXPORT_FUNCTIONS', как это делается, и используйте соглашение, подобное этому функция, вызывающая функцию, определенную конвенцией, в ваших ebuild или выполнение действий по установке по умолчанию после проверки некоторого envvar, установленного вашим ebuild. – binki

+0

Я знаю об eclasses, но это не то, что я ищу, поскольку это потребует изменения каждого ebuild. Я ищу что-то, чтобы изменить разрешения по умолчанию для файлов на этапе установки. –

+0

Я понимаю, что вы хотите избежать добавления большего количества шаблонов для каждого ebuild. Но я думаю, что «наследовать мой-общий-util» или что-то другое для всех ebuilds сделает их гораздо менее запутанными, если кто-то еще их будет использовать, хотя это, вероятно, не ваше намерение. Вы пытаетесь сделать накладку, которая может быть легко распространена на других компьютерах и получить эффекты, или вы пытаетесь просто взломать свою единственную систему? Могут быть хаки, которые вы могли бы сделать, чтобы сделать это, изменив вашу систему или настройки в '/ etc' или что-то в этом роде, но это кажется уродливым: -/ – binki

ответ

0

bashrc на помощь! Этот файл получен до каждый этап сборки работает. Фаза, которую вас интересует, называется preinst. Эта фаза будет выполняться перед установкой данных на диск. Так что ваш код может выглядеть следующим образом:

if [[ "${EBUILD_PHASE}" == 'preinst' ]] ; then 
    if [[ -n "${D} ]] ; then 
     find "${D}" -type f -print0 | xargs -0 chmod ... 
     find "${D}" -type d -print0 | xargs -0 chmod ... 
    else 
     echo "Error" 
    fi 
fi 

Примечания: код не проверяются, использование на своем страх и риск

 Смежные вопросы

  • Нет связанных вопросов^_^