Packet Manager Frage (Debian)

Tablet

gesperrt
Registriert
14 Feb. 2018
Beiträge
16
Hallo,

lerne gerade mit Debian genauer umzugehen. Dabei habe ich aber ein Problem etwas zu verstehen und zwar geht es um die Packetverwaltung.

Worin liegt nun genau der Unterschied in:

#: apt
#: apt-get
#: dpkg
#: aptitude

aptitude ist mir der Unterschied klar, weil man eine GUI hat und da nett hin und her springen kann, um zu sehen, was man schon so installiert hat oder nicht. Also der Nachkommer von dselect. Der Rest ist mir unklar. Ich nutze zwar alle und weiss, wozu man die Befehle braucht, aber deren Unterschiede habe ich nie genau Begriffen.
 
apt - packete und quellen verwalten
apt-get - packete installieren
dpkg - debian package manager lässt dich *.deb packete installieren
aptitude - hast du dir selber erklärt

ich hoffe meine ausführungen sind richtig, die Linux Profis werden wohl gleich meckern ;)
 
Nur mal Auszüge zu "apt", "apt-get", "dpkg" und einen Link ins Debian Wiki, das auch noch mehr wiedergibt, bevor ich Blödsinn erzähle:

> whatis apt-get
apt-get (8) - APT-Werkzeug für den Umgang mit Paketen - - Befehlszeilenschnittstelle

> apt-get

apt-get ist ein Befehlszeilenwerkzeug zum Herunterladen von Paketen (und
Informationen zu diesen Paketen) von authentifizierten Paketquellen sowie
für deren Installation, Aktualisierung und Entfernung zusammen mit ihren
Paketabhängigkeiten.

> whatis apt
apt (8) - Befehlszeilenschnittstelle

> apt

apt ist ein Paketmanager für die Befehlszeile und bietet Befehle für die
Suche und Verwaltung von Paketen sowie für die Abfrage von Informationen
zu diesen Paketen.
Es stellt die gleiche Funktionalität zur Verfügung wie die spezialisierten
APT-Werkzeuge apt-get und apt-cache, aber seine Optionen sind eher passend
für die interaktive Nutzung.

Und soweit ich es verstehe, ist "apt" der Nachfolger von "apt-get". Allerdings gebe ich zu, habe ich mich nicht mit den detaillierten Unterschieden befasst.

Zu "dpkg" gibt es nur zu sagen: Es erlaubt, wie KingJamez sagt, Debian ".deb" zu installieren. Das ist daher der Debian-"Hauseigene" Paketinstalle bzw. Verwaltungsinstrument. Und wie man kann, nutzt apt (dann auch apt-get intern) beide "dpkg" um heruntergeladene Pakete zu installieren, Versionsnummern zu prüfen, oder zu Updates zu fahren. Vermutlich wird hier aber auch mehr stecken als nur "dpkg" Befehle, zum Beispiel die Verwaltung von Repositorys... das muss dir aber ein Guru erklären :D

> whatis dpkg
dpkg (1) - Paketverwalter für Debian

> dpkg

dpkg
dpkg: Fehler: eine Aktions-Option wird benötigt

Nutzen Sie dpkg --help für Hilfe zur Installation und Deinst. von Paketen [*];
Benutzen Sie »apt« oder »aptitude« für benutzerfreundliches Paketmanagement;
Nutzen Sie dpkg -Dhelp für eine Liste von Debug-Flags von dpkg;
Nutzen Sie dpkg --force-help für eine Liste von Optionen zum Erzwingen;
Nutzen Sie dpkg-deb --help für Hilfe zum Manipulieren von *.deb-Dateien;


Im Gründe würde ich fast so weit gehen zu sagen: apt und apt-get sind "Frontends" (also Hilfsmittel) um dpkg anzusteuern bzw. arbeiten zu lassen. Nur vielleicht mit "netterem" Interface.

Ansonsten würde ich dem Link " " folgen und dort nachlesen.
 
Zuletzt bearbeitet:
apt ist der "Nachfolger" bzw. die Konsolidierung von apt-get, apt-cache etc., also quasi das All-in-One-CLI-Tool. Ich nutze ausschließlich apt.
Siehe auch:

Dpkg ist für Operationen, die auf lokal installierte oder zu installierende Pakete angewendet werden. Also ohne Repositories.
 
  • Thread Starter Thread Starter
  • #6
