Список форумов Шадринский форум -> Отдел игрушек (мягких и твёрдых) -> Операционные системы и сети -> Как в Linux устанавливать проги по исходным текстам???
Начать новую тему   Ответить на тему   вывод темы на печать

Как в Linux устанавливать проги по исходным текстам???

Автор
Сообщение
Andreysh
Освоившийся


Пол: Пол:Муж.
Зарегистрирован: 26.01.2007
Сообщения: 23


Статус: Offline
СообщениеДобавлено: 2007.04.18 16:23.24
Ответить с цитатой
Пожалуйста научите устанавливать проги в Linux! У меня проги в архивах с расширением gz! Не знаю как собирать и устанавливать!
Посмотреть профиль Отправить личное сообщение
VolF
подонок


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 3043
Откуда: Rammstein, GmbH

Статус: Offline
СообщениеДобавлено: 2007.04.18 18:27.51
Ответить с цитатой
./configure

Добавлено спустя 32 секунды:

сначало распакуй потом запускай этод файл
Посмотреть профиль Отправить личное сообщение Посетить сайт автора ICQ Number
Andreysh
Освоившийся


Пол: Пол:Муж.
Зарегистрирован: 26.01.2007
Сообщения: 23


Статус: Offline
СообщениеДобавлено: 2007.04.18 18:42.02
Ответить с цитатой
А потом что ?? и где это делать мож прога какая для этого необходима?
Посмотреть профиль Отправить личное сообщение
VolF
подонок


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 3043
Откуда: Rammstein, GmbH

Статус: Offline
СообщениеДобавлено: 2007.04.18 18:51.17
Ответить с цитатой
Andreysh
mc есть ?
Посмотреть профиль Отправить личное сообщение Посетить сайт автора ICQ Number
Andreysh
Освоившийся


Пол: Пол:Муж.
Зарегистрирован: 26.01.2007
Сообщения: 23


Статус: Offline
СообщениеДобавлено: 2007.04.18 19:28.12
Ответить с цитатой
Не понял! мож дать полное опизание по установке ! И запуске установленной программы???
Посмотреть профиль Отправить личное сообщение
VolF
подонок


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 3043
Откуда: Rammstein, GmbH

Статус: Offline
СообщениеДобавлено: 2007.04.18 20:37.39
Ответить с цитатой
мс

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

далее обычно ./configure

make

и

make install

если не вылезло ни каких ошибок, то все - прога должна установиться Smile
Посмотреть профиль Отправить личное сообщение Посетить сайт автора ICQ Number
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2007.04.18 20:39.10
Ответить с цитатой
если прога правильная, то service прога start Wink
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Serёга
Писатель


Пол: Пол:Муж.
Зарегистрирован: 09.11.2006
Сообщения: 748


Статус: Offline
СообщениеДобавлено: 2007.04.19 23:21.17
Ответить с цитатой
а почему у меня пишут, что команда make не найдена?Embarassed


screen.png
 Описание:

Download File
 Имя файла:  screen.png
 Размер файла:  86.59 KB
 Скачано:  1178 раз(а)

Посмотреть профиль Отправить личное сообщение
Andreysh
Освоившийся


Пол: Пол:Муж.
Зарегистрирован: 26.01.2007
Сообщения: 23


Статус: Offline
СообщениеДобавлено: 2007.04.19 23:27.23
Ответить с цитатой
я ваще въехать не могу не понятно нифига
Посмотреть профиль Отправить личное сообщение
First
Заслуженный писатель


Пол: Пол:Муж.
Зарегистрирован: 28.11.2004
Сообщения: 1145


Статус: Offline
СообщениеДобавлено: 2007.04.20 00:00.04
Ответить с цитатой
Теперь у вас могут возникнуть вопросы "Как удалить ненужные пакеты? Как установить что-то недостающее? Могу ли я использовать программное обеспечение, не входящее в мой дистрибутив?"

