Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file not shown.
275 changes: 275 additions & 0 deletions presentation/package_installation/package_installation.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,275 @@
\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[czech]{babel}

\setbeamerfont{title}{size=\LARGE}

\title{Instalace balíčků}
\author{Eliška Jégrová}
\date{11. 11. 2025}

% pro obrázky a kreslení
\usepackage{tikz}
\usetikzlibrary{positioning}
\usepackage{graphicx}
\usepackage{datetime}
\usepackage{svg}
\usepackage{listings}
\usepackage{dirtree}


% vlastní příkaz pro tildy
\newcommand{\ts}{\raisebox{-0.25em}{\textasciitilde}}

\begin{document}

\frame{\titlepage}

\begin{frame}{Obsah}
\tableofcontents
\end{frame}

\section{Balíčky v Linuxu}

\begin{frame}{Balíčky v Linuxu}
\begin{itemize}
\item Programy v Linuxu jsou většinou baleny do \textbf{balíčků}.
\item Balíčky obsahují:
\begin{itemize}
\item vlastní program nebo knihovny,
\item informace o verzi,
\item seznam závislostí (co je nutné mít nainstalováno),
\item konfigurace,
\item manuálové stránky, dokumentace,
\item instalační skripty (ne nutně).
\end{itemize}
\item Každá distribuce má svůj vlastní systém správy balíčků.
\end{itemize}
\end{frame}



\begin{frame}{Základní a nadstavbové systémy}
\begin{itemize}
\item Na systémech jsou obvykle dva balíčkovací systémy:
\begin{itemize}
\item \textbf{Základní:} stará se o instalaci a evidenci (\texttt{rpm})
\item \textbf{Nadstavbová:} řeší stahování a závislosti (\texttt{dnf})
\end{itemize}

\vspace{1em}
\begin{itemize}
\item Všechny spravují software dostupný všem uživatelům
\item Pro instalaci je potřeba oprávnění superuživatele
\end{itemize}

\end{itemize}
\end{frame}

\begin{frame}{Různé distribuce, různé nástroje}
\begin{center}
\begin{tabular}{|l|l|}
\hline
\textbf{Distribuce} & \textbf{Základní systém správy balíčků} \\
\hline
Debian, Ubuntu & APT (dpkg) \\
Fedora, CentOS & DNF (RPM) \\
openSUSE & Zypper (RPM) \\
Arch Linux & Pacman \\
\hline
\end{tabular}
\end{center}
\end{frame}


\section{RPM}
\begin{frame}[fragile]{RPM – informace o balíčcích}
\begin{itemize}
\item Dotaz na verzi balíčku

\texttt{\$ rpm -q bash \\
bash-5.2.37-1.fc42.x86\_64 \\
\$ rpm -q kernel \\
kernel-6.17.7-200.fc42.x86\_64}

\vspace{0.5em}

\texttt{\$ rpm -qi bash \\
Name : bash \\
Version : 5.2.37 \\
Release : 1.fc42 \\
Architecture: x86\_64 \\
Install Date: Wed 09 Apr 2025 02:05:13 PM CEST \\
Group : Unspecified \\
Size : 8547020 \\
License : GPL-3.0-or-later \\
...}
\end{itemize}
\end{frame}

\begin{frame}[fragile]{RPM – informace o balíčcích}
\begin{itemize}
\item Zobraz všechny soubory které balíček obsahuje

\texttt{\$ rpm -q -l bash \\
/etc/skel/.bash\_logout \\
/etc/skel/.bash\_profile \\
/etc/skel/.bashrc \\
/usr/bin/alias \\
/usr/bin/bash \\
/usr/bin/bashbug \\
/usr/bin/bashbug-64 \\
/usr/bin/bg \\
/usr/bin/cd \\
/usr/bin/command \\
/usr/bin/fc \\
...}

\end{itemize}
\end{frame}

\begin{frame}[fragile]{RPM – závislosti}
\begin{itemize}
\item Dotaz na závislosti balíčku (co potřebuje bash) \\
\texttt{\$ rpm -q -{}-requires bash\\
/usr/bin/sh\\
config(bash) = 5.2.37-1.fc42\\
filesystem >= 3\\
libc.so.6()(64bit)\\
libc.so.6(GLIBC\_2.11)(64bit)}

\vspace{1em}
\item Dotaz - jaký balíček poskytuje danou závislost

\texttt{\$ rpm -q -{}-whatprovides 'libc.so.6()(64bit)'}
\texttt{glibc-2.41-11.fc42.x86\_64}

\end{itemize}
\end{frame}

\begin{frame}{Samostatné práce 1 – Informace o balíčku}
Zjisti informace o balíčcích \texttt{coreutils} a \texttt{firefox}:
\begin{itemize}
\item Verze balíčků
\item Podrobné informace (-i)
\item Seznam souborů, které balíček obsahuje (-l)
\end{itemize}
\end{frame}

