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


113

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

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

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

Ответы:


121

Установите 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

4
Хранилище не было перемещено : жалоба DMCA была снова выдана transcode-open / apt-cyg. Кстати, пользователь Github svnpenn одновременно создал форк с именем "sage", утверждая, что является его преемником
Лукас Кимон


Я должен был выполнить chmod + x apt-cyg, чтобы он был исполняемым (на всякий случай, если это кому-нибудь поможет)
Pedro A

23

Так как некоторые люди правильно заявили, что apt-cygсамому нужен wget, а для того, чтобы получить apt-cygwget, есть решение для начальной загрузки только для wgetbash.

Создайте такую ​​функцию в вашей оболочке mint:

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

Теперь вы можете использовать его почти как 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скачать пакеты?
Сопалахо де Арриерес

Простите за мой поздний ответ. Я только что просмотрел код apt-cyg на официальном сайте googlecode, и мне кажется, что выбранный сайт загрузки выглядит http://mirrors.kernel.org/sourceware/cygwin, как указано в findworkspace()примере, когда вы не указали зеркало с помощью параметра командной строки -m. Если вы укажете командную строку, информация о зеркальном сервере будет записана в /etc/setup/last-mirror.
Мореаки

Установка apt-cyg больше не зависит от wget, так что, вероятно, все это уже не имеет значения? Они используют lynx (который, кажется, встроен в cygwin?) На своем веб-сайте.
akauppi

@steven В чем причина оптового редактирования, которое меняется больше, чем существенная часть? Это в значительной степени отдельный ответ
случайно

1
Тогда понизьте и предоставьте конкурирующий ответ. Если вы являетесь сопровождающим apt-cyg, в вашем профиле, в сводке по редактированию или в любом другом месте нет никаких указаний, указывающих на то, какие полномочия или фоны следует использовать для обработки этих видов правок
случайно

21

Официальная установка 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 по умолчанию.


2
Для 64-битного Cygwin svnи apt-cygможет быть сломан. Таким образом , вы , возможно , придется использовать three stepWget подход к установке , apt-cygа затем заменить $mirror/setup...с $mirror/x86_64/setup...в строках 98 и 105 кв-Лебедя файла.
Сагунмс

17

Старый вопрос, но для других, которые 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) официальная установка требует прав администратора, даже если они на самом деле не нужны (например, корневой каталог вне системных папок).


1
хороший ответ, так как это инструмент, который у вас уже есть в любой установке Cygwin; однако, кажется, что вы не можете помешать ему обновить все уже установленные пакеты? это довольно раздражает, если вы просто хотите установить один новый пакет; другими словами, в графической программе setup.exe нет эквивалента командной строки, эквивалентного параметру «Сохранить»
golimar

1
note Примечание setup.exe теперь называется setup-x86.exe - или вариант в зависимости от битов процессора.
ErichBSchulz

Ссылка не работает, теперь это: cygwin.com/faq/faq.html#faq.setup.cli Можете ли вы отредактировать это в своем ответе? Спасибо
Бендж

Вам не нужны права администратора, если вы используете --no-adminпереключатель (так же, как -B).
cdlvcdlv

13

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

$ "C:\Documents and Settings\martind\Desktop\setup-1.7.exe" -q -P lynx

эй, это работает, но как насчет того, если я хочу добавить несколько пакетов во время установки, как это сделать?
Джоннидеп

1
note Примечание setup.exe теперь называется setup-x86.exe - или вариант в зависимости от битов процессора.
ErichBSchulz

7
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 без ярлыков в тихом режиме.



0

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

-1

По крайней мере, для пакетов, которые не требуют настройки после установки, я просто удалил их из корня cygwin '/'. Мне потребовалась более старая версия Subversion (1.7.14), которая вышла за пределы двух версий, обрабатываемых программой установки.

Дополнительным преимуществом является то, что пакет выходит за пределы мира управления пакетами cygwin и, таким образом, в своего рода специальном черном списке автоматически не обновляется новейшим пакетом, если сохраняются значения по умолчанию.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.