نسخه فارسی | English Version
Operating System Lab - Final Project
First Semester 1404-1405 (2025-2026)
Due Date: January 9, 2026 (19 Dey 1404) - 23:59
This repository is a template for your team to create a Bash command-line tool and package it into a .deb package.
Before you start, choose one topic from the list of 21 available projects:
View All Project Topics | مشاهده موضوعات پروژه
Each topic has specific requirements and suggested commands. Make sure to coordinate with other teams to avoid duplicates.
mytool is just a placeholder name! Your team should:
- Choose a meaningful name that represents your project topic
- Rename all files:
src/mytool.sh→src/yourproject.shman/mytool.1→man/yourproject.1config/mytool.conf→config/yourproject.conf
- Update
debian/control(Source and Package fields) - Update
debian/changelog(package name) - Update
debian/install(all file paths) - Update
debian/manpages(man page path) - Update
debian/links(all file paths)
Examples of good names: diskmonitor, loganalyzer, fileorganizer, sysbackup, netcheck
- Write your Bash program in src/mytool.sh (after renaming it!)
- Update the man page in man/mytool.1
- Update configuration in config/mytool.conf (optional)
sudo apt-get update
sudo apt-get install -y devscripts debhelper build-essentialFrom the project root directory:
debuild -us -ucIf successful, the .deb file appears in the parent directory:
ls ../*.deb
# Example output: ../mytool_1.0-1_all.deb# Install the package
sudo dpkg -i ../*.deb
# Test your tool
mytool # (or whatever you renamed it to!)
# Check installed files
dpkg -L mytool
# View the man page
man mytool
# Uninstall when done testing
sudo apt remove mytoolSTEP 1: Rename everything from mytool to your project name!
- Rename all source files, man pages, and config files
- Update
debian/control,debian/changelog,debian/install,debian/links, anddebian/manpages - Change file paths in
debian/installto match your renamed files - Change file paths in
debian/linksto match your renamed files - Update metadata in
debian/controlwith your team information - Update version info in
debian/changelogwhen your team submits new versions - Coordinate with team members to avoid merge conflicts!
- A valid Debian packaging structure (
debian/directory) - Example code, config, and documentation
- Automatic installation of:
/usr/bin/mytool(your executable)/etc/mytool.conf(configuration file)- Man page in
/usr/share/man/man1/mytool.1.gz
- Publishing Guide - How to publish your package to GitHub Releases (فارسی)
- Debian Packaging Guide - Debian packaging instructions (فارسی)
my-bash-tool/
├── src/
│ └── mytool.sh # Your main script (rename me!)
├── man/
│ └── mytool.1 # Man page documentation (rename me!)
├── config/
│ └── mytool.conf # Configuration file (rename me!)
├── debian/
│ ├── changelog # Version history (update me!)
│ ├── control # Package metadata (update me!)
│ ├── install # File installation mappings (update me!)
│ ├── links # File link mappings (update me!)
│ ├── manpages # Man page registration (update me!)
│ └── rules # Build rules (usually no changes needed)
├── .gitignore # Excludes build artifacts
├── DEBIAN_PACKAGING.md # Debian packaging guide (English)
├── DEBIAN_PACKAGING.fa.md # Debian packaging guide (Persian)
├── README.md # This file (English)
├── README.fa.md # Persian version
├── PUBLISHING_GUIDE.md # Publishing instructions (English)
└── PUBLISHING_GUIDE.fa.md # Publishing instructions (Persian)
- Rename everything - Don't leave any "mytool" references in your final submission!
- Test thoroughly - Install and test your package before publishing
- Coordinate with your team - Use git branches to avoid conflicts
- Update all debian files - Make sure all metadata reflects your actual project
- Follow naming rules - Only lowercase letters (a-z), numbers (0-9), and hyphens (-)
Base Score: 4 points
Maximum Score: 6 points (with bonus features)
Required Deliverables:
- Complete source code in
src/ - Man page in
man/ - Debian packaging files in
debian/ - Built
.debpackage - Comprehensive README with team member names
- Project report explaining implementation and showing screenshots
- Check PUBLISHING_GUIDE.md for detailed build and release instructions
- Read DEBIAN_PACKAGING.md for packaging guidance
- Review PROJECT_TOPICS.md for topic-specific requirements
- Review the Troubleshooting section in the Publishing Guide
- Ask your instructor or teaching assistants for help
Good luck with your project!