\begin{frame}{Samostatné práce 2 – Závislosti balíčku}
Zjisti závislosti a poskytovatele knihoven:
\begin{itemize}
\item Zjisti, jak se jmenuje balíček pro vim (/usr/bin/vim)
\item Jaké závislosti má balíček \texttt{vim}? (requires)\\
\item Který balíček poskytuje \texttt{libacl.so.1()(64bit)}? (whatprovides)\\
\end{itemize}
\end{frame}


\section{Repozitář}
\begin{frame}{Repozitář}
\begin{itemize}
\item Příkaz \texttt{rpm} nekomunikuje po internetu – neumí vyhledávat balíčky, které nejsou nainstalované
\vspace{0.8em}

\item Nemůžeme zjistit, který balíček obsahuje určitý soubor, pro nenainstalované programy:

\texttt{\$ rpm -q -{}-whatprovides /usr/bin/sl}\\
chyba: soubor \texttt{/usr/bin/sl}: Adresář nebo soubor neexistuje

\item K tomu je potřeba prohlédnout repozitář – seznam všeho softwaru, který Fedora poskytuje
\end{itemize}
\end{frame}

\section{DNF}
\begin{frame}{Repozitář – práce s \texttt{dnf}}
\begin{itemize}
\item Obdoba příkazu \texttt{rpm -q} je \texttt{dnf repoquery}:

\texttt{\$ dnf repoquery -{}-whatprovides /usr/bin/sl}\\[0.2em]
\texttt{Fedora 42 - x86\_64 \hspace{1em} 6.8 MB/s | 74 MB 00:10}\\
\texttt{sl-0:5.02-23.fc42.x86\_64}

\vspace{1em}
\item Při prvním použití stahuje metadata o repozitářích.
\item Při dalším spuštění zobrazí jak stará metadata má k dispozici
\end{itemize}
\end{frame}

\begin{frame}{Instalace a odinstalace}
\begin{itemize}
\item \texttt{rpm} umí instalovat (\texttt{-i}) a mazat (\texttt{-e}) balíčky, ale:
\begin{itemize}
\item neřeší závislosti ani stahování,
\item hodí se jen ve zvláštních případech (např. odpojené systémy).
\end{itemize}
\vspace{1em}
\item Pro běžnou správu se používá \texttt{dnf}:

\texttt{\$ dnf install <balíček>} \\
\texttt{\$ dnf remove <balíček>} \\
\texttt{\$ dnf update}


\vspace{1em}
\item Příklad: \\
\texttt{\$ sudo dnf install sl}\\
\texttt{\$ sudo dnf remove -y htop}
\vspace{1em}
\item Přepínač \texttt{-y} = automaticky odpovídá „ano“
\end{itemize}
\end{frame}

\section{Konfigurace repozitáře}
\begin{frame}{Repozitáře}
\begin{itemize}
\item konfigurace repozitářů v \texttt{/etc/yum.repos.d/}
\item Fedora neobsahuje některé balíčky (např. MP3, videa) kvůli patentům.
\item RPM Fusion = evropský projekt s volným i uzavřeným softwarem:
\begin{itemize}
\item \texttt{free} – open source, volně používat, měnit, zkoumat
\item \texttt{nonfree} – uzavřený software, např. Steam
\end{itemize}
\vspace{1em}
\item zkus nainstalovat program \texttt{mplayer}
\end{itemize}
\end{frame}

\begin{frame}{Instalace repozitáře RPM Fusion}
\begin{itemize}
\item https://rpmfusion.org/
\end{itemize}
\begin{itemize}
\item Při první instalaci se DNF zeptá, zda důvěřuje GPG klíčům.
\begin{itemize}
\item lze ověřit na rpmfusion.org/keys
\end{itemize}
\vspace{0.5em}
\item Po úspěšné instalaci bude balíček \texttt{rpmfusion-free-release} obsahovat konfiguraci repozitáře. \\
\texttt{\$ rpm -ql rpmfusion-free-release
/etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-fedora-2020
/etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-fedora-latest
/etc/yum.repos.d/rpmfusion-free-updates.repo
/etc/yum.repos.d/rpmfusion-free.repo \\
...}
\end{itemize}
\end{frame}

\begin{frame}{Samostatné práce 3 – Práce s repozitáři a dnf}
Zjisti balíček, který obsahuje program \texttt{terminator}, i když není nainstalovaný (/usr/bin/terminator)
\begin{itemize}
\item Nainstaluj balíček
\item Odinstaluj balíček
\end{itemize}
\end{frame}

\begin{frame}{Samostatné práce 4 – Instalace specifické verze balíčku }
Zjisti verze balíčku htop, které se dají nainstalovat (repoquery)
\begin{itemize}
\item Nainstaluj starší verzi: 3.3.0
\item Nainstaluj nejnovější verzi.
\end{itemize}
\end{frame}

\end{document}