Какие изменения происходят в системе после того, как dev добавит их собственный профиль?

Вы можете проверить, обнаружено ли его на ОС. Запустите команду ниже

#LSPCI -----> Проверьте вывод и посмотрите, можете ли вы получить подключенное устройство PCI

-121--150615-

У меня есть метод из этого звена . Но я не знаю, есть ли у него подводные камни.

SENDMAIL=/usr/sbin/sendmail
FROM_=`formail -c -I"Reply-To:" -rt -xTo: \
  | expand | sed -e 's/^[ ]*//g' -e 's/[ ]*$//g'`
SUBJ_=`formail -xSubject: \
       | expand | sed -e 's/^[ ]*//g' -e 's/[ ]*$//g'`

# Make a copy of all email to my second address
:0
* ! ^X-Loop: myid@myhost\.mydom
{
  :0c:${HOME}/procmail.lock
  | formail -A"X-Loop: myname@institute.domain" \
    -I"Subject: ${SUBJ_} [autofwd]" \
    | ${SENDMAIL} -f"${FROM_}" myusername@gmail.com
}

0
05.01.2015, 19:19
1 ответ

Сначала ознакомьтесь с разделом Справочника: AMD64/Portage/Files.

Пожалуйста, поймите, что добавление профиля не является тривиальной задачей. Портативные профили работают по 3 принципам:

  1. Расширение переменных/строк - обеспечивается вашей оболочкой
  2. Переменное наследование/иерархия
  3. USE Flags

TL;DR:Пропустите обертывание

Так как большинство читателей знают, что такое расширение строк, мы пропустим это, и начнем с пункта 2. Наследование создает соответствующую иерархическую модель базы данных, хранящуюся в виде текстовых файлов в каталоге /usr/portage/profiles/.

Несколько вещей, которые следует запомнить:

  1. Все профили следуют стандартному поведению портежей.
  2. Ни один профиль в /usr/portage/profiles не должен редактироваться вручную, если Вы не создаете новый. Все настройки для переопределения используемого профиля принадлежат к /etc/portage. В противном случае ваши настройки будут удаляться при каждой синхронизации дерева.
  3. Все файлы содержат стандартные комментарии в стиле Linux, указывающие на то, для чего используется файл и почему каждая запись существует.
  4. Все профили наследуют элементы базового профиля. (Принцип 2)
  5. Поскольку Gentoo является прокатным дистрибутивом, каждый из этих файлов будет содержать заголовок коммита.

    # Copyright 1999-2014 Gentoo Foundation.
    # Распространяется на условиях Стандартной общественной лицензии GNU, v2.
    # $Header: /var/cvsroot/gentoo-x86/profiles/base/packages,v 1.67 2014/11/02 18:17:04 vapier Exp $
    
    # Gentoo Base Profile
    
    # ПРИМЕЧАНИЕ: ЭТО БАЗОВЫЙ ПРОФИЛЬ ДЛЯ *ЛЮБОЙ* ОПЕРАЦИОННОЙ СИСТЕМЫ, ОСНОВАННОЙ НА GENTOO.
    # НИКАКИЕ ИЗМЕНЕНИЯ НЕ МОГУТ БЫТЬ СДЕЛАНЫ В ЭТОМ ФАЙЛЕ БЕЗ ПРЕДВАРИТЕЛЬНОГО ОБСУЖДЕНИЯ. IF
    # ВЫ СОЗДАЕТЕ НОВЫЙ ПРОФИЛЬ, ВАМ ПРОСТО НУЖНО УНАСЛЕДОВАТЬ ЭТУ БАЗУ.
    # PROFILE IN Y Your PROFILE DIRECTORY's "parent" FILE.
    
    # Хорошо, ты смотришь на этот файл и понятия не имеешь, что это за звезды.
    # для. Вот сенсация. Начальное "*" обозначает пакет, который является частью
    # официальный профиль системы BASE. Если есть "*", то `эммердж-система''.
    # будет использовать строку в своих вычислениях того, что должно быть установлено для
    # базовый профиль. Линии без префикса "*" будут проигнорированы для профиля.
    # системные вычисления.
    
    # Обратите внимание, что этот файл редко используется в качестве маски включения пакетов.
    # file, потому что это влияет на ВСЕГДА ОДИН генту-профиль. Как видно,
    # мы ограничили маску включения версией portage, которая поддерживает
    # каскадные профили, но кроме этого, не должно быть версии.
    # конкретная информация здесь. Этот файл служит описанием высокого уровня
    # минимального набора пакетов, необходимого для любой системы на базе Gentoo.
    
    *>=sys-apps/baselayout-2
    *app-arch/bzip2
    *app-arch/gzip
    *app-arch/tar
    *app-arch/xz-utils*
    *app-shells/bash
    #*dev-lang/perl
    #*dev-lang/python#
    *net-misc/iputils
    *net-misc/rsync
    *нет-диск/загрузка
    *sys-apps/coreutils*
    #sys-apps/debianutils #
    *sys-apps/diffutils*
    *sys-apps/file
    *sys-apps/findutils*
    *sys-apps/gawk*
    *sys-apps/grep*
    *sys-apps/kbd*
    # временный багфикс для #398295
    *sys-apps/less
    # stopgap решение для functions.sh #373219 и #504116
    *sys-apps/openrc*
    #*>=sys-apps/portage-2.0.51.22
    *sys-process/procps
    *sysys-process/psmisc
    *sys-apps/sed*
    *sys-apps/which*
    #sys-devel/autoconf#
    #sys-devel/automake#
    *sys-devel/binutils*
    #sys-devel/bison #
    #sys-devel/flex#
    *sys-devel/gcc
    *sys-devel/gnuconfig*
    #sys-devel/libtool #
    #sys-devel/m4
    *sys-devel/make*
    *>=sys-devel/patch-2.6.1
    *sys-fs/e2fsprogs
    *виртуальный/дев-менеджер
    *виртуальный/редактор
    *виртуальный/либк
    *виртуальный/мужчина
    *виртуальные/модутилы
    *виртуальные/ос-заголовки
    *виртуальный/пакетный менеджер*
    *виртуальный/пейджер
    *Виртуальный/сервисный менеджер*
    *виртуальный/теневой
    *виртуальный/шш*
    

