Cet article est recommandé pour:
--Développement sous Windows 10 avec Windows Update appliqué --Je veux économiser de la main-d'œuvre dans les travaux d'installation et de réglage --Je souhaite utiliser correctement différentes versions de la même application --Scoop installé
Si vous n'êtes pas sûr du type d'outil Scoop, ou si vous ne l'avez pas installé, vous pouvez lire Recommandation Windows Command Line In Tool Scoop (Basic). Je suis content.
Scoop expose un bucket [^ 1] pour la gestion des versions, mais pas pour toutes les applications.
[^ 1]: référentiel Git où les applications sont enregistrées par classification
Les applications qui sont versionnées de manière sécurisée dans Scoop sont enregistrées dans le compartiment «versions» (https://github.com/ScoopInstaller/Versions/tree/master/bucket). Inclut node.js, python, etc.
De plus, des buckets dédiés sont préparés pour PHP et java. Je vais.
Étant donné que chaque compartiment ne peut pas être utilisé dans l'état initial, ajoutez-le à Scoop avec scoop bucket add bucket name
avant de l'utiliser.
Ici, je voudrais l'essayer avec node.js, qui n'a pas encore de seau dédié.
Permet à «scoop bucket add versions» de gérer les anciennes versions de chaque application.
PS C:\Users\user> scoop bucket add versions
Checking repo... ok
The versions bucket was added successfully.
Cela s'est terminé simplement, mais cherchons node.js.
PS C:\Users\user> scoop search node.js
No matches found. #node.Non trouvé dans js
PS C:\Users\user> scoop search node
'main' bucket:
eventstore (4.1.2) --> includes 'EventStore.ClusterNode.exe'
node-chakracore (10.13.0)
nodejs-lts (10.15.3)
nodejs (12.2.0)
sliksvn (1.9.7) --> includes 'svn-populate-node-origins-index.exe'
'versions' bucket:
nodejs010 (0.10.48)
nodejs012 (0.12.18)
nodejs10 (10.15.3)
nodejs11 (11.15.0)
nodejs12 (12.2.0)
nodejs4 (4.9.1)
nodejs5 (5.12.0)
nodejs6 (6.17.1)
nodejs7 (7.10.1)
nodejs8 (8.16.0)
nodejs9 (9.11.2)
De nombreuses versions sont enregistrées, mais "noeudjs" dans le compartiment principal est la dernière version installée par défaut. Il semble que main dispose également d'une version LTS. Les spécifications de version autres que nodejs sont en fait enregistrées en tant qu'applications distinctes, et la version stable ou la dernière version de chaque version est enregistrée. Ici, je vais installer nodejs11 dans le compartiment des versions avec la dernière version et la version précédente.
PS C:\Users\user> scoop install nodejs nodejs11
Installing 'nodejs' (12.2.0) [64bit]
node-v12.2.0-win-x64.7z (9.5 MB) [============================================================] 100%
Checking hash of node-v12.2.0-win-x64.7z ... ok.
Extracting node-v12.2.0-win-x64.7z ... done.
Linking D:\Applications\Scoop\apps\nodejs\current => D:\Applications\Scoop\apps\nodejs\12.2.0
Persisting bin
Persisting cache
Running post-install script...
'nodejs' (12.2.0) was installed successfully!
Installing 'nodejs11' (11.15.0) [64bit]
node-v11.15.0-win-x64.7z (9.3 MB) [===========================================================] 100%
Checking hash of node-v11.15.0-win-x64.7z ... ok.
Extracting node-v11.15.0-win-x64.7z ... done.
Linking D:\Applications\Scoop\apps\nodejs11\current => D:\Applications\Scoop\apps\nodejs11\11.15.0
Persisting bin
Persisting cache
Running post-install script...
'nodejs11' (11.15.0) was installed successfully!
J'ai spécifié plusieurs noms d'applications (versions) au moment de l'installation et j'ai essayé de les installer tous en même temps. [^ 2] [^ 2]: même si vous spécifiez plusieurs applications complètement différentes, elles seront installées dans l'ordre spécifié. Vérifiez la version de node.js installée.
PS C:\Users\user> node --version
v11.15.0
En fonction de l'ordre spécifié au moment de l'installation, la version 11 installée ultérieurement est actuellement définie.
Vérifiez comment changer.
Pour basculer entre les versions de la même application, utilisez la commande scoop reset
.
La version à utiliser peut être changée en spécifiant nom de l'application de réinitialisation du scoop (= nom de la version)
et le nom de l'application (version).
PS C:\Users\user> scoop reset nodejs #Passer à la dernière version
Resetting nodejs (12.2.0).
Linking D:\Applications\Scoop\apps\nodejs\current => D:\Applications\Scoop\apps\nodejs\12.2.0
Persisting bin
Persisting cache
PS C:\Users\user> node --version #Vérification
v12.2.0
PS C:\Users\user> scoop reset nodejs11 #Revenir à l'ancienne version
Resetting nodejs11 (11.15.0).
Linking D:\Applications\Scoop\apps\nodejs11\current => D:\Applications\Scoop\apps\nodejs11\11.15.0
Persisting bin
Persisting cache
PS C:\Users\user> node --version #Vérification
v11.15.0
C'était juste une confirmation du changement de version, mais cela peut être fait facilement comme ça. Ceci est très similaire à la commande d'alternatives Linux. Même avec Java et php qui ont des buckets indépendants, vous pouvez basculer entre les versions, ** Java, voire le JDK de chaque fournisseur **. Ceci est très utile lors de la vérification du fonctionnement entre les versions pendant le développement.
Pour mettre à jour une application installée avec Scoop, utilisez la commande scoop update app name
.
C'est très simple et pratique [^ 3], mais il y a une petite astuce pour mettre à jour avec Scoop.
[^ 3]: Bien sûr, s'il y a un changement destructeur dans la mise à jour de l'application elle-même, il est nécessaire de le gérer, et il est plus sûr de faire une sauvegarde du fichier de paramètres, etc.
Lorsque vous mettez à jour manuellement les outils de ligne de commande, vous écrasez souvent les nouveaux fichiers dans les dossiers installés. En effet, il est nécessaire d'hériter des paramètres difficiles à modifier, tels que le PATH et l'emplacement de stockage des paramètres, mais bien sûr il n'est pas facile de restaurer la version précédente avec cette méthode.
Dans la mise à jour Scoop, au lieu d'écraser le même dossier, nous installons une nouvelle version dans un autre dossier et changeons le chemin vers l'application [^ 4]. Ce travail est le même que la commande de réinitialisation décrite ci-dessus. [^ 4]: Strictement parlant, la destination de connexion de la jonction est commutée et le répertoire de la version à accéder est changé https://github.com/lukesampson/scoop/wiki/The-'Current'-Version-Alias Pour cette raison, ** les anciennes versions de l'application restent sous le contrôle de Scoop **. Les variables d'environnement utilisées pour les paramètres (sauf s'il y a des changements destructifs dans la mise à niveau de version) et le PATH vers l'application n'ont pas été modifiés. Par ce mécanisme, en mettant à jour l'application installée avec Scoop Il est également possible de basculer l'application vers l'ancienne version lorsqu'un problème survient.
Selon l'aide, la commande scoop reset
est à l'origine une commande pour résoudre les conflits (entre plusieurs versions comme mentionné ci-dessus), mais en réalité, c'est entre les versions installées de l'application avec le même nom. Il peut également être utilisé pour basculer avec. [^ 5]
[^ 5]: Non mentionné dans la documentation officielle et peut ne pas être l'utilisation recommandée
Pour basculer entre les versions d'applications installées, saisissez scoop reset app name @ version
.
En supposant que vous disposez déjà de deux versions de Git, 2.20.1.windows.1 et 2.21.0.windows.1, essayez de basculer entre ces versions.
PS C:\Users\user> scoop reset [email protected]
Resetting git (2.20.1.windows.1).
Linking D:\Applications\Scoop\apps\git\current => D:\Applications\Scoop\apps\git\2.20.1.windows.1
Creating shim for 'git'.
Creating shim for 'gitk'.
Creating shim for 'git-gui'.
Creating shim for 'tig'.
Creating shim for 'git-bash'.
Creating shortcut for Git Bash (git-bash.exe)
PS C:\Users\user> git --version
git version 2.20.1.windows.1
PS C:\Users\user> scoop reset [email protected]
Resetting git (2.21.0.windows.1).
Linking D:\Applications\Scoop\apps\git\current => D:\Applications\Scoop\apps\git\2.21.0.windows.1
Creating shim for 'git'.
Creating shim for 'gitk'.
Creating shim for 'git-gui'.
Creating shim for 'tig'.
Creating shim for 'git-bash'.
Creating shortcut for Git Bash (git-bash.exe)
PS C:\Users\user> git --version
git version 2.21.0.windows.1
De cette façon, vous pouvez changer de version même entre les applications installées avec le même nom. Je pense qu'il peut être utilisé comme un rollback lors de la vérification de la compatibilité des fonctions ajoutées / corrigées à un certain point ou lorsqu'un problème survient dans la mise à jour. Combiné avec la gestion des versions de compartiment mentionnée ci-dessus, vous n'avez pas à craindre les mises à jour fréquentes de Java et node.js et les correctifs de sécurité **. Je suis très content.
Vous pouvez utiliser le nom de l'application info scoop
pour voir quelles versions ont été installées dans le passé pour profiter de cette fonctionnalité.
Voici un exemple de son exécution avec Git plus tôt.
PS C:\Users\user> scoop info git
Name: git
Version: 2.21.0.windows.1
Website: https://git-for-windows.github.io/
License: GPL-2.0 (https://spdx.org/licenses/GPL-2.0.html)
Manifest:
D:\Applications\Scoop\buckets\main\bucket\git.json
Installed:
D:\Applications\Scoop\apps\git\2.20.1.windows.1
D:\Applications\Scoop\apps\git\2.21.0.windows.1
Binaries:
cmd\git.exe cmd\gitk.exe cmd\git-gui.exe usr\bin\tig.exe git-bash.exe
Environment:
GIT_INSTALL_ROOT=D:\Applications\Scoop\apps\git\current
Notes
-----
To get Git to recognise OpenSSH, you will need to run
scoop install openssh
\[environment]::setenvironmentvariable('GIT_SSH', (resolve-path (scoop which ssh)), 'USER')
and then restart powershell.
Comme mentionné ci-dessus, la version installée est affichée à la fin de ʻInsalled: `. Veuillez spécifier cette dernière partie lors du changement de version.
Les correctifs de sécurité seront également rembobinés, donc s'il n'y a pas de problème avec la dernière version, vous devez utiliser la dernière version pour l'application du même nom. Il est également judicieux de rechercher dans vos versions et vos compartiments principaux des versions de maintenance gérées telles que LTS.
Comme mentionné précédemment, Scoop ne supprime pas les anciennes versions lors de sa mise à jour. La plupart des applications de ligne de commande ne sont pas volumineuses, mais elles ne peuvent pas être stockées indéfiniment.
Pour résoudre ce problème, il existe également une commande scoop cleanup app (version) name
qui supprime l'ancienne version.
Il n'est pas bon d'en accumuler trop, mais il y a un avantage à conserver l'ancienne version, il vaut donc mieux l'utiliser comme il convient.
La mise à jour des outils et des applications dans l'environnement de développement prend du temps et des efforts, mais Scoop réduit considérablement ce fardeau.
En particulier, nous vous recommandons de mettre à jour activement le runtime du langage géré par Scoop et d'utiliser scoop reset
de temps en temps.