Linux Package Management (Distribute Your App)
(Difference between revisions)
(added note about doing this on other OS's) |
(added video and diagram to directions; added to pre-req's from my experience in having to hack through ./configure and make) |
||
Line 8: | Line 8: | ||
|'''Prerequisite Knowledge''' || Students should be familiar with: | |'''Prerequisite Knowledge''' || Students should be familiar with: | ||
* Beginner Shell knowledge (linux command line) | * Beginner Shell knowledge (linux command line) | ||
− | |||
* Getting around the linux file system, sudo'ing, editing files, etc. | * Getting around the linux file system, sudo'ing, editing files, etc. | ||
* Making and compiling Linux software code | * Making and compiling Linux software code | ||
+ | ** For example, the commands configure, make, and make install | ||
+ | ** If students have not compiled in the past, it is common to not have all of the required libraries and modules already installed for the compilation process to succeed. This setup takes time to troubleshoot and setup, and it could be different on each system if students are not using identical operating systems. | ||
|- | |- | ||
|'''Learning Objectives''' || Upon completion, students should be able to: | |'''Learning Objectives''' || Upon completion, students should be able to: | ||
Line 44: | Line 45: | ||
=== Directions: === | === Directions: === | ||
− | # Learn about yum and | + | # Learn about dnf/yum and rpm files. Have students find it themselves. https://en.m.wikipedia.org/wiki/DNF_(software), |
+ | # Learn about creating rpm's and rpmbuild command | ||
+ | #* [https://www.youtube.com/watch?v=4J_Iksu1fgo&feature=youtu.be RPM Build Example Video] - Watch, at least, the first 8 mins of this video from a recording of a local Linux User Group meeting | ||
+ | #* [ftp://ftp.eso.org/midaspub/RPMS-tutorial/GURULABS-RPM-GUIDE-v1.0.PDF RPM process Diagram from video] - Find the diagram that the video references on the page labeled 12-17 | ||
+ | #** Document authored by Guru Labs, L.C. released under the CC-BY-NC-ND 2.0 license | ||
# Use an existing, easy, mature, yet small project like wget or top (or something that doesn't come standard on most systems) to have students compile and make and package. | # Use an existing, easy, mature, yet small project like wget or top (or something that doesn't come standard on most systems) to have students compile and make and package. | ||
#* See example of [http://www.ibm.com/developerworks/library/l-rpm1/ packaging the `wget` command] | #* See example of [http://www.ibm.com/developerworks/library/l-rpm1/ packaging the `wget` command] |
Revision as of 19:44, 12 February 2016
Title | Linux package management (distribute desktop apps) (build your own linux package) |
Overview | Students will learn about rpm and dnf/yum package tooling and then actually create their own package from code, upload it to a public package repository and finally have a classmate install their compiled package. This can be advertised to students as being able to distribute their own linux-based application to the world. |
Prerequisite Knowledge | Students should be familiar with:
|
Learning Objectives | Upon completion, students should be able to:
|
Background:
- Is there background reading material?
- Read about the various software installation methods on Linux: http://www.howtogeek.com/191245/beginner-geek-how-to-install-software-on-linux/
- http://www.control-escape.com/linux/lx-swinstall.html
- https://help.ubuntu.com/community/SoftwarePackagingFormats
- https://wiki.archlinux.org/index.php/Arch_User_Repository, https://wiki.archlinux.org/index.php/Arch_packaging_standards
- https://fedoraproject.org/wiki/Packaging:Guidelines?rd=Packaging/Guidelines#Writing_a_package_from_scratch
- http://www.rpm.org/wiki/Docs
- Are there other related activities?
- Students can follow the Linux_Beginner_Activity to get command-line basics.
- Note that the requirements above ask for slightly more in-depth command-line experience via sudo and code compilation.
- If students need virtual linux machines for command-line access, they can use Virtualbox as seen in this activity.
- Students can follow the Linux_Beginner_Activity to get command-line basics.
- What is the rationale for this activity?
- Students may wonder how they can distribute linux-based code that they develop out to other everyday users. Not many users enjoy compiling code, so the RPM package structure allows easy installation of binary pre-compiled code packages. Basically, a student could have coded a small sample command-line application and now they can send it to others easily. The other side of it is that students, as users of Linux, will be interfacing with RPM packages not of their making and it will be good to have an understanding of the backends of how this works. Students will interface with the dnf and yum commands even if simply using linux for fun. Now, they can have knowledge into how it works and how they can employ it for their careers and personal uses.
- If you wanted to do this activity in Ubuntu, Debian, etc:
- Students could optionally do this activity on Ubuntu or other Linux OS's which use a different Package Management toolset.
- Ubuntu is debian-based and uses the ``dpkg`` command. For more info on equivalent commands, see:
Directions:
- Learn about dnf/yum and rpm files. Have students find it themselves. https://en.m.wikipedia.org/wiki/DNF_(software),
- Learn about creating rpm's and rpmbuild command
- RPM Build Example Video - Watch, at least, the first 8 mins of this video from a recording of a local Linux User Group meeting
- RPM process Diagram from video - Find the diagram that the video references on the page labeled 12-17
- Document authored by Guru Labs, L.C. released under the CC-BY-NC-ND 2.0 license
- Use an existing, easy, mature, yet small project like wget or top (or something that doesn't come standard on most systems) to have students compile and make and package.
- See example of packaging the `wget` command
- Have students rename it so the command line can be run as a test
- Have students host the package on a web source (ftp? Some free internet service that makes the .rpm accessible by URL)
- Package Repo location
- http://copr.fedorainfracloud.org - Use this for students to make their own packages and repositories
- https://fedorahosted.org/copr/ - The actual community / project page where user manuals and developer resources exist
- Package Repo location
- Have each student in the class pair up and try to install the other person's RPM and run the new command
Deliverables:
What will the student hand in?
Assessment:
How will the activity be graded?
How will learning will be measured?
Criteria | Level 1 (fail) | Level 2 (pass) | Level 3 (good) | Level 4 (exceptional) |
---|---|---|---|---|
Installs and inspects RPMs with dnf/yum | ||||
Compiles code into binary RPM | ||||
Uploads RPM to COPR or other online repo | ||||
Installs colleagues RPM from COPR |
Comments:
What should the instructor know before using this activity?
What are some likely difficulties that an instructor may encounter using this activity?
Additional Information:
ACM Knowledge Area/Knowledge Unit | What ACM Computing Curricula 2013 knowledge area and units does this activity cover? ACM_Body_of_Knowledge |
ACM Topic | What specific topics are addressed? The Computing Curriucula 2013 provides a list of topics - https://www.acm.org/education/CS2013-final-report.pdf |
Level of Difficulty | Is this activity easy, medium or challenging? |
Estimated Time to Completion | How long should it take for the student to complete the activity? |
Materials/Environment |
|
Author | Who wrote this activity? |
Source | Is there another activity on which this activity is based? If so, please provide a link to the original resource. |
License | Under which license is this material made available? (http://creativecommons.org/licenses/) |
Suggestions for Open Source Community:
Suggestions for an open source community member who is working in conjunction with the instructor.
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License