- Аналог статьи про CentOS
- Debian 10 в web VM: https://webvm.io/
- (ubuntu/debian, OS loading) В ubuntu есть lifepatching, который позволяет обновить ядро и systemd без перезагрузки как системы, так и сервисов!
- (Centos, Ubuntu) PackageKit — открытый и свободный набор приложений для обеспечения высокоуровнего интерфейса для различных пакетных менеджеров. Он используется RHEL в качестве графического интерфейса (по факту нескольких интерфейсов – add/remove, updater, settings) управления пакетами. Поддерживает работу с:
- APT
- yum
- Conary
- Pacman
- Portage
- Zypper
- urpmi
- Machine ID Linux OS в общем случае можно посмотреть в /etc/machine-id, файл содержит hash, который заполняется при установке OS. Полезно для идентификации, напр. вопросы лицензирования. Этот ID можно в последующем поменять (systemd-machine-id-setup, systemd-firstboot, dbus-uuidgen).
The /etc/machine-id file contains the unique machine ID of the local system that is set during installation or boot. The machine ID is usually generated from a random source during system installation or first boot and stays constant for all subsequent boots. Optionally, for stateless systems, it is generated during runtime during early boot if necessary. -bash-4.2$ cat /etc/machine-id 7f4fb489175544f09662e41adfe360e9
- Старые пакеты можно найти на ubuntuupdates.org, довольно удобно (безопасность не гарантирую)
- dpkg-reconfigure reconfigures packages after they have already been installed. Pass it the names of a package or packages to reconfigure. It will ask configuration questions, much like when the package was first installed.
- ((Systemd, ubuntu)) В ubuntu сейчас появился lifepatching, который позволяет обновить ядро и systemd без перезагрузки как системы, так и сервисов!
- В ubuntu desktop версии может быть включен сервис автоматического апдейта пакетов (automatic-update), который запускается раз в день, но в целом если говорить про сервера, это так себе практика, обновлять что-то автоматически
APT – advanced package tool. Пакетный менеджер на Debian и debian-based дистрибутивов (ubuntu, mint, cali) – позволяет легко искать приложения, скачивает приложения из репозиториев, устанавливает и их зависимости, удаляет все это при необходимости. Apt умеет работать не только с репозиториями, но и с пакетам .deb по аналогии с dpkg (о нем ниже).
В новых версиях Ubuntu/Debian не обязательно использовать apt-get, достаточно apt. Это разные утилиты – первая устаревшая и в новых ОС может быть простым редиректом на apt. В новой версии при большом количестве пакетов APT себя ведет лучше – быстрее работает, с меньшим количеством ошибок, при удалении лучше счищает ненужные зависимости (apt-get not very robust).
Приложения
sudo apt intall nginx – установка nginx
sudo apt intall nginx=1.1 – установка nginx версии 1.2
sudo apt intall nginx.deb – установка из deb пакета, зависимости при обнаружении отсутствия подтягиваются из репозитория; так же приложение может установить свой репозиторий (см. ниже)
обновление
sudo apt update – получение списка всех доступных обновлений приложений из установленных в системе репозиториев. Обязательно запускаем чтобы гарантировать, что мы ставим последние версии приложений.
fetches the list of available updates
Before you install any software, always make sure you're pulling the latest software from your repositories with the apt update command.
sudo apt dist-upgrade – обновление приложений на основе сформированного ранее списка обновлений, включая ядро (kernel), а так же удаление неактуальных пакетов. dist-upgrade лучше обычного upgrade (sudo apt-get upgrade) т.к. разрешает конфликты (доустанавливает/обновляет/удаляет необходимые зависимости), но нужно учитывать, что он обновляет ядро, в отличии от обычного upgrade. Логгирование лучше всего собирать с терминала (secure/putty легко это позволяют), а не записывать в файл (&>upgrade.log) – потому что могут появляться экраны с запросами, не только y/n, решаемые опцией -y.
- После обновления ядра чаще всего необходимо перезагружаться для применения изменений и защиты от риска удаления «псевдо-осиротевших» пакетов (ниже в clean подробнее).
- После перезагрузки не забываем стартануть все демоны, а так же можем наткнуться на отсутствие сетевой доступности из-за прописывания маршрутов динамически в RIB, а не в файл.
- Осторожно! при обновлении сервисов они могут не работать (у меня выдавало ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)) при обновлении mysql, что вполне естественно.
- Обновление может помочь при переводе часов (обновлялся пакет tzdata, отвечающий за часовые пояса).
- После обновления еще раз его запускаем, как проверку, что нет инкрементальных апдейтов (в общем случае не должно быть).
~$ sudo apt-get dist-upgrade
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Clean
sudo apt autoremove – удаление осиротевших пакетов/библиотек (результат удаления пакета) и прочего треша, запускаем строго ПОСЛЕ обновления и перезагрузки. Запускать надо т.к. может сильно высвободить память от мусора. Причем запускать несколько раз, как с CCleaner. После этого может понадобится еще одна перезагрузка (в шапке будет system restart required).
Первый раз
0 upgraded, 0 newly installed, 7 to remove and 0 not upgraded.
After this operation, 285 MB disk space will be freed.
Второй раз
0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
After this operation, 300 MB disk space will be freed.
В третий раз
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
- если запустить до установки обновлений, после установки может остаться мусор, вот пример:
~$ sudo apt-get autoremove Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: linux-headers-3.16.0-30 linux-headers-3.16.0-30-generic linux-image-3.16.0-30-generic linux-image-3.16.0-31-generic linux-image-extra-3.16.0-30-generic linux-image-extra-3.16.0-31-generic 0 upgraded, 0 newly installed, 6 to remove and 3 not upgraded. After this operation, 480 MB disk space will be freed. Do you want to continue? [Y/n] н Abort.
- если запустить после обновления приложений, но до перезагрузки – можно сталкнуться с фейлом что осиротевшим пометится новое обновление, требующее перезагрузки т.к. оно еще недоустановилось! У меня так похерились mysql server/client, благо я и базу забекапил и сама база не потерлась:
~$ sudo apt-get autoremove
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
libaio1 libdbd-mysql-perl libdbi-perl libterm-readkey-perl mysql-client-5.5
mysql-client-core-5.5 mysql-server-5.5 mysql-server-core-5.5
0 upgraded, 0 newly installed, 8 to remove and 3 not upgraded.
After this operation, 92,7 MB disk space will be freed.
Do you want to continue? [Y/n] y
Аналогично теряли базу postgres на gentoo. Причем она продолжала работать в оперативке.
OS
lsb_release -a – смотрим версию дистрибутива.
uname –a – смотрим hostname, версию ядра, разрядность (если система 64-битная, то в консоли это будет обозначено как x86_64; если система 32-битная, то будет i686 или i386)
sudo apt install update-manager-core – устанавливаем приложение по обновлению ядра
sudo do-release-upgrade или sudo apt full-upgrade – обновление релиза OS (ядра Linux). Если версия хоть и предыдущая, но поддерживаемая LTS, несколько раз думаем перед обновлением, насколько оно нужно. Официальным LTS Debian, кстати, по факту считает и поддерживает OS 4-ех летней давности по релизу! Вместо обновления на новую LTS система может предложить обновить только Security стек, как самое необходимое.
To upgrade to a supported (or longer-supported) configuration:
* Upgrade from Ubuntu 14.04 LTS to Ubuntu 16.04 LTS by running:
sudo do-release-upgrade
OR
* Switch to the current security-supported stack by running:
sudo apt-get install linux-image-generic-lts-xenial linux-generic-lts-xenial
and reboot your system.
Репозитории
/etc/apt/sources.list – ссылки на repo для ubuntu находятся тут, приложения могут добавлять свои репо (типо chrome – google-chrome.list) в директорию /etc/apt/sources.list.d. Так же приложения можно ставить из ppa-репозиториев (установка ppa-приложений) с сайта launchpad.net, принадлежащего Canonical (по сути маркет для приложений). Например популярный репозиторий для php7.0 http://ppa.launchpad.net/ondrej/php/ubuntu. В любом случае (особенно в случае с ppa), устанавливая тот или иной репозиторий, нужно быть уверенным, что он надежный – иначе получим нерабочий или даже вредоносный софт.
Пример добавления репозитория.
sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
Можно добавлять и непосредственно строкой в файл /etc/apt/sources.list, причем чем «выше» (т.е. ближе к началу файла) стоит строка, тем больший приоритет получит добавленный репозиторий. Так же может потребоваться загрузка и добавление GPG ключа данного репозитория. После добавления репо/ключа не забываем запустить update инфы из репозиториев.
sudo vi /etc/apt/sources.list wget <url.asc> sudo apt-key add <key.asc> sudo apt update
В случае ошибки с CD/DVD приводом, а нам нужно загружать через сеть, нужно закомментировать строку с поиском дистрибутива на CD-ROM.
Media change: please insert the disc labeled 'Debian GNU/Linux 10.11.0 _Buster_ - Official amd64 DVD Binary-1 20211009-16:12' # deb cdrom:[Debian GNU/Linux 10.11.0 _Buster_ - Official amd64 DVD Binary-1 20211009-16:12]/ buster contrib main
REMOVE
remove так же следит за зависимостями и если видит, что зависимый софт для удаляемого пакета можно безопасно удалить (т.е. от него не зависят другие пакеты), то он об этом говорит, но при этом сами зависимости не удаляет – для этого нужно использовать apt autoremove.
Другие полезные apt-команды
apt list –installed – смотрим информацию про все установленные пакеты
apt show python3 – смотрим информацию про конкретный пакет
# apt show python3 Package: python3 Version: 3.7.3-1 Priority: optional Section: python Source: python3-defaults Maintainer: Matthias Klose <doko@debian.org> Installed-Size: 191 kB Provides: python3-profiler Pre-Depends: python3-minimal (= 3.7.3-1) Depends: python3.7 (>= 3.7.3-1~), libpython3-stdlib (= 3.7.3-1) Suggests: python3-doc (>= 3.7.3-1), python3-tk (>= 3.7.2-1~), python3-venv (>= 3.7.3-1) Replaces: python3-minimal (<< 3.1.2-2) Homepage: https://www.python.org/ Tag: devel::interpreter, devel::lang:python, devel::library, implemented-in::c, implemented-in::python, role::devel-lib, role::program, role::shared-lib Cnf-Extra-Commands: python Cnf-Priority-Bonus: 5 Download-Size: 61,5 kB APT-Manual-Installed: no APT-Sources: http://deb.debian.org/debian buster/main amd64 Packages Description: интерактивный высокоуровневый объектно-ориентированный язык (версия python3 по умолчанию)
apt -a list phantomjs – смотрим информацию про конкретный пакет (поиск только по имени, но можно испоьзовать wildcard *), флаг a необязателен, он показывает все версии одного пакета, а не только последнюю
apt search python3-pip – ищем конкретный пакет (поиск осуществляется не только по имени, но и по description)
apt search python3-pip Sorting... Done Full Text Search... Done python3-pip/trusty-updates 1.5.4-1ubuntu4 all alternative Python package installer - Python 3 version of the package python3-pipeline/trusty 0.1.3-3 all iterator pipelines for Python 3
apt-get -s install mysql-server – запускаем установку в режиме симуляции, для понимания что произойдет при установке
apt-cache policy mysql-server – смотрим текущую версию пакета и ту, на которую будет апдейт
apt-cache depends nginx – показать все зависимости nginx
# apt-cache depends nginx nginx |Depends: nginx-full |Depends: nginx-light Depends: nginx-extras |Depends: nginx-full |Depends: nginx-light Depends: nginx-extras
apt-cache search ssh – найти (поиск по именам пакетам и описаниям) список пакетов, связанных с ssh
apt-cache does not make any changes to the system. It is only used to display and manipulate the data in the package cache or the package metadata. The package cache is the internal database that stores information about all available packages. The command apt-cache can be used to perform a full text search on all available packages on a Debian system. It searches the package names and the descriptions for an occurrence of the regular expression given as a keyword and prints out the package name and the short description. The syntax is: apt-cache search keyword. For example, apt-cache search openssh will return a list of packages related to OpenSSH2.
DPKG – debian package manager
DPKG, как и пакет deb – от прародителя Ubuntu – Debian. Сам по себе deb пакет является архивом, а DPKG – установщик пакетов в Debian like системах. Не является пакетным менеджером т.к. не умеет скачивать пакеты, не умеет скачивать/устанавливать их зависимости. Но в связке dpkg + apt “–fix-broken” работает – т.е. устанавливаем приложение с использованием dpkg, далее “подтягиваем” недостающее с помощью –fix-broken.
apt --fix-broken -y install
dpkg -i <archive> – install. С помощью dpkg в том числе можно установить/обновить драйвера. Можно установить все из папки, используя астериск.
dpkg -i firmware-bnx2x_20161130-5_all.deb Firmware: failed to load bnx2x/bnx2x-e2-7.13.1.0.fw (-2) Direct firmware load for bnx2x/bnx2x-e2-7.13.1.0.fw failed with error -2 Error loading firmware dpkg –i *
dpkg -r <app> – remove
Dekstop GUI -> Server SSH система
- Если не говорить про удаление лишнего, то вместо описанного потенциально можно было переключить runlevel
- отключить power management
- установить и включить SSH сервер
- настроить адресацию
- отключить GUI
To disable the GUI: sudo systemctl set-default multi-user.target sudo reboot To re-enable the GUI: sudo systemctl set-default graphical.target sudo reboot
5. удалить firefox, libreoffice
sudo apt-get remove --purge firefox sudo apt-get remove --purge libreoffice* sudo apt-get clean sudo apt-get autoremove
sudo systemctl stop NetworkManager sudo systemctl disable NetworkManager vi /etc/NetworkManager/NetworkManager.conf managed = false
Questions
Which of the following apt-get commands will install the newest versions of all currently installed packages?
A. auto-update
B. full-upgrade
C. dist-upgrade
D. install
E. update
Answer: C dist-upgrade not only updates. It also removes packages that were deselected in a new distribution! The correct answer can only be: apt-get upgrade and this is not an option.
Which Debian package management tool asks the configuration questions for a specific already installed package just as if the package were being installed for the first time? (Specify ONLY the command without any path or parameters.)
dpkg-reconfigure
Which of the following commands lists the dependencies of a given dpkg package?
A. apt-cache depends-onpackage
B. apt-cache dependencies package
C. apt-cache depends package
D. apt-cache requires package
Answer: C The apt-cache command is used to query the APT cache for information about packages. The depends option shows a listing of each dependency a package has and all the possible other packages that can fulfill that dependency. For example, apt-cache depends ubuntu-restricted-extras will show the dependencies of the ubuntu-restricted-extras package. The other options are not valid for the apt-cache command.