Чи є в пакеті Cygwin інструмент, подібний до apt-get
Debian або yum
Redhat, який дозволяє мені встановлювати компоненти з командного рядка?
Чи є в пакеті Cygwin інструмент, подібний до apt-get
Debian або yum
Redhat, який дозволяє мені встановлювати компоненти з командного рядка?
Відповіді:
Спеціально в інсталяторі 'setup.exe' немає інструменту, який пропонує функціональність apt-get. Однак існує програма встановлення пакету командного рядка для Cygwin, яку можна завантажувати окремо, але вона не є повністю стабільною і покладається на обхідні шляхи.
apt-cyg: http://github.com/transcode-open/apt-cyg
Перегляньте вкладку проблем проекту, щоб побачити відомі проблеми.
setup-x86.exe -q -P packagename1,packagename2
. Не настільки вигадливий, як apt-get
і навіть, apt-cyg
але це робить трюк у більшості випадків. І ви також можете запустити це з cmd.exe
(після закриття Cygwin).
Параметр Cygwin приймає аргументи командного рядка для встановлення пакетів з командного рядка.
наприклад, setup-x86.exe -q -P packagename1,packagename2
для встановлення пакетів без взаємодії з графічним інтерфейсом ("режим без нагляду").
(Зверніть увагу, що вам потрібно скористатися setup-x86.exe
або, setup-x86_64.exe
як це доречно.)
Дивіться http://cygwin.com/packages/ для списку пакунків.
setup-x86_64 --packages="openssh,python"
Для більш зручного інсталятора ви можете використовувати його
apt-cyg
як менеджер пакунків. Його синтаксис схожий на
apt-get
, що є плюсом. Для цього виконайте наведені вище дії, а потім використовуйте Cygwin Bash для наступних кроків
wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg
chmod +x apt-cyg
mv apt-cyg /usr/local/bin
Тепер apt-cyg
це встановлено. Ось кілька прикладів встановлення деяких пакетів
apt-cyg install nano
apt-cyg install git
apt-cyg install ca-certificates
wget
і це завантажує apt-cyg
без проблем. У який момент з'являється 404?
Існує кілька сценаріїв, які можна використовувати як прості менеджери пакунків для Cygwin. Але важливо знати, що вони завжди будуть досить обмеженими , через ... ем ... Windows.
Установка або видалення пакетів добре, кожен менеджер пакунків для Cygwin може це зробити. Але оновлення - це біль, оскільки Windows не дозволяє перезаписати виконуваний файл, який зараз працює. Таким чином, ви не можете оновити, наприклад, DLL Cygwin або будь-який пакет, який містить поточний виконуваний файл від самого Cygwin. На сторінці встановлення Cygwin також є ця примітка :
"Основна причина відсутності більш повнофункціонального менеджера пакунків полягає в тому, що такій програмі потрібен би повний доступ до всіх функцій POSIX від Cygwin. Це, однак, важко забезпечити в середовищі, що не підтримує Cygwin, як це існує спочатку. Крім того, Windows не дозволяє легко перезаписати використовувані виконувані файли, тому встановлення нової версії DLL Cygwin, коли менеджер пакунків використовує DLL, є проблематичним ".
Установка Cygwin використовує реєстр Windows для заміни виконуваних файлів, які використовуються, і цей метод вимагає перезавантаження Windows . Тому краще закрити всі процеси Cygwin перед оновленням пакетів , тому вам не доведеться перезавантажувати комп'ютер, щоб реально застосувати зміни. Установка нового пакету повинна бути повністю без зайвих проблем. Я не думаю, що жоден із менеджерів пакетів, крім Cygwin, не setup.exe
реалізує будь-який метод перезапису файлів, що використовуються, тому він просто вийде з ладу, якщо не зможе їх перезаписати.
Оновлення : сховище нещодавно було відключено через проблеми з авторським правом ( видалення DMCA ). Це виглядає як власник сховища видав DMCA партер на своєму власному сховище і створив новий проект під назвою Sage (див нижче).
Найкращий для мене. Просто тому, що це одна з найсвіжіших. Він не використовує Cygwin setup.exe
, а скоріше повторно реалізує, що setup.exe
робить. Працює правильно для обох платформ - x86 , а також x86_64 . Існує маса вилок з більш-менш додатковими функціями. Наприклад, вилка kou1okada - одна з удосконалених версій , що справді чудово.
apt-cyg - це просто сценарій оболонки, інсталяції немає. Просто скачайте його (або клонуйте сховище), зробіть його виконуваним і скопіюйте його кудись у 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
Також є купа виделок з різними можливостями.
Ще один менеджер пакунків, реалізований як сценарій оболонки. Я не пробував, але насправді це виглядає добре.
Він може шукати пакети у сховищі, списувати пакети в категорії, перевіряти залежності, список файлів пакунків тощо. Він має функції, яких інші менеджери пакунків не мають.
Вилка покинутого оригіналу цигз поліпшеннями та виправленнями. Він має досить багато функцій і реалізований в Python. Установка проводиться за допомогою make
.
Якщо ви використовували Chocolatey для встановлення Cygwin, ви можете встановити пакет cyg-get , який насправді є простою обгорткою навколо setup.exe
написаного в PowerShell Cygwin .
Він також має режим командного рядка . Більше того, це дозволяє оновлювати всі встановлені пакети одночасно (як apt-get upgrade
це робиться на Debian на базі Linux).
Приклад використання:
setup-x86_64.exe -q --packages=bash,vim
Ви можете створити псевдонім для легшого використання, наприклад:
alias cyg-get="/cygdrive/d/path/to/cygwin/setup-x86_64.exe -q -P"
Тоді ви можете, наприклад, встановити пакет Vim за допомогою:
cyg-get vim
sage
це вила apt-cyg
його найактивніших учасників за останній рік-два (Стівен Пенні). Схоже, на початку цього року він мав певну незгоду з оригінальним apt-cyg
автором (Стівеном Джунгельсом) і видав DMCA, коли він відхилив проект. Оскільки Jungels (він же Transcode), можливо, є оригінальним автором проекту, GitHub відновив оригінальний проект незабаром. В даний час обидва проекти доступні - хоча в початковому проекті не було оновлених нових кодів після розколу. Це справді безладна ситуація.
Спочатку завантажте інсталятор за адресою: https://cygwin.com/setup-x86_64.exe (Windows 64bit), потім:
# 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
напр
# install vim
cygwin vim
# see other options
cygwin --help
Я хотів вирішити подібне рішення apt-get --print-uris
, але, на жаль, apt-cyg цього не робить. Далі йде рішення, яке дозволило мені завантажувати лише потрібні мені пакунки залежно від їх залежностей та копіювати їх до цілі для встановлення. Ось bash-скрипт, який аналізує результати виходу apt-cyg
у список 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
Вище буде роздруковано шляхи пакетів, які потребують завантаження, відносно кореня дзеркала cygwin, опустивши будь-які пакунки, які вже встановлені. Щоб завантажити їх, я записав вихід у файл, cygwin-packages-list
а потім використав wget:
mirror=http://cygwin.mirror.constant.com/
uris=$(for line in $(cat cygwin-packages-list); do echo "$mirror$line"; done)
wget -x $uris
Потім інсталятор може бути використаний для установки з локального каталогу кеша. Зверніть увагу, що для цього мені потрібно було скопіювати setup.ini
кеш пакету cygwin у кешований пакет до каталогу із завантаженими файлами (інакше інсталятор не знає, що до чого).
Старе питання, але все ще актуальне. Ось що сьогодні працювало на мене (26.06.16).
З панцирної оболонки:
lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
install apt-cyg /bin
wget
або curl
, мабуть, кращий інструмент для цього. (І особисто я би встановив його в якомусь іншому каталозі в моєму, $PATH
а не в іншому /bin
).
Відповідь Давіда Ференчі досить повна, але після того, як я спробував майже всі його варіанти, я виявив, що цигарета Шоколаді була найкращою (принаймні єдиною, яку я міг взяти на роботу).
Я хотів встановити wget
, кроки були такі:
choco install cyg-get
Тоді:
cyg-get wget
Зазвичай перед встановленням пакета потрібно знати його точну назву:
# 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>>"