Обновление и установка пакетов через командную строку Cygwin?

69961
Jared

Я слепой пользователь компьютера, который использует Cygwin.

Программа установки не очень доступна: обновление, установка и удаление определенных пакетов сделать довольно сложно, поскольку для нажатия и прокрутки приходится использовать симулированные нажатия клавиш мыши.

Есть ли способ вручную установить / обновить пакеты или установить / обновить их через командную строку?

110

9 ответов на вопрос

121
knorv

Установите apt-cyg :

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

После этого вы сможете установить, скажем, пакет «lynx», включая зависимости, запустив:

apt-cyg install lynx 
Хранилище ** не перемещено **: жалоба DMCA была [выдана] (// github.com/github/dmca/blob/master/2016-01-27-apt-cyg-counternotice.md) снова перекодировать -open / кв-Лебедь. Кстати, пользователь Github svnpenn одновременно создал форк с именем «sage», утверждая, что является его преемником. Lucas Cimon 8 лет назад 4
[Обновлена ​​ссылка для контраргумента DMCA] (https://github.com/github/dmca/blob/ffd9865c2b143512aa7e6e2467ffcbe95accba69/2016-01-27-apt-cyg-counternotice.md) ... [svnpenn / sage fork] (https) : //github.com/svnpenn/sage) Abdull 7 лет назад 2
Мне нужно было chmod + x apt-cyg, чтобы он был исполняемым (на всякий случай, если это кому-то поможет) Pedro A 6 лет назад 0
23
Moreaki

Since some people correctly stated that apt-cyg itself needs wget and in order to get apt-cyg you need wget, there is a bash only solution to bootstrap wget in pure bash.

Create a function like this in your mintty bash shell:

function __wget() { : $ local URL=$1 local tag="Connection: close" local mark=0 if [ -z "$" ]; then printf "Usage: %s \"URL\" [e.g.: %s http://www.google.com/]" \ "$" "$" return 1; fi read proto server path <<<$(echo $) DOC=/$ HOST=$ PORT=$ [[ x"$" == x"$" ]] && PORT=80 [[ $DEBUG -eq 1 ]] && echo "HOST=$HOST" [[ $DEBUG -eq 1 ]] && echo "PORT=$PORT" [[ $DEBUG -eq 1 ]] && echo "DOC =$DOC" exec 3<>/dev/tcp/$/$PORT echo -en "GET $ HTTP/1.1\r\nHost: $\r\n$\r\n\r\n" >&3 while read line; do [[ $mark -eq 1 ]] && echo $line if [[ "$" =~ "$" ]]; then mark=1 fi done <&3 exec 3>&- } 

Now you can use it almost like wget:

__wget http://apt-cyg.googlecode.com/svn/trunk/apt-cyg > /usr/bin/apt-cyg && chmod 0755 /usr/bin/apt-cyg 
Извините, @moreaki, но есть одна вещь, которую я не могу понять из apt-cyg: в классическом установщике Windows CygWin я могу / должен указать местоположение репозиториев / пакетов, будь то одна из (многих) загрузок ftp / http сайты или локальный диск (на моем компьютере). Я не вижу такой опции на официальном сайте GoogleCode. Откуда `apt-cyg` загружает пакеты? Sopalajo de Arrierez 10 лет назад 0
Простите за мой поздний ответ. Я только что просмотрел код apt-cyg на официальном сайте googlecode, и мне кажется, что выбранный сайт загрузки выглядит как `http: // mirrors.kernel.org / sourceware / cygwin`, как указано в` findworkspace () `, когда вы не указали зеркало с помощью параметра командной строки` -m`. Если вы укажете командную строку, информация о зеркальном сервере будет записана в `/ etc / setup / last-mirror`. Moreaki 9 лет назад 0
Установка apt-cyg больше не зависит от wget, так что, вероятно, все это уже не имеет значения? Они используют lynx (который, кажется, встроен в cygwin?) На своем веб-сайте. akauppi 8 лет назад 0
@steven В чем причина оптового редактирования, которое меняется больше, чем существенная часть? Это в значительной степени отдельный ответ random 8 лет назад 0
@steven Тогда это будет поводом для нового ответа, чтобы продемонстрировать это, а не для краткого изменения существующего ответа против намерения и голоса оригинального автора. random 8 лет назад 0
Тогда понизьте и предоставьте конкурирующий ответ. Если вы являетесь сопровождающим apt-cyg, то в вашем профиле, в сводке по редактированию или в любом другом месте нет указаний, указывающих на то, какие полномочия или фоны следует использовать для обработки изменений такого рода. random 8 лет назад 0
@ случайно ты должен @ упоминать меня, чтобы мне не приходилось проверять. Также я думаю, что это должно хорошо подойти http://github.com/transcode-open/apt-cyg/graphs/contributors Steven Penny 8 лет назад 0
21
Marc Climent

Официальная установка APT-Лебедя метод:

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

Два шага лучше, чем три. Затем:

apt-cyg install nano 

Кстати, чтобы это работало, вам нужно установить wget, tar, gawk и bzip2, чтобы использовать apt-cyg. Помимо wget, остальные поставляются с установкой Cygwin по умолчанию.

Для 64-битного Cygwin `svn` и` apt-cyg` могут быть повреждены. Поэтому вам, возможно, придется использовать подход «трехэтапного» wget для установки «apt-cyg», а затем заменить «$ mirror / setup ...» на «$ mirror / x86_64 / setup ...» в строках 98 и 105 файл apt-cyg. sagunms 10 лет назад 2
17
peenut

Старый вопрос, но для других, которые Google и попал сюда: Официальная установка имеет аргументы командной строки, которые позволили мне подготовить простой * .bat скрипт - просто поместите следующую строку, например, в "install-pkg.bat" и поместите этот файл в свой корневой каталог. (например, C: \ cygwin):

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

Вам необходимо загрузить и поместить http://www.cygwin.com/setup-x86.exe (32-разрядную версию ) или http://www.cygwin.com/setup-x86_64.exe (64-разрядную версию) в один каталог. Теперь все, что вам нужно сделать, чтобы установить пакет:

install-pkg packagename 

Положительный: официальная настройка, должна работать всегда, для любой упаковки. Отрицательный: текущая (июнь / 2015) официальная установка требует прав администратора, даже если они на самом деле не нужны (например, корневой каталог вне системных папок).

хороший ответ, так как это инструмент, который у вас уже есть в любой установке Cygwin; однако кажется, что вы не можете помешать ему обновить все уже установленные пакеты? это довольно раздражает, если вы просто хотите установить один новый пакет; другими словами, нет командной строки, эквивалентной опции «Keep» в графическом файле setup.exe. golimar 12 лет назад 1
note Примечание setup.exe теперь называется setup-x86.exe - или вариант в зависимости от битов процессора. ErichBSchulz 10 лет назад 1
Ссылка не работает, теперь это: https://cygwin.com/faq/faq.html#faq.setup.cli Можете ли вы отредактировать это в своем ответе? Спасибо Benj 8 лет назад 0
13
Martin Dorey

Setup.exe Cygwin, по крайней мере, в версии 1.7 «бета», имеет встроенный режим «без присмотра». Перетащите ярлык setup.exe в командное окно (или подготовьтесь к его запуску с помощью переключателей) и добавьте его -qв автоматический режим, за которым следуют -Pимена пакетов, разделенные запятыми. Итак, для меня это установленная рысь:

$ "C:\Documents and Settings\martind\Desktop\setup-1.7.exe" -q -P lynx 
эй, это работает, но как насчет того, если я хочу добавить несколько пакетов во время установки, как это сделать? Johnydep 11 лет назад 0
note Примечание setup.exe теперь называется setup-x86.exe - или вариант в зависимости от битов процессора. ErichBSchulz 10 лет назад 1
6
Steven Penny
setup-x86 -nq -s http://box-soft.com -P curl,git,make 

или же

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

Это установит cURL, git и make без ярлыков в тихом режиме.

2
LunchMoney

Я нашел два «подходящих» менеджера пакетов для cygwin. Один из них представляет собой скрипт на python, называемый cyg-apt, который вы можете загрузить с http://www.lilypond.org/~janneke/software/cyg-apt, а другой - apt-cyg, который вы можете найти по адресу http: // code. google.com/p/apt-cyg/

0
Bruno Bronosky

Существует проблема куриного яйца с принятым ответом . Если вы не получили wgetили lynxво время первоначальной установки, вы не можете использовать apt-cyg. Вот как я установил, wgetчтобы я мог использовать apt-cyg. (Он использует функции интерфейса командной строки cygwin 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 
-1
Chris

For at least packages that do not require post-install configuration, I have simply untarred them from the cygwin root '/'. I required an older version of subversion (1.7.14) which had passed beyond the two versions handled by setup.

An additional advantage is the package becomes outside the cygwin package management world and thus in a kind of adhoc blacklist is not automatically updated with the newest package if defaults are kept.