Table of Contents

Управление ПО в Linux

Что за дистрибутив?

DPKG

# less /var/lib/dpkg/status

Установка пакета

Установленные пакеты

$ 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

$ apt moo

Настройка репозитория

# 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

Подключение сторонних репозиториев

# 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

Какие пакеты можно/нужно обновить

# apt list --upgradable

# apt-show-versions -i

# apt-show-versions -u

# apt-show-versions -u | grep security

$ ubuntu-support-status --show-all

Установка всех обновлений

# apt upgrade

Поиск пакета (в том числе среди неустановленных) в который входит файл

# apt install apt-file 

# apt-file update

# apt-file search stddef.h

# apt-file search identify | grep '/bin'

Удаление архива установленных пакетов

# apt clean

Загрузка пакетов и зависимостей для offline установки

# apt install -d zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent

# find /var/cache/apt/archives/

# cd /var/cache/apt/archives/

Исправление состояния базы данных APT

 
# apt -f install

# reboot
# dpkg --configure -a

# dpkg --force-all -P linux-headers*
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

Использование команды 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

Обновление дерева пакетов

# emerge --sync

Поиск пакета

$ emerge -s lynx

Установка пакета

# emerge lynx

# emerge app-admin/sudo

Управление конфигурацией сборки

# 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

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

Список desktop приложений

$ ls /usr/share/applications | awk -F '.desktop' ' { print $1}' -

Работа с исходными текстами

Установка пакетов для работы с исходными текстами

Debian/Ubuntu

# apt install build-essential autoconf automake

CentOS/SL

# yum install gcc gcc-c++ make autoconf automake

# yum install glibc glibc-common

Примеры сборки программ из исходных текстов

Дополнительные материалы

Работа с исходными текстами в 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

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