Ipkg
From Openmoko
(ipkg breaks kernels) |
(+short description) |
||
(30 intermediate revisions by 17 users not shown) | |||
Line 1: | Line 1: | ||
− | + | {{Todo|Integrate useful content into [[Opkg]] as a usage section.}} | |
− | |||
− | |||
− | |||
− | |||
− | + | [http://handhelds.org/moin/moin.cgi/Ipkg Ipkg] is a lightweight [[package management]] system. | |
== History == | == History == | ||
− | Ipkg re-implements for embedded systems the Debian tools dpkg, apt, and apt-get. For example, it uses much less disk space for the package metadata | + | Ipkg re-implements for embedded systems the functionality of Debian tools dpkg, apt, and apt-get. For example, it uses much less disk space for the package metadata. |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
== Installing Packages to the Memory Card == | == Installing Packages to the Memory Card == | ||
Line 33: | Line 20: | ||
On the NEO, run the following: | On the NEO, run the following: | ||
''' This will erase everything on your memory card ''' | ''' This will erase everything on your memory card ''' | ||
+ | <pre> | ||
+ | umount /media/card | ||
+ | fdisk /dev/mmcblk0 | ||
+ | t | ||
+ | 83 | ||
+ | w | ||
+ | mke2fs /dev/mmcblk0 | ||
+ | mount /media/card | ||
+ | </pre> | ||
− | + | === Entry in opkg.conf File === | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | In your /etc/opkg.conf file, after "dest root /" add a new line: | |
+ | <pre>dest card /media/card/opkg</pre> | ||
− | + | Create /media/card/opkg folder | |
− | + | <pre>mkdir /media/card/opkg</pre> | |
− | + | ||
− | Create /media/card/ | + | |
− | + | ||
=== Installing Packages on the Card === | === Installing Packages on the Card === | ||
− | When installing a package, use the -d option to have | + | When installing a package, use the -d option to have the package installed into the "card" destination: |
− | + | <pre>opkg install -d card python-core</pre> | |
− | This will put all files (binaries and libraries) on the card, under the folder specified in the ipkg.conf file | + | This will put all files (binaries and libraries) on the card, under the folder specified in the ipkg.conf file. |
− | + | === Linking/Using Packages on the Card === | |
− | + | Your system will not be able to see the packages that you just added to your card. There are two ways to remedy this. | |
− | + | The better solution is to use ipkg-link from the 'ipkg-utils' package, but 'better' is always subjective - YMMV. | |
− | + | ==== 1: Ipkg Utils and ipkg-link ==== | |
− | + | ||
− | + | Ipkg-utils is a package that provides some additional functionality for ipkg. A very useful tool is ipkg-link, which creates symbolic links for packages installed in non-root locations (such as a card) back to the root file system. | |
− | + | To make this working with Opkg, you've simply to do: | |
+ | <pre>ln -s /etc/opkg.conf /etc/ipkg.conf | ||
+ | ln -s /media/card/opkg/usr/lib/opkg /media/card/opkg/usr/lib/ipkg</pre> | ||
− | + | To get ipkg-utils, run: | |
+ | <pre>opkg install ipkg-utils</pre> | ||
− | + | To create symbolic links to your root system for a specific package, run: ipkg-link add <package>. For example, for python-core use: | |
+ | <pre>ipkg-link add python-core</pre> | ||
− | + | To create symbolic links for all packages installed in a location, run: | |
+ | <pre>ipkg-link mount /media/card/ipkg</pre> | ||
− | + | The ''ipkg-link remove'' and ''ipkg-link unmount'' commands remove the symlinks for a package or all packages. | |
− | + | ||
− | + | There is a list of the options for the ipkg command under "How do I use it?" [http://handhelds.org/moin/moin.cgi/Ipkg here.] | |
− | + | ||
− | + | ==== 2: Adding the card PATH and LIB directories to your path ==== | |
− | + | Another way to add bin and lib files to your system is by modifying your environment variables in /etc/profile as follows: | |
− | + | On the line that defines the PATH variable, add: | |
+ | <pre>PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin:/media/card/ipkg/usr/bin</pre> | ||
+ | |||
+ | Then, before the 'export' line add: | ||
+ | <pre>LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/media/card/ipkg/usr/lib</pre> | ||
+ | |||
+ | Then modify the 'export' line and add LD_LIBRARY_PATH to the end. | ||
+ | This will let the system see the binary and library files, but it will not see other resources, such as images, configuration files, desktop files, etc. For this reason, ipkg-link is preferred. | ||
− | [[Category: | + | [[Category:Package management]] |
− | + |
Latest revision as of 08:49, 25 July 2009
TODO: Integrate useful content into Opkg as a usage section. (See: To-Do List) |
Ipkg is a lightweight package management system.
Contents |
[edit] History
Ipkg re-implements for embedded systems the functionality of Debian tools dpkg, apt, and apt-get. For example, it uses much less disk space for the package metadata.
[edit] Installing Packages to the Memory Card
You can use ipkg to install packages to a folder on the memory card. To do this you'll need the following:
[edit] Ext2 Formatted Memory Card
By default, the memory card comes formated with VFAT (Windows Format). You need to re-format the card with EXT2. You will not be able to view the files on the card using a windows system after this.
To check if your card is using vfat or ext, run the 'mount' command, and look for: /dev/mmcblk0p1 on /media/card.
On the NEO, run the following: This will erase everything on your memory card
umount /media/card fdisk /dev/mmcblk0 t 83 w mke2fs /dev/mmcblk0 mount /media/card
[edit] Entry in opkg.conf File
In your /etc/opkg.conf file, after "dest root /" add a new line:
dest card /media/card/opkg
Create /media/card/opkg folder
mkdir /media/card/opkg
[edit] Installing Packages on the Card
When installing a package, use the -d option to have the package installed into the "card" destination:
opkg install -d card python-core
This will put all files (binaries and libraries) on the card, under the folder specified in the ipkg.conf file.
[edit] Linking/Using Packages on the Card
Your system will not be able to see the packages that you just added to your card. There are two ways to remedy this. The better solution is to use ipkg-link from the 'ipkg-utils' package, but 'better' is always subjective - YMMV.
[edit] 1: Ipkg Utils and ipkg-link
Ipkg-utils is a package that provides some additional functionality for ipkg. A very useful tool is ipkg-link, which creates symbolic links for packages installed in non-root locations (such as a card) back to the root file system.
To make this working with Opkg, you've simply to do:
ln -s /etc/opkg.conf /etc/ipkg.conf ln -s /media/card/opkg/usr/lib/opkg /media/card/opkg/usr/lib/ipkg
To get ipkg-utils, run:
opkg install ipkg-utils
To create symbolic links to your root system for a specific package, run: ipkg-link add <package>. For example, for python-core use:
ipkg-link add python-core
To create symbolic links for all packages installed in a location, run:
ipkg-link mount /media/card/ipkg
The ipkg-link remove and ipkg-link unmount commands remove the symlinks for a package or all packages.
There is a list of the options for the ipkg command under "How do I use it?" here.
[edit] 2: Adding the card PATH and LIB directories to your path
Another way to add bin and lib files to your system is by modifying your environment variables in /etc/profile as follows:
On the line that defines the PATH variable, add:
PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin:/media/card/ipkg/usr/bin
Then, before the 'export' line add:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/media/card/ipkg/usr/lib
Then modify the 'export' line and add LD_LIBRARY_PATH to the end.
This will let the system see the binary and library files, but it will not see other resources, such as images, configuration files, desktop files, etc. For this reason, ipkg-link is preferred.