Okay, was ihr hier schreibt habe ich mir schon so im Vorfeld gedacht.

Ich nutze immer apt-get. Warum? Ich habe es so immer in anderen tutorials gesehen und mir das einfach angeignet. Aber apt wird wohl die "moderne" Abwandlung sein. Wie die von "less" zu "more". Ob jetzt apt oder apt-get empfohlen wird, wird wohl mehr eine religioese Frage sein, zumindest denke ich das mal so.

dpkg habe ich eig. nur in peto, wenn ich i368 Architecture adden muss, um software zu installieren, welche nur mit 32Bit funktionieren. Ansonsten nutze ich es als Substitut zu "apt-cache show package" bspw. "dpkg -la | grep ...".

Bei apt ist mir nur aufgefallen, dass es i.vgl. zu apt-get farbig ist.

Man hat seine Mittel und wege mit Bash, aber auch mir sind manchmal die unterschied nicht klar und doch sollte man sie wissen m.M.n.
 
@Tablet: apt-get ist halt die Variante, wenn du genau weißt, was du haben willst. apt ist der Überbau, kann mehr, nutzt im Hintergrund unter Anderem apt-get.

dselect ist übrigens nicht wirklich veraltet - dselect wird für Updates gern genommen, um automatische Deinstallation zu ermöglichen. Ein apt-get upgrade deinstalliert nämlich keine Abhängigkeits-Pakete, selbst wenn es für die Installation des Updatekandidaten nötig wäre. apt-get dselect-upgrade hingegen zieht das System aktuell, und wirft veraltete Pakete auch weg (Beispiel: lib1 wurde von einem Paket installiert, im Updatekandidat wurde lib1 aber vom Paketbetreuer verworfen und durch die neuere und mächtigere lib2 ersetzt, die nur installiert werden kann, wenn lib1 entfernt wird. apt-get update hält den Updatekandidaten zurück, apt-get dselect-upgrade deinstalliert lib1 und installiert lib2 sowie den Updatekandidaten).

dpkg ist ein Reparaturtool, und teilweise nötig für DEB-Pakete, die nicht in den Quellen liegen. Sollte man nur einsetzen, wenn man weiß, was man da treibt.
 
Edit: Die Aussagen sind evtl. zwar korrekt aber nicht sauber, hier wird der Weg mit "apt-get" beschrieben, Post #9 von phre4k, der wohl besser ist.

----

Was es zu "dpkg" auch noch zu sagen gibt, wenn man Pakete "bewusst" (!) downgraden will, zum Beispiel weil man wegen einer Software eine bestimmte Version benötigt, geht das nur mit "dpkg" und einem .deb-Paket.

dpkg kann ein Paket auch bewusst downgraden. (respektiv: Man installiert eine ältere .deb Version über die neue Version von apt!)

"apt" und ich glaube auch "apt-get" erlauben dagegen nur den Weg "vorwärts", heißt, so bald eine neue Version in den Repositories/Paketquellen enthalten ist, trotz "downgrade" oder Installation mit "dpkg" und man nicht speziell "apt-mark hold Paketname" verwendet hat, wird geupgradet, so bald das Paket offiziell verfügbar ist und nicht auch für ein "dist-upgrade" vorenthalten worden ist.

> apt-mark hold pakete/unhold pakete/show

und ähnliches mußte ich aber bisher wirklich nur einmal einsetzen. Es ist aber gut zu wissen, das man mit dpkg alte Version "überinstallieren" kann (ob man das generell will, vielleicht nicht, aber der Fall kann eintreten) - aber wenn "apt" oder ein automatisches Update über die apt mal etwas bricht, kann man über dpkg und mit der richtigen .deb - wieder zu einer Version zurückkehren.

Ansonsten sei natürlich gesagt, wenn man ein Paket über dpkg installiert, was nicht in den Paketquellen enthalten ist, bzw. hinzugefügt worden ist in den Repositories in "sources.list" oder im Ordner "sources.list.d/softwareNameQuelle.list" , muß man sich selbst um Updates dafür bemühen.

Edit: Die Downgrade Option hängt natürlich auch davon ab, ob andere Pakete nicht schon die neue Version brauchen/andere Abhängigkeiten da sind, die man dann auch noch auflösen muß. ;)
 
Zuletzt bearbeitet:
Ich wollts grad sagen, normalerweise arbeitet man nicht mit dpkg am Paketmanager vorbei - dpkg entpackt nur und kann ein bisschen rumreparieren, was wichtig ist, wenn apt wegen inkonsistentem Status aussteigt, aber sonst ist das wirklich nur für Leute, die wissen, was sie damit treiben!
 
