Les principes de conception quant à la façon dont les gestionnaires de référentiel Linux se mettent à jour?

StackOverflow https://stackoverflow.com/questions/3944974

Question

Je sais qu'il ya d'autres applications également, mais compte tenu de yum / apt-get / aptitude / pacman êtes-vous des gestionnaires de paquets de base pour les distributions de Linux.

Aujourd'hui, j'ai vu sur mes fedora 13 boîte:

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

Et je commençais à me demander comment une telle mise à jour du paquet lui-même? Qu'est-ce que la conception est nécessaire pour assurer un programme peut se mettre à jour?

Peut-être que cette question est trop générale, mais je me sentais était plus approprié que programmers.SE pour une telle question étant qu'il est plus technique. S'il y a un endroit plus approprié pour cette sensation de question à me le faire savoir et je peux fermer ou un modérateur peut se déplacer.

Merci.

Était-ce utile?

La solution

Je ne sais pas comment fonctionnent ces systèmes particuliers, mais ...

  • systèmes unix modernes seront généralement un exécutable toléreront en cours d'exécution d'écraser sans hoquet, donc en théorie vous pouvez simplement le faire.
  • Vous pouvez le faire dans une prison chroot, puis déplacer ou quelque chose de similaire pour réduire le temps pendant lequel le système est vulnérable. Ajouter un système de fichiers, ce qui est tourillonnement un peu plus sûr encore.

Il me semble que le package-manager a besoin de tenir la base de données d'accès paquet dans la mémoire et pour se prémunir contre une condition de course là-bas. Encore une fois, la prison chroot et copie option est disponible comme une alternative à faible risque.

Autres conseils

  

Et je commençais à me demander comment une telle mise à jour du paquet lui-même? Quoi   la conception est nécessaire pour assurer un programme peut se mettre à jour?

Il est comme beaucoup de choses, vous n'avez pas besoin de « design » spécifiquement pour résoudre ce problème ... mais vous devez être au courant de certains « gotchas ».

Par exemple Unix aide par inodes de comptage de référence afin « vous » pouvez supprimer un fichier que vous utilisez toujours, et il va bien. Cependant, cela implique quelques choses que vous avez à faire, par exemple si vous avez des plugins, alors vous devez les charger avant vous exécutez démarrer une transaction ... même si le plug-in ne ferait courir à la fin de la transaction (parce que vous pourriez avoir une version différente à la fin).

Il y a aussi des choses que vous devez faire pour vous assurer que tout ce que vous mettez à jour des travaux, comme: les nouveaux fichiers POSER avant d'enlever les anciens fichiers. Et ne tronque pas les anciens fichiers, juste Délier. Mais ceux aussi vous aider.)

Utilisation de problèmes externes, que vous communiquez avec, peut être difficile (parce que vous ne pouvez pas exec une nouvelle copie de l'ancienne version après qu'il a été mis à jour). Mais cela ne fait souvent, et quand il est c'est pour des choses comme le téléchargement ... qui peut être fait un peu facile de se produire avant que les mises à jour.

Il y a aussi des choses qui ne sont pas un problème dans les clients de la ligne cmd comme yum / apt, par exemple si vous avez un programme qui va exécuter 2 + « mises à jour », alors vous pouvez avoir des problèmes si la première mise à jour a été au gestionnaire de paquets. déclassements font encore plus amusant :). Aussi démon comme processus devraient essentiellement jamais « charge » le gestionnaire de paquets, mais comme avec d'autres ... vous gotchas ont tendance à vouloir suivre cela de toute façon, pour d'autres raisons.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top