Czy w pakiecie Cygwin jest narzędzie podobne do tego apt-get
w Debianie lub yum
na redhat, które pozwala mi instalować komponenty z wiersza poleceń?
Czy w pakiecie Cygwin jest narzędzie podobne do tego apt-get
w Debianie lub yum
na redhat, które pozwala mi instalować komponenty z wiersza poleceń?
Odpowiedzi:
W instalatorze „setup.exe” nie ma żadnego narzędzia oferującego funkcjonalność apt-get. Istnieje jednak instalator pakietu wiersza poleceń dla Cygwin, który można pobrać osobno, ale nie jest on całkowicie stabilny i wymaga obejść.
apt-cyg: http://github.com/transcode-open/apt-cyg
Sprawdź kartę problemów dla projektu, aby zobaczyć znane problemy.
setup-x86.exe -q -P packagename1,packagename2
. Nie tak wyszukane apt-get
lub nawet, apt-cyg
ale w większości przypadków wystarcza. Możesz także uruchomić to z cmd.exe
(po zamknięciu Cygwin).
Konfiguracja Cygwin akceptuje argumenty wiersza poleceń, aby zainstalować pakiety z wiersza poleceń.
np. setup-x86.exe -q -P packagename1,packagename2
aby zainstalować pakiety bez interakcji z GUI („tryb instalacji nienadzorowanej”).
(Pamiętaj, że musisz użyć setup-x86.exe
lub setup-x86_64.exe
odpowiednio).
Zobacz http://cygwin.com/packages/, aby zapoznać się z listą pakietów.
setup-x86_64 --packages="openssh,python"
Aby uzyskać wygodniejszy instalator, możesz użyć go
apt-cyg
jako menedżera pakietów. Jego składnia jest podobna do
apt-get
, co jest plusem. W tym celu wykonaj powyższe kroki, a następnie użyj Cygwin Bash do następujących kroków
wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg
chmod +x apt-cyg
mv apt-cyg /usr/local/bin
Teraz to apt-cyg
jest zainstalowane. Oto kilka przykładów instalacji niektórych pakietów
apt-cyg install nano
apt-cyg install git
apt-cyg install ca-certificates
wget
i pobiera się apt-cyg
bez problemów. W którym momencie pojawia się 404?
Istnieje kilka skryptów, których można używać jako prostych menedżerów pakietów dla Cygwin. Ale ważne jest, aby wiedzieć, że zawsze będą one dość ograniczone , ze względu na ... ehm ... Windows.
Instalowanie lub usuwanie pakietów jest w porządku, każdy menedżer pakietów dla Cygwin może to zrobić. Ale aktualizacja jest uciążliwa, ponieważ system Windows nie pozwala na zastąpienie pliku wykonywalnego, który jest obecnie uruchomiony. Nie możesz więc aktualizować np. Cygwin DLL ani żadnego pakietu, który zawiera aktualnie działający plik wykonywalny z samego Cygwin. Na stronie instalacji Cygwin znajduje się również ta uwaga :
„Podstawowym powodem braku bardziej w pełni funkcjonalnego menedżera pakietów jest to, że taki program wymagałby pełnego dostępu do wszystkich funkcji POSIX Cygwin. Jest to jednak trudne do zapewnienia w środowisku wolnym od Cygwin, takim jakie istnieje na początku Ponadto system Windows nie umożliwia łatwego nadpisywania używanych plików wykonywalnych, więc instalacja nowej wersji biblioteki Cygwin DLL, gdy menedżer pakietów używa tej biblioteki, jest problematyczna ”.
Konfiguracja Cygwin używa rejestru systemu Windows do nadpisywania plików wykonywalnych, które są w użyciu, a ta metoda wymaga ponownego uruchomienia systemu Windows . Dlatego lepiej zamknąć wszystkie procesy Cygwin przed aktualizacją pakietów , więc nie musisz ponownie uruchamiać komputera, aby faktycznie zastosować zmiany. Instalacja nowego pakietu powinna przebiegać całkowicie bezproblemowo. Nie sądzę, aby którykolwiek z menedżerów pakietów poza Cygwin setup.exe
implementował jakąkolwiek metodę nadpisywania używanych plików, więc po prostu zawiódłby, gdyby nie mógł ich zastąpić.
Aktualizacja : repozytorium zostało niedawno wyłączone z powodu problemów z prawami autorskimi ( usunięcie DMCA ). To wygląda jak właściciel repozytorium wydał DMCA Takedown na własnym repozytorium i stworzył nowy projekt o nazwie Sage (patrz poniżej).
Dla mnie najlepszy. Po prostu dlatego, że jest jednym z najnowszych. Nie korzysta z Cygwina setup.exe
, raczej ponownie implementuje, co setup.exe
robi. Działa poprawnie na obu platformach - x86 oraz x86_64 . Istnieje wiele wideł z mniej lub bardziej dodatkowymi funkcjami. Na przykład widelec kou1okada to jedna z ulepszonych wersji , która jest naprawdę świetna.
apt-cyg to tylko skrypt powłoki, nie ma instalacji. Wystarczy go pobrać (lub sklonować repozytorium), uczynić go wykonywalnym i skopiować gdzieś do PATH:
chmod +x apt-cyg # set executable bit
mv apt-cyg /usr/local/bin # move somewhere to PATH
# ...and use it:
apt-cyg install vim
Jest też kilka widelców z różnymi funkcjami.
Kolejny menedżer pakietów zaimplementowany jako skrypt powłoki. Nie próbowałem, ale faktycznie wygląda dobrze.
Może wyszukiwać pakiety w repozytorium, wyświetlać pakiety w kategorii, sprawdzać zależności, wyświetlać pliki pakietów i nie tylko. Posiada funkcje, których nie mają inni menedżerowie pakietów.
Widelec porzuconego oryginału cyg-aptz ulepszeniami i poprawkami. Ma sporo funkcji i jest zaimplementowany w Pythonie. Instalacja odbywa się za pomocą make
.
Jeśli użyłeś Chocolatey do zainstalowania Cygwin, możesz zainstalować pakiet cyg-get , który jest w rzeczywistości prostym opakowaniem wokół Cygwin setup.exe
napisanego w PowerShell.
Posiada również tryb wiersza poleceń . Co więcej, pozwala na jednoczesną aktualizację wszystkich zainstalowanych pakietów (podobnie apt-get upgrade
jak w systemie Linux opartym na Debianie).
Przykładowe zastosowanie:
setup-x86_64.exe -q --packages=bash,vim
Możesz utworzyć alias, aby ułatwić korzystanie z niego, na przykład:
alias cyg-get="/cygdrive/d/path/to/cygwin/setup-x86_64.exe -q -P"
Następnie możesz na przykład zainstalować pakiet Vima z:
cyg-get vim
sage
jest rozwidleniem apt-cyg
najbardziej aktywnych współpracowników w ciągu ostatniego roku lub dwóch (Steven Penny). Wygląda na to, że na początku tego roku nie zgadzał się z oryginalnym apt-cyg
autorem (Stephenem Jungelsem) i wydał żądanie DMCA, kiedy rozwidlił projekt. Ponieważ Jungels (aka Transcode) jest oryginalnym autorem projektu, GitHub przywrócił oryginalny projekt wkrótce potem. Obecnie oba projekty są dostępne - chociaż oryginalny projekt nie miał żadnych nowych aktualizacji kodu od czasu podziału. To naprawdę nieporządna sytuacja.
Najpierw pobierz instalator ze strony: https://cygwin.com/setup-x86_64.exe (Windows 64bit), a następnie:
# 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
na przykład
# install vim
cygwin vim
# see other options
cygwin --help
Chciałem rozwiązania podobnego do tego apt-get --print-uris
, ale niestety apt-cyg tego nie robi. Poniżej przedstawiono rozwiązanie, które pozwoliło mi pobrać tylko potrzebne pakiety wraz z ich zależnościami i skopiować je do miejsca docelowego w celu instalacji. Oto skrypt bash, który analizuje dane wyjściowe apt-cyg
na listę identyfikatorów 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
Powyższe wypisze ścieżki pakietów, które wymagają pobrania, względem głównego lustrzanego katalogu cygwin, pomijając wszelkie pakiety, które są już zainstalowane. Aby je pobrać, zapisałem wynik do pliku, cygwin-packages-list
a następnie użyłem wget:
mirror=http://cygwin.mirror.constant.com/
uris=$(for line in $(cat cygwin-packages-list); do echo "$mirror$line"; done)
wget -x $uris
Instalatora można następnie użyć do zainstalowania z lokalnego katalogu pamięci podręcznej. Zauważ, że aby to zadziałało, musiałem skopiować setup.ini
z poprzedniej pamięci podręcznej pakietu cygwin do katalogu z pobranymi plikami (w przeciwnym razie instalator nie wie, co jest).
Stare pytanie, ale nadal aktualne. Oto, co zadziałało dla mnie dzisiaj (26.06.16).
Z powłoki bash:
lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
install apt-cyg /bin
wget
lub curl
jest prawdopodobnie lepszym narzędziem do tego. (Osobiście zainstalowałbym go w innym katalogu w moim, $PATH
a nie w /bin
.)
Odpowiedź Dawida Ferenczego jest dość kompletna, ale po wypróbowaniu prawie wszystkich jego opcji stwierdziłem, że cyg-get Chocolatey'ego jest najlepsze (przynajmniej jedyne, które udało mi się zabrać do pracy).
Chciałem zainstalować wget
, kroki były następujące:
choco install cyg-get
Następnie:
cyg-get wget
Zwykle przed zainstalowaniem pakietu trzeba znać jego dokładną nazwę:
# 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>>"