Danke , dass wusste ich nicht, dann hab ich das bisher falsch gehandhabt mit komischen dpkg "downgrades"/überinstallieren von neuen Versionen (kam aber nur einmal vor bei mir).

Löst die Variante über "apt-get" mit Versionsnummerangabe aber auch gleich (Versions-) Abhängigkeiten zu anderen Paketen auf? Bzw. werden die mit gedowngradet?
Oder muß man dann eher Paket für Paket selbst downgraden?
 
@theSplit: apt kümmert sich um ein konsistentes System, löst daher auch Abhängigkeiten richtig auf. Zumal Abhängigkeiten meist als "Version gleich oder höher als 2.3.xy" definiert sind - neuere Pakete machen daher selten Probleme.
 
Gut, das wollte ich nur klarstellen, weil du im zweiten Satz von "neuen" Paketen gesprochen hast.

Ich frage mich nur gerade, wenn ein Paket eine Abhängigkeit hat in Version 1.2.4, die explizit benötigt (wegen einer Funktion), aber aktuell 1.2.5 der Abhängigkeit aktuell ist, ein "von bis Version" erlaubt, gibt es das bzw. das "explizit"? Bzw. ist so etwas möglich?

Die Frage ist vielleicht auch etwas zu weit gedacht, aber ich stelle es mir vor, wenn ich Software schreibe die mit einer LibX 1.2 funktioniert, aber 2.0 bricht mein System. Im Grunde kann ich ohne "irgendeine" Angabe ja nichts "einschränken". Außer den Fehler festzustellen und dann zu hoffen das "ich" was kompatibel machen kann. Bzw. mir der Fehler gemeldet wird bzw. "es auffällt".

Wenn die Frage zu weit geht, lassen wir das mal sein, aber das kommt mir gerade in den Sinn.
 
Zuletzt bearbeitet:
  • Thread Starter Thread Starter
  • #17
Da ich gerade das Kapitel dazu vor mir liegen habe, hier direkt aus dem Debain Handbuch:

The dependencies are defined in the Depends field in the package header. This is a list of condi-
tions to be met for the package to work correctly — this information is used by tools such as apt
in order to install the required libraries, in their appropriate versions, that the package to be
installed depends on. For each dependency, it is possible to restrict the range of versions that
meet that condition. In other words, it is possible to express the fact that we need the pack-
age libc6 in a version equal to or greater than “2.3.4” (written “ libc6 (>=2.3.4) ”). Version
comparison operators are as follows:
• << : less than;
• <= : less than or equal to;
• = : equal to (note that “ 2.6.1 ” is not equal to “ 2.6.1-1 ”);
• >= : greater than or equal to;
• >> : greater than.

Mein System update mach ich immer mit:
apt-get update -y && apt-get upgrade -y && apt-get dist-upgrade -y

Installation and Upgrade
Here is what happens during an installation (or an update):
1. For an update, dpkg calls the old-prerm upgrade new-version .
2. Still for an update, dpkg then executes new-preinst upgrade old-version ; for a first
installation, it executes new-preinst install . It may add the old version in the last
parameter, if the package has already been installed and removed since (but not purged,
the configuration files having been retained).
3. The new package files are then unpacked. If a file already exists, it is replaced, but a
backup copy is temporarily made.
4. For an update, dpkg executes old-postrm upgrade new-version .
5. dpkg updates all of the internal data (file list, configuration scripts, etc.) and removes the
backups of the replaced files. This is the point of no return: dpkg no longer has access to
all of the elements necessary to return to the previous state.
6. dpkg will update the configuration files, asking the user to decide if it is unable to auto-
matically manage this task. The details of this procedure are discussed in section 5.2.3,
“Checksums, List of Configuration Files” page 84.
7. Finally, dpkg configures the package by executing new-postinst configure last-ver
sion-configured .
 
@Tablet: dist-upgrade gibt es für einen einzigen Zweck: Distributionen auf neue Majorversionen ziehen. Es ständig zu verwenden ist zwar möglich, aber unsinnig.

[src=bash]sudo apt-get update && sudo apt-get dselect-upgrade && sudo apt-get autoremove && sudo apt-get autoclean[/src]

Das hält dir dein System schön sauber und aktuell.
 
Zurück
Oben