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.



  • 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.


Anmelden zum Antworten