Solución:
Generalmente
man sudo
(el texto exacto puede variar, pero será similar):
-H
La opción -H (INICIO) solicita que la política de seguridad establezca la variable de entorno INICIO en el directorio de inicio del usuario de destino (raíz de forma predeterminada) según lo especificado por la base de datos de contraseñas. Dependiendo de la política, este puede ser el comportamiento predeterminado.
Entonces, ¿por qué es esto siquiera una opción?
Normalmente, el uso de “sudo” no cambia la variable de entorno $ HOME.
por ejemplo:
echo $HOME $USER
/home/testuser testuser
sudo bash -c 'echo $HOME $USER'
/home/testuser root
sudo -H bash -c 'echo $HOME $USER'
/home/root root
Puede ver que un sudo normal cambia qué usuario soy de “testuser” a “root”, pero no en qué está configurado $ HOME, mientras que un sudo -H también cambia la variable de “mi” directorio de inicio al directorio de inicio de root.
En tu caso
pip le advierte que se ejecutó como el usuario root y quería modificar cosas en $ HOME, que se estableció en ‘/ Users / petertao’, que no es propiedad de root (probablemente el usuario “petertao”). la advertencia indica que pip usa $ HOME para almacenar archivos en caché, pero ha desactivado su propio almacenamiento en caché debido a la discrepancia en la propiedad de la carpeta.
Por supuesto, mientras se ejecuta como root, pip puede modificar ‘/ Users / petertao / Library / Caches / pip’ porque root es (casi) todopoderoso. Esto puede resultar problemático más adelante porque un programa que se ejecuta sin root ya no puede sobrescribir o modificar estos archivos. En cambio, pip se niega a escribir en un directorio propiedad de otro usuario.