Как начать знакомст...
 
Уведомления
Очистить все

Как начать знакомство с командами Linux: Cygwin


SuperUser
(@superuser)
Eminent Member
Присоединился: 2 года назад
Сообщения: 33
Topic starter  

Я знаю про виртуальные машины и про то, что Microsoft что-то там реализовала с поддержкой ядра Linux. Виртуальная машина требует ресурсов (не подходит для совсем слабых компьютеров). Другие варианты тоже не особо простые.

Cygwin устанавливается как обычное портативное приложение. После установки на рабочий стол добавляется ярлык при клике по которому открывается консоль Linux. При том это не просто эмулятор — здесь самые настоящие программы Linux — то есть как они будут работать точно также и в настоящей ОС Linux.

У такого подхода есть ограничения — в первую очередь, нет доступа к железу (к Wi-Fi картами, сетевым картам, видеокарте). Также отсутствует как таковой менеджер пакетов — пакеты для установки можно выбрать в установщике Cygwin. То есть установить то, что не входит в стандартную поставку Linux (например, sqlmap, WPScan и т. д.) будет проблематично.

То есть с одной стороны использовать как полноценный Linux не получится. Но с другой стороны здесь предостаточно программ на знакомства с командной строкой. Например, cURL, grep, wget, sed, vim и многие другие.

Например, можно тренироваться в парсинге (в этом окружении будут работать практически все примеры из «Парсинг сайтов: азы, продвинутые техники, сложные случаи»).

Пример запуска команды в Cygwin:

curl -s  https://hackware.ru/  | grep -E -o '<h3 class=ftitle>.*</h3>' | sed 's/<h3 class=ftitle>//' | sed 's/<\/h3>//'

В Cygwin имитирована структура директорий Linux, то есть вы также сможете начать знакомство с устройством этой операционной системы.

Для начала обучения работе в консоли Linux рекомендуется ознакомиться со статьями:

Как установить Cygwin

Перейдите на сайт https://www.cygwin.com/ , найдите там файл setup-x86_64.exe, скачайте и запустите его.

В процессе установки программа предложит выбрать зеркало для скачивания, папку для сохранения и программы для установки — всё это можно оставить без изменений.

После установки на рабочем столе появится ярлык.

SSH, Python, Vim, инструменты компиляции

Не надо воспринимать Cygwin как простую игрушку. Это весьма продвинутая среда, которая содержит множество инструментов Linux, в том числе для продвинутых пользователей

В Cygwin имеется полноценный SSH клиент, который позволяет подключаться к удалённым системам и даже генерировать SSH ключи. То есть вы можете использовать Cygwin для подключения к вашим удалённым серверам или другим системам Linux — Cygwin может заменить сторонние клиенты SSH, которые не всегда удобны

В Cygwin уже присутствует Python — вы можете начать осваивать данный язык без установки в Windows.

Консольный текстовый редактор, например, Vim — обязательный инструмент при редактировании конфигураций на удалённых системах — здесь вы можете в спокойной обстановке начать с ним знакомство.

Имеется Git — обновления своих репозиториев Git, либо можно использовать просто для скачивания (клонирования) репозиториев других разработчиков.

Совсем продвинутые пользователи могут даже воспользоваться инструментами компиляции.

В пакетах можно увидеть PHP, веб-сервер и многое другое.

Итак

Cygwin — это отличный вариант начать знакомство с Linux. Работает даже на слабых компьютерах и поддерживает очень многие возможности ОС Linux.

В этой теме будем рассматривать простые и сложные примеры использовании Cygwin, в том числе компиляцию и установку инструментов.


Цитата
MiAl
 MiAl
(@mial)
Участник Admin
Присоединился: 3 года назад
Сообщения: 208
 

Как получить доступ к дискам в Cygwin

Если при установке Cygwin вы оставили путь по умолчанию, то Cygwin храниться в папке C:\cygwin64. Именно эта папка является для Cygwin корнем файловой системы выше которой подняться невозможно.

В ОС Linux другие диски (если они есть) подключаются в выбранные точки монтирования ниже по дереву файловой системы. То есть в Cygwin можно просматривать список файлов, создавать новые файлы, редактировать и удалять существующие файлы на всех дисках ОС Windows (если позволяют права записи). Но нужно знать, куда они смонтированы.

Чтобы просмотреть список физических дисков в системе:

ls -l /dev/s*

Пример вывода:

