Der Paketmanager verwaltet die installierten Softwarepakete (=Software in einem Paketformat) und kümmert sich auch um die Aktualisierung. Debian und darauf basierende Distributionen verwenden Software-pakete im deb-Format, andere Distributionen verwenden rpm-Pakete.
yast -i PAKETNAME
auf Suseyum install PAKETNAME
(CLI, rpm)CLI = Command Line ⇒ Komandozeile
andere: SmartPM (Beta-software)
Neben den o.g. Standardpaketmanagern addressieren alternative Herangehensweisen das Problem bei Distributionen nur bestimmte Versionen von Libraries zur Verfügung zu haben. Es kann von Vorteil sein alle benötigten binaries mitzubringen in einer Art Image.
Zusätzlich zu den alternativen Paketformaten gibt es die Idee auch Programme unabhängig von der Distribution einzusetzen, einerseits als Container andererseits als microservices. Dazu werd auch interne Netzwerke nötig. Hier eine Auswahl von Laufzeitumgebungen:
tasksel - Kategorienkonfiguration (Webserver, MailServer, Desktop, …)
Besser lesbar in der HTML-Ansicht.
Aktion | Debian (dpkg) | Debian (apt-get) | Debian (aptitude) | Redhat/CentOS(rpm) | Gentoo (portage + equery, emerge, revdep-rebuild aus dem gentoolkit 1) ) | Zypper (OpenSuse) |
---|---|---|---|---|---|---|
Informationen | ||||||
Distributionsversionsnummer anzeigen 2) | cat /etc/debian_version | cat /etc/redhat-release oder cat /etc/centos-release | ? | |||
installierte Pakete anschauen | dpkg -l oder dpkg --getselections 3) | ? | ? | yum list installed oder rpm -qa | emerge -ep world | rpm -qa |
Informationen über „PaketName“ anzeigen | dpkg -s PaketName | apt-cache show PaketName | aptitude show PaketName | yum info oder rpm -qi PaketName | ? | zypper info PaketName |
Paket zu einer vorhandenen Datei suchen | dpkg -S Dateiname | ? | ? | rpm -qf Dateiname | equery belongs Dateiname | rpm -qf Dateiname |
Dateien von Paket „PaketName“ auflisten | dpkg -L PaketName | ? | ? | rpm -ql PaketName | equery files PaketName | rpm -ql PaketName |
im Paket-Cache nach Paketname suchen | für installierte Pakete: dpkg -l | grep PaketName | apt-cache search PaketName | aptitude search PaketName | yum search PaketName | emerge -s PaketName | zypper search PaketName 4) |
zeigt Informationen zu den Abhängigkeiten eines Pakets an | apt-cache depends PaketName | rpm -q –requires PaketName (bei installierten Paketen) | ? | |||
Quellenkonfiguration grafisch | apt-setup (Datei /etc/apt/sources.list ) | ? | ? | ? | ? | |
Automatische Installation ohne interaktive Nachfragen | apt-get -qq install PaketName bzw. aptitude -y install PaketName Nachfragen von debconf müssen mit „export DEBIAN_FRONTEND=noninteractive “ abgestellt werden, zusätzlich können die Einträge force-confold (alte Konfiguration bevorzugen) bzw. force-confnew (neue Konfiguration bevorzugen) und force-confdef (Standard-aktion) in der /etc/dpkg/dpkg.cfg eingetragen werden und damit jegliche Nachfrage unterdrücken | ? | ? | ? | ||
Aktionen | ||||||
Paket „PaketName“ installieren | dpkg -i Dateiname.deb 5) | apt-get install PaketName | aptitude install PaketName | yum install Paketname oder yum localinstall Dateiname.rpm 6) oder rpm -i Dateiname.rpm | emerge Paketname | zypper install Paketname 7) oder rpm -i Dateiname.rpm 8) |
Paket „PaketName“ deinstallieren (Konfigurationsdateien bleiben) | dpkg -r PaketName | apt-get remove PaketName | aptitude remove PaketName | rpm -e PaketName | emerge --unmerge PaketName9) | zypper remove Paketname10) |
Paket mit Konfigurationsdateien deinstallieren | dpkg --purge PaketName | apt-get purge PaketName | aptitude purge PaketName | yum remove 11) | ? | zypper remove 12) |
Paket „PaketName“ nur downloaden | ? | apt-get -d install PaketName | ? | ? | ? | ? |
Sourcecode des Paketes „PaketName“ holen | ? | apt-get source PaketName | ? | ? | emerge --fetchonly PaketName | ? |
Liste verfügbarer Updates holen/Liste aktualisieren | - | apt-get -s update | aptitude -s update | yum list updates | emerge --sync | zypper list-updates 13) |
alle Pakete updaten | ? | apt-get upgrade | aptitude safe-upgrade 14) | yum update | emerge --update --deep world 15)16) | zypper up |
Paket „PaketName“ updaten | apt-get upgrade PaketName | ? | ? | emerge PaketName | (Sicherheits-)Updates: zypper patch 17) |
|
Gesamte Distribution updaten (Paketquellen müssen auf die neue Version angepasst werden!) | - | apt-get dist-upgrade | aptitude dist-upgrade | ? | - (permanente Updates) | Zunächst zypper updatenzypper in zypper libzypp && zypper dup |
Befehl simulieren | dpkg --no-act 18) | apt-get -s … | aptitude -s … | ? | emerge -p … | zypper -D … |
Installation überprüfen | ? | apt-get check | ? | ? | ? | ? |
Ein PAKET neu konfigurieren | dpkg-reconfigure PAKET (oder mit debconf ) | ? | ? | ? | ? | ? |
Ein PAKET in einer bestimmten Version installieren | dpkg -i Paketdatei.deb | apt-get install PAKETNAME=VERSIONSNUMMER | aptitude install PAKETNAME=VERSIONSNUMMER | yum install PAKETNAME == VERSIONSNUMMER | ? | ? |
Ein PAKET auf eine bestimmte Version fixieren (updates verhindern) | Aktuell installierte Version auf „hold“ setzen: echo PAKETNAME hold |dpkg –set-selections Rückgängig machen („unhold“): echo PAKETNAME install |dpkg –set-selections Alle Pakete anzeigen lassen die auf „hold“ stehen dpkg --get-selections |awk '$2 == "hold" { print $1 }' | apt-mark hold PAKETNAME anzeigen: apt-mark showhold | aptitude hold|unhold PAKETNAME aptitude search ~ahold | yum versionlock add Paket1,Paket2 Alternativ: In /etc/yum.conf exclude=Paket1,Paket2
bzw. | ? | ? |
Quellrepository eines bestimmten Paketes anzeigen | - | apt-cache showpkg $Paketname oder apt-cache search $Paketname (Zeile „Source“) | ? | yum list all $Paketname oder repoquery -i $Paketname 19) | ? | ? |
Paketquellen | ||||||
Paketquelle (Repository) hinzufügen | - | ? | ? | ? | ? | zypper addrepo Speicherort Alias 20) |
Paketquelle (Repository) löschen | - | ? | ? | ? | ? | zypper removerepo Alias 21) |
Debian: nächsten/besten Mirror-Server auswählen | - | ? | ||||
Paketliste (Pakete aus den Repositories) aktualisieren | - | apt-get update | aptitude update | yum makecache fast | emerge –sync | ? |
Liste der Paketquellen exportieren | - | Datei /etc/apt/sources.list sichern | ? | ? | zypper repos -e Dateiname.repo |
|
Liste der Paketquellen importieren | - | Datei /etc/apt/sources.list editieren | ? | ? | zypper ar Dateiname.repo |
|
Sonderfunktionen | ||||||
- | Debian: Paket „PaketName“ aus dem testing-Zweig installieren: apt-get -t testing PaketName | ? | ? | ? | Gentoo: „hard masked“-Pakete müssen manuell ausgewählt werden | |
Ablageorte wichtiger Dateien | ||||||
/var/lib/dpkg/available werden die Paketinformationen aller zur Verfügung stehender (installierbarer) Pakete; /var/lib/dpkg/status Informationen über den Status der Installation abgelegt; /var/lib/dpkg/info liegen zu jedem installierten Paket die vier Scripte (*.preinst, *.postinst, *.prerm, *.postrm), eine Liste aller enthaltener Dateien (*.list), die md5-Prüfsummendatei (*.md5sums) und evt. noch andere Informationen wie die zur Verfügung gestellten Libraries (*.shlibs). 22) |
Rpm-Pakete werden von den meisten Distributionen verwendet und sind vor Debians deb-Paketen das meist benutzte Paketformat.
Deb-Paket sind grundsätzlich ar Archive die noch weitere gzip-Archive enthalten.
Das Installations- und Konfigurationsprogramm APT (Advanced Package Tool) verspricht höheren Komfort und mehr Übersicht als dselect:
Frei wählbare Quellen für die Installation mit Apt werden unter „/etc/apt/sources.list“ [8] gespeichert. Sowohl eigene Laufwerke als auch FTP- oder HTTP-Server sind als Quellangaben möglich. Durch das Kommando „apt-cdrom add“ werden automatisch Einträge für die Installation von CD-ROM erzeugt.
siehe auch:
Mit „tasksel“ existiert ein semi-grafisches Installationswerkzeug, um Paketgruppen zu installieren. So kann man beispielsweise KDE (K Desktop Environment), German (deutsche Sprachanpassungen) oder C-Development (Entwicklungswerkzeuge für C-Programmierung) auswählen. Über die Abhängigkeiten der gewählten „Tasks“ (Aufgaben) werden dann sämtliche zum Task gehörenden Einzelpakete installiert.
Auch existieren mit aptitude, console-apt und gnome-apt Frontends zur Bedienung von APT. Unter Ubuntu gibt es synaptic oder adept.
/var/cache/apt/archives/
zwischen.Alternativ zum systemweiten Einstellen eines Proxy kann man auch apt direkt konfigurieren. Dazu müssen in /etc/apt/apt.conf oder in eine Datei in /etc/apt/apt.conf.d/ (/etc/apt/apt.conf.d/custom bietet sich beispielsweise an) folgende Zeilen eingefügt werden:
Aquire http::Proxy::http://[[user][:pass]@]host[:port]/
sudo apt-get install apt-transport-https
wird zu Segmentation faulty Tree
): Löschen der Dateien /var/cache/apt/pkgcache.bin
und /var/cache/apt/srcpkgcache.bin
.W: Während der Überprüfung der Signatur trat ein Fehler auf. Das Repository wurde nicht aktualisiert und die vorherigen Indexdateien werden verwendet. GPG-Fehler: http://security.debian.org wheezy/updates Release: Die folgenden Signaturen waren ungültig: BADSIG 9D6D8F6BC857C906 Debian Security Archive Automatic Signing Key (8/jessie) <ftpmaster@debian.org>
sudo apt -o Acquire::AllowInsecureRepositories=true update sudo apt upgrade
mv /var/lib/apt/lists /var/lib/apt/lists-old
/var/cache/debconf/config.dat
23)noch gesperrt hält muss beendet werden: fuser -v /var/cache/debconf/config.dat
Die Ausgabe
USER PID ACCESS COMMAND /var/cache/debconf/config.dat: root 4144 f.... dpkg-preconfigu
zeigt dass der Prozess mit der PID „4144“ die Datei gesperrt hält. Deshalb muss dieser beendet werden:
kill -9 4144
rm -R /var/lib/dpkg/lock
Ein betagtes, aber mächtiges Werkzeug für die Paketverwaltung ist dselect. Es kann Abhängigkeiten auflösen und Pakete unter anderem via FTP oder NFS, per Diskette und natürlich von CD-ROM installieren. Die Bedienung und Benutzerfreundlichkeit von dselect ist zwar nicht unumstritten, aber wer die Bildschirm-Ausgaben und die Online-Hilfe liest, bekommt mit dselect ein mächtiges Tool zur Paketverwaltung.
http://dugfaq.sylence.net/dug-faq.htm/ch-packet.htm
8.13 Kann ich die Paketauswahl eines Rechners sichern und 1:1 auf einen anderen übernehmen?
Ja, mit dpkg –get-selections „*“ > packetlist
wird die Paketliste in
der Datei packetlist gespeichert. „*“ ist nötig, damit auch die
Informationen über deinstallierte Pakete mit ausgegeben werden. Diese
Liste kannst Du dann mit dem Befehl dpkg –set-selections < packetlist
auf ein anderes System übertragen. Anschliessend musst Du noch dselect
install ausführen.
Gerade wenn man
wird man sich ein Paketrepository (übersetzt in etwa „Paketlager“) erstellen. Dieses hält die Pakete vor und dient als Paketquelle für die Clients. Dazu braucht man je nach Einsatzzweck viel oder wenig Platz auf der Festplatte und einen laufenden http oder ftp-Server.
Zur Erstellung kann man die Programme
benutzten.
Mit dem Programm alien kann man zwischen den Paketformaten konvertieren. Als Quellen und Ziele sind
möglich.
Mit checkinstall kann man aus dem Quellcode Softwarepakete im deb, rpm oder slackware-Format bauen. Da dies aber nur für die entsprechende Plattform geht, kann man für andere Plattformen den Suse Build Service nutzen.
#redhat yum install ruby-devel gcc make rubygems #debian: apt install ruby-dev build-essential # fpm install (alle distributionen) gem install --no-rdoc fpm
# Paket-environment (RPM): # redhat: yum install rpm-build redhat-rpm-config ruby-devel # debian: sudo apt install rpm librpmbuild8 #ruby-dev?
fpm -help
#!/bin/sh appname="myApp" version="1.0" arch="all" vendor="my IT-Company" maintainer="Admin <admin@domain.tld>" package_dependencies="java7-jdk" project_dir="/root/fpm/$appname/rootdir" #config-files (--config-files PATH): configs="--config-files ./etc/$appname.conf" # owned directories (Attention: only exclusivly used dirs!) directories="--directories /opt/$appname" # Initscripts: # --deb-init FILEPATH (deb only) Add FILEPATH as an init script # --deb-default FILEPATH (deb only) Add FILEPATH as /etc/default configuration # --deb-upstart FILEPATH (deb only) Add FILEPATH as an upstart script # --deb-systemd FILEPATH (deb only) Add FILEPATH as a systemd script output_deb="$packagename"_"$version"_"$arch".deb # build actual package: ===================================================================================================================================================== fpm -t deb -s dir -C "$project_dir" -n "$packagename" --depends $package_dependencies "$configs" "$directories" \ --architecture "$arch" --maintainer $maintainer --description "$description" --version "$version" --vendor "$vendor" if [ ! -e $output_deb ] then echo package "$output_deb" not found... exit 1 else # fake installation to test the package: dpkg -i --dry-run "$output_deb" # show contents of package: echo -e "package ready, contents are: \n" dpkg-deb -c "$output_deb" fi
fakeroot alien name.tar.gz
/etc/os-release
-d
; mehrere Begriffe werden mit ODER verknüpft; Eingrenzung auf installierte (-i
) oder nichtinstallierte Pakete (-u
) möglichfor package in package1 package2 package3 do echo "removing config files for $package" for file in $(rpm -q --configfiles $package) do echo " removing $file" rm -f $file done rpm -e $package done
zypper refresh
emerge --update --ask world
zypper lp
zypper lr
angezeigt wird