¿Actualización e instalación de paquetes a través de la línea de comandos de Cygwin?

113

Soy un usuario de computadora ciego que usa Cygwin.

El programa de instalación no es muy accesible: la actualización, instalación y eliminación de paquetes específicos es bastante difícil, ya que debe usar las teclas simuladas del mouse para hacer clic y desplazarse.

¿Hay alguna forma de instalar / actualizar paquetes manualmente o instalarlos / actualizarlos a través de la línea de comandos?

Jared
fuente

Respuestas:

121

Instalar apt-cyg :

lynx -source https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
install apt-cyg /bin

Después de eso, podrá instalar el paquete "lynx", incluidas las dependencias, ejecutando:

apt-cyg install lynx
knorv
fuente
44
El repositorio no se ha movido : se ha emitido una queja DMCA contra transcode-open / apt-cyg. Por cierto, el usuario de Github svnpenn creó un tenedor llamado "sabio" al mismo tiempo, afirmando ser su sucesor
Lucas Cimon
Tuve que chmod + x apt-cyg para que sea ejecutable (en caso de que ayude a alguien)
Pedro A
23

Dado que algunas personas declararon correctamente que apt-cygnecesita wget y para obtenerlo apt-cygnecesita wget, existe una solución de bash solo para bootstrap wgeten bash puro.

Cree una función como esta en su mintty bash shell:

