OpenWrt Package management

OpenWrt uses a package management system for installing/removing/updating packages. The application used is 'opkg' and the package files have a '.ipk' extension.

OpenWrt Package feeds

The opkg application has a configuration file on the target at /etc/opkg.conf which is used to point to and describe various package feeds. Often it is useful to add a package feed that points to your development host's OpenWrt bin directory with an HTTP server behind it.

For example, if your OpenWrt development host is at and on the same IP network as your target board you can install something like the 'lightthpd' HTTP server with the following at the end of its config file in /etc/lighttpd/lighttpd.conf:

alias.url += (
  "/openwrt" => "/home/openwrt/gateworks/trunk/bin",

On your target board you could add a set of custom feeds as such:

mkdir /etc/opkg
cat << EOT >> /etc/opkg/customfeeds.conf
# add your custom package feeds here                                            
# src/gz example_feed_name                 
src/gz base             
src/gz packages     
src/gz gateworks    
src/gz kernel          
src/gz luci              
src/gz management  
src/gz routing        
src/gz targets        
src/gz telephony    

Now on your target board you could do things like:

opkg update
opkg install <mypackage>

For further reference:


A common error to see is the following when doing opkg update. The solution is to modify the opkg.conf file to point to the IP of your OpenWrt development host PC as described above.

root@OpenWrt:~# opkg update
wget: server returned error: HTTP/1.1 404 Not Found
Collected errors:
 * opkg_download: Failed to download, wget returned 1.

Building OpenWrt packages

For custom software applications you can create OpenWrt package feeds (which are directories of packages) by adding them to the feed config file in the OpenWrt 'trunk' directory feeds.conf.default. The following would add a local package feed pointing to a directory on the same development host:

src-link local /home/openwrt/mypackages

Within the /home/openwrt/mypackages directory, you can have directories of packages, each having a Makefile describing the package (see Now you can use the following to 'install' a package into the OpenWrt build system:

./scripts/feeds update local  ;# update the package feed named 'local' from its source
./scripts/feeds install <mypackage>  ;# install 'mypackage' into OpenWrt package directory (/packages/feeds/local)

Once your package has been 'installed' in the OpenWrt package directory (packages) you can use 'make menuconfig' to enable/disable the package to be built and/or installed on the root filesystem

For more reference:

Compiling IPK Files

See link here

Last modified 13 months ago Last modified on 06/10/16 16:24:52