Оновлення та встановлення пакетів за допомогою командного рядка 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

Після цього ви зможете встановити, скажіть, пакет "рись", включаючи залежності, запустивши:

apt-cyg install lynx

4
Сховище не переміщається : а DMCA скарга видано Побийте перекодування відкрити / кв-Лебідь. Між іншим, користувач Github svnpenn одночасно створив виделку під назвою "мудрець", претендуючи на її наступника
Лукас Кімон,


Мені довелося chmod + x apt-cyg, щоб він був виконуваним (про всяк випадок, коли це комусь допомагає)
Педро A

23

Оскільки деякі люди правильно заявляли, що apt-cygсам по собі потребує wget, а для того, щоб отримати apt-cygвам потрібний wget, є єдине рішення для завантаження wgetв чистий 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>&-
}

Тепер ви можете використовувати його майже як wget:

__wget http://apt-cyg.googlecode.com/svn/trunk/apt-cyg > /usr/bin/apt-cyg && chmod 0755 /usr/bin/apt-cyg

Вибачте, @moreaki, але з apt-cyg я не можу зрозуміти: у класичному інсталяторі CygWin Windows я можу / повинен вказати розташування сховищ / пакетів, будь то один із (багатьох) ftp / http завантажень сайти або локальний диск (на моєму комп’ютері). Я не бачу такої опції на офіційному сайті googlecode. Звідки apt-cygзавантажуються пакунки?
Sopalajo de Arrierez

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

Встановлення apt-cyg вже не покладається на wget, тому нічого з цього, мабуть, вже не має значення? Вони використовують рись (яка, здається, вбудована в cygwin?) На своєму веб-сайті.
акауппі

@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 кв-Лебедя файлу.
sagunms

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 (32bit) або http://www.cygwin.com/setup-x86_64.exe (64bit) у той самий каталог. Тепер все, що вам потрібно зробити, щоб встановити пакет, це:

install-pkg packagename

Позитивно: офіційна установка, завжди повинна працювати для будь-якого пакета. Негативний: поточна (червня / 2015) офіційна установка вимагає прав адміністратора, хоча вона фактично не потребує (наприклад, кореневий каталог поза системними папками).


1
приємна відповідь, оскільки це інструмент, який у вас вже є в будь-якій установці Cygwin; однак, здається, ви не можете утримати оновлення всіх уже встановлених пакетів? це дуже дратує, якщо ви просто хочете встановити один новий пакет; інакше кажучи, немає командного рядка, еквівалентного параметру "Keep" для графічного setup.exe
golimar

1
Примітка setup.exe тепер називається setup-x86.exe - або варіантом залежно від бітів процесора.
ErichBSchulz

Посилання розірвано, зараз це: cygwin.com/faq/faq.html#faq.setup.cli Чи можете ви це відредагувати у своїй відповіді? Дякую
Бендж

Вам не потрібні права адміністратора, якщо ви використовуєте --no-adminкомутатор (те саме, що -B).
cdlvcdlv

13

Cygwin's setup.exe, принаймні у версії 1.7 "бета", має вбудований режим "без нагляду". Перетягніть ярлик setup.exe у вікно команд (або іншим чином підготуйтеся до запуску з перемикачами) та додайте -qдо режиму без нагляду, а потім -Pназви пакунків, розділених комами. Отже, для мене це встановлена ​​рись:

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

Ей, це працює, але як бути, якщо я хочу додати деякі пакети під час встановлення, як це зробити ??
Джоннідеп

1
Примітка 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 '/'. Мені потрібна старіша версія підриву (1.7.14), яка вийшла за рамки двох версій, якими обробляються установки.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.