Opkg

From Openmoko

Revision as of 17:16, 23 January 2009 by Bram (Talk | contribs)

Jump to: navigation, search


Contents

About Opkg

Opkg is a lightweight package management system based on Ipkg.


Mid December, 2008, the project moved to Google code: http://code.google.com/p/opkg/

Prior to that date, a mailing list for discussion was available here: http://lists.openmoko.org/mailman/listinfo/opkg-devel Source code was available in the subversion repository: http://svn.openmoko.org/trunk/src/target/opkg/. The repository could also be viewed online.

You can learn how to create own Opkg packages on the Ipkg site.

Packages should install .desktops at the very end of the installation process. This ensures that the icons referenced in the .desktop file are available. Reference

New Features

This is a list of features that have been completed. Mostly this is a list of changes from Ipkg.

  • Use libcurl to download files
  • Send download progress updates to libopkg clients
  • Re-organize and clean up source code into sub directories
  • Verify package lists with gpg detached signature
  • Mark packages that were installed to satisfy dependencies (auto installed)
  • Additional command line option to remove "auto installed" packages
  • Support for faceted classification (similar to debtags). A "Tags" line has been added to the package information and opkg makes this available to clients, but does not process it in anyway. The command line client also does not use this features yet.


Ipkg Patches

The following ipkg patches have been applied:

  • "2-pkg-vec--Optimize-gross-inefficiency.patch" from OpenEmbedded
  • "1-pkg-parse--Optimize-inefficient-parsing.patch" from OpenEmbedded

Planned features

These are features either under development or planned for inclusion before the next release.

  • improve/cleanup libopkg api
  • locking system to prevent two simultaneous operations on the file system

Bug fixes

  • Ipkg bug - Overflowing / crashes machine - [1]
  • ipkg tries to access ro SD card - [2]

Lower priority features

  • Simple user interactions during postinstall
  • Improve command line options
  • Restructure source code and make it more robust
  • Store packages in database
  • Check available space in /tmp prior to downloading
  • Check available space in dest prior to unpacking

Possible Issues

This is a list of possible issues or known bugs.

  • http proxy works but authentication not tested yet (--cberger tested version 0.1.4, does not recognize proxy_username and proxy_password for authentication)
  • autoremove feature only inspects "depends" and not "pre-depends"

Error Codes

It looks like, in some cases, Opkg will return an error code if something goes wrong. Here's a list that I pulled from the error.h file:

  • -1: Unknown Error
  • 0: No Error (Success)

Configuration Errors:

  • 1: Could not set default destination
  • 2: Error parsing config file
  • 3: Could not create temporary directory
  • 4: Could not obtain administrative lock
    • This could be cause by assassin not releasing the lock on the package management. It can be released by killing its manager:
killall packagekitd

Package Errors

  • 5: Unsatisfied Dependencies
  • 6: Is Essential
  • 7: Has Dependents
  • 8: Has No Candidate
  • 9: PackageHas No Available Architecture

Install Errors

  • 10: Not Trusted
  • 11: Download Error
  • 12: Conflicts
  • 13: Already Installed
  • 14: Dependencies
  • 15: No Downgrade
  • 16: Out Of Space
  • 17: Bad Signature
  • 18: MD5 Error
  • 19: Internal Error
NOTE: I had a problem where I was trying to manually install a package that had dependencies. The dependencies had a bad signature (actually, my signature files were bad). Instead of returning 17 because of the bad signature, it returned 14 because of a dependency problem. So if you get a 14, try installing that package by itself and see what you get. --Jtickle 18:16, 23 July 2008 (EST)


FAQ

Q. What version of Ipkg is Opkg based on?

A. It is based on the ipkg-0.99.163 tarball

Q. Why "fork" and rename Ipkg?

A. Ipkg is no longer actively maintained upstream and there are potential trademark issues with using the Ipkg name

Q. Does opkg have a feature similar to APT pinning?

A. Yes you can define priorities on the architecture field (the second field in a feed definition) in /etc/opkg/arch.conf

Q. Does opkg have an auto completion system ?

