command-line - para - ejecutar curl en windows
¿Cómo instalo los componentes de cygwin desde la línea de comando? (8)
¿Hay alguna herramienta en el paquete Cygwin similar a apt-get
en Debian o yum
en redhat que me permita instalar componentes desde la línea de comandos?
Existen algunos scripts que se pueden usar como simples gestores de paquetes para Cygwin. Pero es importante saber que siempre serán bastante limitados , debido a ... ehm ... Windows.
Instalar o eliminar paquetes está bien, cada administrador de paquetes para Cygwin puede hacerlo. Pero la actualización es un problema ya que Windows no le permite sobrescribir un ejecutable, que se está ejecutando actualmente. Por lo tanto, no puede actualizar, por ejemplo, Cygwin DLL o cualquier paquete que contenga el ejecutable ejecutado actualmente desde el propio Cygwin. También hay esta nota en la página de instalación de Cygwin :
"La razón básica para no tener un gestor de paquetes más completo es que dicho programa necesite acceso completo a todas las funciones POSIX de Cygwin. Sin embargo, es difícil proporcionarlo en un entorno libre de Cygwin, como el que existe en el primer Además, Windows no permite sobrescribir fácilmente los archivos ejecutables en uso, por lo que la instalación de una nueva versión de la DLL de Cygwin mientras un administrador de paquetes está utilizando la DLL es problemático ".
La configuración de Cygwin usa el registro de Windows para sobrescribir los ejecutables que están en uso y este método requiere un reinicio de Windows . Por lo tanto, es mejor cerrar todos los procesos de Cygwin antes de actualizar los paquetes , para que no tenga que reiniciar su computadora para aplicar realmente los cambios. La instalación de un nuevo paquete debe ser completamente sin molestias. No creo que ninguno de los administradores de paquetes excepto Cygwin''s setup.exe
implemente ningún método para sobrescribir los archivos en uso, por lo que simplemente fallaría si no puede sobrescribirlos.
Algunos administradores de paquetes para Cygwin:
http://github.com/transcode-open/apt-cyg
Actualización : el repositorio se deshabilitó recientemente debido a problemas de derechos de autor ( eliminación de DMCA ). Parece que el propietario del repositorio emitió el desmontaje de DMCA en su propio repositorio y creó un nuevo proyecto llamado Sage (ver abajo).
El mejor para mí Simplemente porque es uno de los más recientes. No utiliza setup.exe
de Cygwin, sino que implementa, lo que hace setup.exe
. Funciona correctamente para ambas plataformas, x86 y x86_64 . Hay muchas horquillas con características más o menos adicionales. Por ejemplo, la kou1okada fork es una de las versiones mejoradas , que es realmente genial.
apt-cyg es solo un script de shell, no hay instalación. Simplemente descárguelo (o clone el repositorio), hágalo ejecutable y cópielo en alguna parte en la RUTA:
chmod +x apt-cyg # set executable bit
mv apt-cyg /usr/local/bin # move somewhere to PATH
# ...and use it:
apt-cyg install vim
También hay un montón de horquillas con diferentes características.
sage
Otro gestor de paquetes implementado como un script de shell. No lo probé, pero en realidad se ve bien.
Puede buscar paquetes en un repositorio, enumerar paquetes en una categoría, verificar dependencias, enumerar archivos de paquetes y más. Tiene características que otros gestores de paquetes no tienen.
cyg-apt
Tenedor de original abandonado cyg-apt con mejoras y correcciones de errores. Tiene muchas funciones y está implementado en Python. La instalación se hace usando make
.
El cyg-get de Chocolatey
Si está utilizando Chocolatey, puede instalar el paquete cyg-get , que en realidad es un envoltorio simple de Cygwin''s setup.exe
escrito en PowerShell.
Cygwin''s setup.exe
También tiene un modo de línea de comando . Además, le permite actualizar todos los paquetes instalados a la vez (como apt-get upgrade
en Linux basado en Debian).
Ejemplo de uso:
setup-x86_64.exe -q --packages=bash,vim
Puede crear un alias para un uso más fácil, por ejemplo:
alias cyg-get="/cygdrive/d/path/to/cygwin/setup-x86_64.exe -q -P"
Entonces puede, por ejemplo, instalar el paquete Vim con:
cyg-get vim
La configuración de Cygwin acepta argumentos de línea de comandos para instalar paquetes desde la línea de comandos.
por ejemplo, setup-x86.exe -q -P packagename1,packagename2
para instalar paquetes sin interacción de la GUI (''modo de instalación desatendida'').
(Tenga en cuenta que debe usar setup-x86.exe
o setup-x86_64.exe
según corresponda).
Ver http://cygwin.com/packages/ para la lista de paquetes.
La respuesta de Dawid Ferenczy es bastante completa, pero después de probar casi todas sus opciones, descubrí que el cyg-get de Chocolatey era el mejor (al menos el único que podía conseguir para trabajar).
Yo quería instalar wget
, los pasos fueron los siguientes:
choco install cyg-get
Entonces:
cyg-get install wget
No hay ninguna herramienta específicamente en el instalador ''setup.exe'' que ofrezca la funcionalidad de apt-get. Sin embargo, hay un instalador de paquete de línea de comandos para Cygwin que se puede descargar por separado, pero no es del todo estable y depende de soluciones temporales.
apt-cyg: http://github.com/transcode-open/apt-cyg
Consulte la pestaña de problemas del proyecto para ver los problemas conocidos.
Para un instalador más conveniente, es posible que desee utilizar apt-cyg
como su administrador de paquetes. Su sintaxis es similar a apt-get
, que es un plus. Para esto, siga los pasos anteriores y luego use Cygwin Bash para los siguientes pasos
wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg
chmod +x apt-cyg
mv apt-cyg /usr/local/bin
Ahora que apt-cyg
está instalado. Aquí hay algunos ejemplos de cómo instalar algunos paquetes
apt-cyg install nano
apt-cyg install git
apt-cyg install ca-certificates
Por lo general, antes de instalar un paquete, uno debe saber su nombre exacto:
# define a string to search
export to_srch=perl
# get html output of search and pick only the cygwin package names
wget -qO- "https://cygwin.com/cgi-bin2/package-grep.cgi?grep=$to_srch&arch=x86_64" | /
perl -l -ne ''m!(.*?)<//a>/s+/-(.*?)/:(.*?)<//li>!;print $2''
# and install
# install multiple packages at once, note the
setup-x86_64.exe -q -s http://cygwin.mirror.constant.com -P "<<chosen_package_name>>"
Pregunta anterior, pero aún relevante. Aquí está lo que funcionó para mí hoy (26/06/16).
Desde el shell bash:
lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
install apt-cyg /bin
Quería una solución para esto similar a apt-get --print-uris
, pero desafortunadamente apt-cyg no hace esto. La siguiente es una solución que me permitió descargar solo los paquetes que necesitaba, con sus dependencias, y copiarlos al destino para su instalación. Aquí hay un script bash que analiza el resultado de apt-cyg
en una lista de URI:
#!/usr/bin/bash
package=$1
depends=$( /
apt-cyg depends $package /
| perl -ne ''while ($x = /> ([^>/s]+)/g) { print "$1/n"; }'' /
| sort /
| uniq)
depends=$(echo -e "$depends/n$package")
for curpkg in $depends; do
if ! grep -q "^$curpkg " /etc/setup/installed.db; then
apt-cyg show $curpkg /
| perl -ne ''
if ($x = /install: ([^/s]+)/) {
print "$1/n";
}
if (//[prev/]/) {
exit;
}''
fi
done
Lo anterior imprimirá las rutas de los paquetes que necesitan descarga, en relación con la raíz del espejo cygwin, omitiendo los paquetes que ya están instalados. Para descargarlos, escribí el resultado en un archivo cygwin-packages-list
y luego usé wget:
mirror=http://cygwin.mirror.constant.com/
uris=$(for line in $(cat cygwin-packages-list); do echo "$mirror$line"; done)
wget -x $uris
El instalador se puede usar para instalar desde un directorio de caché local. Tenga en cuenta que para que esto funcione, necesitaba copiar setup.ini
de un caché de paquete cygwin anterior al directorio con los archivos descargados (de lo contrario, el instalador no sabe qué es qué).