Используя базовый профиль для начала, мы читаем:

ЕСЛИ ВЫ СОЗДАЕТЕ НОВЫЙ ПРОФИЛЬ, ВАМ ПРОСТО НУЖНО УНАСЛЕДОВАТЬ ЕГО. ПРОФИЛЬ БАЗЫ В РОДИТЕЛЬСКОМ ДИРЕКТОРЕ ВАШЕЙ ПРОФИЛИ "Родительский" ФИЛЬ.

Используя amd64 в качестве примера, я перехожу к "родительскому" файлу и вижу:

../base
../../features/multilib/lib32

Hmmm, это выглядит так, как будто профиль может наследовать от нескольких профилей. Поэтому давайте подробнее рассмотрим .../.../функции/мультилиб/lib32. Вернувшись в /usr/portage/profiles, мы видим каталог features. Это также две директории из нашего оригинального pofile amd64. Помните, что ... означает родительский каталог. В каталоге lib32 профиля multilib мы находим:

  1. другой родительский файл с содержимым ...
  2. Файл eapi
  3. A make.default file

Родительский файл помещает нас в каталог multilib, где мы начнем наследовать USE-флаги мгновенно. Файл eapi содержит 5, что означает, что нам нужна версия портежей, поддерживающая Emerge API 5, часть спецификации Package Manager Specification. Знание того, что нам нужен EAPI 5, говорит нам о том, что нам нужна версия портажа portage >= 2.1.11.19. Глядя на файл make.defaults, мы видим:

# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/profiles/features/multilib/lib32/make.defaults,v 1.2 2011/03/21 04:39:31 vapier Exp $

# Let baselayout create the lib symlink.
SYMLINK_LIB="yes"

# 32-bit LIBDIR
LIBDIR_ppc="lib32"
LIBDIR_x86="lib32"
LIBDIR_x86_fbsd="lib32"
LIBDIR_sparc32="lib32"
LIBDIR_s390="lib32"

