From DD-WRT Wiki

Jump to: navigation, search

[edit] Preparing /jffs for /opt

First step is to prepare /opt mount point for Optware and create ipkg.conf file for packages download

~ # mkdir /jffs/opt
~ # mkdir /jffs/tmp
~ # mkdir /jffs/tmp/ipkg
~ # mount -o bind /jffs/opt /opt 
~ # mkdir /opt/etc
~ # vi /opt/etc/ipkg.conf

Edit and insert the following content

src optware http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable
dest root /jffs

Now we will point /bin/ipkg script to this config with setting environment variable

~ # export IPKG_CONF_DIR=/opt/etc

This is enough to retrieve list of available packages with

~ # ipkg update 
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/Packages ...
Connecting to ipkg.nslu2-linux.org[]:80 
Packages             100% |**********************************************|   259 KB 00:00:00 ETA
Updated list of available packages in //jffs/usr/lib/ipkg/lists/optware

If nothing is reported after /bin/ipkg update then probably /etc/resolv.conf does not contain proper name server address like:

search local.lan

Manual installing package ipkg-opt will automatically install also uclibc-opt package.

~ # /bin/ipkg -d root install ipkg-opt

For some reason, uclibc-opt was installed, but it kept saying it was a dependent package. The following worked for me:

~ # /bin/ipkg -force-depends install ipkg-opt
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/uclibc-opt_0.9.28-12_mipsel.ipk ...
Connecting to ipkg.nslu2-linux.org[]:80
uclibc-opt_0.9.28-12 100% |******************************************|   832 KB 00:00:00 ETA
Unpacking uclibc-opt...Done.
Configuring uclibc-opt...Updating /opt/etc/ld.so.cache

Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/ipkg-opt_0.99.163-9_
mipsel.ipk ...
Connecting to ipkg.nslu2-linux.org[]:80
ipkg-opt_0.99.163-9_ 100% |******************************************| 75896    00:00:00 ETA
Unpacking ipkg-opt...Done.
Configuring ipkg-opt...Configuration file `/opt/etc/ipkg.conf'
 ==> File on system created by you or by a script.
 ==> File also in package provided by package maintainer.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions (if diff is installed)
 The default action is to keep your current version.
*** ipkg.conf (Y/I/N/O/D) [default=N] ? y

Note that we answered 'y' to install maintainer /opt/etc/ipkg.conf with the following contents:

#Uncomment the following line for native packages feed (if any)
#src/gz native http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/native/stable
src/gz optware http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable
dest /opt/ /

If anything goes wrong when installing ipkg-opt then I recommend erasing /jffs/jffs and /jffs/usr directories with

rm -rf /jffs/jffs
rm -rf /jffs/usr

and repeat /bin/ipkg update and /bin/ipkg install ipkg-opt

Installing ipkg-opt package will maintain all packages installed in /opt directory along with its /opt/lib/ipkg directory where /opt/bin/ipkg maintains its status files. There is also /opt/bin/ipkg-opt to save us from confusion. To update list of available packages issue

~ # /opt/bin/ipkg-opt update
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/Packages.gz
Inflating http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/Packages.gz
Updated list of available packages in /opt/lib/ipkg/lists/optware
Successfully terminated.

List of available packages is provided with

~ # /opt/bin/ipkg-opt list

List of installed packages

~ # /opt/bin/ipkg-opt list_installed
Successfully terminated.

will not show ipkg-opt and uclibc-opt as status file is now located in /opt/lib/ipkg/status and not /jffs/jffs/usr/lib/ipkg/status . To correct this issue we will reinstall the package itself with

~ # /opt/bin/ipkg-opt install ipkg-opt
Installing ipkg-opt (0.99.163-9) to /opt/...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/ipkg-opt_0.99.163-9_mipsel.ipk
package uclibc-opt suggests installing ipkg-opt
Installing uclibc-opt (0.9.28-12) to /opt/...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/uclibc-opt_0.9.28-12_mipsel.ipk
Configuring ipkg-opt
Configuring uclibc-opt
Updating /opt/etc/ld.so.cache
Successfully terminated.

With clean Optware install two packages should be listed

~ # /opt/bin/ipkg list_installed
ipkg-opt - 0.99.163-9 - The Itsy Package Manager
uclibc-opt - 0.9.28-12 - micro C library for embedded Linux systems
Successfully terminated.

From now on no files outside /opt tree will be required for maintaining Optware packages. I even recommend erasing spurious files with

# rm -rf /jffs/jffs /jffs/usr

Exporting IPKG_CONF_DIR is not neeeded any more.