¿Hay alguna herramienta en el paquete Cygwin similar a apt-get
Debian o yum
redhat que me permita instalar componentes desde la línea de comandos?
¿Hay alguna herramienta en el paquete Cygwin similar a apt-get
Debian o yum
redhat que me permita instalar componentes desde la línea de comandos?
Respuestas:
No hay ninguna herramienta específicamente en el instalador 'setup.exe' que ofrezca la funcionalidad de apt-get. Sin embargo, hay un instalador de paquetes de línea de comandos para Cygwin que se puede descargar por separado, pero no es completamente estable y depende de soluciones alternativas.
apt-cyg: http://github.com/transcode-open/apt-cyg
Consulte la pestaña de problemas del proyecto para ver los problemas conocidos.
setup-x86.exe -q -P packagename1,packagename2
. No es tan elegante como apt-get
o incluso, apt-cyg
pero funciona en la mayoría de los casos. Y también puede ejecutar esto desde cmd.exe
(después de cerrar Cygwin).
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 GUI ('modo de instalación desatendida').
(Tenga en cuenta que debe usar setup-x86.exe
o setup-x86_64.exe
según corresponda).
Consulte http://cygwin.com/packages/ para ver la lista de paquetes.
setup-x86_64 --packages="openssh,python"
Para un instalador más conveniente, puede usarlo
apt-cyg
como administrador de paquetes. Su sintaxis es similar a
apt-get
, que es una ventaja. 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 instalación de algunos paquetes.
apt-cyg install nano
apt-cyg install git
apt-cyg install ca-certificates
wget
y se descarga apt-cyg
sin problemas. ¿En qué punto aparece el 404?
Existen algunos scripts, que pueden usarse como simples administradores 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 de Cygwin puede hacerlo. Pero la actualización es una molestia 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 actualmente en ejecución 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 administrador de paquetes con más funciones es que dicho programa necesitaría acceso completo a toda la funcionalidad POSIX de Cygwin. Sin embargo, eso es difícil de proporcionar en un entorno libre de Cygwin, como existe en primer lugar instalación. Además, Windows no permite sobrescribir fácilmente los ejecutables en uso, por lo que instalar una nueva versión de la DLL de Cygwin mientras un administrador de paquetes usa 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 reiniciar 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 los cambios. La instalación de un nuevo paquete debe ser completamente sin problemas. No creo que ninguno de los administradores de paquetes, excepto Cygwin's, setup.exe
implemente algún método para sobrescribir archivos en uso, por lo que simplemente fallaría si no puede sobrescribirlos.
Actualización : el repositorio se deshabilitó recientemente debido a problemas de derechos de autor ( eliminación de DMCA ). Se ve como el propietario del repositorio emitió la DMCA en su propio repositorio y crea un nuevo proyecto llamado Sage (ver abajo).
El mejor para mi. Simplemente porque es uno de los más recientes. No usa Cygwin's setup.exe
, sino que lo vuelve a implementar, lo que setup.exe
hace. Funciona correctamente para ambas plataformas, x86 y x86_64 . Hay muchas horquillas con más o menos características adicionales. Por ejemplo, la bifurcación kou1okada 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 algún lugar de 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 tenedores con diferentes características.
Otro administrador de paquetes implementado como un script de shell. No lo intenté 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.
Tenedor de original abandonado cyg-aptcon mejoras y correcciones de errores. Tiene muchas características y está implementado en Python. La instalación se realiza utilizando make
.
Si usó Chocolatey para instalar Cygwin, puede instalar el paquete cyg-get , que en realidad es un simple envoltorio alrededor de Cygwin setup.exe
escrito en PowerShell.
También tiene un modo de línea de comando . Además, le permite actualizar todos los paquetes instalados a la vez (como lo apt-get upgrade
hace 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"
Luego puede, por ejemplo, instalar el paquete Vim con:
cyg-get vim
sage
es una bifurcación de apt-cyg
sus contribuyentes más activos durante el último año o dos (Steven Penny). Parece que a principios de este año tuvo un desacuerdo con el apt-cyg
autor original (Stephen Jungels) y emitió el derribo de la DMCA cuando bifurcó el proyecto. Dado que Jungels (también conocido como Transcode) es verificablemente el autor original del proyecto, GitHub restauró el proyecto original poco después. Actualmente, ambos proyectos están disponibles, aunque el proyecto original no ha tenido nuevas actualizaciones de código desde la división. Es una situación desordenada, de verdad.
Primero, descargue el instalador en: https://cygwin.com/setup-x86_64.exe (Windows 64bit), luego:
# move installer to cygwin folder
mv C:/Users/<you>/Downloads/setup-x86_64.exe C:/cygwin64/
# add alias to bash_aliases
echo "alias cygwin='C:/cygwin64/setup-x86_64.exe -q -P'" >> ~/.bash_aliases
source ~/.bash_aliases
# add bash_aliases to bashrc if missing
echo "source ~/.bash_aliases" >> ~/.profile
p.ej
# install vim
cygwin vim
# see other options
cygwin --help
Quería una solución similar a esto 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 en el destino para la instalación. Aquí hay un script bash que analiza la salida 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 deben descargarse, en relación con la raíz del espejo cygwin, omitiendo cualquier paquete que ya esté instalado. 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
desde un caché de paquete cygwin anterior al directorio con los archivos descargados (de lo contrario, el instalador no sabe qué es qué).
Antigua pregunta, pero aún relevante. Esto es lo que funcionó para mí hoy (26/06/16).
Del bash shell:
lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
install apt-cyg /bin
wget
o curl
es probablemente una mejor herramienta para esto. (Y personalmente, lo instalaría en algún otro directorio en mi en $PATH
lugar de en /bin
.)
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 poner a trabajar).
Quería instalar wget
, los pasos fueron los siguientes:
choco install cyg-get
Luego:
cyg-get wget
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>>"