Я стремлюсь знать, возможно ли сохранить некоторые пакеты отключенными в Ubuntu, подобной тому, как мы можем заморозиться / отключают приложение в Android.
т.е. пакет установлен, но не применимый, пока он не повторно активирован.
N.B. Я не спрашиваю о просто, "отключают обновление", я спрашиваю о, "отключают пакет".
Если возможно, то, как мы можем сделать это?
Linux не запускает ненужные приложения и хранит их в оперативной памяти, как это делает Android, чтобы они могли получать push-сообщения и тому подобное. Так что заморозка пакетов не нужна.
Для многих приложений, если вы не запустите приложение, оно не запустится. Он все равно будет получать обновления, если вы захотите его использовать.
Если вы действительно склонны избавляться от пакета, его удаление (и установка по мере необходимости) возможно для несущественных приложений, но, как и в других дистрибутивах Linux, пакеты в Ubuntu зависят от других пакетов и имеют другие пакеты, которые зависят от них, поэтому при установке или удалении пакета другие пакеты могут автоматически устанавливаться как зависимости (или замены) или удаляться, поскольку они зависят от удаляемого пакета. Удаление пакета с множеством зависимостей или которое необходимо для правильной работы системы, может очень сильно сломать систему. Все это обрабатывается системой управления пакетами. Чтобы увидеть, что произойдет, когда вы запустите определенную команду установки или удаления, используйте опцию -s
или --simulate
в APT, например
apt remove <package> -s
, это покажет, что будет сделано без делать что-либо.
Хотя некоторые программы работают в фоновом режиме как сервисы. В этих случаях вы можете использовать команду systemctl
(часть интерфейса systemd
, чтобы остановить и отключить их (отключение предотвращает запуск службы при загрузке). Еще раз, вы должны быть осторожны, потому что службы могут также зависят друг от друга, и остановка или отключение важной службы может оказать негативное влияние на функциональность и стабильность вашей системы. Однако systemd
запустит отключенные вами службы, если от них зависят другие службы, так что это менее разрушаемо, чем управление пакетами. .
Вот примеры того, как останавливать, включать, отключать и запускать службы.
включение службы:
Включение службы не запускается. это автоматически; вам нужно использовать start
для этого, или добавить флаг --now
, или перезагрузить компьютер., чтобы оно вступило в силу.
sudo systemctl enable <service-name>
отключение службы :
Отключение службы не приводит к немедленной ее остановке, для этого нужно использовать stop
, добавить флаг --now
или перезагрузить компьютер.
sudo systemctl disable <service-name>
запуск службы:
запуск службы не делает ее включенной по умолчанию (для этого предназначена команда enable
), но она запускается сервис немедленно, если он может быть запущен.
sudo systemctl start <service-name>
остановка сервиса:
остановка сервиса не отключает сервис, который был включен, но останавливает его для время до следующей перезагрузки.
sudo systemctl stop <service-name>
перезапуск службы:
Перезапуск службы, но, как команды start
и stop
не влияет на то, служба будет загружена и запущена при загрузке (поведение контролируется командами enable
disable
.
sudo systemctl restart <service-name>
Если это - регулярное применение, можно удалить исполняемые права на него, таким образом делая его "неприменимым". Можно сделать это как так (я использую /usr/bin/gedit
как пример здесь):
$ sudo chmod -x /usr/bin/gedit
Если необходимо использовать его снова:
$ sudo chmod +x /usr/bin/gedit
Для systemd единиц см. другие ответы.
Linux, в отличие от Android, который имеет что-то напоминающее тюрьму между различными пакетами, пользуется совместно использованными библиотеками между пакетами. Если бы Вы смогли отключить пакет, то это было бы неясно, из каких компонентов Вы удаляете функциональность.
Как многие уже упомянули, у Вас есть опция к удаленному пакеты, которые Вы не хотите для промежуточного периода, Вы не хотите это, включил. Таким образом, пакет и все библиотеки использовали исключительно им, будет удален. Библиотеки, которыми пользуются другие пакеты, не будут удалены.
Много Пакетов используют сервисы
Существует средство, чтобы включить или отключить сервисы или установить сервисы, чтобы только работать при активном запуске его. Пакетам, которые используют сервисы при нормальных обстоятельствах, запустят сервис после того, как пакет будет установлен и будет включен на запуске по умолчанию.
Примером этого является пакет Apache2. То, когда это установило сервис, запускается и устанавливается запуститься автоматически каждый раз, когда Вы перезагружаете компьютер.
Используйте systemctl, чтобы запустить, остановить, включить, отключить сервисы
Можно проверить список сервисов, чтобы видеть, хотите ли пакет Вы временно недоступный путем списка установленных служб, фильтрованных определенным именем пакета. В этом примере я буду искать Apache2.
(Это - команда и вывод для проверки установки и состояния Apache2. Это фильтрует список всех установленных пакетов для apache2
.)
$ systemctl | egrep apache2
apache2.service loaded active running LSB: Apache2 web server
Сервис может быть проверенным состоянием, запущенным, остановленным или отключил с этими командами:
Замените опцию одним из них: status
start
, stop
, restart
, disable
, enable
.
(Команда и вывод состояния сервиса)
$ sudo systemctrl status apache2
● apache2.service - LSB: Apache2 web server
Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Tue 2017-10-31 12:14:42 EDT; 2 days ago
Docs: man:systemd-sysv-generator(8)
Process: 17861 ExecReload=/etc/init.d/apache2 reload (code=exited, status=0/SUCCESS)
Process: 1864 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/apache2.service
├─ 2119 /usr/sbin/apache2 -k start
├─17909 /usr/sbin/apache2 -k start
├─21395 /usr/sbin/apache2 -k start
├─21397 /usr/sbin/apache2 -k start
├─21398 /usr/sbin/apache2 -k start
├─21399 /usr/sbin/apache2 -k start
├─21400 /usr/sbin/apache2 -k start
├─21401 /usr/sbin/apache2 -k start
├─21402 /usr/sbin/apache2 -k start
├─21403 /usr/sbin/apache2 -k start
└─31543 /usr/sbin/apache2 -k start
Oct 31 12:14:42 ubunzeus apache2[1864]: *
Oct 31 12:14:42 ubunzeus systemd[1]: Started LSB: Apache2 web server.
Nov 01 07:35:02 ubunzeus systemd[1]: Reloading LSB: Apache2 web server.
Nov 01 07:35:02 ubunzeus apache2[759]: * Reloading Apache httpd web server apache2
Nov 01 07:35:02 ubunzeus apache2[759]: *
Nov 01 07:35:02 ubunzeus systemd[1]: Reloaded LSB: Apache2 web server.
Nov 02 07:35:03 ubunzeus systemd[1]: Reloading LSB: Apache2 web server.
Nov 02 07:35:03 ubunzeus apache2[17861]: * Reloading Apache httpd web server apache2
Nov 02 07:35:04 ubunzeus apache2[17861]: *
Nov 02 07:35:04 ubunzeus systemd[1]: Reloaded LSB: Apache2 web server.
Можно сделать то же с любым больше чем из сто сервисов, которые установлены и включены на установке Ubuntu по умолчанию. Или, установлен и включен, когда Вы устанавливаете пакет, такой как, Apache2
, Openssh-server
, Mysql
, Plexmedia Server
, и так далее.
Можно отключить ssh
без удаления openssh-server
путем выполнения:
$ sudo systemctl disable sshd
ssh
вход в систему будет отключен (замороженный), пока Вы не повторно включите его с помощью enable
опция systemctl
.
Вам, вероятно, придется рассмотреть документацию пакета, который Вы устанавливаете для наблюдения, какой сервис или сервисы это запускает для использования пакета.
Быстрый ответ
Можно отключить (замораживают) пакеты путем отключения сервисов пакета.
Нет, в настоящее время Ubuntu не имеет этой функции. Если Вы не используете пакет, но можете использовать его в будущем, необходимо удалить его и установить позже, когда Вы готовы использовать его.