brw-rw-rw- 2 MiAl Отсутствует 11, 0 окт 14 10:23 /dev/scd0
brw-rw-rw- 1 MiAl Отсутствует 8, 0 окт 14 10:23 /dev/sda
brw-rw-rw- 1 MiAl Отсутствует 8, 1 окт 14 10:23 /dev/sda1
brw-rw-rw- 1 MiAl Отсутствует 8, 2 окт 14 10:23 /dev/sda2
brw-rw-rw- 1 MiAl Отсутствует 8, 3 окт 14 10:23 /dev/sda3
brw-rw-rw- 1 MiAl Отсутствует 8, 4 окт 14 10:23 /dev/sda4
brw-rw-rw- 2 MiAl Отсутствует 11, 0 окт 14 10:23 /dev/sr0
lrwxrwxrwx 1 MiAl Отсутствует 15 июл 12 23:41 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx 1 MiAl Отсутствует 15 июл 12 23:41 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx 1 MiAl Отсутствует 15 июл 12 23:41 /dev/stdout -> /proc/self/fd/1

Как можно понять из предыдущего вывода, диск /dev/sda разделён на четыре раздела: /dev/sda1, /dev/sda2, /dev/sda3 и /dev/sda4.

Но здесь размещены диски как устройства — то есть к этим устройствам в Linux можно обращаться при форматировании, создании и удалении томов (возможно, Cygwin не может взаимодействовать с дисками на таком уровне). Для доступа к файлам дисков, их нужно смонтировать, то есть подключить к дереву файловой системы (подробности смотрите в статье «Структура директорий Linux. Важные файлы Linux»).

Чтобы просмотреть информацию о смонтированных дисках и точках монтирования, выполним команду:

mount

Пример вывода:

C:/cygwin64/bin on /usr/bin type ntfs (binary,auto)
C:/cygwin64/lib on /usr/lib type ntfs (binary,auto)
C:/cygwin64 on / type ntfs (binary,auto)
C: on /cygdrive/c type ntfs (binary,posix=0,user,noumount,auto)
Z: on /cygdrive/z type vboxsharedfolderfs (binary,posix=0,user,noumount,auto)

Из этой информации следует, что диск C смонтирован в директорию /cygdrive/c. Диск Z: (это сетевой диск) смонтирован в директорию /cygdrive/z.

Запись C:/cygwin64 on / означает, что в качестве корневой файловой системы (/) смонтирована папка C:/cygwin64.

Чтобы увидеть все диски системы, включая сетевые и включая флешки и другие внешние диски выполните команду:

ls -l /cygdrive/

Итак, к любому диску в Windows из Cygwin можно получить доступ через папку /cygdrive/. К примеру, для просмотра файлов и папок на диске C:

ls -l /cygdrive/c


ОтветитьЦитата
MiAl
 MiAl
(@mial)
Участник Admin
Присоединился: 3 года назад
Сообщения: 208
 

Как установить пакеты (программы) в Cygwin

Рассмотрим ситуацию, как в Cygwin установить дополнительные пакеты

Рассмотрим на примере: нам нужно установить ряд зависимостей, а именно следующие пакеты (они нужны для компиляции):

  • libssl-devel
  • ibbz2-devel
  • libgmp-devel
  • zlib-devel
  • libOpenCL-devel
  • libcrypt-devel

Это можно сделать двумя разными способами.

Первый способ установки программ в Cygwin

Во-первых, вы можете запустить установщик ещё раз, и на этапе выбора пакетов переключитесь в список «Full», введите имя пакета и дважды кликните на слово «Skip»:

 Чтобы вместо него появился номер версии:

Сразу после этого введите имя второго пакета (первый пакет как бы пропадёт — не надо об этом беспокоится), кликните на слово «Skip».

Повторите это для всех пакетов.

Когда закончите, очистите поле поиска и переключитесь на список «Pending» чтобы увидеть список пакетов для установки:

Нажмите далее и завершите установку выбранных пакетов. 

Второй способ установки программ в Cygwin

Возможно, вам больше понравится другой способ: переместите установочный файл setup-x86_64.exe в папку C:\cygwin64\ и затем откройте командную строку Windows (PowerShell) и просто выполните команду вида:

C:\cygwin64\setup-x86_64.exe -q -P ПАКЕТ1 -P ПАКЕТ2 -P ПАКЕТ3

К примеру, для моего примера по установке шести пакетов команда выглядит так:

C:\cygwin64\setup-x86_64.exe -q -P libssl-devel -P libbz2-devel -P libgmp-devel -P zlib-devel -P libOpenCL-devel -P libcrypt-devel

