User Tools

Site Tools


ru:doc:devel:packages

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

ru:doc:devel:packages [2012/12/07 17:47]
ru:doc:devel:packages [2013/12/12 14:44] (current)
Line 126: Line 126:
 Причина того, что некоторые из блоков define имеют префикс "​Package/",​ а другие просто "​Build"​ заключается в возможности получения нескольких пакетов из одного Makefile. OpenWrt работает в предположении,​ что одному исходному коду соответствует один Makefile пакета,​ но вы можете повторно использовать этот исходный код для нескольких пакетов. Так как вам нужно собрать исходный код один раз, то есть один глобальный набор блоков define "​Build",​ но вы можете добавить несколько блоков define "​Package/",​ по одному для каждого вызова BuildPackage - см. пакет dropbear для примера. Причина того, что некоторые из блоков define имеют префикс "​Package/",​ а другие просто "​Build"​ заключается в возможности получения нескольких пакетов из одного Makefile. OpenWrt работает в предположении,​ что одному исходному коду соответствует один Makefile пакета,​ но вы можете повторно использовать этот исходный код для нескольких пакетов. Так как вам нужно собрать исходный код один раз, то есть один глобальный набор блоков define "​Build",​ но вы можете добавить несколько блоков define "​Package/",​ по одному для каждого вызова BuildPackage - см. пакет dropbear для примера.
  
