Aktualizujesz i instalujesz pakiety za pomocą wiersza poleceń Cygwin?

113

Jestem niewidomym użytkownikiem komputera, który korzysta z Cygwin.

Program instalacyjny nie jest bardzo dostępny: uaktualnianie, instalowanie i usuwanie określonych pakietów jest dość trudne, ponieważ do klikania i przewijania należy używać symulowanych naciśnięć klawiszy myszy.

Czy istnieje sposób ręcznej instalacji / aktualizacji pakietów lub instalacji / aktualizacji za pomocą wiersza polecenia?

Jared
źródło

Odpowiedzi:

121

Zainstaluj apt-cyg :

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

Po tym będziesz mógł zainstalować powiedzmy pakiet „lynx” łącznie z zależnościami, uruchamiając:

apt-cyg install lynx
knorv
źródło
4
Repozytorium nie zostało przeniesione : skarga DMCA została wydana ponownie transcode-open / apt-cyg. Nawiasem mówiąc, użytkownik svnpenn z Github stworzył w tym samym czasie widelec o nazwie „mędrzec”, podając się za swojego następcę
Lucas Cimon
Musiałem chmod + x apt-cyg, aby był wykonywalny (na wypadek, gdyby komuś to pomogło)
Pedro A
23

Ponieważ niektórzy ludzie poprawnie stwierdzili, że apt-cygsam potrzebuje wget, a żeby go zdobyć apt-cyg, istnieje tylko bashowe rozwiązanie do bootstrapu wgetw czystej bashu.

Utwórz taką funkcję w swojej miętowej powłoce bash:

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>&-
}

Teraz możesz używać go prawie jak wget:

__wget http://apt-cyg.googlecode.com/svn/trunk/apt-cyg > /usr/bin/apt-cyg && chmod 0755 /usr/bin/apt-cyg
Moreaki
źródło
Przepraszam, @moreaki, ale jest jedna rzecz, której nie mogę zrozumieć z apt-cyg: w klasycznym instalatorze Windows CygWin mogę / muszę określić lokalizację repozytoriów / pakietów, czy będzie to jedno z (wielu) pobierania ftp / http witryny lub dysk lokalny (na moim komputerze). Nie widzę takiej opcji na oficjalnej stronie kodu Google. Skąd apt-cygpobierane są paczki?
Sopalajo de Arrierez
Przepraszam za spóźnioną odpowiedź. Właśnie przejrzałem kod apt-cyg na oficjalnej stronie kodu googlecode i wydaje mi się, że wybrana strona pobierania wydaje się http://mirrors.kernel.org/sourceware/cygwin, jak określono w findworkspace(), gdy nie podałeś kopii lustrzanej za pomocą opcji wiersza poleceń -m. Jeśli podasz wiersz poleceń, informacje o serwerze kopii lustrzanych zostaną zapisane /etc/setup/last-mirror.
Moreaki,
instalacja apt-cyg nie opiera się już na wget, więc czy to prawdopodobnie nie ma już znaczenia? Używają rysia (który wydaje się być wbudowany w cygwin?) Na swojej stronie internetowej.
akauppi,
@steven Jaki jest powód edycji hurtowej, która zmienia więcej niż znaczną część? Sama odpowiedź jest dość osobna
losowa
1
Następnie głosuj i podaj konkurencyjną odpowiedź. Jeśli jesteś opiekunem apt-cyg, nie ma żadnych informacji na twoim profilu, w podsumowaniu edycji lub nigdzie widocznych, które sugerowałyby tego rodzaju autorytet lub pochodzenie, aby włączyć się z zestawem tego rodzaju zmian
losowo
21

Oficjalna instalacja apt-CYG metoda jest:

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

Dwa kroki są lepsze niż trzy. Następnie:

apt-cyg install nano

Nawiasem mówiąc, aby działało, musisz zainstalować wget , tar , gawk i bzip2, aby móc korzystać z apt-cyg. Oprócz wget, pozostałe mają domyślną instalację Cygwin.

Marc Climent
źródło
2
Dla 64-bitowego Cygwin svni apt-cygmoże być zepsuty. Więc może trzeba użyć three steppodejście wget zainstalować apt-cyg, a następnie zastąpić $mirror/setup...z $mirror/x86_64/setup...liniami 98 i 105 pliku apt-CYG.
sagunms
17