Хммм, похоже, что этот файл управляет установкой и обслуживанием библиотек и дифференциацией /lib32 и /lib64 для каждой архитектуры, используя Принцип 1. Если мы последуем за файлом parent до multilib, то увидим:

  1. No Parent File, мы должны быть в правильном месте, чтобы наследовать USE Flags.
  2. Другой eapi, все еще содержащий 5.
  3. Другой файл по умолчанию
  4. Файл .force
  5. 2 .mask файлы

    # Авторское право 1999-2013 Gentoo Foundation
    # Распространяется на условиях Стандартной общественной лицензии GNU v2.
    # $Header: /var/cvsroot/gentoo-x86/profiles/features/multilib/make.defaults,v 1.12 2014/03/27 01:55:29 vapier Exp $
    
    # Хорхе Мануэль Б. С. Висетто  (16 ноября 2011)
    # Переименовать STAGE1_USE в BOOTSTRAP_USE и сложить его в родительское значение.
    # Это так, что мы строим с мультилибом с самого начала.
    BOOTSTRAP_USE="${BOOTSTRAP_USE} multilib".
    
    # По умолчанию USE=multilib to on. Это редко влияет на пакеты, как они должны быть
    # используя мультилибковый экласс в любом случае. #435094
    USE="мультилиб"
    
    # FEATURES="multilib-strict" специфические настройки.
    MULTILIB_STRICT_DIRS="/lib32 /lib /usr/lib32 /usr/lib /usr/kde/*/lib32 /usr/kde/*/lib /usr/qt/*/lib32 /usr/qt/*/lib /usr/X11R6/lib32 /usr/X11R6/lib".
    MULTILIB_STRICT_DENY="64-битный.*объект".
    MULTILIB_STRICT_EXEMPT="(perl5|gcc|gcc-lib|binutils|eclipse-3|debug|portage|udev|systemd|clang|clang|python-exec)".
    
    # 64-битный ЛИБДИР
    LIBDIR_amd64="lib64"
    LIBDIR_amd64_fbsd="lib64"
    LIBDIR_arm64="lib64"
    LIBDIR_n64="lib64" # MIPS n64
    LIBDIR_ppc64="lib64"
    LIBDIR_s390x="lib64"
    LIBDIR_sparc64="lib64"
    
    # 32-битный ЛИБДИР
    LIBDIR_arm="lib"
    LIBDIR_x86="lib"
    LIBDIR_x86_fbsd="lib"
    LIBDIR_o32="lib" # MIPS o32
    LIBDIR_ppc="lib"
    LIBDIR_s390="lib"
    LIBDIR_sparc32="lib"
    
    # Где-то между ними!
    LIBDIR_x32="libx32" # x86-64 x32
    LIBDIR_n32="lib32" # MIPS n32
    

Больше переменных настройки и расширения (Принцип первый). В файле .force мы находим:

# Copyright 2004-2014 Gentoo Foundation.
# Distributed under the terms of the GNU General Public License, v2
# $Header: /var/cvsroot/gentoo-x86/profiles/features/multilib/package.use.force,v 1.1 2014/03/21 18:57:15 vapier Exp $

# These packages must have multilib turned on in order to work sanely.
sys-apps/sandbox multilib
sys-devel/gcc multilib
sys-libs/glibc multilib

Это имеет смысл, профиль multilib требует, чтобы эти 3 пакета содержали мультилибовые символы и т.д. для сборки всего остального. В данном случае multilib является флагом USE (принцип 3). Короче говоря, USE-флаги и пакеты из этого списка вынуждены использовать настройки данного файла. Принудительные установки - это USE-флаги в скобках.

Multilib Flag forcefully set


Файлы .mask ведут себя аналогично. Для краткости, я не буду размещать его здесь. Это возвращает нас к базовому профилю, где мы унаследуем USE-флаги в файлах .force, файл make.defaults и файлы .use.

Wrap - Up

Вы наследуете настройки из профиля архива, а профиль архива наследует настройки из базового профиля. См. список ниже для порядка.

  1. Настройки из файла Make.defaults, USE Flags из файлов .force и .use из выбранного профиля архива. Настройки по умолчанию
  2. Настройки из файла Make.defaults, USE Flags из файлов .force и .use из базового профиля. Настройки по умолчанию
  3. Настройки из файла .force и .use из любого другого профиля, перечисленного в родительском файле .
  4. Настройки и USE-флаги из /etc/portage/make.conf

Чтобы увидеть все эти настройки в действии, выпустите:
emerge --info
, который расширит большинство переменных и их значения в каждом из этих файлов.

1
28.01.2020, 02:52

Теги

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