Пакеты RPM

В ходе установки Linux вы, вероятно, обратили внимание на информацию об устанавливаемых пакетах RPM. RPM, сокращение от Redhat Package Manager, созданный в Red Hat, стал стандартным средством управления программным обеспечением для Red Hat и UnitedLinux, а также для многих других дистрибутивов.

RPM -- в сущности пакет, содержащий программное обеспечение для Linux, готовое для установки и запуска на компьютере определенной архитектуры. Например, в "Части 3. Введение в Webmin" мы устанавливали RPM-пакет webmin. Все программное обеспечение, изначально входящее в ваш дистрибутив, устанавливается из RPM.

Структура RPM

RPM -- это набор файлов. В него входит файл .spec, предоставляющий информацию о пакете, его назначении и зависимостях (какие пакеты должны быть установлены, чтобы этот пакет мог работать). Файл .spec также содержит манифест файлов пакета, информацию о том, куда в системе эти файлы должны быть загружены и какие они имеют изначальные права доступа. RPM также содержит преинсталляционный скрипт, написанный разработчиком пакета. Кроме того, RPM содержит скомпилированные бинарные файлы. И наконец, RPM содержит постинсталляционный скрипт.

Структура RPM
.spec преинсталляционный скрипт бинарный файл бинарный файл ... бинарный файл постинсталляционный скрипт


При установке RPM система сначала проверяет, удовлетворяются ли имеющиеся зависимости. Если нет, процесс инсталляции прекращается, за исключением случаев, когда используются специальные опции, вынуждающие осуществить инсталляцию.

Если все прошло без проблем, запускается преинсталляционный скрипт. Это скрипт может выполнять какие угодно действия. Обычно он создает пользователей и каталоги. Однако он может генерировать различные типы динамической конфигурации, даже специально скомпилированный исходный код для запуска системы. Что изменяют RPM

В ходе установки пакетов RPM происходит копирование файлов в систему и выполнение скриптов. Поскольку RPM запускает root, все эти действия доступны только root'у. Поэтому, прежде чем устанавливать пакет в систему, важно знать его происхождение. Так же, как и в случае с программным обеспечением для Windows, в RPM может быть включен враждебный программный код. Пакеты RPM от производителей как правило безопасны, но будьте осторожны при загрузке и установке пакетов, имеющих неизвестное происхождение.



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

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

База данных RPM

База данных RPM -- элемент, добавляющий пакетам RPM элегантности. Обычно эта база данных хранится в каталоге /var/lib/rpm и содержит информацию о каждом установленном в системе пакете. База данных знает о взаимных зависимостях между пакетами, и от нее поступит предупреждение, если удаление пакета может привести к повреждению других пакетов. База данных знает обо всех файлах, которые изначально установлены при инсталляции пакетов, и знает их изначальное состояние в системе. Ей также известно местоположение документации и конфигурационных файлов для каждого пакета. Может показаться, что информации очень много, и это действительно так. Но она не является раздутой и громоздкой. В системе, содержащей 1,066 пакетов, включающих в себя 203,272 файлов, файлы базы данных занимают всего 45 MB! RPM использует базу данных для проверки зависимостей между пакетами, а также при загрузке и выгрузке пакетов. Кроме того, к базе данных за информацией о пакетах могут обращаться пользователи.

В начало





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

Программа для работы с пакетами RPM имеет соответствующее название, rpm. Команда rpm может использоваться для выполнения нескольких различных действий, но наиболее распространенные задачи -- это инсталляция, обновление, запрос, подтверждение и удаление.

rpm -i (install)