-=== ЗАМЕЧАНИЯ ===+=== ПРИМЕЧАНИЯ ===
  
 Все переменные в ваших pre/post install/​removal скриптах должны начинаться с двух символов ($$) вместо одного символа ($). Это будет информировать "​make",​ чтобы он не интерпретировал строку как переменную и соответственно не подставлял значение,​ а просто заменял две $$ на один $ -- [[https://​forum.openwrt.org/​viewtopic.php?​pid=85197#​p85197|Подробнее]] Все переменные в ваших pre/post install/​removal скриптах должны начинаться с двух символов ($$) вместо одного символа ($). Это будет информировать "​make",​ чтобы он не интерпретировал строку как переменную и соответственно не подставлял значение,​ а просто заменял две $$ на один $ -- [[https://​forum.openwrt.org/​viewtopic.php?​pid=85197#​p85197|Подробнее]]
Line 134: Line 134:
 Переменная DESCRIPTION устарела,​ используйте Package/​PKG_NAME/​description. Переменная DESCRIPTION устарела,​ используйте Package/​PKG_NAME/​description.
  
-===== Adding configuration options ​===== +===== Добавление конфигурационных опций  ​===== 
-If you would like configure your package installation/​compilation in the menuconfig ​you can do the following+Если вы хотите иметь возможность конфигурировать сборку или установку пакета через ​menuconfig, вы можете сделать следующее
-Add MENU:​=1 ​to your package definition like this:+Добавьте ​MENU:​=1 ​в блок define Package пакета:
  
  define Package/​mjpg-streamer  define Package/​mjpg-streamer
Line 148: Line 148:
  
  
-Create a config ​key in the Makefile:+Создайте блок ​config ​в Makefile:
  
  define Package/​mjpg-streamer/​config  define Package/​mjpg-streamer/​config
Line 155: Line 155:
  
  
-Create a Config.in ​file directory where the Makefile ​is located with the content like this:+Создайте файл ​Config.in ​в том же каталоге,​ где находлится ​Makefile, с аналогичным содержанием:
  
  # Mjpg-streamer configuration  # Mjpg-streamer configuration
Line 211: Line 211:
  endmenu  endmenu
  
-Above you can see examples for various type config parameters.+Выше вы можете видеть примеры конфигурируемых параметров различных типов.
  
-And finally you can check your configuration parameters in your Makefile ​in the following way+Далее вы можете проверить ваши конфигурируемые параметры в Makefile ​следующим образом
-(Note that you can reference to the parameters value with it name prefixed with CONFIG_)+(Заметьте,​ что обращение к параметрам выполняется с префисом ​CONFIG_)
  
  ifeq ($(CONFIG_MJPEG_STREAMER_INPUT_UVC),​y)  ifeq ($(CONFIG_MJPEG_STREAMER_INPUT_UVC),​y)
Line 220: Line 220:
  endif  endif
  
 +===== Создание пакетов для модулей ядра =====
 +[[http://​www.digitalhermit.com/​linux/​Kernel-Build-HOWTO.html|Модуль ядра]] - это дополнительный программный модуль,​ который расширяет возможности ядра Linux. Модуль ядра загружается после самого ядра, (например,​ с помощью insmod).
 +Многие модули ядра включены в дистрибутив исходников Linux; обычно сборка ядра может быть сконфигурирована для каждого программного модуля:​
 +  * скомпилировать его в ядро​​,​ как встроенный,​
 +  * скомпилировать его как загружаемый модуль ядра, или
 +  * игнорировать его.
  
-===== Creating packages for kernel modules ===== 
-A [[http://​www.digitalhermit.com/​linux/​Kernel-Build-HOWTO.html|kernel module]] is an installable program which extends the behavior of the linux kernel. A kernel module gets loaded after the kernel itself, (e.g. using insmod). 
  
-Many kernel programs are included in the linux source distribution;​ typically the kernel build may be configured tofor each program +Чтобы включить один из этих программных модулейкак загружаемый модульвыберите соответствующую опцию ядра в конфигурации OpenWRT (см. [[ru:doc:​howto:​build#​configuration|Build Configuration]]). ​Если ваш любимый модуль ядра не появляется в меню конфигурации OpenWRTнеобходимо добавить строку в однин из файлов в каталоге ​package/​kernel/​modules. ​Вот пример взятый из package/​kernel/​modules/​block.mk:​
-  - compile it into the kernel as a built-in,  +
-  - compile it as a loadable kernel module, or  +
-  - ignore it. +
-See //​**FIX:​Customizingthekerneloptions customizing the kernel options**// for including it in the kernel. +
- +
-To include one of these programs as a loadable module, select the corresponding kernel option in the OpenWrt configuration (see [[doc:​howto:​build#​configuration|Build Configuration]]). ​If your favorite kernel module does not appear in the OpenWrt configuration menusyou must add a stanza to one of the files in the package/​kernel/​modules ​directoryHere is an example extracted from package/​kernel/​modules/​block.mk:​+
 <​code>​ <​code>​
 define KernelPackage/​loop define KernelPackage/​loop
Line 249: Line 247:
 </​code>​ </​code>​
  
- +Вы также можете добавить модули ядра, которые ​//не// являются частью дистрибутива исходников LinuxВ этом случае модуль ядра появляется в каталоге ​package/ ​так же как любой другой пакетВ package/​Makefile ​используются блоки ​<​code>​KernelPackage/​xxx</​code> ​вместо ​<​code>​Package/​xxx</​code>​. ​Например, package/​madwifi/​Makefile:​
-You can also add kernel modules which are //not// part of the linux source distributionIn this case, a kernel module appears in the package/ ​directory, just as any other package doesThe package/​Makefile ​uses <​code>​KernelPackage/​xxx</​code>​ +
- ​definitions in place of <​code>​Package/​xxx</​code>​ +
-For examplehere is package/​madwifi/​Makefile:​+
 <​code>​ <​code>​
 # #
Line 394: Line 389:
 </​code>​ </​code>​
  
-=== NOTES ===+=== ПРИМЕЧАНИЯ ​===
  
-INSTALL_DIR,​ INSTALL_BIN,​ INSTALL_DATA ​are used for creating a directorycopying an executable, or a data file. +x is set on the target file for INSTALL_BIN, ​independent of it's mode on the host.+Параметры ​INSTALL_DIR,​ INSTALL_BIN,​ INSTALL_DATA ​используются для создания каталоговкопирования исполняемых и обычных файловАтрибут ​+x выставляется для файла при использовании ​INSTALL_BIN, ​вне зависимости от атрибутов файла в сборочной системе.
  
-From the big document:+Из большого документа:
  
 Package/<​name>/​install: ​ Package/<​name>/​install: ​
  
-A set of commands to copy files out of the compiled source and into the ipkg which is represented by the $(1) directoryNote that there are currently ​defined install macros: +Набор команд для копирования файлов из сборочного каталога в ipkg, который представлен в виде каталога ​$(1). Обратите внимание,​ что в настоящее время существует ​макроса для установки:
 <​code>​ <​code>​
 INSTALL_DIR ​ INSTALL_DIR ​
ru/doc/devel/packages.1354898828.txt.bz2 · Last modified: 2012/12/07 17:47 (external edit)