;;; 40-package-management-lesson.el --- package-management-lesson (defun package-management-lesson () "Linux+ lesson for apt vs dnf package management." (interactive) (delete-other-windows) (let ((buf (get-buffer-create "*Package Management Lesson*")) (shell (or shell-file-name (getenv "SHELL") "/bin/sh"))) (switch-to-buffer buf) (read-only-mode -1) (erase-buffer) (insert "Linux+ Lesson: Package Management (Debian vs Red Hat)\n" "=====================================================\n\n" "You MUST know both ecosystems.\n\n" "Debian-based systems (Debian, Ubuntu):\n" " apt update → refresh package list\n" " apt upgrade → upgrade installed packages\n" " apt install pkg → install package\n" " apt remove pkg → remove package\n\n" "Red Hat-based systems (RHEL, Rocky, Alma):\n" " dnf check-update → check for updates\n" " dnf upgrade → upgrade system\n" " dnf install pkg → install package\n" " dnf remove pkg → remove package\n\n" "Hands-on tasks:\n\n" "DEBIAN VM:\n" " sudo apt update\n" " sudo apt install tree\n" " tree\n" " sudo apt remove tree\n\n" "ROCKY VM:\n" " sudo dnf check-update\n" " sudo dnf install tree\n" " tree\n" " sudo dnf remove tree\n\n" "What to notice:\n" "- Command differences (apt vs dnf)\n" "- Same concepts, different syntax\n\n" "Linux+ exam traps:\n" "- apt is NOT used on Red Hat\n" "- dnf/yum are NOT used on Debian\n\n" "When finished, run:\n" " M-x package-management-quiz\n") (goto-char (point-min)) (view-mode 1) (split-window-below) (other-window 1) (let ((term (get-buffer "*term*"))) (if (buffer-live-p term) (switch-to-buffer term) (ansi-term shell "term"))) (other-window -1))) ;;; 40-package-management-lesson.el ends here