Сразу после запуска команды начнётся скачивание и установка требуемых пакетов CygWin.

 Выберите любой из этих способов.


ОтветитьЦитата
SuperUser
(@superuser)
Eminent Member
Присоединился: 2 года назад
Сообщения: 33
Topic starter  

apt-cyg — apt для Cygwin

Как установить apt-cyg

 Кроме показанного выше способа установки пакетов в Cygwin с помощью установщика самого Cygwin, имеется аналог программы apt (apt-get) для Cygwin, он называется apt-cyg.

 Чтобы установить apt-cyg выполните следующие команды:

wget  https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg 
install apt-cyg /bin

Если появится ошибка

-bash: wget: command not found

то сделайте так:

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

Для нормальной работы apt-cyg нужны пакеты lynx и wget. Если они у вас отсутствуют, то может потребоваться установить их обычным способом, с помощью установщика Cygwin.

Теперь для установки новых пакетов вы можете использовать команду вида:

apt-cyg install ПАКЕТ

Например:

apt-cyg install libxml2

Справка по команде apt-cyg

НАЗВАНИЕ

apt-cyg — утилита управления пакетами

ИСПОЛЬЗОВАНИЕ

apt-cyg [операция] [опции] [цели]

ОПИСАНИЕ

apt-cyg — это утилита управления пакетами, которая отслеживает установленные пакеты в системе Cygwin. Вызов apt-cyg включает в себя указание операции с любыми потенциальными параметрами и целями для работы. Целью обычно является имя пакета, имя файла, URL-адрес или строка поиска. Цели могут быть предоставлены как аргументы командной строки.

ОПЕРАЦИИ

install

Установить пакет(ы).

remove

Удалить пакет(ы) из системы.

update

Загрузить новую копию главного списка пакетов (setup.ini) с сервера, определённого в setup.rc.

download

Получить пакет(ы) с сервера, но ничего не устанавливать/не обновлять.

show

Показать информацию о данном пакете(ах).

depends

Создать дерево зависимостей для пакета.

rdepends

Создать дерево пакетов, зависящих от названного пакета.

list

Найти в каждом локально установленном пакете имена, соответствующие регулярному выражению. Если в командной строке не указаны имена пакетов, будут опрошены все установленные пакеты.

listall

Будет искать каждый пакет в главном списке пакетов (setup.ini) на предмет имён, соответствующих регулярному выражению.

category

Отобразить все пакеты, входящие в указанную категорию.

listfiles

Список всех файлов, принадлежащих данному пакету. В командной строке можно указать несколько пакетов.

search

Найти загруженные пакеты, которым принадлежат указанные файлы. Путь может быть относительным или абсолютным, можно указать один или несколько файлов.

searchall

Поиск по cygwin.com, чтобы получить информацию о файлах о пакетах. Предоставленная цель считается именем файла, и поисковая система вернёт пакет(ы), содержащий этот файл.

mirror

Установить зеркало; полный URL-адрес места, где можно найти базу данных, пакеты и подписи для этого репозитория. Если URL-адрес не указан, отобразит текущее зеркало.

cache

Установит каталог кэша пакетов. Если файл не найден в каталоге кеша, он будет загружен. Принимаются пути в формах Unix и Windows, а также абсолютные или обычные пути. Если каталог не указан, отобразить текущий кеш.

ОПЦИИ

--nodeps

Укажите этот параметр, чтобы пропустить все проверки зависимостей.

--version

Вывести версию и выйти. 

Ошибка «apt-cyg: command not found»

Если при запуске

apt-cyg

Вы получили ошибку

-bash: apt-cyg: command not found

то это означает, что вам нужно установить скрипт apt-cyg как это показано в начале данного поста.


ОтветитьЦитата
SuperUser
(@superuser)
Eminent Member
Присоединился: 2 года назад
Сообщения: 33
Topic starter  

Как обновить Cygwin

Обновление пакетов Cygwin выполняется также, как и установка.

Для обновления всех компонентов Cygwin и установленных пакетов, перейдите на сайт https://www.cygwin.com/ , найдите там файл setup-x86_64.exe, скачайте и запустите его.

Далее следуйте всех шагам установщика, при завершении его работы, Cygwin будет обновлён.


ОтветитьЦитата
SuperUser
(@superuser)
Eminent Member
Присоединился: 2 года назад
Сообщения: 33
Topic starter  

Как из Cygwin запустить программу в Windows

С помощью утилиты cygstart вы можете запустить программу в Windows прямо из Cygwin:

