Paketmanager für eigene Pakete im Intranet



  • Hallo,

    ich bin auf der Suche nach einer Paketmanager für Windows, mit dem man eigene Pakete im Intranet bereitstellen kann.
    Hat jemand da Erfahrung und kann mir was empfehlen?



  • Erfahrung keine. ABer eine suche nach "winget self hosting" fand ich folgende seite:
    https://blogs.infosupport.com/hosting-your-own-winget-private-repository/

    eventuell hilft dir da weiter


  • Gesperrt

    Ja, WinGet und WingetUI sind erste Anlaufstellen für dich. 🙂 Der Vorteil ist natürlich, dass bei Tausenden von Computern im Intranet weniger Traffic "nach Außen" entsteht.



  • @DocShoe Geht es allgemein um igrnedwelche Pakete, oder schon um C++ Bibliotheken?

    Wenn es um C++ geht, würde ich mir mal Conan angucken, das macht auf mich einen ganz brauchbaren Eindruck.

    Das kann man so konfigurieren, dass man alles unter eigener Kontrolle hat: https://docs.conan.io/2/devops/conancenter/hosting_binaries.html#devops-conancenter-hosting-your-own-conancenter-fork



  • Danke für die Antworten, der Hinweis "self hosted" hat mich da schon ein Stück weitergebracht. Auf conan bin ich gestern auch schon gestossen, ich werde das heute mal testen.
    Die winget Lösung braucht eine MS Azure Subscription, das würde ich eher ungern machen wollen.



  • So, kurzes Update zu conan:

    Auf der Herstellerwebsite gibt es die Software "Artifactory", die serverseitig Pakete hosten kann. Die Installation und Konfiguration ist ziemlich problemlos, und auch das Erstellen und Hochladen eigener Pakete hat funktioniert.
    Jetzt stehe ich jedoch vor dem Problem, dass ich die Pakete per conan installieren möchte, und da komme ich nicht weiter. Habe jetzt schon div. google-Ergebnisse durchprobiert, allerdings hat davon nichts zufriedenstellen funktioniert.

    Ansatz 1)
    conan install mypackage -r myhost führt zu der Fehlermeldung "ERROR: Conanfile not found at d:\tmp\test\mypackage". Der Paketmanager erwartet die Datei conanfile.py oder conanfile.txt in dem Verzeichnis, in das das Paket installiert werden soll. Merkwürdig, ich dachte, das Paket weiß, welche Dateien es besitzt oder dass diese Datei Bestandteil des Pakets ist. Für diesen Ansatz muss also erst iwie an eine dieser Dateien kommen.

    Ansatz 2)
    conan download mypackage -r myhost lädt das Paket in den lokalen Cache herunter, aber leider nicht in das Verzeichnis, in dem man das Paket eigentlich haben möchte (d:\tmp\test\mypackage). Zusätzlich wird ein Unterverzeichnis mit einem Hash-Suffix erzeugt, in dem sich dann die Dateien und Ordner des Pakets befinden (zb. mypackage9a8b5b2f0cec7\src statt mypackage\src). Das Internet rät, sich den Inhalt des Ordners manuell in den eigentlichen Zielordner zu kopieren, aber das kann's ja iwie nicht sein.

    Mache ich da iwas falsch? Wie kann man mit conan ein Paket in ein bestimmtes Verzeichnis installieren?



  • @DocShoe So wie ich das verstehe, lädst du die Pakete nicht in ein bestimmtes Verzeichnis, sondern sagst Conan, in der conanfile.txt welche Abhängigkeiten es hat. Dann lädt Conan die Abhängigkeiten runter, und installiert diese.

    Aber, ich beziehe meine Infos vor allem hier her:
    https://docs.conan.io/2/tutorial/consuming_packages/build_simple_cmake_project.html



  • Wir möchten den Paketmanager für Prebuilt Binaries benutzen und die Binaries nicht durch conan bauen lassen. Wenn man sie durch conan bauen lässt kann man vermutlich die Ausgabeverzeichnisse setzen und im Buildprozess selber festlegen, was wo landet. Aber diesen Fall haben wir nicht, wir möchten einfach nur Binaries/Headerdateien vom Server holen und in ein bestimmtes lokales Verzeichnis auspacken lassen. Es scheint so, als wollte niemand sonst sowas machen und dass das wohl ein total abstruser Gedanke ist.



  • Hm, das klingt nicht, als ob ihr nach einem typischen Paketmanager sucht, der die Abhängigkeiten von Projekten verwaltet.

    Mein erster Gedanke bei deiner Beschreibung wäre irgendwie ne Git Instanz in der man die Header / Binaries ablegt und dann an die entsprechende Stelle klont.

    Aber, vielleicht habe ich das Problem auch noch nicht richtig verstanden.



  • @Schlangenmensch

    Ja, das hängt direkt mit git zusammen, da kann ich mich mit dem Gedanken der Submodules nicht wirklich anfreunden. Zumindest in meinem Fall habe ich eine Anzahl von Hilfsbibliotheken, von denen ich häufig mehrere in konkreten Projekten benötige. Wenn ich das dann alles per Submodule erledigen würde hätte ich ziemlich schnell zig Kopien der entsprechenden git-repos. Und wenn dann ein Fehler in einer dieser Bibliotheken gefunden wird müsste ich in allen Projekten für dieses Repo einen Pull machen, das ist nicht praxistauglich.
    Also versuche (mehr als ein Versuch ist das im Moment auch nicht) ich, die Bibliotheken als Pakete zu verwalten und statt Submodules zu benutzen. Ich muss da erst mal Erfahrung sammeln, was da im täglichen Umgang sinnvoll ist.

    Ich habe aber jetzt herausgefunden, wie sich mein Vorhaben lösen lässt:
    In der Datei conanfile.py kann man eine deploy(self) Funktion definieren und dort Code ausführen lassen. Über einen Kommandozeileparameter kann conan angewiesen werden, diese Funktion auszuführen, damit werden die Dateien dann in das lokale Verzeichnis entpackt:
    conan install --requires mypackage/1.0 --deployer-package=*



  • @DocShoe Hm, ok. Ich hatte überlegt, wenn es darum geht, direkt die Binaries zu verwalten, kann man die Binaries auch in ein Git Repo einchecken, ohne Submodule.

    Aber, vielleicht ist die Lösung mit Conan eleganter.



  • @DocShoe sagte in Paketmanager für eigene Pakete im Intranet:

    Danke für die Antworten, der Hinweis "self hosted" hat mich da schon ein Stück weitergebracht. Auf conan bin ich gestern auch schon gestossen, ich werde das heute mal testen.
    Die winget Lösung braucht eine MS Azure Subscription, das würde ich eher ungern machen wollen.

    Nein braucht es nicht unbedingt. Zu mindestens laut diesem Ergebnis der suche gibt es auch eine komplett self hosted umsetzung.

    https://github.com/jantari/rewinged

    rewinged is a self-hosted winget package source. It's portable and can run on Linux, Windows, in Docker, locally and in any cloud. rewinged reads your package manifests from a directory and makes them searchable and accessable to winget via a REST API.
    


  • @DocShoe sagte in Paketmanager für eigene Pakete im Intranet:

    ich bin auf der Suche nach einer Paketmanager für Windows, mit dem man eigene Pakete im Intranet bereitstellen kann.

    Ich hoffe das Thema ist noch nicht zu alt, aber SCCM wurde noch nicht erwähnt.

    Windows mit AD? Mit dem Microsoft System Center Configuration Manager kannst du per Powershell Skripten Silent Installs schreiben, die Benutzer dann im client-seitigen Software Center on-click installieren können.

    Natürlich gehts auch ohne SCCM, fast jedes Windows Package bietet eine Lösung zum Silent Install. Da bist du dann nur ein Doppelklick davon entfernt, um ein Windows Package zu installieren. Das machst du mit den Kommandozeilenoptionen.

    Mit SCCM kannst du Software Pakete bereitstellen uvm. Du kannst Windows Updates und Packete nur für spezifische Collections (Users/Computers) anbieten.

    Du brauchst allerdings Lizenzen für den SCCM.

    EDIT: Ich war jedenfalls eine Weile SCCM-Admin und kann die Lösung zur einfachen On-Click Installation nur empfehlen. Vor allem weil du auch volle Kontrolle darüber hast, was wer in deinem Intranet installieren darf.



  • @Schlangenmensch sagte in Paketmanager für eigene Pakete im Intranet:

    @DocShoe Hm, ok. Ich hatte überlegt, wenn es darum geht, direkt die Binaries zu verwalten, kann man die Binaries auch in ein Git Repo einchecken, ohne Submodule.

    Aber, vielleicht ist die Lösung mit Conan eleganter.

    Binaries in git klingt ungüstig.



  • Wir möchten den Paketmanager für Prebuilt Binaries benutzen und die Binaries nicht durch conan bauen lassen.

    Das würde generell auch gehen ... conan shreibt nicht vor, das packete compiliert werden, sondern das sie mit einem unterstützten Buildsystem (cmake mason vcpkg ... ) "erzeugt" werden, inklusive hilfe (helper scripts) zum finden der Pfade.
    Qt (nicht die receipes im conan repo sondern Ihr eigenes QT Repo für bestimmte Anwender ...) hatte sowas mal versucht, anstatt QT zu bauen, hat man im Background das QT Maintenance Tool dann zum download bemüht

    Aber eigentlich geht das schon bissi am conan prinzip vorbei ...

    Darf man fragen, warum ihr nicht extern bauen lassen wollt? License?

    Unter windows ist es "durchaus" üblich, Compilate mit nem setup auszuliefern und dann via Environment die Pfade anzugeben. Und dabei immer schon beschreiben welche umgebung man vorraussetzt, visual studio version, runtimes compiler flags etc ......

    viel mehr komfort bringt winget / vcpkg Imho auch nicht (also nicht für den Anbieter, für den User schon dank einheitlichen und vollständligem Update), wenn man nicht schon ne menge andere Packete über den Weg bekommt.

    linux & co ist dann meist ein eigenes Repo für die unterstützen distros / versionen ... etc
    ist oft ne menge maintenance, selbst wenn man schon gute scripte hat ... aber auch ne Menge abhängigleiten. Dann baut man unter Umständen oft und viel 🙂


Anmelden zum Antworten