Редакция 1.0
Моноширинный жирный шрифт
Чтобы просмотреть содержимое файлаmy_next_bestselling_novel
в текущем каталоге, в строке приглашения оболочки введитеcat my_next_bestselling_novel
и нажмите Enter для выполнения этой команды.
Нажмите Enter для исполнения команды.Нажмите Ctrl+Alt+F2 для перехода в первый виртуальный терминал. Нажмите Ctrl+Alt+F1 , чтобы вернуться в сессию X-Windows.
Классы файлов включаютfilesystem
для файловых систем,file
для файлов,dir
для каталогов. Каждому классу соответствует набор разрешений.
В главном меню выберите Настройки мыши. На вкладке Кнопки установите флажок Настроить мышь под левую руку и нажмите кнопку , чтобы настроить мышь для левши.→ → для запуска утилитыЧтобы вставить специальный символ в файл gedit, выберите → → . Затем в меню выберите → , введите имя символа и нажмите кнопку . Найденный символ будет выделен в таблице символов. Дважды щелкните на этом символе, чтобы вставить его в поле Текст для копирования и нажмите кнопку . Теперь вернитесь к вашему документу и в меню выберите → .
Моноширинный жирный курсив
или пропорциональный жирный курсив
Для подключения к удаленной машине с помощью SSH в строке приглашения выполнитеssh
. Скажем, имя удаленной машины –имя_пользователя
@имя_домена
example.com
, а ваше имя пользователя – john, тогда команда будет выглядеть так:ssh john@example.com
.Командаmount -o remount
повторно подключит заданную файловую систему. Например, дляфайловая_система
/home
команда будет выглядеть так:mount -o remount /home
.Чтобы просмотреть версию установленного пакета, выполните командуrpm -q
. Результат команды будет представлен в форматепакет
.
пакет-версия-выпуск
Publican — система публикации DocBook.
моноширинный шрифт
:
books Desktop documentation drafts mss photos stuff svn books_tests Desktop1 downloads images notes scripts svgs
моноширинный шрифт
:
package org.jboss.book.jca.ex1; import javax.naming.InitialContext; public class ExClient { public static void main(String args[]) throws Exception { InitialContext iniCtx = new InitialContext(); Object ref = iniCtx.lookup("EchoBean"); EchoHome home = (EchoHome) ref; Echo echo = home.create(); System.out.println("Created Echo"); System.out.println("Echo.echo('Hello') = " + echo.echo("Hello")); } }
yum install -y scl-utils scl-utils-build
/opt/
. Использование каталога /opt/
рекомендуется стандартом FHS[1].
%_scl_prefix
в spec-файле пакета. Например:
%_scl_prefix /opt/provider
provider
— это наименование поставщика или разработчика программного обеспечения, зарегистрированное в Linux Foundation и подчиненной ей организации Linux Assigned Names and Numbers Authority (LANANA) и удовлетворяющее требованиям стандарта FHS.
/opt/поставщик
/приложение-версия
/
Коллекция 1
и Коллекция 2
:
opt
`--provider
|-- Коллекция 1 | |-- корневой каталог коллекции | `-- скриплеты коллекции | `-- Коллекция 2 |-- корневой каталог коллекции `-- скриплеты коллекции
ruby-1.8.7
, то макропеременная, определяющая название главного пакета, расширяется в значение:
ruby-1.8.7
имя_коллекции
-runtimeruby-1.8.7
, то макропеременная, определяющая имя подпакета рабочей среды, расширяется в значение:
ruby-1.8.7-runtime
имя_коллекции
-buildruby-1.8.7
, то макропеременная, определяющая имя подпакета сборки, расширяется в значение:
ruby-1.8.7-build
%{!?scl:%global scl example} %scl_package %scl Summary: Package that installs %scl Name: %scl_name Version: 1 Release: 1%{?dist} BuildArch: noarch License: GPLv2+ Requires: %{scl_prefix}less BuildRequires: scl-utils-build %description This is the main package for %scl Software Collection. %package runtime Summary: Package that handles %scl Software Collection. Requires: scl-utils %description runtime Package shipping essential scripts to work with %scl Software Collection. %package build Summary: Package shipping basic build configuration %description build Package shipping essential configuration macros to build %scl Software Collection. %install rm -rf %{buildroot} mkdir -p %{buildroot}%{_scl_scripts}/root cat >> %{buildroot}%{_scl_scripts}/enable << EOF export PATH=%{_bindir}:\$PATH EOF %scl_install %files %files runtime %scl_files %files build %{_root_sysconfdir}/rpm/macros.%{scl}-config %changelog * Thu Jan 07 2012 John Doe <jdoe@example.com> 1-1 - Initial package
имя_коллекции
-имя_пакета
ruby-1.8.7
, то пакет ruby-1.8.7.352-2.1.fc17.x86_64.rpm при включении в эту коллекцию будет именоваться так:
ruby-1.8.7-ruby-1.8.7.352-2.1.fc17.x86_64.rpm
scl
action
software_collection_1
software_collection_2
command
--version
в среде коллекции программ software_collection_1, надо выполнить следующую команду:
scl enable software_collection_1 'perl --version'
scl enable software_collection_1 software_collection_2 bash
cat cmd | scl enable software_collection_1 -
cmd
, выполняются в среде коллекции программ software_collection_1.
rpmbuild -bb package
.spec --define 'scl name
'
rpmbuild -bb package.spec
) состоит в том, что при сборке коллекции программ к команде rpmbuild
добавляется опция --define
.
--define
определяет значение макропеременной scl
, которое используется как название коллекции внутри spec-файла пакета, подготовленного для включения в коллекцию программ.
scl
, используемая при сборке пакетов коллекции программ, обеспечивает перемещение файловой стуктуры пакетов коллекции в каталог файловой системы, отведенный исключительно для данной коллекции программ.
scl
используется в метапакете коллекции и служит для определения значений других макропеременных в среде сборки пакетов коллекции программ.
%{?scl:макровыражение
}
. Например:
%{?scl:Requires:%scl_runtime}
%scl_runtime
задает значение тега Requires
. Префикс %{?scl:
должен стоять перед макровыражением, включающим тег и макропеременную.
Макрос
|
Описание
|
Пример значения
|
---|---|---|
%scl_name
|
Название коллекции программ
|
software_collection_1
|
%pkg_name
|
Имя оригинального пакета
|
perl
|
%_scl_prefix
|
Корневой каталог коллекции программ (не путать с корневым каталогом для установки пакета)
|
/opt/provider/
|
%_scl_scripts
|
Местоположение скриплетов коллекции программ
|
/opt/provider/software_collection_1/
|
%_scl_root
|
Корневой каталог для установки пакета
|
/opt/provider/software_collection_1/root/
|
_root
.
Макрос
|
Описание
|
Перемещаемый
|
Пример значения
|
---|---|---|---|
%_root_prefix
|
Макрос
%_prefix для коллекции программ
|
нет
|
/usr/
|
%_root_exec_prefix
|
Макрос
%_exec_prefix для коллекции программ
|
нет
|
/usr/
|
%_root_bindir
|
Макрос
%_bindir для коллекции программ
|
нет
|
/usr/bin/
|
%_root_sbindir
|
Макрос
%_sbindir для коллекции программ
|
нет
|
/usr/sbin/
|
%_root_datadir
|
Макрос
%_datadir для коллекции программ
|
нет
|
/usr/share/
|
%_root_sysconfdir
|
Макрос
%_sysconfdir для коллекции программ
|
нет
|
/etc/
|
%_root_libexecdir
|
Макрос
%_libexecdir для коллекции программ
|
нет
|
/usr/libexec/
|
%_root_sharedstatedir
|
Макрос
%_sharedstatedir для коллекции программ
|
нет
|
/usr/com/
|
%_root_localstatedir
|
Макрос
%_localstatedir для коллекции программ
|
нет
|
/usr/var/
|
%_root_includedir
|
Макрос
%_includedir для коллекции программ
|
нет
|
/usr/include/
|
%_root_infodir
|
Макрос
%_infodir для коллекции программ
|
нет
|
/usr/share/info/
|
%_root_mandir
|
Макрос
%_mandir для коллекции программ
|
нет
|
/usr/share/man/
|
%_root_initddir
|
Макрос
%_initddir для коллекции программ
|
нет
|
/etc/rc.d/init.d/
|
%
_root_libdir
|
Макрос
%_libdir для коллекции программ. Этот макрос не работает, если метапакет коллекции программ является платформно-независимым
|
нет
|
/usr/lib/
|
%scl_package
:
%{?scl:%scl_package имя_пакета}
%pkg_name
на тот случай, когда пакет собирается не для коллекции программ:
%{!?scl:%global pkg_name %{name}}
%pkg_name
можно использовать везде, где в spec-файле требуется сослаться на оригинальное имя пакета. Такой spec-файл можно использовать при сборке обычного пакета и коллекции программ.
Name
надо изменить следующим образом:
Name: %{?scl_prefix}имя_пакета
BuildRequires
или Requires
надо добавить такое макровыражение:
%{?scl:Requires: %scl_runtime}
%prep
. В нем надо отредактировать обращение к макросу %setup
таким образом, чтобы макрос мог работать с измененным именем пакета при сборке в среде коллекции программ:
%setup -q -n %{pkg_name}-%{version}
--- a/less.spec +++ b/less.spec @@ -1,10 +1,13 @@ +%{?scl:%scl_package less} +%{!?scl:%global pkg_name %{name}} + Summary: A text file browser similar to more, but better -Name: less +Name: %{?scl_prefix}less Version: 444 Release: 7%{?dist} License: GPLv3+ Group: Applications/Text -Source: http://www.greenwoodsoftware.com/less/%{name}-%{version}.tar.gz +Source: http://www.greenwoodsoftware.com/less/%{pkg_name}-%{version}.tar.gz Source1: lesspipe.sh Source2: less.sh Source3: less.csh @@ -19,6 +22,7 @@ URL: http://www.greenwoodsoftware.com/less/ Requires: groff BuildRequires: ncurses-devel BuildRequires: autoconf automake libtool +%{?scl:Requires: %scl_runtime} %description The less utility is a text file browser that resembles more, but has @@ -31,7 +35,7 @@ You should install less because it is a basic utility for viewing text files, and you'll use it frequently. %prep -%setup -q +%setup -q -n %{pkg_name}-%{version} %patch1 -p1 -b .Foption %patch2 -p1 -b .search %patch4 -p1 -b .time @@ -51,16 +55,16 @@ make CC="gcc $RPM_OPT_FLAGS -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOU %install rm -rf $RPM_BUILD_ROOT make DESTDIR=$RPM_BUILD_ROOT install -mkdir -p $RPM_BUILD_ROOT/etc/profile.d +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/profile.d install -p -c -m 755 %{SOURCE1} $RPM_BUILD_ROOT/%{_bindir} -install -p -c -m 644 %{SOURCE2} $RPM_BUILD_ROOT/etc/profile.d -install -p -c -m 644 %{SOURCE3} $RPM_BUILD_ROOT/etc/profile.d -ls -la $RPM_BUILD_ROOT/etc/profile.d +install -p -c -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/profile.d +install -p -c -m 644 %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/profile.d +ls -la $RPM_BUILD_ROOT%{_sysconfdir}/profile.d %files %defattr(-,root,root,-) %doc LICENSE -/etc/profile.d/* +%{_sysconfdir}/profile.d/* %{_bindir}/* %{_mandir}/man1/*
BuildRequires
и Requires
в spec-файле приложения таким образом, чтобы они должным образом отражали зависимости от коллекций программ.
BuildRequires: scl-utils-build Requires: %scl_require software_collection_1 Requires: %scl_require software_collection_2
software_collection_1
с помощью Yum надо выполнить следующую команду:
yum install -y software_collection_1
scl --list
%install
:
%install install -p -c -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{?scl:%_root_sysconfdir}%{!?scl:%_sysconfdir}/rc.d/%{?scl_prefix}имя_службы
%{?scl_prefix}имя_службы
LD_LIBRARY_PATH
:
export LD_LIBRARY_PATH=%{_libdir}:\$LD_LIBRARY_PATH
/etc/ld.so.conf.d/
.
/etc/ld.so.conf.d/
для системных библиотек. Каталог /etc/ld.so.conf.d/
рекомендуется использовать только для тех библиотек, которые недоступны в основной системе, так как в противном случае, вместо системных библиотек предпочтение получат версии библиотек, поставляемых с коллекцией программ, а это может привести к нежелательным результатам при работе системных приложений, включая их аварийную остановку и потерю данных.
/etc/ld.so.conf.d/
с библиотеками из коллекции программlibs.conf
и внести соответствующие изменения в spec-файл:
SOURCE2: %{?scl_prefix}libs.conf
libs.conf
надо перечислить каталоги, где располагаются версии библиотек, распространяемые вместе с коллекцией программ. Например:
/opt/provider/software_collection_1/root/usr/lib64/
/usr/lib64/
, входящий в коллекцию программ software_collection_1.
%install
в spec-файле пакета надо отредактировать так, чтобы файл libs.conf
инсталлировался следующим образом:
%install install -p -c -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{?scl:%_root_sysconfdir}%{!?scl:%_sysconfdir}/ld.so.conf.d/
PKG_CONFIG_PATH
. В зависимости от того, что определено в файлах .pc, значение переменной PKG_CONFIG_PATH
должно быть модифицировано с помщью макроса %{_libdir}
(обычно указывающего путь к каталогу библиотек /usr/lib/
или /usr/lib64/
) или с помощью макроса %{_datadir}
(обычно указывающего путь к каталогу /usr/share/
).
PKG_CONFIG_PATH
надо изменить следующим образом:
export PKG_CONFIG_PATH=%{_libdir}/pkgconfig:\$PKG_CONFIG_PATH
PKG_CONFIG_PATH
надо изменить так:
export PKG_CONFIG_PATH=%{_datadir}/pkgconfig:\$PKG_CONFIG_PATH
/usr/bin/
, и позволяет использовать средства, поставляемые в коллекции программ. В этом случае надо принять меры, чтобы файлы .pc были видны системе, даже если коллекция программ не подключена.
PKG_CONFIG_PATH
нужно указать путь доступа к этим файлам. В зависимости от содержания файлов .pc значение переменной PKG_CONFIG_PATH
определяется с помощью макроса %{_libdir}
(указывающего положение каталога библиотек) или с помощью макроса %{_datadir}
(указывающего положение каталога данных, независящих от архитектуры процессора).
PKG_CONFIG_PATH
с помощью макроса %{_libdir}
PKG_CONFIG_PATH
с помощью макроса %{_libdir}
, надо создать скрипт /etc/profile.d/имя.sh
. Этот скрипт исполняется всякий раз при запуске интерпретатора команд.
%{?scl_prefix}pc-libdir.sh
pc-libdir.sh
изменяет переменную PKG_CONFIG_PATH
так, чтобы она указывала на файлы .pc в коллекции программ:
export PKG_CONFIG_PATH=%{_libdir}/pkgconfig:/opt/provider
/имя_коллекции/путь/к/файлам_pc
SOURCE2: %{?scl_prefix}pc-libdir.sh
%install
в spec-файле пакета коллекции программ надо изменить так, чтобы данный файл устанавливался в каталог /etc/profile.d/
:
%install install -p -c -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{?scl:%_root_sysconfdir}%{!?scl:%_sysconfdir}/profile.d/
PKG_CONFIG_PATH
с помощью макроса %{_datadir}
PKG_CONFIG_PATH
с помощью макроса %{_datadir}
, надо создать скрипт /etc/profile.d/имя.sh
. Этот скрипт исполняется всякий раз при запуске интерпретатора команд.
%{?scl_prefix}pc-datadir.sh
pc-datadir.sh
изменяет переменную PKG_CONFIG_PATH
так, чтобы она указывала на файлы .pc в коллекции программ:
export PKG_CONFIG_PATH=%{_datadir}/pkgconfig:/opt/provider
/имя_коллекции/путь/к/файлам_pc
SOURCE2: %{?scl_prefix}pc-datadir.sh
%install
в spec-файле пакета коллекции программ надо изменить так, чтобы данный файл устанавливался в каталог /etc/profile.d/
:
%install install -p -c -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{?scl:%_root_sysconfdir}%{!?scl:%_sysconfdir}/profile.d/
man
могла показывать справочные страницы из подключенной коллекции программ, надо добавить путь доступа к этим страницам в переменную среды MANPATH
.
MANPATH
в spec-файл метапакета коллекции программ должна быть добавлена следующая строка:
export MANPATH=${MANPATH}:%{_mandir}
%{_mandir}
указывает путь доступа к справочным страницам внутри коллекции программ. Таким образом, они остаются невидимыми, пока коллекция программ не подключена.
/usr/bin/
, который позволяет использовать средства коллекции программ без ее подключения. В этом случае надо принять меры, чтобы справочные страницы оставались доступны, даже если коллекция программ не подключена.
man
могла показывать справочные страницы из неподключенной коллекции программ, надо указать в переменной среды MANPATH
путь доступа к справочным страницам этой коллекции.
MANPATH
для неподключенной коллекции программ.MANPATH
, надо создать скрипт /etc/profile.d/имя.sh
. Этот скрипт исполняется всякий раз при запуске интерпретатора команд.
%{?scl_prefix}manpage.sh
manpage.sh
изменяет переменную MANPATH
так, чтобы она указывала на каталог со справочными страницами:
export MANPATH=${MANPATH}:/opt/provider
/имя_коллекции/путь/к/справочным_страницам
SOURCE2: %{?scl_prefix}manpage.sh
%install
в spec-файле пакета коллекции программ надо изменить так, чтобы данный файл устанавливался в каталог /etc/profile.d/
:
%install install -p -c -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{?scl:%_root_sysconfdir}%{!?scl:%_sysconfdir}/profile.d/
XDG_DATA_DIRS
следующим образом:
export XDG_DATA_DIRS=%{_datadir}:\$XDG_DATA_DIRS
/usr/bin/
, который позволяет использовать средства коллекции программ без ее подключения. В этом случае надо принять меры, чтобы данные SystemTap оставались доступны, даже если коллекция программ не подключена.
XDG_DATA_DIRS
путь доступа к каталогу с файлами SystemTap из этой коллекции.
XDG_DATA_DIRS
для неподключенной коллекции программ.XDG_DATA_DIRS
, надо создать скрипт /etc/profile.d/имя.sh
. Этот скрипт исполняется всякий раз при запуске интерпретатора команд.
%{?scl_prefix}systemtap.sh
systemtap.sh
изменяет переменную XDG_DATA_DIRS
так, чтобы она указывала на каталог с файлами данных SystemTap:
export XDG_DATA_DIRS=${XDG_DATA_DIRS}:/opt/provider
/имя_коллекции/путь/к/данным_systemtap
SOURCE2: %{?scl_prefix}systemtap.sh
%install
в spec-файле пакета коллекции программ надо изменить так, чтобы данный файл устанавливался в каталог /etc/profile.d/
:
%install install -p -c -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{?scl:%_root_sysconfdir}%{!?scl:%_sysconfdir}/profile.d/
cron
. Раздел 2.7, «Поддержка служб в коллекциях программ» дает представление об организации работы со службами и скриптами для их запуска, поставляемыми с коллекциями программ.
cron
.crontab
, относящийся к коллекции программ, в каталог /etc/cron.d/
с именем коллекции в качестве префикса.
%{?scl_prefix}crontab
crontab
должно соответствовать стандартному формату файла заданий службы cron
. Например:
0 1 * * Sun root /opt/provider
/имя_коллекции
/архитектура
/usr/bin/имя_задания_cron
SOURCE2: %{?scl_prefix}crontab
%install
в spec-файле пакета коллекции программ надо изменить так, чтобы данный файл устанавливался в системный каталог /etc/cron.d/
%install install -p -c -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{?scl:%_root_sysconfdir}%{!?scl:%_sysconfdir}/cron.d/
logrotate
, относящийся к коллекции программ, в системный каталог /etc/logrotate.d/
.
%{?scl_prefix}logrotate
logrotate
должно соответствовать стандартному формату файла заданий logrotate:
/opt/provider
/имя_коллекции
/var/log/имя_приложения
.log { missingok notifempty size 30k yearly create 0600 root root }
SOURCE2: %{?scl_prefix}logrotate
%install
в spec-файле пакета коллекции программ надо изменить так, чтобы данный файл устанавливался в системный каталог /etc/logrotate.d/
%install install -p -c -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{?scl:%_root_sysconfdir}%{!?scl:%_sysconfdir}/logrotate.d/
/opt/provider
/имя_коллекции
/
.
/var/lock/
, а не в каталоге коллекции программ /opt/provider/имя_коллекции
/var/lock/
. Таким образом, файлы блокировок, принадлежащие коллекции программ, не будут игнорироваться системными приложениями или службами. Файлы блокировок не надо переименовывать, их имена должны оставаться теми же, что и у системных версий.
/opt/provider/имя_коллекции
/var/lock/
.
/opt/provider
/имя_коллекции
/
.
/opt/provider
/имя_коллекции
/
, то необходимо должным образом подготовить для них альтернативное местоположение. Для многих программ это можно сделать во время сборки или при инсталляции.
Requires
, используемый в spec-файле пакета с модулями ядра, должен включать версию и редакцию пакета ядра (в формате kernel-версия
-редакция
).
semanage fcontext
и restorecon
.
/opt/provider/software_collection_1/x86_64/root/usr/
имитирует каталог /usr/
обычного пакета, то поставить метки SELinux можно так:
semanage fcontext -a -e /usr /opt/provider/software_collection_1/x86_64/root/usr
restorecon -R -v /opt/provider/software_collection_1/x86_64/root/usr
/opt/provider/software_collection_1/x86_64/root/usr/
, как если бы они располагались в каталоге /usr/
.
semanage fcontext
и restorecon
в коллекции программ их надо добавить в раздел %post
в spec-файле пакета коллекции.
История переиздания | |||
---|---|---|---|
Издание 1-0 | Tue Jun 19 2012 | ||
| |||
Издание 0-0 | Thu Feb 23 2012 | ||
|