function __wget() {
    : ${DEBUG:=0}
    local URL=$1
    local tag="Connection: close"
    local mark=0

    if [ -z "${URL}" ]; then
        printf "Usage: %s \"URL\" [e.g.: %s http://www.google.com/]" \
               "${FUNCNAME[0]}" "${FUNCNAME[0]}"
        return 1;
    fi
    read proto server path <<<$(echo ${URL//// })
    DOC=/${path// //}
    HOST=${server//:*}
    PORT=${server//*:}
    [[ x"${HOST}" == x"${PORT}" ]] && PORT=80
    [[ $DEBUG -eq 1 ]] && echo "HOST=$HOST"
    [[ $DEBUG -eq 1 ]] && echo "PORT=$PORT"
    [[ $DEBUG -eq 1 ]] && echo "DOC =$DOC"

    exec 3<>/dev/tcp/${HOST}/$PORT
    echo -en "GET ${DOC} HTTP/1.1\r\nHost: ${HOST}\r\n${tag}\r\n\r\n" >&3
    while read line; do
        [[ $mark -eq 1 ]] && echo $line
        if [[ "${line}" =~ "${tag}" ]]; then
            mark=1
        fi
    done <&3
    exec 3>&-
}

Ahora puedes usarlo casi como wget:

__wget http://apt-cyg.googlecode.com/svn/trunk/apt-cyg > /usr/bin/apt-cyg && chmod 0755 /usr/bin/apt-cyg
Moreaki
fuente
Disculpe, @moreaki, pero hay una cosa que no puedo entender de apt-cyg: en el clásico instalador de Windows CygWin puedo / debo especificar la ubicación de los repositorios / paquetes, ya sea una de las (muchas) descargas ftp / http sitios o unidad local (en mi computadora). No veo esa opción en el sitio oficial de googlecode. ¿De dónde apt-cygdescarga los paquetes?
Sopalajo de Arrierez
Perdón por mi tardía respuesta. Acabo de hojear el código de apt-cyg en el sitio oficial de googlecode y para mí parece que el sitio de descarga seleccionado parece ser http://mirrors.kernel.org/sourceware/cygwin, como se especifica en findworkspace(), cuando no ha especificado el espejo usando la opción de línea de comando -m. Si especifica la línea de comando, se escribirá la información del servidor espejo /etc/setup/last-mirror.
Moreaki
La instalación de apt-cyg ya no depende de wget, ¿entonces probablemente nada de esto importa más? Utilizan Lynx (que parece estar integrado en Cygwin?) En su sitio web.
akauppi
@steven ¿Cuál es la razón de la edición mayorista que cambia más de una parte sustancial? Es más o menos una respuesta separada
azar
1
Luego, vota a favor y proporciona una respuesta competitiva. Si usted es el mantenedor de apt-cyg, no hay ninguna indicación en su perfil o en su resumen de edición o en ningún lugar visible que sugiera ese tipo de autoridad o antecedentes para ingresar con franjas de este tipo de ediciones
azar
21

El método oficial de instalación de apt-cyg es:

lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
install apt-cyg /bin

Dos pasos son mejores que tres. Entonces:

apt-cyg install nano

Por cierto, para que funcione necesitará instalar wget , tar , gawk y bzip2 para usar apt-cyg. Además de wget, los otros vienen con la instalación predeterminada de Cygwin.

Marc Climent
fuente
2
Para Cygwin de 64 bits, svny apt-cygpuede estar roto. Por lo tanto, es posible que tenga que usar el three stepenfoque wget para instalar apt-cygy luego reemplazar $mirror/setup...con las $mirror/x86_64/setup...líneas 98 y 105 del archivo apt-cyg.
sagunms
17

Antigua pregunta, pero para otros que googlearon y obtuvieron aquí: la configuración oficial tiene argumentos de línea de comando que me permitieron preparar un script * .bat simple, simplemente coloque la siguiente línea en, por ejemplo, "install-pkg.bat" y coloque ese archivo en su directorio raíz (por ejemplo, C: \ cygwin):

setup-x86.exe --no-desktop --no-shortcuts --no-startmenu --quiet-mode --root "%cd%" --packages %*

Debe descargar y colocar http://www.cygwin.com/setup-x86.exe (32 bits) o http://www.cygwin.com/setup-x86_64.exe (64 bits) en el mismo directorio. Ahora todo lo que tiene que hacer para instalar el paquete es:

install-pkg packagename

Positivo: la configuración oficial, siempre debería funcionar, para cualquier paquete. Negativo: la configuración oficial actual (junio / 2015) requiere derechos de administrador, aunque en realidad no lo necesita (por ejemplo, directorio raíz fuera de las carpetas del sistema).

cacahuete
fuente
1
buena respuesta, ya que es una herramienta que ya tienes en cualquier instalación de Cygwin; Sin embargo, ¿parece que no puede evitar que actualice todos los paquetes ya instalados? es bastante molesto si solo desea instalar un nuevo paquete; en otras palabras, no hay una línea de comandos equivalente a la opción "Conservar" del setup.exe gráfico
golimar
1
note que setup.exe ahora se llama setup-x86.exe, o una variante que depende de los bits de la CPU.
ErichBSchulz
El enlace está roto, ahora es: cygwin.com/faq/faq.html#faq.setup.cli ¿Puede editar eso en su respuesta? Gracias
Benj
No necesita derechos de administrador si usa el --no-adminconmutador (igual que -B).
cdlvcdlv
13

El archivo setup.exe de Cygwin, al menos en la versión 1.7 "beta", tiene un modo "desatendido" incorporado. Arrastre y suelte su acceso directo setup.exe en una ventana de comandos (o de lo contrario, prepárese para ejecutarlo con modificadores), y agregue -qpara el modo desatendido seguido de -Pnombres de paquetes separados por comas. Entonces, para mí, este lince instalado:

$ "C:\Documents and Settings\martind\Desktop\setup-1.7.exe" -q -P lynx
Martin Dorey
fuente
oye, funciona, pero ¿qué tal si quiero agregar algunos paquetes en el momento de la instalación, cómo hacerlo?
Johnydep
1
note que setup.exe ahora se llama setup-x86.exe, o una variante que depende de los bits de la CPU.
ErichBSchulz
7
setup-x86 -nq -s http://box-soft.com -P curl,git,make

o

setup-x86 -nq -s http://box-soft.com -P curl -P git -P make

Esto instalará cURL, git y make, sin atajos en modo silencioso.

Steven Penny
fuente
0

Hay un problema de huevo de gallina <=> con la respuesta aceptada . Si no obtuvo wgeto lynxdurante la instalación inicial, no puede usar apt-cyg. Así es como lo instalé wgetpara poder usarlo apt-cyg. (Utiliza las características de la CLI del cygwin setup exe ).

# check to see if you are running 64 bit cygwin
$ uname -a
CYGWIN_NT-10.0 WINDOWS-ABMESEI 2.6.0(0.304/5/3) 2016-08-31 14:32 x86_64 Cygwin

# if you are not using 64 bit, get http://www.cygwin.com/setup-x86.exe instead of...
$ curl -o cygwin-setup.exe http://www.cygwin.com/setup-x86_64.exe
$ chmod +x cygwin-setup.exe

# now you are ready to use it according to: https://cygwin.com/faq/faq.html#faq.setup.cli
$ cygwin-setup.exe --no-desktop --no-shortcuts --no-startmenu --quiet-mode --packages wget
Bruno Bronosky
fuente
-1

Para al menos paquetes que no requieren configuración posterior a la instalación, simplemente los desmarqué de la raíz '/' de cygwin. Necesitaba una versión anterior de subversion (1.7.14) que había superado las dos versiones manejadas por la configuración.

Una ventaja adicional es que el paquete queda fuera del mundo de administración de paquetes de cygwin y, por lo tanto, en una especie de lista negra ad hoc no se actualiza automáticamente con el paquete más nuevo si se mantienen los valores predeterminados.

Chris
fuente