Un package d'incorporation indique les différentes versions de packages qui peuvent être installés. Ces contraintes de version permettent de maintenir le système dans un état fontionnel au fil des mises à jour. Reportez-vous à Les packages d'incorporation pour plus d'informations sur les packages d'incorporation et les contraintes.
La rétrogradation ou la mise à niveau de certains packages incorporés vers une version différente de celle spécifiée par l'incorporation peut ne pas présenter de risque. La contrainte de version est exprimée par une facette version-lock.package spécifiée dans le package d'incorporation. La valeur par défaut de la facette version-lock.packagepkg / readonly est true. Pour assouplir la contrainte de version sur un package, définissez la valeur de sa facette version-lock. sur false.
Dans l'exemple suivant, vous souhaitez effectuer une rétrogradation à une version antérieure du package. La commande pkg update permet de rétrograder et de mettre à niveau les packages.
$ pkg list -af library/security/openssl NAME (PUBLISHER) VERSION IFO library/security/openssl 1.0.1.5-0.175.2.0.0.24.0 i-- library/security/openssl 1.0.1.5-0.175.2.0.0.23.0 --- $ pkg update library/security/openssl@1.0.1.5-0.175.2.0.0.23.0 Creating Plan (Solver setup): | pkg update: No matching version of library/security/openssl can be installed: Reject: pkg://solaris/library/security/openssl@1.0.1.5,5.11-0.175.2.0.0.23.0:20130916T191702Z Reason: This version is excluded by installed incorporation pkg://solaris/consolidation/userland/userland-incorporation@0.5.11,5.11-0.175.2.0.0.24.0:20131001T160408Z
La commande pkg contents illustre la manière dont cet contrainte de version est définie. Pour assouplir la contrainte de version sur ce package, définissez sa facette version-lock sur false. Puis retentez la rétrogradation. Notez qu'aucun nouvel environnement d'initialisation n'est créé, mais qu'un environnement d'initialisation de sauvegarde est créé. Reportez-vous à la section Propriétés d'image de la stratégie d'environnement d'initialisation pour obtenir des informations sur la création des environnements d'initialisation.
$ pkg contents -m userland-incorporation | grep 'library/security/openssl' depend facet.version-lock.library/security/openssl=true fmri=pkg:/library/security/openssl@1.0.1.5-0.175.2.0.0.24.0 type=incorporate $ pkg change-facet facet.version-lock.library/security/openssl=false Packages to update: 850 Variants/Facets to change: 1 Create boot environment: No Create backup boot environment: Yes PHASE ITEMS Removing old actions 1/1 Updating image state Done Creating fast lookup database Done Reading search index Done Building new search index 850/850 $ pkg update library/security/openssl@1.0.1.5-0.175.2.0.0.23.0 Packages to update: 1 Create boot environment: No Create backup boot environment: Yes DOWNLOAD PKGS FILES XFER (MB) SPEED Completed 1/1 10/10 1.6/1.6 0B/s PHASE ITEMS Removing old actions 3/3 Installing new actions 3/3 Updating modified actions 14/14 Updating package state database Done Updating package cache 1/1 Updating image state Done Creating fast lookup database Done Reading search index Done Updating search index 1/1 $ pkg list library/security/openssl NAME (PUBLISHER) VERSION IFO library/security/openssl 1.0.1.5-0.175.2.0.0.23.0 i--
Pour éviter que ce package soit rétrogradé ou mis à niveau, figez le package à la version actuelle. La lettre "f" qui s'affiche dans la liste de packages indique que le package est figé.
$ pkg freeze -c "Downgrade to avoid bug" library/security/openssl library/security/openssl was frozen at 1.0.1.5,5.11-0.175.2.0.0.23.0:20130916T191702Z $ pkg list library/security/openssl NAME (PUBLISHER) VERSION IFO library/security/openssl 1.0.1.5-0.175.2.0.0.23.0 if-
Pour réactiver la rétrogradation ou la mise à niveau, utilisez la commande pkg unfreeze pour supprimer le blocage de la version. Si le package est installé à une version inférieure à celle spécifiée dans le package d'incorporation, le paramétrage de la facette version-lock de ce package sur true permet l'installation de la version spécifiée dans le package d'incorporation.
Si d'autres packages installés ont des relations de dépendance require vis-à-vis du package que vous souhaitez rétrograder ou mettre à niveau, vous devrez peut-être également assouplir les contraintes de version de ces packages associés. Dans l'exemple suivant, les contraintes de version applicables au package hexedit ont été annulées, mais l'installation est rejetée en raison de contraintes de version applicables au package system/library.
$ pkg install editor/hexedit@1.2.12-0.175.2.0.0.25.0 Creating Plan (Solver setup): - pkg install: No matching version of editor/hexedit can be installed: Reject: pkg://solaris/editor/hexedit@1.2.12-0.175.2.0.0.25.0:20131014T170634Z Reason: All versions matching 'require' dependency pkg:/system/library@0.5.11,5.11-0.175.2.0.0.24.0 are rejected Reject: pkg://solaris/system/library@0.5.11,5.11-0.175.2.0.0.24.0:20131001T152820Z pkg://solaris/system/library@0.5.11,5.11-0.175.2.0.0.25.0:20131014T161136Z Reason: This version is excluded by installed incorporation pkg://solaris/consolidation/osnet/osnet-incorporation@0.5.11,5.11-0.175.2.0.0.24.0:20131001T150429Z
Outre les contraintes de version des packages individuels, vous pouvez également assouplir les contraintes de version des incorporations. Dans ce cas, l'attribution de la facette version-lock sur false vous permet de déverrouiller l'incorporation et de l'isoler du reste du système. Bien que le package d'incorporation soit déverrouillé, les packages qu'elle contient continuent d'être synchronisés.