====== Управление ПО в Linux ======
===== Что за дистрибутив? =====
* [[Выбор дистрибутива Linux]]
===== DPKG =====
* [[https://ru.wikipedia.org/wiki/Dpkg|Dpkg - Википедия]]
* [[https://packages.ubuntu.com/search?keywords=asterisk]]
# less /var/lib/dpkg/status
==== Установка пакета ====
* [[Сервис OpenFire#Установка]] сервиса OpenFire (!!! требует JRE)
==== Установленные пакеты ====
$ dpkg -l | grep openfire
==== Содержимое пакета ====
$ dpkg -L cgatepro-linux
==== В какой пакет входит файл ====
$ dpkg -S /etc/init.d/ssh
$ dpkg -S /opt/CommuniGate/mail
==== Конфигурация пакета ====
# dpkg-reconfigure snort
==== Удаление пакета ====
# dpkg -r cgatepro-linux
===== Использование менеджера пакетов APT =====
* [[http://ru.wikipedia.org/wiki/Advanced_Packaging_Tool|APT wikipedia на русском]]
* [[http://www.debian.org/doc/manuals/apt-howto/|APT HOWTO на русском]]
* [[https://wiki.debian.org/ru/SourcesList|Debian SourcesList]]
* [[http://askubuntu.com/questions/58364/whats-the-difference-between-multiverse-universe-restricted-and-main|Ubuntu What's the difference between multiverse, universe, restricted and main?]]
$ apt moo
==== Настройка репозитория ====
* [[https://www.debian.org/mirror/list|Мировые серверы-зеркала Debian]]
# apt install netselect-apt
# netselect-apt
# less /etc/apt/sources.list
# sed -i -e 's/deb.debian.org/mirror.docker.ru/g' /etc/apt/sources.list
# apt update
==== Подключение сторонних репозиториев ====
* [[https://docs.microsoft.com/ru-ru/sql/linux/sql-server-linux-setup-ubuntu|Install SQL Server on Ubuntu]]
* [[https://vk.com/wall-95686747_13620|Для установки Elasticsearch и остальных продуктов Elastic, можно использовать репозиторий https://mirror.yandex.ru/mirrors.]]
# cat /etc/apt/sources.list
...
deb [trusted=yes] https://mirror.yandex.ru/mirrors/elastic/8/ stable main
...
==== Обновление списка доступных пакетов ====
# apt update
==== Поиск пакета ====
$ apt search antivirus
==== Информация о найденном пакете ====
$ apt show clamav-daemon
==== Какие пакеты зависят от пакета ====
$ apt depends ssh
==== Установка/обновление пакета ====
# apt install clamav-daemon
# DEBIAN_FRONTEND=noninteractive apt -y install postfix
==== Удаление пакета ====
# apt remove snort
# apt autoremove
==== Полное (с конфигами и данными) удаление пакета ====
# apt purge snort
==== Отключение автоматических обновлений ====
# apt purge unattended-upgrades
==== Какие пакеты можно/нужно обновить ====
* [[http://www.ubuntu.com/usn|Ubuntu security notices]]
# apt list --upgradable
# apt-show-versions -i
# apt-show-versions -u
# apt-show-versions -u | grep security
$ ubuntu-support-status --show-all
==== Установка всех обновлений ====
* [[https://help.ubuntu.com/community/AutoWeeklyUpdateHowTo|AutoWeeklyUpdateHowTo]]
# apt upgrade
==== Поиск пакета (в том числе среди неустановленных) в который входит файл ====
# apt install apt-file
# apt-file update
# apt-file search stddef.h
# apt-file search identify | grep '/bin'
==== Удаление архива установленных пакетов ====
# apt clean
==== Загрузка пакетов и зависимостей для offline установки ====
* [[https://stackoverflow.com/questions/16919114/run-sudo-apt-get-install-without-internet-connection|Run sudo apt-get install without internet connection]]
* [[#Удаление архива установленных пакетов]]
# apt install -d zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent
# find /var/cache/apt/archives/
# cd /var/cache/apt/archives/
* Сервис NFS [[Сервис NFS#Установка, настройка и запуск сервиса]]
* Сервис NFS [[Сервис NFS#Установка nfs клиента]]
* Сервис NFS [[Сервис NFS#Установка ПО]]
==== Исправление состояния базы данных APT ====
* Если установка прервалась на середине процесса, и вы больше не можете ни установить, ни удалить пакеты:
# apt -f install
# reboot
# dpkg --configure -a
# dpkg --force-all -P linux-headers*
* Если dpkg валится с ошибкой кофигурации, можно пометить пакет как нормально установленный взять за основу файл конфигурации из документации
root@server# cat /var/lib/dpkg/status
...
Package: netams
Status: install ok installed
...
root@server:~# cp /usr/share/doc/netams/examples/netams.conf /var/lib/netams/netams.conf
==== Настройка на использование http_proxy ====
* [[Переменные окружения]]
===== RPM =====
* [[http://ru.wikipedia.org/wiki/RPM]]
* [[http://www.thegeekstuff.com/2010/07/rpm-command-examples/|RPM Command: 15 Examples to Install, Uninstall, Upgrade, Query RPM Packages]]
* [[http://www.ibm.com/developerworks/ru/library/l-roadmap9/index.html|Использование предварительно скомпилированных пакетов RPM и сборка приложений из исходных кодов]]
==== Использование команды rpm ====
=== Установленные пакеты ===
# rpm -aq
=== Установка пакета ===
# wget -O openfire-4.3.2-1.x86_64.rpm https://www.igniterealtime.org/downloadServlet?filename=openfire/openfire-4.3.2-1.x86_64.rpm
# rpm -i openfire-4.3.2-1.x86_64.rpm
=== Содержимое установленного пакета ===
# rpm -q -l openfire-4.3.2-1.x86_64
=== В какой пакет входит файл ===
# rpm -q -f /bin/sort
=== Содержимое архива пакета ===
# rpm -q -l -p openfire-4.3.2-1.x86_64.rpm
==== Использование менеджера пакетов YUM ====
[[http://www.bog.pp.ru/work/yum.html]]
=== Список установленных пакетов ===
$ yum list installed
=== Поиск пакета ===
$ yum search mysql
=== Поиск пакета (в том числе среди неустановленных) в который входит файл ===
$ yum provides semanage
$ yum provides "*/Print.h"
=== Информация о найденном пакете ===
$ yum info mysql-server
=== Установка пакета ===
# yum install mysql-server
=== Обновление пакета/всех пакетов ===
$ yum list updates
# yum update mysql-server
# yum update
=== Удаление пакета ===
# yum remove mysql-server
=== Использование proxy ===
# cat /etc/yum.conf
...
proxy=http://10.1.1.254:3128/
=== Установка групп ПО ===
# yum grouplist
centos# yum -y groups install "GNOME Desktop"
almalinux# yum groupinstall "Server with GUI"
almalinux# systemctl set-default graphical && reboot
===== Portage =====
===== emerge =====
* [[https://www.calculate-linux.ru/main/ru/emerge|emerge - консольный интерфейс к системе портежей]]
* [[http://edoceo.com/howto/emerge|Using Emerge to Install/Remove Packages]]
=== Обновление дерева пакетов ===
# emerge --sync
=== Поиск пакета ===
$ emerge -s lynx
=== Установка пакета ===
# emerge lynx
# emerge app-admin/sudo
=== Управление конфигурацией сборки ===
* -p - показать, но не делать
# emerge -p -v www-client/lynx
# USE="-bzip2" emerge www-client/lynx
# ldd /usr/bin/lynx
=== Обновление пакета/всех пакетов ===
# emerge -puvD world
# emerge -uvD world
=== Удаление пакета ===
# emerge -c www-client/lynx
===== Snap =====
* [[https://tutorials.ubuntu.com/tutorial/basic-snap-usage|Basic snap usage]]
* [[https://askubuntu.com/questions/979233/how-to-list-files-installed-by-a-snap-package|How to list files installed by a snap package?]]
* [[https://snapcraft.io/docs/installing-snap-on-debian|Installing snap on Debian]]
* [[Инструмент Gitea]]
debian# apt install snapd
# snap refresh
$ snap search firefox
# snap install hello
$ snap list
# find /snap/ | grep hello
$ hello
# snap refresh hello
# snap remove hello
===== Docker =====
* [[Технология Docker]]
* [[Сервис TACACS+]]
* [[Сервис Grafana]]
===== Список desktop приложений =====
* [[https://unix.stackexchange.com/questions/20979/how-do-i-list-all-installed-programs]]
$ ls /usr/share/applications | awk -F '.desktop' ' { print $1}' -
===== Работа с исходными текстами =====
* [[http://help.ubuntu.ru/wiki/programs_installation|Компиляция и установка программ из исходников]]
==== Установка пакетов для работы с исходными текстами ====
=== Debian/Ubuntu ===
# apt install build-essential autoconf automake
=== CentOS/SL ===
# yum install gcc gcc-c++ make autoconf automake
# yum install glibc glibc-common
==== Примеры сборки программ из исходных текстов ====
* [[Сервис Asterisk#Сборка asterisk из исходных текстов]]
===== Дополнительные материалы =====
==== Работа с исходными текстами в DPKG ====
=== Установка пакетов для работы с исходными текстами ===
# apt install build-essential
=== Работа с исходными текстами пакета ===
== Установка, необходимых для компиляции пакета пакетов ==
root@gate:~# apt build-dep snort
== Загрузка исходных текстов ==
root@gate:~# apt source snort
== Загрузка/накладывание необходимых патчей (опционально) ==
[[http://www.snortsam.net/files/snort-plugin/readme.txt]]
root@gate:~# wget http://www.snortsam.net/files/snort-plugin/snortsam-2.8.5.diff.gz
root@gate:~# gunzip snortsam-2.8.5.diff.gz
root@gate:~# cd snort-2.8.5.2/
root@gate:~/snort-2.8.5.2# patch -p1 < ../snortsam-2.8.5.diff
patching file autojunk.sh
...
patching file etc/snort.conf
Hunk #1 FAILED at 883.
1 out of 1 hunk FAILED -- saving rejects to file etc/snort.conf.rej
root@gate:~/snort-2.8.5.2# apt-get install automake
root@gate:~/snort-2.8.5.2# sh autojunk.sh
== Конфигурирование пакета (опционально) ==
root@gate:~/snort-2.8.5.2# ./configure --help
== Создание deb пакетов из исходных текстов ==
root@gate:~/snort-2.8.5.2# dpkg-buildpackage -b
root@gate:~/snort-2.8.5.2# cd ..
== Установка пакета ==
root@gate:~# dpkg -i snort-common-libraries_2.8.5.2-2build1_i386.deb snort-common_2.8.5.2-2build1_all.deb snort-rules-default_2.8.5.2-2build1_all.deb snort_2.8.5.2-2build1_i386.deb
==== Создание локального репозитория APT ===
=== Использование сервера Ubuntu ===
* [[https://help.ubuntu.ru/wiki/apt-mirror|Создание зеркала репозиториев с помощью apt-mirror]]
root@rep:~# apt-get install apt-mirror
root@rep:~# cd /var/spool/
root@rep:/var/spool# mv apt-mirror/ /disk2/
root@rep:/var/spool# ln -s /disk2/apt-mirror/ apt-mirror
root@rep:~# cat /etc/apt/mirror.list
set nthreads 20
set _tilde 0
deb http://ru.archive.ubuntu.com/ubuntu precise main restricted universe multiverse
clean http://archive.ubuntu.com/ubuntu
root@rep:~# apt-mirror -c apt-mirror
root@rep:~# apt-get install apache2
root@rep:~# ln -s /var/spool/apt-mirror/mirror/ru.archive.ubuntu.com/ubuntu /var/www/ubuntu
=== Использование сервера FreeBSD ===
[repository:~] # pkg_add -r dpkg
[repository:~] # pkg_add -r wget
[repository:~] # cd /usr/local/
[repository:/usr/local] # fetch http://apt-mirror.sourceforge.net/apt-mirror/apt-mirror_0.4.8.orig.tar.gz
[repository:/usr/local] # tar -xvf apt-mirror_0.4.8.orig.tar.gz
[repository:~] # mkdir /etc/apt/
[repository:~] # cp /usr/local/apt-mirror-0.4.8/mirror.list /etc/apt/
[repository:~] # grep -v '^#' /etc/apt/mirror.list
set defaultarch i386
deb http://ru.archive.ubuntu.com/ubuntu lucid main restricted universe multiverse
clean http://ru.archive.ubuntu.com/debian
[repository:~] # mkdir -p /var/spool/apt-mirror/mirror
[repository:~] # mkdir -p /var/spool/apt-mirror/var
[repository:~] # cp /usr/local/apt-mirror-0.4.8/postmirror.sh /var/spool/apt-mirror/var/
[repository:~] # /usr/local/apt-mirror-0.4.8/apt-mirror
[repository:~] # rm /var/spool/apt-mirror/var/apt-mirror.lock
[repository:~] # pkg_add -r apache22
[repository:~] # ln -s /var/spool/apt-mirror/mirror/ru.archive.ubuntu.com/ubuntu /usr/local/www/apache22/data/ubuntu
=== Настройка клиентов ===
# cat /etc/apt/sources.list
deb http://rep/ubuntu/ lucid main restricted universe multiverse