pcpm install
Resolver, materializar, hardlink, restaurar.
pcpm install es el comando bestia. Se ejecuta tras cada cambio en
el workspace y es el comando adecuado al que recurrir en la duda.
pcpm install [options]
Qué hace
- Lee
Directory.Packages.propsy cada.csprojen el workspace. Construye la unión de dependencias directas. - Resuelve el grafo transitivo con el algoritmo descrito en Resolución de dependencias. BFS puro con unión de restricciones.
- Para cada paquete resuelto, consulta el feed y descarga el
.nupkg(si no está ya en el store). - Hashea el paquete, lo mueve al store direccionable por contenido bajo su SHA-256.
- Hace hardlink del árbol extraído del paquete desde el store a
~/.nuget/packages/<id>/<version>/. - Actualiza
pcpm.lockcon el grafo resuelto y los hashes de contenido. - Ejecuta
dotnet restorecontra el layout materializado.
Opciones
| Flag | Efecto |
|---|---|
--frozen | No actualiza pcpm.lock; falla si está desactualizado. |
--no-restore | Salta el paso de dotnet restore al final. |
--no-hardlink | Copia en lugar de hardlink (útil para depurar). |
--parallel <n> | Número de descargas concurrentes del feed. Por defecto: 8. |
--offline | No accede a la red. Falla si el store no tiene algo. |
--force | Re-resuelve y reescribe pcpm.lock aunque parezca actual. |
Ejemplos
# El comando del día a día — restauración caliente
pcpm install
# Instalación fría (sin red)
pcpm install --offline
# Build de CI que no necesita dotnet restore al final
pcpm install --no-restore
Rendimiento
La primera ejecución de pcpm install contra un store limpio
descarga cada paquete y lo hashea. Las ejecuciones siguientes están
acotadas por:
- Consultas al feed (una petición HTTP por paquete, pero con caché).
- Creación de hardlinks (microsegundos por paquete).
dotnet restore(sin cambios respecto a un flujo sin PCPM).
En una solución de 50 proyectos con 200 paquetes únicos:
| Escenario | Tiempo |
|---|---|
| Frío (store vacío) | 30-60s |
| Caliente (todo en caché) | 2-4s |
| Caliente + cambio pequeño | 2-3s |
El caso “caliente” es lo que obtiene CI cuando el store se cachea entre ejecuciones. Ver Integración con CI para la configuración de la caché.
Códigos de salida
pcpm install sale con:
0en éxito.1en conflicto de resolución (ver Resolución de dependencias).3en error de red (feed inaccesible).4en error de validación del lockfile (solo con--frozen).
Véase también
pcpm ci— variante estricta para CI.- Almacén direccionable por contenido — la capa de almacenamiento que hace esto rápido.