Frage

Ich weiß, es gibt auch andere Anwendungen, aber wenn man bedenkt yum / apt-get / aptitude / Pacman sind Sie Kernpaketmanager für Linux-Distributionen.

Heute sah ich auf meinem Fedora 13 Box:

(7/7): yum-3.2.28-4.fc13_3.2.28-5.fc13.noarch.drpm       |  42 kB     00:00     

Und ich Wunder begann wie funktioniert ein solches Paket Update selbst? Was Design benötigt wird, um ein Programm, um sicherzustellen, kann selbst aktualisieren?

Vielleicht ist diese Frage ist zu allgemein, aber ich fühlte mich so war besser geeignet als programmers.SE für eine solche Frage ist, dass es in der Natur mehr technischer Natur ist. Wenn es einen geeigneteren Ort für diese Frage fühlen sich frei lassen Sie mich wissen und ich kann ein Moderator schließen oder bewegen kann.

Danke.

War es hilfreich?

Lösung

Ich habe keine Ahnung, wie diese bestimmten Systeme funktionieren, aber ...

  • Moderne Unix-Systeme werden in der Regel eine ausführbare ohne Schluckauf tolerate überschreiben, so in der Theorie könnte man es nur tun.
  • Sie könnten es in einem chroot-Gefängnis tun und dann bewegen oder etwas ähnliches, die Zeit zu reduzieren, während die das System verwundbar ist. Fügen Sie ein Journaling-Dateisystem und das ist etwas noch sicherer zu machen.

Es fällt mir, dass der Paket-Manager muss das Paket Access-Datenbank im Speicher halten, als auch gegen eine Race-Bedingung dort zu versichern. Auch das chroot-Gefängnis und kopiert Option als geringeres Risiko Alternative zur Verfügung steht.

Andere Tipps

Und ich Wunder begann wie funktioniert ein solches Paket Update selbst? Was Design benötigt wird, um ein Programm, um sicherzustellen, kann selbst aktualisieren?

Es ist wie eine Menge Dinge, Sie zu „Design“ nicht benötigen speziell dieses Problem zu lösen ... aber Sie müssen sich bewusst bestimmte „Fallstricke“ sein.

Zum Beispiel Unix hilft durch Referenzzählung Inodes so „Sie“ eine Datei löschen, können Sie immer noch verwenden, und es ist in Ordnung. Allerdings bedeutet dies, ein paar Dinge, die Sie tun müssen, wenn Sie zum Beispiel Plugins haben, dann müssen Sie sie alle laden, bevor führen Sie eine Transaktion starten ... auch wenn das Plugin am Ende nur laufen würde die Transaktion (weil Sie eine andere Version am Ende haben könnten).

Es gibt auch einige Dinge, die Sie sicher, dass alles, was zu machen tun müssen, um Sie Werke aktualisieren, wie: Setzen Sie neue Dateien herunter, bevor alte Dateien zu entfernen. Und gestutzt nicht alte Dateien, nur unlink. Aber diejenigen, die Ihnen auch helfen.)

Die Verwendung externer Probleme, die mit denen Sie kommunizieren, kann schwierig sein (weil Sie nicht eine neue Kopie der alten Version exec kann, nachdem es aktualisiert worden ist). Aber das ist nicht oft getan, und wenn es es ist für Dinge wie das Herunterladen ist ... die etwas leicht gemacht werden kann, bevor alle Aktualisierungen geschehen.

Es gibt auch Dinge, die kein Problem in den cmd Linie Kunden wie yum / apt sind, zum Beispiel, wenn Sie ein Programm, das laufen soll 2+ „Updates“ können Sie Probleme haben, wenn das erste Update war zu den Paketmanager. Herabstufungen machen diese noch mehr Spaß :). Auch Daemon wie Prozesse sollten grundsätzlich nie „load“ der Paket-Manager, aber wie bei anderen gotchas ... Sie sind in der Regel wollen diese ohnehin folgen, aus anderen Gründen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top