\section{Pacman (Arch Linux)} \begin{justify} Unter Arch Linux wird Software mit Kommandozeilen Werkzeug {\ttfamily pacman} eingespielt. Sollen Pakete aus dem AUR-Repository installiert werden, so nimmt man hierzu den Befehl {\ttfamily yaourt}. Ebenso kann man das Programm {\ttfamily yay} installieren, um Pakete aus dem AUR-Repository zu installieren und aktualisieren. Um zu prüfen, ob es es Updates gibt, kann man {\ttfamily pacman-contrib} nachinstallieren. In diesem Paket befindet sich dann das Programm {\ttfamily checkupdates}. %------------------------------------------------------------------------------- % Section: Konfiguration %------------------------------------------------------------------------------- \subsection{Konfiguration} F"ur die Konfiguration von {\ttfamily Pacman} gibt es in dem Verzeichnis {\ttfamily /etc} die Datei {\ttfamily pacman.conf}. Eine Farbige Ausgabe der Meldungen erh"alt man, wenn die Option {\ttfamily color} eingeschaltet wurde. Seit der Version 6 von Pacman kann man parallele Downloads definieren. Ebenso kann man die Ausgabe der Progressbar als Pacman darstellen \listBash \begin{lstlisting}[captionpos=b, caption=Auszug pacman.conf] uws@tux>egrep -i "download|color|candy" /etc/pacman.conf Color ParallelDownloads=5 ILoveCandy # Pacman Progressbar \end{lstlisting} Die Download-Geschwindigkeit l"asst sich mit der Option {\ttfamily \verb|--|limit-rate} festlegen. Diese Option wird dem Parameter {\ttfamily XferCommand} hinzugef"ugt.\\ {\ttfamily XferCommand = /usr/bin/wger \verb|--|passive-ftp \verb|--|limit-rate=40k -c -o \%o \%u} %------------------------------------------------------------------------------- % Section: Repositories %------------------------------------------------------------------------------- \subsection{Repositories} Es gibt f"ur Offizielle Arch Linux Pakete sechs verschiedene Repositories, wo die Pakete zugeordnet wurden. \begin{table}[ht] \begin{tabular}{p{3cm}p{13cm}} % l => Text left, c => center, r => right, p => zeilenumbruch \hline \rowcolor{hellgrau}\emph{\textbf{Repo Name}} & \emph{\textbf{Beschreibung}}\\ \hline \hline Core & Enth"alt Grundlegende Programme\\ Extra & Enth"alt zus"atzliche Programme, wie z.B. KDE oder Gnome\\ Testing & Enth"alt neuere Versionen, die aber noch nicht getestet worden sind\\ Community & Enth"alt Programme, die urspr"unglich nur als PKGBUILD im AUR zu Verf"ugung standen und nach einer Testphase "ubernommen wurden\\ Multilib & Enth"alt 32 Bit Programme f"ur 64 Bit Systeme\\ Multilib-testing & Wie Multilib, jedoch sind die Programme noch nicht ausreichend getestet worden\\ \end{tabular} \caption{Repository Namen} \end{table} Weitere Repositories kann man sich in der Datei {\ttfamily /etc/pacman.conf} definieren, indem man dort einen Repo-Namen und Server spezifiziert. Eine Liste von {\ttfamily inoffizieller} Repositories findet man im englischen Wiki http://wiki.archlinux.org/index.php/Unofficial\_user\_repositories. %------------------------------------------------------------------------------- % Section: Spiegel-Server %------------------------------------------------------------------------------- \subsection{Spiegel-Server} Es gibt verschiedene Spiegel-Server von dem Hauptserver ftp.archlinux.org. Die Liste der Spiegel-Server befindet sich unter {\ttfamily /etc/pacman.d} und hat den Namen {\ttfamily mirrorlist}. Unter https://www.archlinux.de/?page=MirrorStatus kann man sich die Geschwindigkeit der Spiegelserver anzeigen lassen. Eine aktuelle Liste der Spiegel-Server kann man sich unter https://www.archlinux.org/mirrorlist erstellen lassen. Die Antwortzeiten der Spiegel-Server kann man mit {\ttfamily rankmirrors} oder auch mit {\ttfamily pacman-mirrors -g} testen. \listBash \begin{lstlisting}[captionpos=b, caption=Spiegelserver, label=lst:bash] uws@tux>sudo pacman-mirrors -c Germany # update Germany Mirror Server \end{lstlisting} Die {\ttfamily mirrorlist} wird vom System immer wieder mal aktualisiert. Man kann sich auch eine eigene Mirroliste erstellen und diese in der {\ttfamily pacman.conf} in den entsprechenden Repositories Abschnitten einf"ugen. \listBash \begin{lstlisting}[captionpos=b, caption=Eigene Mirrorliste, label=lst:bash] [core] Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/myMirrorlist \end{lstlisting} %------------------------------------------------------------------------------- % Section: Update %------------------------------------------------------------------------------- \subsection{Update} Mit dem Befehl {\ttfamily pacman -Syu} kann man eine komplette System Aktualisierung vornehmen. M"ochte man aber nur eine Aktualisierungen f"ur die installierten Pakete vornehmen, so kann das mit {\ttfamily checkupdates} geschehen. \listBash \begin{lstlisting}[captionpos=b, caption=Update, label=lst:bash] uws@tux>sudo pacman -Syu uws@tux>sudo checkupdates \end{lstlisting} %------------------------------------------------------------------------------- % Section: Paket decline %------------------------------------------------------------------------------- \subsection{Paket decline} M"ochte man ein Paket von der Aktualisierung ausschlie"sen, so kann man das mit {\ttfamily \verb|--|ignore} machen. Eine ganze Paketgruppe wird mit {\ttfamily \verb|--|ignoregroup} ausgeschlossen. Soll ein Paket dauerhaft von einer Aktualisierung ausgeschlossen werden, so gibt man in der {\ttfamily /etc/pacman.conf} unter {\ttfamily IgnorePkg} die Pakete an, die nicht aktualisiert werden sollen. \listBash \begin{lstlisting}[captionpos=b, caption=Ignore Paket, label=lst:bash] uws@tux>sudo pacman -Syu --ignore= # einzelne Pakete ausschliessen uws@tux>sudo pacman -Syu ..ignoregroup= # ganze Paket Gruppe ausschliessen uws@tux>grep -i "IgnorePkg" /etc/pacman.conf IgnorePkg= \end{lstlisting} %------------------------------------------------------------------------------- % Section: Paket Neuinstallieren %------------------------------------------------------------------------------- \subsection{Paket Neuinstallieren} M"ochte man ein Programm neu installieren, aber es sind noch Fragmente auf der Festplatte und die Installation schl"agt fehl, so kann man die Installation mit {\ttfamily overwrite} erzwingen. Als Option wird dann ein =true oder '*' angegeben. \listBash \begin{lstlisting}[captionpos=b, caption=Programm Neuinstallation] uws@tux>sudo pacman -S --overwrite '*' \end{lstlisting} Kommt bei einem Update des Systems zum Beispiel die Meldung: \ Fehler: Konnte den Vorgang nicht durchf"uhren (In Konflikt stehende Dateien). \ nss: /usr/lib/pll-kit-trust.so existiert im Dateisystem \ Fehler sind aufgetreten, keine Pakete wurden aktualisiert \ Error installing repo package \ So kann das Update auch mit der overwrite Option erzwingen. \listBash \begin{lstlisting}[captionpos=b, caption=Programm Neuinstallation] uws@tux>sudo pacman -Syu --overwrite=true /usr/lib\*/pll-kit-trust.so \end{lstlisting} \newpage %------------------------------------------------------------------------------- % Section: Paket downgrade %------------------------------------------------------------------------------- \subsection{Paket downgrade} Wird ein Paket von einer bestimmten Version benötigt, so kann man das Paket {\ttfamily manjaro-downgrade} installieren. Damit kann man ein Paket mit der benötigten Version installiert werden. \listBash \begin{lstlisting}[captionpos=b, caption=Paket downgrade] uws@tux>pamac install manjaro-downgrade uws@tux>#sudo manjaro-downgrade thunderbirdq \end{lstlisting} %------------------------------------------------------------------------------- % Section: Paket auflisten %------------------------------------------------------------------------------- \subsection{Paket auflisten} Ein installiertes Paket / Programm kann man mit {\ttfamily pacman -Q} sich anzeigen lassen. \listBash \begin{lstlisting}[captionpos=b, caption=Paket Anzeige] uws@tux>pacman -Q | grep -i fire firefox 93.0-1 firefox-i18n-de 93.0-1 firefox-i18n-en-us 93.0-1 uws@tux># Detail Ausgabe uws@tux>pacman -Qi | grep -i fire \end{lstlisting} %------------------------------------------------------------------------------- % Section: Cache leeren %------------------------------------------------------------------------------- \subsection{Cache leeren} Um den Cache zu leeren, wird pacman mit der Option -Sc[c] aufgerufen. Den AUR-Cache im Home Verzeichnis wird mit yay -Scc geleert. \listBash \begin{lstlisting}[captionpos=b, caption=Cache leeren] uws@tux># AUR-Cache im home Verzeichnis leeren uws@tux>yay -Scc Cache directory: /var/cache/pacman/pkg/ :: Do you want to remove ALL files from cache? [y/N] N Database directory: /var/lib/pacman :: Do you want to remove unused repositories? [y/N] N Build directory: /home/uws/.cache/yay :: Do you want to remove ALL AUR packages from cache? [Y/n] Y removing AUR packages from cache ... \end{lstlisting} %------------------------------------------------------------------------------- % Section: Solutions %------------------------------------------------------------------------------- \subsection{Solutions} Hier werden Lösungen zu Problemen beschrieben. %------------------------------------------------------------------------------- \subsubsection{Kann Datenbank nicht sperren} Kommt bei einem {\ttfamily sudo pacman -Syu} die Meldung: {\ttfamily Kann Datenbank nicht sperren}, so muss man die Lock-Datei der DB löschen. \listBash \begin{lstlisting}[captionpos=b, caption=Lock löschen] uws@tux>sudo rm /var/lib/pacman/db.lck uws@tux># oder uws@tux>sudo rm /var/tmp/pamac/dbs/db.lck \end{lstlisting} %------------------------------------------------------------------------------- \subsubsection{Schlüssel konnte nicht importiert werden} Kommt bei einem Update des Systems die Meldung: \\ {\ttfamily Fehler: Schlüssel "c06096.." konnte nicht importiert werden}\\ so ist folgendes zu machen. \listBash \begin{lstlisting}[captionpos=b, caption=gnupg neu] uws@tux>sudo mv /etc/pacman.d/gnupg /etc/pacman.d/gnupg.defekt uws@tux>sudo pacman-key --init uws@tux>sudo pacman-key --populate archlinux manjaro uws@tux>sudo pacman -Sy gnupg archlinux-keyring manjaro-keyring \end{lstlisting} %------------------------------------------------------------------------------- \subsubsection{jre-openjdk und jre-openjdk-headless stehen in Konflikt} Damit man diesen Konflikt lösen kann, muss man jdk-openjdk neu installieren. \listBash \begin{lstlisting}[captionpos=b, caption=jdk-openjdk install] uws@tux>sudo pacman -Sy jdk-openjdk ... jre-openjdk entfernen [j/N] j ... jre-openjdk-headless entfernen [j/N] j \end{lstlisting} %------------------------------------------------------------------------------- \subsubsection{Installation von icu(75.1-1) verletzt Abhängigkeit >>libicuuc.so=73-64<<} Diese Meldung kommt, wenn man ein Systemupdate macht. Dieses Problem kann mit dem löschen von nicht mehr benötigten Abhängikkeiten lösen. \listBash \begin{lstlisting}[captionpos=b, caption=Abhängigkeiten anzeigen / löschen] uws@tux># Anzeigen uws@tux>sudo pacman -Qdti | less uws@tux># Löschen uws@tux>sudo pacman -Qdtq | pacman -Rns - \end{lstlisting} \newpage %------------------------------------------------------------------------------- % Section: Befehle %------------------------------------------------------------------------------- \subsection{Befehle} In der nachfolgenden Tabelle sind einige der wichtigsten Befehle aufgelistet. Die Angabe der Paketnamen muss immer {\ttfamily klein} geschrieben werden. \begin{longtable}[l]{p{4cm}p{11cm}} \rowcolor{hellgrau}\multicolumn{1}{l}{\textbf{Befehl}} & \multicolumn {1}{l}{\textbf{Beschreibung}} \\ \hline \hline \endfirsthead %\multicolumn{2}{c}{{\bfseries \tablename \thetable{} continued from previous page.}} \\ \multicolumn{2}{r}{{\bfseries continued from previous page.}} \\ \rowcolor{hellgrau}\multicolumn{1}{l}{\textbf{befehl}} & \multicolumn {1}{l}{\textbf{Beschreibung}} \\ \hline \hline \endhead %\multicolumn{2}{r}{{\bfseries \tablename \thetable{} Continued on next page}} \\ \multicolumn{2}{r}{{\bfseries Continued on next page}} \\ \endfoot \caption{Pacman Befehle} \\ \endlastfoot pacman -Syu & Eine komplette Systemaktualisierung wird durchgef"uhrt\\ pacman -S & Ein oder auch mehrere Pakete installieren\\ pacman -Sy & Lokale DB aktualisieren\\ pacman -Su & Alle installieren Pakete aktualisieren\\ pacman -Syy & Loakle DB neu aufbauen\\ pacman -Syuu & Alle installierten Pakete downgraden (z.B. von Testing nach Core/Extra)\\ pacman -Ss & Nach Paketen suchen. Es wird nach Name oder Beschreibung gesucht\\ pacman -Sg & Suche nach Paketgruppen\\ pacman -Sg & Inhalt einer Paketgruppe anzeigen\\ pacman -Q & Alle installierten Paket incl. der Versionsnummer anzeigen\\ pacman -Qs & Nach installierten Paketen suchen\\ pacman -R & Paket deinstallieren\\ pacman -Rd & Pakete deinstallieren, ohne auf Abh"angigkeiten zu achten\\ pacman -Rdd & Pakete deinstallieren und alle Abh"angigkeitspr"ufungen abschalten\\ pacman -Rs & Paket mit allen Abh"angigkeiten deinstallieren\\ pacman -Rss & Paket mit allen Abh"angigkeiten und deren Abh"angigkeiten deinstallieren\\ pacman -D & Status eines installierten Programms "andern ohne eine Neuinstallation\\ pacman -Qi & Info "uber ein installiertes Paket anzeigen\\ pacman -Si & Info "uber ein zu installierendes Paket anzeigen\\ pacman -Sw & Paket herunterladen und noch nicht installieren\\ pacman -S testing/ & Ein Paket aus einem bestimmten Repositorie installieren\\ pacman -U & Ein lokales Paket installieren\\ pacman -Runs & Ein Paket mit allen Anbh"angigkeiten deinstallieren\\ pacman -Qdt & Verwaiste Pakete anzeigen, die nicht mehr von anderen Paketen ben"otigt werden\\ pacman -Qet & Pakete anzeigen, die ausdr"ucklich installiert wurden, aber nicht von anderen ben"otigt werden\\ pacman -Scc & Leert den lokalen Speicher /var/cache/pacman/pkg\\ pacman -Sc & L"oscht nicht mehr ben"otigte oder alte Pakete aus /var/cache/pacman/pkg und aus /var/lib/pacman\\ pacman -Qi & Alle installierten Dateien des Paketes anzeigen\\ pacman -Qm & Pakete anzeigen, die sich in keinem aktivierten Repository sich befinden\\ pacman -Qu & Anzeige, f"ur welche von den Installierten Paketen Updates gibt\\ pacman -Qk & "Uberpr"uft alle Pakete auf fehlende Dateien\\ pacman -Fy & Die lokale Datenbank wird aktualisiert\\ pacman -Fs & Das Paket suchen, das die Datei enth"alt\\ pacman -Fsx & Suche nach regul"aren Ausdr"ucken, sonst wie -Fs\\ pacman -Fi & Alle Dateien des Paketes anzeigen\\ pacman-optimize & Die Pacman DB optimieren\\ \end{longtable} \end{justify}