Stare pytanie, ale dla innych, którzy google i dostali tutaj: Oficjalna konfiguracja zawiera argumenty wiersza poleceń, które pozwoliły mi przygotować prosty skrypt * .bat - wystarczy wstawić następujący wiersz np. „Install-pkg.bat” i umieścić ten plik w katalogu głównym (np. C: \ cygwin):

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

Musisz pobrać i umieścić http://www.cygwin.com/setup-x86.exe (32-bitowy) lub http://www.cygwin.com/setup-x86_64.exe (64 -bitowy ) w tym samym katalogu. Teraz wszystko, co musisz zrobić, aby zainstalować pakiet to:

install-pkg packagename

Pozytywne: oficjalna konfiguracja powinna zawsze działać dla każdego pakietu. Negatywne: bieżąca (czerwiec / 2015 r.) Oficjalna konfiguracja wymaga uprawnień administratora, nawet jeśli tak naprawdę nie jest potrzebna (np. Katalog główny poza folderami systemowymi).

peenut
źródło
1
fajna odpowiedź, ponieważ jest to narzędzie, które masz już w dowolnej instalacji Cygwin; wydaje się jednak, że nie możesz powstrzymać go przed aktualizacją wszystkich już zainstalowanych pakietów? jest to dość irytujące, jeśli chcesz po prostu zainstalować jeden nowy pakiet; innymi słowy, nie ma linii poleceń odpowiadającej opcji „Zachowaj” graficznego setup.exe
golimar
1
uwaga setup.exe nazywa się teraz setup-x86.exe - lub wariantem zależnym od bitów procesora.
ErichBSchulz
Link jest zepsuty, teraz jest to: cygwin.com/faq/faq.html#faq.setup.cli Czy możesz to zmienić w swojej odpowiedzi? Dzięki
Benj,
Nie potrzebujesz uprawnień administratora, jeśli użyjesz --no-adminprzełącznika (takiego samego jak -B).
cdlvcdlv
13

Cygwin's setup.exe, przynajmniej w wersji 1.7 „beta”, ma wbudowany tryb „nienadzorowany”. Przeciągnij i upuść skrót setup.exe w oknie poleceń (lub w inny sposób przygotuj się do uruchomienia go za pomocą przełączników) i dodaj -qdla trybu nienadzorowanego, a następnie -Pnazwy pakietów oddzielone przecinkami. Tak więc dla mnie ten zainstalowany ryś:

$ "C:\Documents and Settings\martind\Desktop\setup-1.7.exe" -q -P lynx
Martin Dorey
źródło
hej, to działa, ale co jeśli chcę dodać jakieś pakiety w czasie instalacji, jak to zrobić?
Johnydep
1
uwaga setup.exe nazywa się teraz setup-x86.exe - lub wariantem zależnym od bitów procesora.
ErichBSchulz
7
setup-x86 -nq -s http://box-soft.com -P curl,git,make

lub

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

Spowoduje to zainstalowanie cURL, git i make, bez skrótów w trybie cichym.

Steven Penny
źródło
0

Wystąpił problem z jajkiem kurczaka <=> z zaakceptowaną odpowiedzią . Jeśli nie otrzymałeś wgetlub lynxpodczas pierwszej instalacji, nie możesz użyć apt-cyg. Oto jak zainstalowałem, wgetaby móc korzystać apt-cyg. (Wykorzystuje funkcje CLI exe instalacji cygwin .)

# 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
źródło
-1

Przynajmniej dla pakietów, które nie wymagają konfiguracji po instalacji, po prostu rozpakowałem je z katalogu głównego cygwin „/”. Wymagałem starszej wersji subversion (1.7.14), która wykroczyła poza dwie wersje obsługiwane przez setup.

Dodatkową zaletą jest to, że pakiet staje się poza światem zarządzania pakietami cygwin, dlatego w pewnym sensie czarna lista adhoc nie jest automatycznie aktualizowana o najnowszy pakiet, jeśli zostaną zachowane wartości domyślne.

Chris
źródło