A. Yes, it's a contribution script available at the upme blog


Personal tools


About Opkg

Opkg is a lightweight package management system based on Ipkg.


Mid December, 2008, the project moved to Google code: http://code.google.com/p/opkg/

Prior to that date, a mailing list for discussion was available here: http://lists.openmoko.org/mailman/listinfo/opkg-devel Source code was available in the subversion repository: http://svn.openmoko.org/trunk/src/target/opkg/. The repository could also be viewed online.

You can learn how to create own Opkg packages on the Ipkg site.

Packages should install .desktops at the very end of the installation process. This ensures that the icons referenced in the .desktop file are available. Reference

New Features

This is a list of features that have been completed. Mostly this is a list of changes from Ipkg.

  • Use libcurl to download files
  • Send download progress updates to libopkg clients
  • Re-organize and clean up source code into sub directories
  • Verify package lists with gpg detached signature
  • Mark packages that were installed to satisfy dependencies (auto installed)
  • Additional command line option to remove "auto installed" packages
  • Support for faceted classification (similar to debtags). A "Tags" line has been added to the package information and opkg makes this available to clients, but does not process it in anyway. The command line client also does not use this features yet.


Ipkg Patches

The following ipkg patches have been applied:

  • "2-pkg-vec--Optimize-gross-inefficiency.patch" from OpenEmbedded
  • "1-pkg-parse--Optimize-inefficient-parsing.patch" from OpenEmbedded

Planned features

These are features either under development or planned for inclusion before the next release.

  • improve/cleanup libopkg api
  • locking system to prevent two simultaneous operations on the file system

Bug fixes

  • Ipkg bug - Overflowing / crashes machine - [1]
  • ipkg tries to access ro SD card - [2]

Lower priority features

  • Simple user interactions during postinstall
  • Improve command line options
  • Restructure source code and make it more robust
  • Store packages in database
  • Check available space in /tmp prior to downloading
  • Check available space in dest prior to unpacking

Possible Issues

This is a list of possible issues or known bugs.

  • http proxy works but authentication not tested yet (--cberger tested version 0.1.4, does not recognize proxy_username and proxy_password for authentication)
  • autoremove feature only inspects "depends" and not "pre-depends"

Error Codes

It looks like, in some cases, Opkg will return an error code if something goes wrong. Here's a list that I pulled from the error.h file:

  • -1: Unknown Error
  • 0: No Error (Success)

Configuration Errors:

  • 1: Could not set default destination
  • 2: Error parsing config file
  • 3: Could not create temporary directory
  • 4: Could not obtain administrative lock
    • This could be cause by assassin not releasing the lock on the package management. It can be released by killing its manager:
killall packagekitd

Package Errors

  • 5: Unsatisfied Dependencies
  • 6: Is Essential
  • 7: Has Dependents
  • 8: Has No Candidate
  • 9: PackageHas No Available Architecture

Install Errors

  • 10: Not Trusted
  • 11: Download Error
  • 12: Conflicts
  • 13: Already Installed
  • 14: Dependencies
  • 15: No Downgrade
  • 16: Out Of Space
  • 17: Bad Signature
  • 18: MD5 Error
  • 19: Internal Error
NOTE: I had a problem where I was trying to manually install a package that had dependencies. The dependencies had a bad signature (actually, my signature files were bad). Instead of returning 17 because of the bad signature, it returned 14 because of a dependency problem. So if you get a 14, try installing that package by itself and see what you get. --Jtickle 18:16, 23 July 2008 (EST)


FAQ

Q. What version of Ipkg is Opkg based on?

A. It is based on the ipkg-0.99.163 tarball

Q. Why "fork" and rename Ipkg?

A. Ipkg is no longer actively maintained upstream and there are potential trademark issues with using the Ipkg name

Q. Does opkg have a feature similar to APT pinning?

A. Yes you can define priorities on the architecture field (the second field in a feed definition) in /etc/opkg/arch.conf

Q. Does opkg have an auto completion system ?

A. Yes, it's a contribution script available at the upme blog