# OPKG ## Package management <!-- Put the link to this slide here so people can follow --> slide: https://hackmd.io/@Shihyu/rkBs2jIUH --- Debian Ubuntu **Dpkg**: apt-get Red hat **RPM**: rpm Embedded systems: ipkg, opkg --- OpenWrt is an open source project for embedded operating system based on Linux 3500 Packages in opkg CPE routers (客製化路由器) --- https://openwrt.org/docs/guide-user/additional-software/opkg --- ## Repositories - /etc/opkg/distfeeds.conf - /etc/opkg/customfeeds.conf - Self host - Local file --- ## Image Builder https://openwrt.org/docs/guide-user/additional-software/imagebuilder https://gitlab.program.com.tw/E_currency_detector2/mp1807r-imagebuilder-docker --- ## Creating packages - package/Makefile - package/patches - package/files https://openwrt.org/docs/guide-developer/packages --- ### package/bridge/Makefile: ```makefile include $(TOPDIR)/rules.mk PKG_NAME:=bridge PKG_VERSION:=1.0.6 PKG_RELEASE:=1 PKG_BUILD_DIR:=$(BUILD_DIR)/bridge-utils-$(PKG_VERSION) PKG_SOURCE:=bridge-utils-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=@SF/bridge PKG_HASH:=9b7dc52656f5cbec846a7ba3299f73bd PKG_CAT:=zcat include $(INCLUDE_DIR)/package.mk define Package/bridge SECTION:=base CATEGORY:=Network TITLE:=Ethernet bridging configuration utility #DESCRIPTION:=This variable is obsolete. use the Package/name/description define instead! URL:=http://bridge.sourceforge.net/ endef define Package/bridge/description Ethernet bridging configuration utility Manage ethernet bridging; a way to connect networks together to form a larger network. endef define Build/Configure $(call Build/Configure/Default,--with-linux-headers=$(LINUX_DIR)) endef define Package/bridge/install $(INSTALL_DIR) $(1)/usr/sbin $(INSTALL_BIN) $(PKG_BUILD_DIR)/brctl/brctl $(1)/usr/sbin/ endef $(eval $(call BuildPackage,bridge)) ``` --- [Openwrt python packages github](https://github.com/openwrt/packages/tree/master/lang/python) --- ```makefile # # Copyright (C) 2007-2017 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # include $(TOPDIR)/rules.mk PKG_NAME:=python-chardet PKG_VERSION:=3.0.4 PKG_RELEASE:=2 PKG_LICENSE:=LGPL-2.1 PKG_SOURCE:=chardet-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://pypi.python.org/packages/fc/bb/a5768c230f9ddb03acc9ef3f0d4a3cf93462473795d18e9535498c8f929d/ PKG_HASH:=84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae PKG_BUILD_DIR:=$(BUILD_DIR)/$(BUILD_VARIANT)-chardet-$(PKG_VERSION) include $(INCLUDE_DIR)/package.mk include ../python-package.mk include ../python3-package.mk PKG_UNPACK:=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE) define Package/python-chardet/Default SUBMENU:=Python SECTION:=lang CATEGORY:=Languages MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com> URL:=https://github.com/chardet/chardet endef define Package/python-chardet $(call Package/python-chardet/Default) TITLE:=Universal encoding detector for Python 2 DEPENDS:=+PACKAGE_python-chardet:python VARIANT:=python endef define Package/python3-chardet $(call Package/python-chardet/Default) TITLE:=Universal encoding detector for Python3 DEPENDS:=+PACKAGE_python3-chardet:python3-light VARIANT:=python3 endef define Package/python-chardet/description Universal encoding detector for Python 2 and 3 endef define Package/python3-chardet/description $(call Package/python-chardet/description) . (Variant for Python3) endef define Py3Package/python3-chardet/install $(INSTALL_DIR) $(1)/usr/bin $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/ for bin in $(1)/usr/bin/*; do \ mv $$$$bin $$$${bin}3 ; \ done endef $(eval $(call PyPackage,python-chardet)) $(eval $(call BuildPackage,python-chardet)) $(eval $(call BuildPackage,python-chardet-src)) $(eval $(call Py3Package,python3-chardet)) $(eval $(call BuildPackage,python3-chardet)) $(eval $(call BuildPackage,python3-chardet-src)) ``` --- ### In `install` fix header! ```makefile define Py3Package/python3-chardet/install $(INSTALL_DIR) $(1)/usr/bin $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/ # fix python exec path in scripts $(SED) 's/#!.*/#!\/usr\/bin\/python3/g' $(1)/usr/bin/* ```
{"metaMigratedAt":"2023-06-14T23:59:14.490Z","metaMigratedFrom":"YAML","title":"OPKG (Open PacKaGe management)","breaks":true,"description":"A lightweight package management system based upon ipkg. It is written in C and resembles Advanced Packaging Tool (APT)/dpkg in operation.","contributors":"[{\"id\":\"f53b7b35-92dd-4684-a436-fe8a9a9f8a48\",\"add\":6814,\"del\":2302}]"}
    281 views