При установке пакета в первый раз используется опция -i (install). Просто укажите команде rpm в качестве аргумента бинарный пакет. Пакет установится в систему. Процесс инсталляции обычно занимает секунды. При установке пакета часто добавляют опцию -v (verbose), которая обеспечивает вывод подробной информации о ходе процесса, а также опцию -h (hash bar), которая по ходу выполнения процесса установки пакета выводит на консоль знаки диез (#). Вот пример инсталляции пакета:

Листинг 1. Инсталляция пакета MyPackage$ rpm -ivh MyPackage-1.0.0.i386.rpm
Preparing... ########################################### [100%]
1:MyPackage ########################################### [100%]



Вот как! Теперь MyPackage установлен и готов к использованию. Команду rpm может выполнить только root

Использовать rpm для установки и удаления пакетов может только root, поскольку необходим доступ файловой системе и базе данных rpm.



rpm -e (erase)

Для удаления установленного пакета используется опция -e, 'стирающая' его. rpm обратится к базе данных, чтобы удалить все файлы данного пакета. Если в системе есть пакеты, имеющие зависимости от удаляемого пакета, выполнение команды rpm прервется. Вы можете принудительно удалить пакет, воспользовавшись опцией nodeps. (nodeps может также использоваться для принудительной инсталляции.) При использовании опций принудительной установки или удаления пакета будьте крайне осторожны. Удаление пакетов, от которых зависят другие пакеты, может иметь плачевные последствия. Ниже приведена команда для удаления ранее установленного пакета:

$ rpm -e MyPackage

Обратите внимание, что при удалении пакета не требуется указывать его полную версию. Полное наименование пакета было необходимо при его установке, поскольку мы указывали имя файла. На установленные пакеты обычно ссылаются только по их имени. Имя пакета -- это все вплоть до номера версии.

rpm -V (verify)

Опция verify очень полезна. Она сравнивает текущее состояние установленных файлов пакета с их изначальным состоянием. Для отображения различий используются специальные обозначения:

Результаты проверки файлов
S Различается размер файлов (Size)
M Различается состояние (Mode) (включая права доступа и тип файла)
5 Различается сумма MD5
D Не совпадают major/minor-номера
L Не совпадает путь readLink(2)
U Не совпадает имя пользователя
G Не совпадает группа
T Различается mTime


Если применив к пакету команду rpm -V вы обнаружили, что изменился размер исполняемых файлов, это может быть признаком нарушения безопасности.

rpm -U (upgrade)

Если пакет установлен, любая попытка установить пакет с тем же именем выдаст сообщение, что такой пакет уже установлен. Если вы хотите обновить пакет до более поздней версии, используйте опцию -U. При одновременном обновлении нескольких пакетов будет предпринята попытка установить их в таком порядке, чтобы удовлетворялись взаимные зависимости. Другими словами, первыми установятся пакеты, от которых зависят другие. Опция -U может использоваться и в случае, когда пакет не установлен. Многие используют эту опцию не только для обновления, но и и для установки (вместо -i). Ниже приведен пример использования опции upgrade для установки нескольких пакетов:

Листинг 2. Обновление взаимозависимых пакетов$ rpm -Uvh My*.rpm
Preparing... ########################################### [100%]
1:bMyPackageDep ########################################### [ 50%]
1:aMyPackageNew ########################################### [100%]



В приведенном примере пакет bMyPackageDep был необходим для aMyPackageNew, поэтому rpm сначала установил пакет bMyPackageDep, а затем aMyPackageNew, несмотря на то, что имена файлов были расположены в обратном порядке.

rpm -q (query)

Из базы данных rpm может быть получена полезная информация. Запросы может делать любой пользователь, имеющий права на чтение базы данных rpm. По умолчанию право на чтение имеют все пользователи. Для запроса используется опция -q, затем указывается имя пакета. Ответом будет версия пакета.

$ rpm -q MyPackage
MyPackage-1.0.0

Имя пакета должно быть указано точно. Использование метасимволов не допускается. Однако если вы не помните полное имя пакета, можете воспользоваться командой grep, которая поможет найти нужный пакет. Воспользуйтесь опциями -qa для запроса обо всех установленных в системе пакетах, а затем передайте информацию при помощи pipe команде grep с последующим указанием той части имени пакета, которую помните. Например: Удобство команды grep

grep -- средство поиска в тексте, имеющее широкие возможности. По умолчанию при поиске в файле grep показывает те строки файла, которые содержат искомый текст. В нашем примере мы будем искать "IBM". grep -- мощный инструмент, используемый при создании скриптов и работе в консоли.



$ rpm -qa | grep IBM
IBMWSAppDev-Product-5.0-0
IBMWSSiteDevExp-Core-5.0-0
IBMWSSiteDev-Core-5.0-0
IBMWSTools-WAS-BASE-V5-5.0-0
IBMJava118-SDK-1.1.8-5.0
IBMWSWB-samples-5.0-0
IBMWSWB-5.0-0
IBMWSAppDev-Core-5.0-0
IBMWSAppDev-5.0-0
IBMWSTools-5.0-0

Помимо номера версии, rpm -q может выдавать и другую полезную информацию о пакете. Ниже приведены несколько примеров:

Получение информации при помощи rpm -q
rpm -q changelog Показывает историю изменений при разработке пакета
rpm -qc Показывает конфигурационные файлы для пакета
rpm -qd Показывает файлы документации для пакета
rpm -qi Показывает описание пакета
rpm -ql Показывает список файлов пакета
rpm -qR Показывает зависимости для пакета


Опция query используется и в других интересных командах, которые применяются не к пакетам, а к файлам.

rpm -q whatprovides <filename>

Приведенная выше команда определит, какой пакет связан с данным файлом. Имя файла должно включать абсолютный путь до файла, так как именно в таком виде информация хранится в базе данных rpm.

В начало





front-end'ы для RPM

Работа с rpm в консоли не сложна, но иногда бывает удобнее использовать графический интерфейс. В Linux обычно присутствуют front-end программы, предоставляющие интерфейс для программы rpm. В каждый дистрибутив включен свой front-end, и они могут различаться. Информацию об используемых в вашем дистрибутиве средствах управления пакетами вы найдете в документации к дистрибутиву.

В начало





Программные пакеты Webmin

Webmin также предоставляет несложный основанный на Web-интерфейсе front-end для взаимодействия с пакетами RPM.

Рисунок 1. Интерфейс Webmin


С помощью этого средства вы можете легко установить, удалить программное обеспечение и получить информацию о нем. Кроме того, программное обеспечение может быть установлено непосредственно с сайта. Если в вашей системе установлены такие инструменты, как apt или Red Hat Network, Webmin соберет их и предоставит интерфейс доступа к ним.

В начало





Исходный код

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

При компиляции из исходных кодов на production-системах следует проявлять осторожность, поскольку это может вызвать некоторые проблемы или прекращение поддержки коммерческого программного обеспечения, используемого в вашей системе, например, IBM DB2. Однако умение компилировать из исходных кодов позволит вам прикладывать к программам патчи и работать с пакетами, перенесенными из других окружений. Стоит вам провести успешную компиляцию из исходников, и вы сможете создать даже свой собственный RPM!

В начало





Демонстрация компиляции из исходников на примере игры Corewars

Для демонстрации того, насколько прост процесс компиляции из исходных кодов, скомпилируем моделирующую игру под названием Corewars (см. ссылку в разделе Ресурсы). Вот информация о Corewars с соответствующего сайта: "Corewars -- моделирующая игра, в которой на виртуальном компьютере воины пытаются разбить друг друга. Воины могут быть созданы при помощи одного из двух ассемблер-подобных языков, Corewars или Redcode. Corewars -- язык, используемый по умолчанию, он проще для изучения и понимания. Redcode предоставляет более продвинутые и развернутые инструкции, но и требует большего времени для изучения".

Первый этап компилирования из исходных кодов -- загрузка пакета исходников с веб-сайта:
http://prdownloads.sourceforge.net/corewars/corewars-0.9.13.tar.gz?download

Загрузив пакет, я распаковываю архив.

tar -xvzf corewars-0.9.13.tar.gz

Распаковывание файлов производится в мой текущий каталог. Стандартный подход -- размещать исходные коды в каталоге с названием, соответствующем наименованию продукта. В нашем случае это каталог corewars-0.9.13.

Я перехожу в этот каталог и нахожу там исходные коды, документацию, конфигурационные скрипты и файлы README. Большинство пакетов исходников имеет файл INSTALL и файл README. Прочтите их, прежде чем приступить к компиляции. Обычно это позволяет сохранить ваши усилия, поскольку вы получите информацию о том, как предотвратить возникновение возможных проблем, и получите инструкции по корректному проведению компиляции и инсталляции. Большинство проблем, которые возникали у меня при компиляции из исходников, были связаны с тем, что я не следовал указаниям.

Чаще всего следующим этапом идет запуск скрипта configure. configure -- часть пакета Autoconf, входящего в средства разработки вашего дистрибутива Linux. Вот цитата из описания пакета Autoconf: "Autoconf -- средство GNU для конфигурирования исходных кодов и Makefile'ов. При помощи Autoconf программисты могут создавать компактные и настраиваемые пакеты, поскольку автор пакета может предусмотреть различные опции конфигурации".

Скрипт configure запускает в системе ряд тестов, чтобы определить оптимальный способ компиляции пакета для вашего дистрибутива и архитектуры. Затем он создает Makefile специально для вашей системы. При возникновении проблем компиляции скрипт configure выдаст соответствующее сообщение. Обычно configure позволяет выбрать возможности, которые вы хотите включить при компиляции или задать параметры, указывающие местоположение библиотек или необходимых файлов, чтобы сборка пакета прошла успешно. Сейчас мы запустим configure без дополнительных параметров:

./configure

Несколько тестов, выполняемых в системе, наконец успешно завершились. Теперь создадим программу при помощи

make

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

make install

Файлы копируются в соответствующие области системы, права доступа к файлам обновляются, конфигурационные файлы копируются и документация добавляется в справочные страницы.

Теперь давайте протестируем наше изделие, запустив программу. Это графическая программа, поэтому для ее запуска нам понадобится графическая сессия. Выполненная нами команда make install должна поместить программу в наш путь поиска исполняемых файлов.

corewars

В награду должен появиться графический экран.

Рисунок 2. Удача!


Обсуждение правил игры corewars выходит за рамки нашей статьи, но вы можете найти соответствующую документацию на странице man (man corewars).

Сборка corewars производилась по типичному сценарию. Существует множество вариантов использования опций скрипта configure для настройки включаемых в программу возможностей, использования различных команд из Makefile для настройки процесса компиляции и т.д.

Поскольку наша программа была установлена без использования rpm, она не попала в базу данных rpm. На случай, если установленная программа не работает, большинство Makefile'ов имеет параметр для деинсталляции, позволяющий удалить программу:

make uninstall

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

Исходные RPM'ы

При создании RPM используется термин исходные RPM (Source RPM). Это SPEC-файл в сочетании с исходным кодом, предназначенные для сборки на одной или нескольких архитектурах. Из двух возможных вариантов этот является лучшим. Используя исходные коды, вы можете скомпилировать программу на своей системе, но конечный продукт будет пригодным для установки пакетом RPM, а не сырым бинарником. Большая часть пакетов доступна как в виде предварительно скомпилированных RPM, так и в виде SRPM. Это позволяет легко переносить программы между разными платформами в Linux. Если вы успешно пересобрали пакет для другой платформы, подумайте о том, чтобы сделать ваш конечный RPM доступным сообществу Linux.

В начало





Пусть исходники будут с вами

Если вы новичок в Linux, можете использовать другой способ установки программного обеспечения. Однако подход RPM к инсталляции изящен и предоставляет дополнительные возможности, которые вы быстро оцените.

Для работы с пакетами rpm из консоли вы должны хорошо знать, какие опции для чего используются, но для повседневного использования существуют варианты front-end интерфейсов, которые облегчают процесс управления пакетами rpm. Помимо тех, которые входят в ваш дистрибутив, доступны и другие, например, Webmin.

Вы не ограничены использованием только предварительно собранных пакетов. Вы можете воспользоваться преимуществами открытых исходников и собирать приложения непосредственно из исходников. В зрелых проектах сборка для как правило не вызывает затруднений. Помните, что программа, установленная из исходных кодов, не попадет в вашу базу данных rpm. Работая с исходниками, старайтесь использовать source rpm'ы, которые сочетают в себе возможность компиляции исходного кода и легкость управления пакетами rpm.

Добавлено спустя 3 минуты 26 секунд:

Вроде неплохой ресурс для начинающих
http://www.ibm.com/developerworks/ru/library/l-roadmap/
Посмотреть профиль Отправить личное сообщение Отправить e-mail
VolF
подонок


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 3043
Откуда: Rammstein, GmbH

Статус: Offline
СообщениеДобавлено: 2007.04.20 07:52.39
Ответить с цитатой
Serёга
компилятор у тебя не стоит в системе Podmigivanie
Посмотреть профиль Отправить личное сообщение Посетить сайт автора ICQ Number
Serёга
Писатель


Пол: Пол:Муж.
Зарегистрирован: 09.11.2006
Сообщения: 748


Статус: Offline
СообщениеДобавлено: 2007.06.28 17:09.03
Ответить с цитатой
как мне компилятор поставить в линукс мой подскажите пожалуйста!!! Embarassed
Посмотреть профиль Отправить личное сообщение
First
Заслуженный писатель


Пол: Пол:Муж.
Зарегистрирован: 28.11.2004
Сообщения: 1145


Статус: Offline
СообщениеДобавлено: 2007.06.28 21:59.26
Ответить с цитатой
Serёга
Что компилить то собрался?
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Serёга
Писатель


Пол: Пол:Муж.
Зарегистрирован: 09.11.2006
Сообщения: 748


Статус: Offline
СообщениеДобавлено: 2007.06.28 22:29.48
Ответить с цитатой
http://forum.shadrinsk.net/download.php?id=15655 вот, программы не устанавливаются... в линуксе вообще полный ноль Embarassed в книгах не могу найти( устанавливал мандриву на 4 сиди, кажется твоя Smile
Посмотреть профиль Отправить личное сообщение
rocker
Заслуженный писатель


Пол: Пол:Муж.
Зарегистрирован: 18.12.2006
Сообщения: 1261
Откуда: Шадринск

Статус: Offline
СообщениеДобавлено: 2007.06.28 22:45.58
Ответить с цитатой
компилятор ставится в менеджере пакетов ищи слово-имя компилятора или пакета

Добавлено спустя 49 секунд:

самая долгая была установка у меня -это Wine по исходникам-минут 40 компилился папкет
зато щас как в аптеке-все пучком робит
Посмотреть профиль Отправить личное сообщение
First
Заслуженный писатель


Пол: Пол:Муж.
Зарегистрирован: 28.11.2004
Сообщения: 1145


Статус: Offline
СообщениеДобавлено: 2007.06.29 13:58.40
Ответить с цитатой
Serёга
В репозитории установи пакет "make", так же смотри что еще нужно в "readmy", который обязательно лежит с исходниками.
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Страница 1 из 1
Начать новую тему   Ответить на тему   вывод темы на печать
Показать сообщения:   
Список форумов Шадринский форум -> Отдел игрушек (мягких и твёрдых) -> Операционные системы и сети -> Как в Linux устанавливать проги по исходным текстам???

 
Перейти: 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы можете скачивать файлы