User Tools

Site Tools


How to Build a Single Package

Useful e.g. if you want to upgrade a package without reflashing the router, etc.

Follow Building OpenWrt up to the point when you make menuconfig. In here, select the target platform, then tick the package you want to build, and also its dependencies. If the package isn't ticked, the below commands will succeed without actually building the package. If you don't know the dependencies, you can ask the router. Let's assume we want to build nano: run opkg info nano:

Package: nano
Version: 2.2.5-1
Depends: libncurses
Status: install user installed
Architecture: ar71xx
Installed-Time: 1300757537

The Depends: line is what we're interested into. The same information can also be found in the Packages file from

Now issue the following commands:

make tools/install
make toolchain/install

The next step is building the dependencies. Back to our nano example:

make package/ncurses/compile
make package/ncurses/install

And finally, you get to build the package:

make package/nano/compile
make package/nano/install
make package/index

Done! You will find your coveted package in the bin/ directory.

If you get errors about not finding opkg in the staging directory, compile and install package/base-files.

Package Maintenance on Self-Compiled Kernel from Latest Snapshot

The problem we face when using the Latest snapshot, is that opkg quickly becomes incompatible with the snapshot as it moves forward in time. The idea is to use the feeds script with -a flag to prep all possible packages.. then when you want to install packages down the road, you go into make menuconfig, set the packages you want as modules <M>. then do make package/compile to compile them as IPK files to the bin directory. Then you can scp them to the router /tmp for instance, and opkg install them. Sometimes opkg complains about MD5 mismatch with remote, or kernel version mismatch. Use opkg override flags if you must, –force-depends and/or –force-checksum

Kernel Modules

You are here because make package/[kernel-module] will not work. So here's how I figured out to do it. In my case, I have already compiled the kernel once before. So I have the toolchain etc built already.. Not sure how you would go about doing it on a fresh trunk without having to compile everything. You can try the above commands to compile the toolchain.

make menuconfig

In the menuconfig, select your module such that an <M> appears, save and exit.

make package/compile
And then the ipk is in the bin/[arch]/packages directory. You can scp it to the router and use opkg install, for example.

If the above does not work

Instead of make tools/install etc., after make menuconfig just run

worked for me (the above didn't) with barrier breaker branch as of 2015-10-09.

doc/howtobuild/single.package.txt · Last modified: 2015/10/09 23:44 by registrar