cygstart notepad

Если запускаемая программа не включена в PATH, то вам нужно указать полный путь до неё.

При желании, вы можете передать аргументы в запускаемую программу, например:

cygstart notepad C:\file.txt

ОтветитьЦитата
SuperUser
(@superuser)
Eminent Member
Присоединился: 2 года назад
Сообщения: 33
Topic starter  

Как конвертировать пути Windows и UNIX

С помощью утилиты cygpath вы можете конвертировать пути Windows и UNIX между собой.

Например:

Путь в формате Windows с указанием относительного пути до файла:

cygpath --windows ~/.bashrc
C:\cygwin64\home\MiAl\.bashrc

Путь в формате Linux для файла в смешанной записи:

cygpath --unix C:/cygwin/bin/ls.exe
/cygdrive/c/cygwin/bin/ls.exe

Путь до файла в директории Cygwin в формате Linux с указанием абсолютного пути до файла:

cygpath --unix C:\\cygwin\\bin\\ls.exe
/cygdrive/c/cygwin/bin/ls.exe

Обратите внимание, что bash интерпретирует обратную косую черту «\» как escape-символ (экранирование), поэтому вы должны ввести его дважды в оболочке bash, если хотите, чтобы он распознавался как буквальная обратная косая черта.

Вывод в смешанной записи:

cygpath --mixed ~/.bashrc
C:/cygwin64/home/MiAl/.bashrc

Чтобы показать путь до директории Desktop и выйти:

cygpath -D
/cygdrive/c/Users/MiAl/Desktop

Чтобы показать путь до директории Profiles и выйти:

cygpath -H
/cygdrive/c/Users

Чтобы показать путь до директории My Documents и выйти:

cygpath -O
/cygdrive/c/Users/MiAl/Documents

Чтобы показать путь до директории Programs в Start Menu и выйти:

cygpath -P
/cygdrive/c/Users/MiAl/AppData/Roaming/Microsoft/Windows/Start Menu/Programs

Чтобы показать путь до системной директории и выйти:

cygpath -S
/cygdrive/c/Windows/System32

Чтобы показать путь до директории Windows и выйти:

cygpath -W
/cygdrive/c/Windows

ОтветитьЦитата
SuperUser
(@superuser)
Eminent Member
Присоединился: 2 года назад
Сообщения: 33
Topic starter  

Вывод системной информации о Cygwin (cygcheck)

Утилита cygcheck выводит системную информацию, проверяет установленные пакеты или делает запросы к базе данных пакетов.

Использование:

cygcheck [-v] [-h] PROGRAM
cygcheck -c [-d] [PACKAGE]
cygcheck -s [-r] [-v] [-h]
cygcheck -k
cygcheck -f FILE [FILE]...
cygcheck -l [PACKAGE]...
cygcheck -p REGEXP
cygcheck --delete-orphaned-installation-keys
cygcheck -h

Требуется хотя бы одна опция команды или ПРОГРАММА, как показано выше.

Опции:

  ПРОГРАММА            список зависимостей библиотеки (DLL) ПРОГРАММЫ
  -c, --check-setup    показать установленную версию ПАКЕТА и проверить целостность
                       (или для всех установленных пакетов, если не указан)
  -d, --dump-only      просто перечислить пакеты, не проверять (с -c)
  -s, --sysinfo        производить диагностическую информацию о системе (подразумевает -c)
  -r, --registry       также просканировать реестр на предмет настроек Cygwin (с -s)
  -k, --keycheck       выполнить сеанс проверки клавиатуры (должен запускаться
                       только с простой консоли, а не с pty/rxvt/xterm)
  -f, --find-package   найти пакет, которому принадлежит ФАЙЛ
  -l, --list-package   перечислить содержимое ПАКЕТА (или всех пакетов, если они не указаны)
  -p, --package-query  поиск REGEXP во всем репозитории пакетов cygwin.com
                       (требуется подключение к Интернету)
  --delete-orphaned-installation-keys
                       Удалите установочные ключи старых, теперь неиспользуемых
                       установок из реестра. Требуется право вносить изменения в
                       реестр.
  -v, --verbose        производить более подробный вывод
  -h, --help           аннотировать вывод пояснительными комментариями, если он задан
                       другой командой, в противном случае распечатать эту справку
  -V, --version        распечатать версию cygcheck и выйти

Примечание: -c, -f и -l сообщают только об установленных в данный момент пакетах. Вместо этого для поиска во всех официальных пакетах Cygwin используйте -p. Параметр -p REGEXP сопоставляет имена пакетов, описания и имена файлов/путей во всех пакетах.


