Thema: packaging
-
Dependency Confusion: wenn ein öffentliches Paket ein privates verdrängt
Löst ein Build Paketnamen sowohl über einen privaten als auch einen öffentlichen Index auf, kann ein Angreifer, der den privaten Namen öffentlich mit einer höheren Version veröffentlicht, seinen eigenen Code installiert bekommen; die pip-Dokumentation nennt --extra-index-url für private Pakete deshalb ausdrücklich unsicher. Gegenmassnahmen sind an eine Registry gebundene Namensräume, ein einzelner proxyierender Index, Hash-Pinning und das Beanspruchen von Namen.
-
Software mit dem Image Packaging System (pkg) installieren, aktualisieren und überprüfen
Der pkg-Client deckt Suche, Installation, Update, Deinstallation, Publisher-Verwaltung sowie Verify und Fix anhand der Paketmetadaten ab. pkg-Operationen berücksichtigen Boot-Umgebungen: Änderungen an Paketen, die einen Neustart erfordern, landen in einer neuen BE, die für den nächsten Boot aktiviert wird; andere Änderungen werden in der laufenden BE angewendet, bei der Standardrichtlinie mit einer Backup-BE, sobald kernelrelevante Inhalte betroffen sind.
-
Interner Paketspiegel oder -Cache für Linux-Clients: apt-cacher-ng und das reposync-Plugin von dnf
Apt-Cacher NG speichert Debian-/Ubuntu-Pakete bei Bedarf hinter einer HTTP-Proxy-Einstellung zwischen, während das reposync-Plugin von dnf ein vollständiges lokales Abbild eines gewählten RPM-Repositorys erstellt. Beide Ansätze vermeiden wiederholte Downloads, ohne die clientseitige Signaturprüfung zu schwächen, die unabhängig von der Herkunft der Daten aktiv bleibt.
-
Pips Fehlermeldung „error: externally-managed-environment“ und PEP 668
Pip verweigert ein globales „pip install“ mit „error: externally-managed-environment“, wenn die Distribution ihr System-Python gemäss PEP 668 als extern verwaltet markiert hat. Der Artikel erklärt die Bedeutung der Markierung EXTERNALLY-MANAGED, die Lösungen mit venv, pipx und apt in sinnvoller Reihenfolge und warum --break-system-packages nur der letzte Ausweg ist und keine Standardoption.
Maschinenlesbar: JSON