---
tags:
- linux
- l1
- flashcard-deck
- debian-ubuntu
---
<!-- wiki:breadcrumb:start -->
[Portal](../../../../library/portal/index.md) | **Level:** [L1: Foundations](../../../../library/portal/levels.md) | **Topics:** [Debian & Ubuntu Ecosystem](../../../../library/portal/topics.md) | **Domain:** Linux
<!-- wiki:breadcrumb:end -->

id	category	difficulty	tags	question	answer	source_path
debian-ubuntu/001-apt-update-vs-upgrade	debian-ubuntu	easy	debian, ubuntu, apt	What is the difference between 'apt update' and 'apt upgrade'?	apt update refreshes the package index (what's available). apt upgrade installs newer versions of installed packages. Always run update before upgrade.\n\nRemember: apt commands: apt update (refresh package lists), apt upgrade (upgrade packages), apt install (install), apt remove (uninstall), apt autoremove (cleanup unused dependencies).\n\nGotcha: apt update does NOT upgrade packages — it only refreshes the package index. Always run apt update before apt install to get the latest versions.	training/library/topics/debian-ubuntu/primer.md
debian-ubuntu/002-remove-vs-purge	debian-ubuntu	easy	debian, ubuntu, apt	What is the difference between 'apt remove' and 'apt purge'?	remove uninstalls the package but keeps configuration files in /etc/. purge removes the package AND all its config files. Use purge for a clean reinstall.\n\nRemember: apt commands: apt update (refresh package lists), apt upgrade (upgrade packages), apt install (install), apt remove (uninstall), apt autoremove (cleanup unused dependencies).\n\nGotcha: apt update does NOT upgrade packages — it only refreshes the package index. Always run apt update before apt install to get the latest versions.	training/library/topics/debian-ubuntu/primer.md
debian-ubuntu/003-dpkg-file-owner	debian-ubuntu	easy	debian, ubuntu, dpkg	How do you find which Debian package owns a specific file?	dpkg -S /path/to/file\nFor files from uninstalled packages: apt-file search /path/to/file (requires apt-file package)\n\nRemember: Debian = stable, conservative, community-driven. Ubuntu = Debian-based, user-friendly, backed by Canonical. Ubuntu LTS is the most popular server distro on AWS.\n\nGotcha: mixing Debian and Ubuntu packages can break your system. They share the apt/dpkg ecosystem but packages may have different dependencies and versions.	training/library/topics/debian-ubuntu/primer.md
debian-ubuntu/004-sources-list-components	debian-ubuntu	medium	debian, ubuntu, repositories	What are the Ubuntu repository components (main, restricted, universe, multiverse)?	main: Canonical-supported free software\nrestricted: proprietary drivers\nuniverse: community-maintained free software\nmultiverse: non-free software\nMinimal installs may only have main enabled.\n\nRemember: /etc/apt/sources.list defines package repositories. Format: deb http://archive.ubuntu.com/ubuntu jammy main restricted. Modern: use .list files in /etc/apt/sources.list.d/.	training/library/topics/debian-ubuntu/primer.md
debian-ubuntu/005-add-third-party-repo	debian-ubuntu	medium	debian, ubuntu, repositories, gpg	How do you properly add a third-party APT repository on modern Debian/Ubuntu?	"1. Download and dearmor the GPG key:\ncurl -fsSL https://example.com/key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/example.gpg\n2. Add the repo with signed-by:\necho ""deb [signed-by=/usr/share/keyrings/example.gpg] https://repo.example.com/apt stable main"" | sudo tee /etc/apt/sources.list.d/example.list\n3. sudo apt update\napt-key is deprecated.\n\nRemember: apt commands: apt update (refresh package lists), apt upgrade (upgrade packages), apt install (install), apt remove (uninstall), apt autoremove (cleanup unused dependencies).\n\nGotcha: apt update does NOT upgrade packages — it only refreshes the package index. Always run apt update before apt install to get the latest versions."	training/library/topics/debian-ubuntu/primer.md
debian-ubuntu/006-apt-hold	debian-ubuntu	medium	debian, ubuntu, apt	How do you prevent a package from being upgraded on Debian/Ubuntu?	sudo apt-mark hold package-name\nUnhold: sudo apt-mark unhold package-name\nList held: apt-mark showhold\n\nRemember: Debian = stable, conservative, community-driven. Ubuntu = Debian-based, user-friendly, backed by Canonical. Ubuntu LTS is the most popular server distro on AWS.\n\nGotcha: mixing Debian and Ubuntu packages can break your system. They share the apt/dpkg ecosystem but packages may have different dependencies and versions.	training/library/topics/debian-ubuntu/primer.md
debian-ubuntu/007-unattended-upgrades	debian-ubuntu	medium	debian, ubuntu, security	How do you enable automatic security updates on Ubuntu?	sudo apt install unattended-upgrades\nsudo dpkg-reconfigure -plow unattended-upgrades\nConfig: /etc/apt/apt.conf.d/50unattended-upgrades\nControls which packages to auto-update, reboot policy, and email alerts.\n\nRemember: Debian = stable, conservative, community-driven. Ubuntu = Debian-based, user-friendly, backed by Canonical. Ubuntu LTS is the most popular server distro on AWS.\n\nGotcha: mixing Debian and Ubuntu packages can break your system. They share the apt/dpkg ecosystem but packages may have different dependencies and versions.	training/library/topics/debian-ubuntu/primer.md
debian-ubuntu/008-apparmor-vs-selinux	debian-ubuntu	medium	debian, ubuntu, apparmor, selinux	How does AppArmor differ from SELinux?	AppArmor is path-based (filenames), SELinux is label-based (inodes).\nAppArmor only covers profiled binaries; SELinux covers all processes.\nAppArmor is simpler to learn; SELinux is more comprehensive.\nAppArmor uses complain mode per-profile; SELinux uses permissive system-wide.\nDebian/Ubuntu/SUSE use AppArmor; RHEL/Fedora use SELinux.\n\nRemember: Debian package management: apt (high-level, handles dependencies) wraps dpkg (low-level, installs .deb files). When apt fails, dpkg --configure -a often fixes broken state.	training/library/topics/debian-ubuntu/primer.md
debian-ubuntu/009-apparmor-modes	debian-ubuntu	medium	debian, ubuntu, apparmor	What are the AppArmor profile modes and how do you switch between them?	enforce: violations blocked and logged\ncomplain: violations logged but allowed (for debugging)\ndisabled: profile not loaded\nSwitch: sudo aa-enforce /usr/sbin/nginx or sudo aa-complain /usr/sbin/nginx\nCheck: sudo aa-status\n\nRemember: Debian package management: apt (high-level, handles dependencies) wraps dpkg (low-level, installs .deb files). When apt fails, dpkg --configure -a often fixes broken state.	training/library/topics/debian-ubuntu/primer.md
debian-ubuntu/010-ufw-basics	debian-ubuntu	easy	debian, ubuntu, ufw, firewall	How do you enable and configure UFW on Ubuntu?	sudo ufw enable\nsudo ufw default deny incoming\nsudo ufw default allow outgoing\nsudo ufw allow ssh\nsudo ufw allow http\nsudo ufw allow 8080/tcp\nsudo ufw status\nNote: UFW is disabled by default on Ubuntu.\n\nRemember: UFW = Uncomplicated Firewall. Frontend for iptables. ufw allow 22 (SSH), ufw allow 80/tcp (HTTP), ufw enable (activate). Default: deny incoming, allow outgoing.	training/library/topics/debian-ubuntu/primer.md
debian-ubuntu/011-ufw-docker-bypass	debian-ubuntu	hard	debian, ubuntu, ufw, docker	How does Docker bypass UFW firewall rules?	Docker manipulates iptables directly, inserting its own DOCKER chain before UFW rules. A port published with -p 3306:3306 is open to the world even if UFW denies 3306.\nFix: bind to localhost with -p 127.0.0.1:3306:3306, or set DOCKER_IPTABLES=false and manage rules manually.\n\nRemember: UFW = Uncomplicated Firewall. Frontend for iptables. ufw allow 22 (SSH), ufw allow 80/tcp (HTTP), ufw enable (activate). Default: deny incoming, allow outgoing.	training/library/topics/debian-ubuntu/footguns.md
debian-ubuntu/012-netplan-basics	debian-ubuntu	medium	debian, ubuntu, netplan	How does Netplan work for network configuration on Ubuntu?	Netplan uses YAML config in /etc/netplan/ to generate backend configs for NetworkManager or systemd-networkd.\nApply: sudo netplan apply\nSafe test: sudo netplan try (auto-reverts after 120s)\nDebug: sudo netplan --debug apply\n\nRemember: Debian package management: apt (high-level, handles dependencies) wraps dpkg (low-level, installs .deb files). When apt fails, dpkg --configure -a often fixes broken state.	training/library/topics/debian-ubuntu/primer.md
debian-ubuntu/013-netplan-static-ip	debian-ubuntu	medium	debian, ubuntu, netplan	How do you configure a static IP address using Netplan?	In /etc/netplan/01-config.yaml:\nnetwork:\n  version: 2\n  ethernets:\n    eth0:\n      addresses: [192.168.1.100/24]\n      routes:\n        - to: default\n          via: 192.168.1.1\n      nameservers:\n        addresses: [8.8.8.8, 8.8.4.4]\nThen: sudo netplan apply\n\nRemember: Debian package management: apt (high-level, handles dependencies) wraps dpkg (low-level, installs .deb files). When apt fails, dpkg --configure -a often fixes broken state.	training/library/topics/debian-ubuntu/primer.md
debian-ubuntu/014-ubuntu-lts-lifecycle	debian-ubuntu	easy	debian, ubuntu, lifecycle	How long are Ubuntu LTS releases supported?	5 years standard support + 5 years ESM (Extended Security Maintenance) through Ubuntu Pro = 10 years total.\nLTS releases every 2 years in April (18.04, 20.04, 22.04, 24.04).\nHWE kernels backport newer kernel versions to LTS.\n\nRemember: Ubuntu releases every 6 months (YY.MM). LTS every 2 years (April of even years): 22.04, 24.04, 26.04. LTS = 5 years of support. Use LTS for servers.	training/library/topics/debian-ubuntu/primer.md
debian-ubuntu/015-preseed-vs-kickstart	debian-ubuntu	hard	debian, ubuntu, preseed, provisioning	How does Debian's Preseed differ from RHEL's Kickstart?	Preseed uses debconf key=value format; Kickstart uses a custom scripting format.\nPreseed uses partman recipes; Kickstart uses clearpart/part directives.\nPreseed uses pkgsel/tasksel; Kickstart uses %packages section.\nPreseed post-install: d-i preseed/late_command; Kickstart: %post section.\n\nRemember: Debian package management: apt (high-level, handles dependencies) wraps dpkg (low-level, installs .deb files). When apt fails, dpkg --configure -a often fixes broken state.	training/library/topics/debian-ubuntu/primer.md
debian-ubuntu/016-snap-packages	debian-ubuntu	medium	debian, ubuntu, snap	What are snap packages and why are they controversial on Ubuntu?	Snap is a parallel package system to apt. Packages are containerized, auto-updating, and distribution-agnostic.\nControversy: uses loop mounts (clutter df), auto-updates without control, some packages are snap-only (Firefox, Chromium), slower first launch.\nList: snap list. Install: sudo snap install <pkg>.\n\nRemember: snap = Canonical's universal package format. Self-contained, auto-updating, sandboxed. Some apps (Firefox on Ubuntu) are snap-only. Alternative: Flatpak.	training/library/topics/debian-ubuntu/primer.md
debian-ubuntu/017-dpkg-lock	debian-ubuntu	medium	debian, ubuntu, apt, troubleshooting	What causes 'Could not get lock /var/lib/dpkg/lock-frontend' and how do you fix it?	Another apt/dpkg process is running (often unattended-upgrades in background).\nCheck: sudo lsof /var/lib/dpkg/lock-frontend\nIf stale lock: sudo rm /var/lib/dpkg/lock-frontend && sudo rm /var/lib/dpkg/lock && sudo dpkg --configure -a\nDon't kill running apt processes — wait for them to finish.\n\nRemember: dpkg = low-level package tool. dpkg -i package.deb (install), dpkg -l (list), dpkg -S /path/to/file (find which package owns a file). apt uses dpkg under the hood.	training/library/topics/debian-ubuntu/footguns.md
debian-ubuntu/018-fix-broken	debian-ubuntu	easy	debian, ubuntu, apt, troubleshooting	How do you fix broken package dependencies on Debian/Ubuntu?	sudo apt --fix-broken install\nsudo dpkg --configure -a\nFor stubborn issues: sudo apt purge <broken-package> && sudo apt install <broken-package>\n\nRemember: Debian = stable, conservative, community-driven. Ubuntu = Debian-based, user-friendly, backed by Canonical. Ubuntu LTS is the most popular server distro on AWS.\n\nGotcha: mixing Debian and Ubuntu packages can break your system. They share the apt/dpkg ecosystem but packages may have different dependencies and versions.	training/library/topics/debian-ubuntu/street_ops.md
debian-ubuntu/019-cloud-init	debian-ubuntu	medium	debian, ubuntu, cloud	How does cloud-init work on Ubuntu cloud instances?	cloud-init runs on first boot to configure hostname, users, SSH keys, packages, and scripts.\nConfig: /etc/cloud/cloud.cfg and /etc/cloud/cloud.cfg.d/*.cfg\nStatus: cloud-init status\nLogs: /var/log/cloud-init.log\nRe-run: sudo cloud-init clean && sudo cloud-init init\n\nRemember: Debian package management: apt (high-level, handles dependencies) wraps dpkg (low-level, installs .deb files). When apt fails, dpkg --configure -a often fixes broken state.	training/library/topics/debian-ubuntu/primer.md
debian-ubuntu/020-debian-backports	debian-ubuntu	medium	debian, repositories	How do you use Debian backports for newer packages on stable?	"Add backports repo:\necho ""deb http://deb.debian.org/debian bookworm-backports main"" | sudo tee /etc/apt/sources.list.d/backports.list\nsudo apt update\nInstall from backports: sudo apt install -t bookworm-backports <package>\nBackports are newer packages recompiled for the stable release.\n\nRemember: Debian package management: apt (high-level, handles dependencies) wraps dpkg (low-level, installs .deb files). When apt fails, dpkg --configure -a often fixes broken state."	training/library/topics/debian-ubuntu/street_ops.md

<!-- wiki:related:start -->
---

## Wiki Navigation

### Related Content

- [Debian & Ubuntu Ecosystem](../../../../library/topics/debian-ubuntu/index.md) (Topic Pack, L1) — Debian & Ubuntu Ecosystem
- [Linux Distribution Comparison](../../../../library/topics/linux-distro-comparison/index.md) (Topic Pack, L1) — Debian & Ubuntu Ecosystem

<!-- wiki:related:end -->