ОтветитьЦитата
SuperUser
(@superuser)
Eminent Member
Присоединился: 2 года назад
Сообщения: 33
Topic starter  

Зеркала репозиториев Cygwin

Cygwin имеет ряд зеркал FTP серверов для своих репозиториев. Полный список актуальных зеркал вы найдёте по ссылке https://cygwin.com/mirrors.html . Список автоматически обновляется и поддерживается.

Чтобы вывести текущее зеркало, выполните команду:

apt-cyg mirror

Чтобы установить новое зеркало, выполните команду вида:

apt-cyg mirror URL

Например:

apt-cyg mirror  https://cygwin.cu.be/ 

ОтветитьЦитата
SuperUser
(@superuser)
Eminent Member
Присоединился: 2 года назад
Сообщения: 33
Topic starter  

32-битный Cygwin

На первый взгляд, на главной странице Cygwin имеется только один установщик, это setup-x86_64.exe — установщик 64-битной версии. На самом деле, внизу страницы всё же присутствует и установщик 32-битного Cygwin, но авторы настоятельно не рекомендуют его использовать, вот что сказано об этом на официальном сайте:

Адресное пространство — очень ограничивающий фактор для Cygwin. В наши дни полноценный 32-битный дистрибутив Cygwin больше невозможен и, по всей вероятности, выйдет из строя в случайных местах из-за проблемы с системным вызовом fork(2).

Поэтому мы рекомендуем использовать 32-битный Cygwin только в ограниченных сценариях, с установленным минимумом необходимых пакетов и только в том случае, если вместо этого нет возможности запустить 64-битный Cygwin.

Вы были предупреждены. Если вы все еще уверены, что вам действительно нужен 32-битный Cygwin, и нет никакого способа обойтись без него, вы можете запустить установщик setup-x86.exe.


ОтветитьЦитата
SuperUser
(@superuser)
Eminent Member
Присоединился: 2 года назад
Сообщения: 33
Topic starter  

Запуск программ с графическим интерфейсом в Cygwin

В Cygwin возможно запускать программы с графическим интерфейсом, а также менеджеры окон и даже графические окружения рабочего стола.

Пакеты Cygwin/X в категории X11.

  • xorg-server (требуется, X сервер Cygwin/X)
  • xinit (требуется, скрипты для запуска X сервера: xinit, startx, startwin (и ссылки на Start Menu для его запуска), startxdmcp.bat )
  • xorg-docs (опциональный, man страницы)
  • xlaunch (опциональный, мастер для запуска X сессий)

Пример запуска программы с графическим интерфейсом в Cygwin.

Установите apt-cyg, если не сделали это ранее:

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

Установите X сервер и необходимый скрипты:

apt-cyg install xorg-server xinit

Запустите X сервер:

startxwin &

Нажмите Enter, чтобы увидеть приглашение командной строки.

Установите значение переменной DISPLAY:

export DISPLAY=:0.0

Запустите желаемую программу с графическим интерфейсом:

~/johnny/johnny

Смотрите также: Chapter 3. Using Cygwin/X

Ошибка «Could not connect to any X display.» в Cygwin

Если при запуске программы с графическим интерфейсом вы получили ошибку вроде следующей:

QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-MiAl'

qt.qpa.screen: QXcbConnection: Could not connect to display

Could not connect to any X display.

То она означает, что вы не запустили X сервер и/или не установили значение переменной DISPLAY. Для исправления ошибки, выполните шаги, показанные выше.


ОтветитьЦитата
SuperUser
(@superuser)
Eminent Member
Присоединился: 2 года назад
Сообщения: 33
Topic starter  

Как перезагрузить Cygwin

Вы можете обратить внимание, что даже после закрытия консоли, а затем её открытия, некоторые процессы, запущенные в Cygwin, продолжают работать. Вы можете проверить их с помощью команд

ps -e

Или

top

В Менеджере задач Windows вы можете увидеть процесс conhost.exe, принадлежащий Cygwin, даже после закрытия всех терминалов.

Программы, запущенные с X сервером, также не отключаются при закрытии терминалов Cygwin.

Поскольку Cygwin не является полным ядром Linux, некоторые мелкие вещи, такие как выключение машины, не будут работать так, как на Linux. 

Единственные способы, которыми удаётся закрыть эти процессы — перезагрузить Windows или снять задачи вручную.


ОтветитьЦитата
Поделиться: