Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Title of the proposal
- [NetBSD] Enhancements to the pkgin binary package manager
- Short description
- This project aims to improve pkgin, a binary package manager relying on pkgsrc, the NetBSD package management framework.
- Focus will be put on overall performance enhancements and code portability.
- Content - Actual proposal
- Name : Elias BOUTALEB
- Handle : Jambato@irc.freenode.net
- Location/Timezone : Paris, France (GMT+2)
- Proposal Title : [NetBSD] Enhancements to the pkgin binary package manager
- Motivation:
- Binary packages and package manager software are widespread in the Linux ecosystem-distributions. BSD-like systems can also handle binaries via pkg_add/pkg_delete, but managing upgrades, dependencies and conflicts with those tools can be tedious.
- pkgin has been created in order to handle binaries in a similar manner to package management utilities such as yum and apt on Linux.
- Though the installation, upgrade and removal of packages is correctly supported, there is still room for improvement.
- Benefits to the Community:
- pkgin inherited the emphasis on portability from NetBSD and pkgsrc.
- Besides the visibility gained by the promotion of the project within the GSoC setting, other systems and entities can make the most of pkgsrc/pkgin (currently used by Joyent [1], is in the base system of DragonflyBSD and Minix), allowing the project to go towards an ideal of a universal package manager (pkgin) bundled with a universal package management framework (pkgsrc).
- Tasks/Deliverables:
- According to the maintainer[2], those goals are organized in such a way the mentee can immerse himself progressively within the project/code.
- 1) Multiple repositories support
- 2) Speeding up the calculation of the number of installed packages in the database
- 3) Speeding up the matching of local packages agaisnt remote packages
- 4) Implement an automated-test system
- 5) Better conflict handling
- 6) Better logging
- 7) Make pkgin independent from pkg_install binaries
- Optional Tasks
- I) Factor all pkgin's package manipulation functions into its own library - libpkgin
- II) Make pkgin able to interface with any database system
- Schedule/Milestones/Implementation Details:
- Disclaimer : The estimates given about the learning and coding time should not be taken at face value. At the moment, I cannot offer an implementation solution for all the tasks enumerated in the project wiki page. However, I can assure that by the time the SoC begins, solutions shall be found for all tasks.
- - I'm currently preparing for my terms in 2 weeks. I should begin properly studying pkgsrc and pkgin around the 20th of May.
- (May 20th - June 16th)
- - Prior to the coding tasks, in order to fully contribute to pkgin and understand it well, I'll have to understand how pkgsrc works: to test it and use it on 2 environments : a NetBSD virtual machine and a native Linux environment.
- An understanding of the pkg_summary[3] file format will also be required, as pkgin's binaries and dependencies management facilities are based on it.
- Only then, I should begin reading pkgin's source code and understanding its workings.
- Time will be allocated to find implementation solutions to the tasks.
- (June 17th - July 1st)
- 1) Support for multiple repositories : make pkgin memorise repositories URLs, then synchronize the different database entries in accordance with the repository. Ensure there aren't any conflicts
- (July 2nd - July 9th)
- 2) Speeding up the calculation of the number of installed packages in the database : pure algorithmic matter. No solution found yet.
- (July 10th - July 17th)
- 3) Speeding up the matching of local packages agaisnt remote packages : pure algorithmic matter. No solution found yet.
- (July 18th - July 25th)
- 4) Implement an automated-test system : it is just plain unit test writing. If there is a lack of time, a focus shall be put on testing critical operations (install/remove/upgrade)
- 5) Better conflict handling
- for example, let's take a line from the MySQL makefile[4] :
- CONFLICTS= {mysql-server-[0-9]*,mysql3-server-[0-9]*}
- The globbing of the version number make the currently installed package conflict with itself. The fault lies with the regex. I don't think I can offer a solution for that task.
- (July 26th - July 31st)
- 6) Better logging : plain formatting.
- (August 1st - August 15th)
- 7) Make pkgin independent from pkg_install binaries : pkgin currently uses pkg_add/delete to manage binaries. However, pkg_add/delete doesn't handle dependecies well (that's why pkgin is here for).
- It would probably be better to use directly a pkg_install library instead of directly using pkg_install/delete, or abstract their functionality.
- At that stage, there should be some time left to do the optional tasks:
- I) should be trivial, it's about gathering the package manipulation functions into a header. About II)......I don't know.
- The rest of the time should be spent hunting bugs, reviewing and testing code and writing documentation.
- About me:
- I am a sophomore college student, currently studying Computer Science at the Pierre and Marie Curie university in Paris, France.
- I manifest a great interest in computer security, programming and open source software, though I mostly use them rather than participate to their development.
- I began programming 2 years ago, but it wasn't very intensive. I mostly wrote small programs (less than 100 lines of code), showed some distant interest in Project Euler and the ACM ICPC contests.
- I have some experience with the C programming language, though I don't use it for a long time enough to consider myself 'fluent' with it. I can also use git and shell scripting.
- [1] http://joyent.com/
- [2] Emile 'iMil' Heitor imil@NetBSD.org
- [3] http://netbsd.gw.com/cgi-bin/man-cgi?pkg_summary+5+NetBSD-current
- [4] http://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/databases/mysql55-server/Makefile
- Additional info :
- [] http://wiki.netbsd.org/projects/project/pkgin_improve/
- [] http://pkgin.net/
- [] https://github.com/NetBSDfr/pkgin
- [] http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/pkgtools/pkgin/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement