В какую папку устанавливаются программы
В Windows программы устанавливаются в C:\Program Files .
В Ubuntu пользовательские программы в большинстве случаев устанавливаются в директорию /usr, но программа находится не в одной папке, а разделена на части:
/usr/bin — исполняемые файлы программ
/usr/sbin — исполняемые файлы программ, которые запускаются с правами администратора
/usr/games — исполняемые файлы некоторых игр
/usr/lib — библиотеки программы
/usr/share — остальные файлы программы
Некоторые разработчики программ предпочитают установку в директорию /opt не разделяя файлы программы.
Как получить полный путь к исполняемому файлу?
Пишу скрипт, он определяет какой архитектуры исполняемый файл и подставляет ему нужные библиотеки.
При помощи команды
readelf -h /usr/bin/programm_name | grep ELF32
получается определить что он 32 разрядной архитектуры. Но ведь пользователь введёт не полный путь к исполняемому файлу, а как чаще всего бывает просто его имя.
Как найти указанный в параметре исполняемый файл к которому не указан полный путь по переменной окружения?
Перемещено leave из talks

rezedent12 ☆☆☆
23.09.16 21:15:51 MSK
← 1 2 →

which programm_name
surefire ★★★
( 23.09.16 21:20:30 MSK )
Дык, никак. А кто искать то будет? Пушкин?
portquest2016
( 23.09.16 21:37:07 MSK )
Если скрипты в строго определенных директориях, то пропиши эти пути в самом скрипте.
portquest2016
( 23.09.16 21:38:13 MSK )
Ответ на: комментарий от portquest2016 23.09.16 21:37:07 MSK

Дык, никак. А кто искать то будет? Пушкин?
bash же как то ищет.
rezedent12 ☆☆☆
( 23.09.16 21:40:24 MSK ) автор топика
Ответ на: комментарий от rezedent12 23.09.16 21:40:24 MSK
так он и ищет по путям в PATH
portquest2016
( 23.09.16 21:41:11 MSK )
Ответ на: комментарий от portquest2016 23.09.16 21:38:13 MSK

Если скрипты в строго определенных директориях, то пропиши эти пути в самом скрипте.
Программу предполагается использовать примерно так:
скрипт программа [параметры передаваемые программе]
rezedent12 ☆☆☆
( 23.09.16 21:42:20 MSK ) автор топика
Ответ на: комментарий от portquest2016 23.09.16 21:41:11 MSK

есть ли готовый парсер на bash для разбора этой переменной и поиска?
rezedent12 ☆☆☆
( 23.09.16 21:43:12 MSK ) автор топика

А как же революция?
dk- ☆
( 23.09.16 21:43:43 MSK )
Ответ на: комментарий от rezedent12 23.09.16 21:42:20 MSK
Я о том, что если «программы» могут лежать только в заранее заданной директории, то ты внутри скрипта можещь написать типа blabla /mydetermineddir/$1 [another params]
portquest2016
( 23.09.16 21:45:35 MSK )
зачем тебе это вообще могло понадобиться?
Harald ★★★★★
( 23.09.16 21:45:46 MSK )
Ответ на: комментарий от rezedent12 23.09.16 21:40:24 MSK

Тебе же первый ответивший дал правильный ответ.
Смотри:
readelf -h $(which wine) | grep ELF32
Класс: ELF32
imul ★★★★★
( 23.09.16 21:46:20 MSK )
Ответ на: комментарий от rezedent12 23.09.16 21:43:12 MSK
portquest2016
( 23.09.16 21:46:33 MSK )
Ответ на: комментарий от rezedent12 23.09.16 21:43:12 MSK

есть ли готовый парсер на bash для разбора этой переменной и поиска?
ааааааааааааааа, кто там рядом живёт, стукните его по голове чем-нибудь тяжёлым. 1111
imul ★★★★★
( 23.09.16 21:47:51 MSK )
Ответ на: комментарий от imul 23.09.16 21:46:20 MSK
он же пишет, что ему нужен поиск вне PATH, which ничего не найдет
portquest2016
( 23.09.16 21:48:29 MSK )
Ответ на: комментарий от imul 23.09.16 21:47:51 MSK

Мне всего 160км.
dk- ☆
( 23.09.16 21:49:58 MSK )
Ответ на: комментарий от portquest2016 23.09.16 21:48:29 MSK

Как же вы задолбали!
pet / # mkdir /1
pet / # cp $(which wine) /1
pet / # ls /1
wine
pet / # echo $
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/6.2.0:/root/.local/bin:/root/bin
pet / # readelf -h $(env PATH=«$:/1» which wine) | grep ELF32
Класс: ELF32
which он как яндекс — найдёт всё, что нужно, главное правильно спросить
imul ★★★★★
( 23.09.16 21:52:27 MSK )
Ответ на: комментарий от dk- 23.09.16 21:49:58 MSK

Ты в Архызе сейчас?
imul ★★★★★
( 23.09.16 21:56:43 MSK )
Ответ на: комментарий от imul 23.09.16 21:52:27 MSK
че то тыы какую то пургу намел. Если добавить директорию в PATH, есен х, все отыщется. Че сказать то хотел? Зачем ты там с каким то копированием че-то делал?
portquest2016
( 23.09.16 21:58:43 MSK )
Ответ на: комментарий от portquest2016 23.09.16 21:58:43 MSK

Надо было с mv, ты прав
pet / # mv /usr/bin/wine /usr/bin/wine_
pet / # env PATH=«$:/1» which wine
/1/wine
imul ★★★★★
( 23.09.16 22:00:03 MSK )
Ответ на: комментарий от imul 23.09.16 22:00:03 MSK
Какая разница, какое это отношение к вопросу имеет?
portquest2016
( 23.09.16 22:01:20 MSK )
Ответ на: комментарий от portquest2016 23.09.16 21:58:43 MSK

Вот именно это сказать и хотел:
Если добавить директорию в PATH, есен х, все отыщется.
Зачем ты там с каким то копированием че-то делал?
Каталог надо было вперёд ставить.
pet / # mv /usr/bin/wine_ /usr/bin/wine
pet / # ls /usr/bin/wine
/usr/bin/wine
pet / # env PATH=«/1:$» which wine
/1/wine
imul ★★★★★
( 23.09.16 22:03:27 MSK )
Ответ на: комментарий от portquest2016 23.09.16 22:01:20 MSK

Какая разница, какое это отношение к вопросу имеет?
imul ★★★★★
( 23.09.16 22:04:19 MSK )
Ответ на: комментарий от imul 23.09.16 22:03:27 MSK
Не, непонято, если исходить из вопроса ТС, как найти скрипт, которого нет в PATH. Ладно, забей, мне, видимо, не понять.
portquest2016
( 23.09.16 22:05:38 MSK )
Ответ на: комментарий от imul 23.09.16 21:56:43 MSK

dk- ☆
( 23.09.16 22:05:53 MSK )
Ответ на: комментарий от portquest2016 23.09.16 22:05:38 MSK

Скрипт, которого нет в $ при его старте только по одному имени выполняться один фиг не будет.
Если при запуске задавать полное имя скрипта, то каталог в котором этот скрипт лежит считай известен и его можно добавить в переменную PATH
Что ещё тебе не понятно? Не стесняйся, спрашивай.
pet / # cat /1/bzzz.sh
#! /bin/bash
pwd
echo $(dirname $0)
pet / # env PATH=/1 /bin/bash bzzz.sh
/
/1/bzzz.sh: line 4: dirname: команда не найдена
pet / # env PATH=/1:$ bash bzzz.sh
/
.
pet / # bzzz.sh
bash: bzzz.sh: команда не найдена
imul ★★★★★
( 23.09.16 22:13:41 MSK )
Ответ на: комментарий от imul 23.09.16 22:13:41 MSK
я об этом и сказал
portquest2016
( 23.09.16 22:15:01 MSK )
Ответ на: комментарий от portquest2016 23.09.16 22:15:01 MSK

Да, я знаю.
Мне непонятно, что тебе не нравится в запуске which с новой переменной PATH для поиска?
imul ★★★★★
( 23.09.16 22:17:15 MSK )
Ответ на: комментарий от imul 23.09.16 22:17:15 MSK
Просто, как бы, не совсем соответствует вопросу. Может я вопрос неверно понял, хз. Ладно, проехали.
portquest2016
( 23.09.16 22:35:01 MSK )

readelf -h `which bash`|grep ELF32 Class: ELF32
В чем, собственно, проблема? %)
Nervous ★★★★★
( 23.09.16 22:45:34 MSK )
Ответ на: комментарий от portquest2016 23.09.16 22:35:01 MSK

Но ведь пользователь введёт не полный путь к исполняемому файлу, а как чаще всего бывает просто его имя.
В этом случае исполняемый файл лежит в каталоге, содержащемся в PATH. Иначе надо вводить полный путь абсолютный, или относительный (что легко через dirname привести к первой задаче).
Как бы других-то способов нет и усложнять ничего не надо.
Абсолютно согласен, всё что можно было уже сказать по теме, в этой теме сказал самый первый комментатор 😀
PS: тему твою удалили про разум. ИМХО нет, чёткого критерия не будет.
imul ★★★★★
( 23.09.16 22:48:23 MSK )
Последнее исправление: imul 23.09.16 22:51:03 MSK (всего исправлений: 1)
Путь к файлу в Linux
Все файлы в Linux имеют определенный адрес в файловой системе, с помощью которого мы можем получить к ним доступ с помощью файлового менеджера или консольных утилит. Это довольно простая тема, но у многих новичков с этим возникают трудности.
В сегодняшней небольшой заметке мы рассмотрим что такое путь к файлу Linux, каким он может быть, как правильно его писать и многое другое. Если раньше у вас возникали с этим трудности, то после прочтения статьи все станет полностью понятно.
Пути файлов в Linux
Файловая система Linux очень сильно отличается от Windows. Мы не будем рассматривать ее структуру, это было сделано ранее. Мы сосредоточимся на работе с файлами.
Самое главное отличие, в том что адрес файла начинается не с диска, например, C:\ или D:\ как это происходит в Windows, а с корня, корневого системного каталога, к которому подключены все другие. Его адрес — /. И тут нужно сказать про адреса. Пути файлов linux используют прямой слеш «/» для разделения каталогов в адресе, и это отличается от того, что вы привыкли видеть в Windows — \.
Например, если в Windows полный путь к файлу на рабочем столе выглядел C:\Users\Sergiy\Desktop\ то в путь файла в linux будет просто /home/sergiy/desktop/. С этим пока все просто и понятно. Но проблемы возникают дальше.
В операционной системе Linux может быть несколько видов путей к файлу. Давайте рассмотрим какие бывают пути в linux:
- Полный, абсолютный путь linux от корня файловой системы — этот путь вы уже видели в примере выше, он начинается от корня «/» и описывает весь путь к файлу;
- Относительный путь linux — это путь к файлу относительно текущей папки, такие пути часто вызывают путаницу.
- Путь относительно домашней папки текущего пользователя. — путь в файловой системе, только не от корня, а от папки текущего пользователя.
Рассмотрим теперь подробнее как выглядят эти пути в linux, а также разберем несколько примеров, чтобы было окончательно понятно. Для демонстрации будем пользоваться утилитой ls, которая предназначена для просмотра содержимого каталогов.
Например, у нас есть такой каталог в домашней папке с четырьмя файлами в нем:

Вот так будет выглядеть полный путь linux к одному из файлов:

Это уже относительный путь linux, который начинается от домашней папки, она обозначается ~/. Заметьте, не ~, а именно ~/. Дальше вы уже можете указывать подпапки, в нашем случае tmp:

Ну или путь файла в linux, относительно текущей папки:
В каждой папке есть две скрытые ссылки, мы сможем их увидеть с помощью ls, выполнив ее с параметром -a:

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

Это бесполезно при просмотре содержимого файла. Но очень важно при выполнении программы. Поскольку программа будет сначала искаться в среде PATH, а уже потом в этой папке. А потому, если нужно запустить программу, которая находится в текущей папке и она называется точно также как и та что в каталоге /bin, то без явной ссылки что файл нужно искать в текущей папке ничего не получится.
Вторая ссылка вам позволяет получить доступ к файлам в папке выше текущей. Например:

Такие конструкции могут довольно часто встречаться при компиляции программ. Все эти символы и пути файлов linux вы можете применять не только в терминале, но и в любом файловом менеджере, что может быть очень удобно.
Но терминал Linux предоставляет еще более широкие возможности. Вы можете использовать простые символы замены прямо в адресах файлов или каталогов. Например, можно вывести все файлы, начинающиеся на f:


Или даже можно искать не только в папке tmp, а в любой подпапке домашней папки:
И все это будет работать, возможно, это не всегда нужно и практично. Но в определенных ситуациях может очень сильно помочь. Эти функции реализуются на уровне оболочки Bash, поэтому вы можете применять их в любой команде. Оболочка смотрит сколько файлов было найдено и для каждого из них вызывает команду.
Выводы
Вот и все. Теперь вы знаете все что необходимо, чтобы не только правильно написать путь к файлу linux, но и выполнять более сложные действия, например, поиск файлов или навигация по каталогам с помощью команды cd. Если у вас остались вопросы, спрашивайте в комментариях!
как найти в Ubuntu где лежит папка с программой?
Но как найти где папка chrome? Перепыл всю систему не пойму. В windows просто нажал правой кнопкой и свойства и там путь. Что я не так делаю?
Отслеживать
задан 21 янв 2016 в 10:39
11k 18 18 золотых знаков 64 64 серебряных знака 128 128 бронзовых знаков
что значит «скачал chrome»?
21 янв 2016 в 11:10
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Вообще, запускаемый файл браузера Chrome называется google-chrome или google-chrome-stable . Найти полный путь к запускаемому файлу можно командой:
which which google-chrome-stable
При условии, что файл находится в одной из папок, перечисленных в переменной окружения $PATH . Если это не так, найти его можно командой
find / -name
Но тогда и запустить его из консоли можно будет только как
/full/path/to/
Последняя команда найдет файл по имени, даже если он не запускаемый, если хватит прав.
Как узнать путь до исполняемого файла в Linux?

В линукс обычно исполняемые файлы лежат в /bin, /sbin, /usr/bin, /usr/sbin.
Иногда в /usr/local/bin, /usr/local/sbin.
Еще некоторый софт ставит себя в /opt и там в собственном подкаталоге создает похожую иерархию каталогов.
Найти программу по имени можно с помощью команды whereis
Или с помощью find / -name
find будет работать дольше т.к. будет сканировать все что сможет. whereis сканирует только каталоги указанные в PATH, поэтому работает гораздо быстрей.
Ответ написан более двух лет назад
Комментировать
Нравится 2 Комментировать
Ответы на вопрос 1

Damian Lewis @DamianLewis
Если только для ярлыков надо, можно посмотреть через системный монитор в разделе свойства процесса.
Скрин 1

Также можно глянуть через htop в терминале.
Скрин 2

Скорее есть есть еще куча других вариантов, но я обходился только двумя этими
В какую папку устанавливаются программы
В Windows программы устанавливаются в C:\Program Files .
В Ubuntu пользовательские программы в большинстве случаев устанавливаются в директорию /usr, но программа находится не в одной папке, а разделена на части:
/usr/bin — исполняемые файлы программ
/usr/sbin — исполняемые файлы программ, которые запускаются с правами администратора
/usr/games — исполняемые файлы некоторых игр
/usr/lib — библиотеки программы
/usr/share — остальные файлы программы
Некоторые разработчики программ предпочитают установку в директорию /opt не разделяя файлы программы.
Работа с файлами и каталогами в Linux
Рассказываем о просмотре доступных файлов и каталогов, командах для работы с файлами и основах редактирования в текстовом редакторе nano.
Эта инструкция — часть курса «Linux: горячие клавиши и команды».
Смотреть весь курс
Введение
В этом руководстве для начинающих пользователей мы ознакомимся с основными командами для работы с файлами и каталогами (иногда их еще называют директориями) в Linux-системах.
Требования
Cервер с Ubuntu 20.04
Все команды, описанные ниже, будут работать и в других дистрибутивах Linux.
Расположение каталогов в файловой системе
При входе на сервер, вы, как правило, попадаете в домашний каталог вашей учетной записи, отведенный для хранения файлов и создания директорий.
Для того чтобы узнать, где располагается каталог, в котором мы сейчас находимся, используется команда:
Результат выполнения команды выглядит следующим образом:
/home/demo
Домашний каталог располагается после имени учетной записи пользователя, в приведенном примере он называется /demo. Этот каталог находится в каталоге с именем /home и в каталоге верхнего уровня, который называется root или корневой каталог, поэтому представлен одной косой чертой /.
Просмотр содержимого каталогов
Для просмотра содержимого каталога используется команда ls. Название этой команды является сокращением слов list files.
Просмотреть содержимое любой директории можно следующими способами:
ls имя_директории
Либо введя команду:
ls /путь _к _директории
В результате выполнения команды отображаются файлы и каталоги, находящиеся внутри данного каталога:
dir1 file1 file2 file3
К команде ls можно добавлять дополнительные флаги, например, чтобы показать детализированное представление (права, список владельцев файлов или папок, размер, дату последнего модифицирования) файлов и директорий в текущей директории, можно использовать флаг -l:
ls -l
Результат выполнения команды:
total 16 drwxr-xr-x 2 home demo 4096 Nov 3 17:40 dir1 -rw-r--r-- 1 home demo 13 Nov 8 17:17 file1 -rw-r--r-- 1 home demo 42 Nov 9 13:04 file2 -rw-r--r-- 1 home demo 42 Nov 10 13:04 file3
Для просмотра списка всех файлов, включая скрытые файлы и каталоги, вы можете добавить флаг -a:
ls -a
Результат выполнения команды:
. dir1 file1 .mysql_history .ssh .. .bash_history file2 file3 .nan
Отобразить содержимое текущей директории с добавлением к именам символов, характеризующих тип, можно с помощью команды:
ls -F
Результат выполнения команды:
dir1/ file1 file2 file3
Перемещение между каталогами
Для перехода в домашний каталог используется команда cd. Название этой команды является сокращением слов change directory.
Для перехода в домашний каталог пользователя user используется команда:
cd ~user
Для перехода в предыдущую директорию, в которой мы находились до перехода в текущую директорию также используется команда cd.
В Linux-системах каждый файл и каталог находятся в самой верхней директории, которая называется «корневой» и обозначается одним символом слэш /.
Абсолютный путь указывает на расположение каталога по отношению к этой директории верхнего уровня. Это позволяет обращаться к справочникам однозначным образом из любого места в файловой системе.
Каждый абсолютный путь должен начинаться с косой черты — символа слэш /.
Для перехода в директорию уровнем выше используется команда:
Для перехода в директорию двумя уровнями выше:
Масштабируемое файловое хранилище
Подключите ее к нескольким физическим или облачным серверам и кластеру Kubernetes.
Операции с файлами и каталогами
У каждой команды имеется множество параметров, чтобы узнать их, наберите команду и параметр —help, например:
ls --help
Далее приведен список основных команд навигации в консоли Linux.
Создание
Создание файлов производится с помощью команды:
touch имя_файла
Создание каталогов выполняется с помощью команды вида:
mkdir имя_директории
Название этой команды является сокращением слов make directory.
Создание двух каталогов одновременно выполняется с помощью команды:
mkdir имя_директории_1 имя_директории_2
Для создания дерева каталогов используется команда следующего вида:
mkdir -p /имя_директории_1/имя_директории_2
Удаление
Для удаления директорий используется команда rmdir имя_директории. Название этой команды является сокращением слов remove directory.
Для удаления файлов используется команда rm. Например, для удаления файла с именем file1 используется команда:
rm file1
Команда rm также позволяет удалять не только файлы, но и каталоги.
Для удаления директории с именем dir1 со всеми подкаталогами и файлами используется опция -r (от слова recursive):
rm -r dir1
Можно удалить одновременно две директории со всем их содержимым:
rm -r имя_директории_1 имя_директории_2
Также можно использовать параметр -f, который означает, что при удалении не будет запрашиваться подтверждение.
Команда для удаления файла будет выглядеть так:
rm -f file1
Команда для удаления каталога:
rm -rf dir1
Перемещение
Для перемещения и переименования файлов и каталогов используется команда mv. Название этой команды является сокращением слова move.
Переименовать файл можно с помощью команды:
mv имя_файла новое_имя
Для того чтобы переместить файл, используется команда:
mv имя_файла путь/
Копирование
Для копирования используется команда cp. Название этой команды является сокращением слова copy.
Чтобы скопировать файл file1 и назвать его file2, используется команда:
cp file1 file2
Для того чтобы копировать директорию dir1 в директорию dir2, используется команда:
cp -a dir1/ dir2/
Скопировать файл с именем file1 в директорию с именем dir1, можно с помощью команды:
cp file1 dir1/
Редактирование файлов
Мы ознакомились с основными командами для работы с каталогами и файлами.
Далее мы изучим, как редактировать файлы и добавлять в них содержание.
Команда nano позволяет работать в одном из самых простых текстовых редакторов командной строки Linux, который занимает весь терминал в течение всего срока его использования.
В результате ввода в терминал команды nano будет открыт чистый файл.
Интерфейс выглядит следующим образом:

В верхней части открывшегося редактора отображается имя приложения и имя файла, который мы редактируем.
В середине должно располагаться содержимое файла, в настоящее время оно пустое.
В нижней части интерфейса расположен ряд комбинаций клавиш, которые указывают с основными элементами управления текстового редактора. Для каждого из них символ ^ означает клавишу CTRL.
Для того чтобы открыть справку используйте сочетание клавиш CTRL-G.
Закрывается справка с помощью сочетания клавиш CTRL-X. После закрытия справки мы возвращаемся к редактированию.
Вводить и редактировать можно любой текст, например, можно ввести: “Hello World!”
Для сохранения внесенных изменений следует нажать сочетание клавиш CTRL-O. Внимание! Это буква О, а не ноль.
Далее система попросит вас ввести либо подтвердить имя файла, который вы хотите сохранить:
File Name to Write: ^G Get Help M-D DOS Format M-A Append M-B Backup File ^C Cancel M-M Mac Format M-P Prepend
Как вы можете видеть, параметры в нижней части окна редактирования также изменились. Они являются контекстными, то есть будут меняться в зависимости от того, что вы пытаетесь сделать.
После ввода имени файла нажмите клавишу ENTER.
Для того чтобы выйти из тестового редактора нажмите сочетание клавиш CTRL-X.
Если вы внесли изменения и не сохранили файл, вам будет предложено сохранить сделанные вами изменения:
Save modified buffer (ANSWERING "No" WILL DESTROY CHANGES) ? Y Yes N No ^C Cancel
Вы можете нажать клавишу Y, чтобы сохранить изменения, клавишу N для отмены изменений и выхода, или сочетание клавиш CTRL-C, чтобы отменить операцию выхода из режима редактирования файла.
Если вы решили сохранить изменения, вам будет предложено сохранить их в том же файле, который был отредактирован.
Нажмите клавишу ENTER, чтобы сохранить файл и выйти из редактора.
Заключение
Мы ознакомились с возможностями просмотра доступных файлов и каталогов, с основными командами для работы с файлами, которые позволяют просматривать, копировать, перемещать и удалять файлы, а также с основами редактирования в текстовом редакторе nano.
Структура и типы файловых систем в Linux
Где и как искать программы
Где и как искать программы, и как их потом устанавливать
Все программы для Linux можно разделить на две большие категории (с подкатегориями):
- программы, имеющиеся в дистрибутиве [1]
- имеющиеся на диске (CD/DVD/жёсткий диск) у пользователя
- в сетевом репозитории, версия которого совпадает с той, что установлена у пользователя
- в сетевом репозитории, версия которого отличается от той, что у пользователя
- но которые можно включить в дистрибутив
- потому что их нельзя включить в дистрибутив
- потому что они вообще не работают в Linux
Далее описаны краткие примерные инструкции что делать во всех этих случаях.
Общая рекомендация: если вам нужна какая-то программа, то
- Сначала поищите её в тех источниках установки, на которые настроена ваша система управления пакетами.
- Затем поищите нужную программу в других репозиториях ALT Linux, например, используя поиск на сайте http://packages.altlinux.org и далее.
- Если нужной программы не оказалось среди пакетов ALT, то найдите в интернете сайт разработчиков программы, и далее следуйте инструкции.
- Если непонятно, какая именно программа нужна, можно посмотреть информацию тут, тут и тут. Эти списки ПО не претендуют на полноту, но могут оказаться полезными.
Программа есть на диске пользователя
Если у вас есть CD/DVD диск с дистрибутивом ALT (например тот, с которого вы поставили систему), то поиск и установка нужной программы осуществляется очень просто. Достаточно подключить этот диск в качестве источника установки и использовать программы работы с пакетами, такие как apt-get или synaptic.
Если у вас на жёстком диске есть целый набор rpm-пакетов, и они ещё не организованы в репозиторий, то самое время создать из них репозиторий, подключить его в качестве источника установки, и см. выше.
Если у вас имеется одиночный [2] пакет с нужной программой, то можно попробовать установить его следующим образом:
от рута перейдите в каталог, где лежит нужный пакет и выполните команду apt-get install ./ИМЯ_ФАЙЛА.rpm. Например:
[alexei@threebears tmp]$ su - Password: [root@threebears ~]# cd /tmp [root@threebears tmp]# apt-get install ./kde4plasma-addon-yawp-0.1-alt1.svn20081227.1.i586.rpm Чтение списков пакетов. Завершено Построение дерева зависимостей. Завершено Выбрано kde4plasma-addon-yawp для './kde4plasma-addon-yawp-0.1-alt1.svn20081227.1.i586.rpm' Следующие НОВЫЕ пакеты будут установлены: kde4plasma-addon-yawp 0 будет обновлено, 1 новых установлено, 0 пакетов будет удалено и 2 не будет обновлено. Необходимо получить 0B/581kB архивов. После распаковки потребуется дополнительно 1193kB дискового пространства. Совершаем изменения. Preparing. ########################################### [100%] 1: kde4plasma-addon-yawp ########################################### [100%] Running /usr/lib/rpm/posttrans-filetriggers Завершено.
Программа есть в сетевом репозитории вашей версии
Настройте вашу систему управления пакетами на использование сетевого репозитория, и установите программу обычным способом (например, это можно сделать с помощью Synaptic).
Примечание: не следует забывать про дополнительные репозитории Autoimports.
Что делать, если «интернет дорогой»
Иногда случается так, что нужная программа есть в сетевом репозитории, но подключить и использовать его невозможно, потому что на целевом компьютере дорогой интернет, или вообще нет сети. Можно попробовать скачать нужный пакет и все его зависимости
(как их определить — ниже)
на другом компьютере, принести все эти пакеты на целевой компьютер, и далее воспользоваться инструкцией по установке одиночного пакета.
Отследить зависимости уже установленных программ (например gimp) можно следующей командой: $ apt-cache depends gimp
Вы увидите примерно следующее:
gimp-2.6.3-alt1 Требует: libgimp = 2.6.3-alt1 Требует: icc-profiles Требует: glibc-core-6:2.9-alt1 Требует: coreutils-6.12-alt2 .
Программа есть в сетевом репозитории другой версии
Самый правильный способ — «повесить» запрос на перенос нужного пакета в вашу версию дистрибутива. Однако, этот способ не самый быстрый 🙂
Еще один неплохой способ — попробовать самостоятельно собрать нужный пакет «в своём окружении», то есть под свою версию системы. Проще всего это сделать с помощью Hasher. Вам понадобится скачать пакет с исходными текстами нужной программы (src.rpm пакет), и воспользоваться инструкцией по работе с Hasher.
Примечание: сборка в Хэшере требует настроенного источника пакетов. В процессе сборки из источника будут получены пакеты на десятки (или даже сотни) мегабайт. Следите за трафиком 🙂
Еще один способ: пересобрать src.rpm с помощью команды rpm —rebuild (за подробностями — в man rpm). При такой пересборке не понадобится выкачивать из источника пакетов те пакеты, которые уже установлены в вашей системе, что может сэкономить время и деньги. Но удовлетворение сборочных зависимостей придётся делать вручную, что требует определённой квалификации. Кроме того, произойдёт «засорение» системы devel-пакетами. Метод не рекомендуется неопытным пользователям!
Если сборка программы завершается ошибками, и вашей квалификации не хватает для их устранения, см. первый способ.
Программы нет в дистрибутиве, но её можно туда включить
Существует огромное множество программ. И ни один дистрибутив не может охватить все это множество.
Почему нужная конкретно вам программа не попала в дистрибутив? Скорее всего потому, что:
- никому из тех, кто обладает достаточной квалификацией, она не нужна (в данный момент)
- программа редкая и/или новая, и о ней просто никто не знает
- в силу различных ограничений (технического или лицензионного характера), программу нельзя включить в дистрибутив.
Что делать в таком случае?
Простой и правильный способ: разместить в списке рассылки просьбу собрать и поместить нужную программу в дистрибутив. Если это действительно хорошая и нужная программа, то, возможно, найдётся тот человек, который захочет и сможет собрать и поместить её в дистрибутив. Или вам посоветуют аналогичную (возможно, гораздо более качественную) программу из имеющихся в дистрибутиве.
Сложный и совсем правильный способ: стать мейнтейнером данной программы! То есть изучить правила сборки пакетов для ALT Linux, собрать пакет, и влиться в ряды разработчиков.
Почему нельзя собирать и ставить программы с помощью make; make install
Кратко: если вы не понимаете, почему нельзя пользоваться configure; make; make install , то вам не стоит пользоваться этими командами.
Многие неопытные пользователи часто возмущаются, когда им говорят, что в дистрибутивах, основанных на пакетах (rpm, deb и т. п.) не стоит устанавливать программы с помощью make install . Основные причины не использовать эти команды:
- программа, установленная таким образом, не попадает в базу данных установленных программ, в общем виде её невозможно корректно обновить или удалить, она порождает файлы, принадлежность которых невозможно определить.
- между программами есть зависимости, часто очень сложные. Разрешение зависимостей при make install не работает, и такая установка программы может привести к неработоспособности других программ или всей системы.
- в каждом дистрибутиве есть специфические настройки, особое расположение конфигурационных файлов и т. п. При сборке пакета мейнтейнер учитывает эти нюансы, make install их игнорирует.
Все вышесказанное относится и к программам, устанавливаемым с помощью инсталляционных скриптов типа
install.sh
Почему нельзя ставить пакеты из других дистрибутивов
Кратко: если вы не знаете, почему нельзя ставить чужие rpm, не стоит этого делать!
Часто пользователи пытаются поставить rpm-пакеты (а иногда и deb-пакеты) из других дистрибутивов, обычно Mandriva или RedHat. Но в каждом дистрибутиве свои особенности настроек, именования пакетов и т. п. Поэтому есть отличная от нуля вероятность разломать свою систему установкой чужих пакетов [3] .
Отдельно стоит упомянуть проблему с версиями разделяемых библиотек, так как она касается не только дистрибутивов от разных производителей, но и дистрибутивов просто разных версий от одного производителя. Использование разделяемых библиотек позволяет экономить на объёмах памяти, скорости загрузки приложений и т.п., но накладывает ограничение на переносимость бинарных пакетов. Поэтому, даже в рамках ALT Linux, как правило, нельзя просто взять пакет из Sisyphus и установить его в дистрибутив на базе стабильного бранча: требуется пересборка пакета в соответствующем окружении. Исключение составляет небольшой промежуток времени после отделения последнего бранча — какое-то время бинарная совместимость сохраняется.
Если нельзя, но очень хочется и epm
Есть утилита epm. Она позволяет перепаковать как чужие rpm, так и deb. Иногда это работает, но гарантии нет. При этом перепаковка для некоторых пакетов даже тестируется и пишутся вспомогательные скрипты, но гарантии, что это будет работать со следующей версией пакета тоже нет.
Если нельзя, но очень хочется и make
Иногда очень хочется или очень надо поставить пакет из исходников. Делайте это на свой страх и риск, и не говорите потом, что вас не предупреждали, и не засоряйте рассылки и форумы нытьём типа «я тут сделал, и у меня не работает».
- практически у всех программ скрипт configure понимает параметр —prefix, в который можно и нужно указать «альтернативный» каталог для установки, чтоб ваша программа не конфликтовала с другими программами из системы. Используйте что-то вида —prefix=/opt/usr или —prefix=$HOME/my_progs.
- инсталляторы *.run тоже (обычно) умеют ставить программу в указанный каталог. Не ставьте ничего в /usr (при этом, /usr/local использовать можно) !
- при установке чужих rpm-пакетов избегайте команд вида rpm -i и тем более rpm —nodeps —force. Используйте apt-get install.
- выбирайте rpm со статическими сборками, в их именах часто (но не обязательно) присутствует слово static.
- при установке бинарных сборок таких программ как Firefox или OpenOffice и им подобных, качайте с сайта пакет «для всех дистрибутивов», обычно это tgz-архив, и распаковывайте его в, например, /opt или $HOME/progs.
Отдельное замечание про драйвера nVidia и AMD(ATi)
Очень часто пользователи пытаются скачать с сайта производителя и поставить драйвера для видеокарт нВидиа или АТи/АМД. Не стоит так делать! Самостоятельная установка драйверов путём запуска *.run разломает вам графическую подсистему с очень высокой степенью вероятности!
Все необходимые драйвера уже есть в дистрибутиве (на CD/DVD или в сетевых репозиториях; как ставить). Если у вас очень новая карта, и имеющиеся драйвера её не понимают, то вешайте запрос в Багзиллу на обновление драйверов.
Отдельное замечание про установку VirtualBox
Часто пользователи ставят проприетарную сборку VirtualBox. См. инструкцию.
Как устанавливать AppImage-файлы
Устанавливать программы в формате AppImage не нужно. Они работают без установки см. инструкцию.
Программы нет в дистрибутиве, и её нельзя туда включить
Некоторые программы невозможно включить в дистрибутив. Иногда по техническим причинам. Тогда самое правильное будет ждать, пока устранят технические причины. За подробностями обращайтесь в списки рассылки.
Некоторые программы нельзя включить в дистрибутив по лицензионным ограничениям. Например,
браузер Operaили интернет-телефон Skype. Для некоторых программ некоторые пользователи в частном порядке собирают rpm-пакеты. Например, fly.osdn.org.ua/~drool/ (см. FAQ). Можете воспользоваться такими «альтернативными» источниками пакетов. Другой выход — установка статических сборок вручную, либо использование epm (см. выше).Программа вообще не работает в Linux
Некоторые программы вообще не работают в Linux. Например, бинарные программы, написанные под другую операционную систему (Windows, Solaris, BSD), или программы (даже с исходниками) написанные под очень старые версии Linux. Если вам очень хочется поработать с такими программами, поставьте ту ОС, для которой они написаны.
Примечания
- ↑ Под дистрибутивом в данном контексте понимается не отдельно взятый CD или DVD, который оказался у пользователя, а полный набор пакетов в определённой ветке репозитория, или во всех репозиториях ALT Linux’а
- ↑ По возможности, стоит избегать такой ситуации! Потому что одиночному пакету по зависимостям могут понадобиться другие пакеты, которых не найдётся в вашей системе и источниках установки.
- ↑Пример разлома посредством установки pkiclient-5.00.28-0.i386.rpm