Ich möchte ein APT-Repository auf einem Server einrichten, der einige Pakete bereitstellt.
Gibt es eine Möglichkeit, eine einzurichten, ohne Software auf dem Server zu installieren?
Wie müssen die Dateien organisiert werden?
Edit: Ich muss etwas falsch machen ... kann mir bitte jemand helfen? Ich habe das Repository unter http://quickmediasolutions.com/apt/dists
Ich bin nicht sicher, wo oder was, aber etwas ist falsch konfiguriert. Ich habe derzeit nur ein Paket und es ist für alle Architekturen.
Folgendes wurde zu meinem hinzugefügt /etc/apt/sources.list
:
deb http://quickmediasolutions.com/apt stable main
apt
package-management
repository
Nathan Osman
quelle
quelle
Antworten:
Das Einrichten eines trivialen Repositorys ist mit dpkg-scanpackages sehr einfach. Diese Seite wird erläutert , wie eine triviale Repo einzurichten, und dies wird erklärt , wie es zu benutzen (nach unten scrollen zu Beispiel 4).
quelle
deb http://quickmediasolutions.com/apt binary/
.Richten Sie einfach ein einfaches, aber signiertes Repository auf einem Webserver ein. Da die meisten anderen Tutorials etwas veraltet oder umständlich sind, werde ich versuchen, das Verfahren hier zu wiederholen. Die Erstkonfiguration ist etwas aufwändig, aber das einfache Build-Skript erleichtert die Verwaltung. Und Sie können einfach neue
*.deb
Dateien einfügen, aktualisieren oder einen Cron-Job damit beauftragen.Generieren Sie einige Signaturschlüssel
Zuerst müssen Sie einen
gpg
Signaturschlüssel für Pakete und Ihr Repository erstellen . Legen Sie einen (4) RSA-Signaturschlüssel und kein Kennwort fest und geben Sie ihm eine eindeutige Bezeichnung,$KEYNAME
wenn Sie dazu aufgefordert werden. (Weitere Beispiele setzen "dpkg1
" als Schlüsselnamen voraus.)Ich sagte kein Passwort, weil Ihr Webserver keinen eingebauten Affen hat, der es wiederholt eintippen kann. Und die signierten Pakete und das Repository sollen nur die Beschwerden der Update-Manager befriedigen. Laden Sie einfach beide Schlüssel in das neue
/apt/
Repository-Verzeichnis auf Ihrem Webserver hoch, löschen Sie densecret.gpg
Schlüssel jedoch nach der Initialisierung.CGI-Skript aktualisieren
Dies ist das einfache Update-Shell / CGI-Skript dafür:
Die drei
gpg
Zeilen müssen nur einmal ausgeführt werden, um das GPG-Setup in einem Verzeichnis$GNUPGHOME
(oberhalb des Dokumentstamms) zu initialisieren . Löschen Sie nur diesecret.gpg
nach Erfolg.Eine einzigartige Eigenschaft dieses kleinen Shell-Skripts ist, dass es alle
*.deb
Dateien akzeptiert , die Sie ablegen, aber auch rekursiv (ab einer Ebene) nach anderen sucht und diese mit Symbolen verknüpft. (BenötigtOptions FollowSymLinks
eventuell .htaccess .)Sie können dieses Skript entweder manuell als CGI oder per Cron-Job ausführen. Aber verstecken Sie es, oder verschieben Sie es besser noch aus dem Dokumentenstamm.
Da es sich um ein "triviales" Apt-Repository handelt, muss der folgende
apt-sources.list
Eintrag eingegeben werden:Dies ist für Repositorys mit einer einzigen Architektur geeignet, und wenn Sie nicht mit Hunderten von Paketen rechnen.
Paketsignierung
Das Signieren Ihrer individuellen Pakete ist ebenfalls trivial, sobald Sie Ihre gpg-Schlüssel eingerichtet haben:
(Dies sollte auf der Workstation erfolgen, auf der Pakete erstellt werden, nicht auf dem Repository-Webserver.)
Nicht signiertes Repository
Wenn Sie keine signierten Pakete benötigen, können Sie das Update-Skript auf Folgendes reduzieren:
Was immer noch von durchschnittlichen Benutzern verwendet werden kann, aber ein benutzerdefiniertes Flag benötigt für
apt.sources
:Verwenden Sie die
trusted=yes
Flagge jedoch nicht für alle Zwecke , oder wenn Sie sich über die Herkunft des Pakets nicht sicher sind.Für die Benutzerfreundlichkeit
Legen Sie für Endbenutzer einfach a
HEADER.html
im Repository-Verzeichnis ab. Apachenmod_auto_index
werden diesen Hinweis voranstellen:Alternativen
Es gibt heutzutage einige Tools zur Automatisierung der Repository-Verwaltung. Und es gibt sogar Repository-Online-Hoster und Paket-Build-Services ( gemfury , packagecloud , bintray usw.).
Eine recht bequeme Alternative ist prm . Es ist ein Ruby-Skript, das komplexe APT- und YUM-Repos erstellt. (Aber hoffen wir einfach, dass RPM irgendwann bald aussterben wird.) - Es ist am besten per installiert
gem install prm
.Und ich habe auch ein kleines Skript geschrieben, um dies auf ähnliche Weise zu automatisieren: http://apt.include-once.org/apt-phparchive - Bitte nicht, dass es nicht übermäßig robust und in PHP geschrieben ist (dies ist ausnahmsweise zufällig), und war ursprünglich für DEB-, RPM-over-APT- und Phar-Bundles gedacht.
Da dies eng mit der ursprünglichen Frage zusammenhängt, gibt es auch Werkzeuge, um Debian-Pakete einfacher zu erstellen. Etwas veraltet: EPM . Viel zeitgemäßer: FPM . Und meine persönliche Seite: XPM (faulerer Ansatz zum Packen von Skriptsprachen-Apps.)
quelle
wget …/public.gpg -O- | apt-key add -
dpkg-scanpackages -m
könnte ausreichen. Es werden weiterhin alle Architekturen in derselben Release-Datei aufgelistet. Aber solange jede .deb einen eindeutigen Namen hat / oder in verschiedenen Unterverzeichnissen (amd64 /, all /) gespeichert ist, sollte es funktionieren. Andernfalls entscheiden Sie sich für eines der komplexeren Repository-Tools.Ja. Du kannst das. Sie müssen nur die Dateien richtig organisieren und die Indexdateien erstellen. Wenn Sie die Verzeichnisstruktur im Dokumentenstamm Ihres Webservers ablegen, können die Pakete nur über den Webserver aufgerufen werden.
Hier finden Sie eine detaillierte Beschreibung, wie die Dateien organisiert werden müssen und wie die Indexdateien erstellt werden.
Sie können auch ein Tool namens reprepro verwenden, wenn Sie bereit sind, dieses eine Paket zu installieren. Dadurch wird die Administration etwas komfortabler.
quelle
Sie können vielleicht auch ein Launchpad-PPA in Betracht ziehen
quelle
Für alle, die mit diesem Fehler konfrontiert sind, nachdem sie die Antwort von Mario befolgt haben:
Mach Folgendes:
Ich habe meine
*.deb
Dateien in einemdebs
Ordner abgelegt .quelle