Действительно ли возможно отключить (замораживают) пакет?

Я стремлюсь знать, возможно ли сохранить некоторые пакеты отключенными в Ubuntu, подобной тому, как мы можем заморозиться / отключают приложение в Android.

т.е. пакет установлен, но не применимый, пока он не повторно активирован.

N.B. Я не спрашиваю о просто, "отключают обновление", я спрашиваю о, "отключают пакет".

Если возможно, то, как мы можем сделать это?

2
задан 3 November 2017 в 22:25

4 ответа

Linux не запускает ненужные приложения и хранит их в оперативной памяти, как это делает Android, чтобы они могли получать push-сообщения и тому подобное. Так что заморозка пакетов не нужна.

Для многих приложений, если вы не запустите приложение, оно не запустится. Он все равно будет получать обновления, если вы захотите его использовать.

Если вы действительно склонны избавляться от пакета, его удаление (и установка по мере необходимости) возможно для несущественных приложений, но, как и в других дистрибутивах Linux, пакеты в Ubuntu зависят от других пакетов и имеют другие пакеты, которые зависят от них, поэтому при установке или удалении пакета другие пакеты могут автоматически устанавливаться как зависимости (или замены) или удаляться, поскольку они зависят от удаляемого пакета. Удаление пакета с множеством зависимостей или которое необходимо для правильной работы системы, может очень сильно сломать систему. Все это обрабатывается системой управления пакетами. Чтобы увидеть, что произойдет, когда вы запустите определенную команду установки или удаления, используйте опцию -s или --simulate в APT, например

apt remove <package> -s

, это покажет, что будет сделано без делать что-либо.

Хотя некоторые программы работают в фоновом режиме как сервисы. В этих случаях вы можете использовать команду systemctl (часть интерфейса systemd, чтобы остановить и отключить их (отключение предотвращает запуск службы при загрузке). Еще раз, вы должны быть осторожны, потому что службы могут также зависят друг от друга, и остановка или отключение важной службы может оказать негативное влияние на функциональность и стабильность вашей системы. Однако systemd запустит отключенные вами службы, если от них зависят другие службы, так что это менее разрушаемо, чем управление пакетами. .

Вот примеры того, как останавливать, включать, отключать и запускать службы.

  1. включение службы:

    Включение службы не запускается. это автоматически; вам нужно использовать start для этого, или добавить флаг --now, или перезагрузить компьютер., чтобы оно вступило в силу.

    sudo systemctl enable <service-name>
    
  2. отключение службы :

    Отключение службы не приводит к немедленной ее остановке, для этого нужно использовать stop, добавить флаг --now или перезагрузить компьютер.

    sudo systemctl disable <service-name>
    
  3. запуск службы:

    запуск службы не делает ее включенной по умолчанию (для этого предназначена команда enable), но она запускается сервис немедленно, если он может быть запущен.

    sudo systemctl start <service-name>
    
  4. остановка сервиса:

    остановка сервиса не отключает сервис, который был включен, но останавливает его для время до следующей перезагрузки.

    sudo systemctl stop <service-name>
    
  5. перезапуск службы:

    Перезапуск службы, но, как команды start и stop не влияет на то, служба будет загружена и запущена при загрузке (поведение контролируется командами enable disable.

    sudo systemctl restart <service-name>
    
5
ответ дан 2 December 2019 в 01:28

Если это - регулярное применение, можно удалить исполняемые права на него, таким образом делая его "неприменимым". Можно сделать это как так (я использую /usr/bin/gedit как пример здесь):

$ sudo chmod -x /usr/bin/gedit

Если необходимо использовать его снова:

$ sudo chmod +x /usr/bin/gedit

Для systemd единиц см. другие ответы.

2
ответ дан 2 December 2019 в 01:28

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.

Вам, вероятно, придется рассмотреть документацию пакета, который Вы устанавливаете для наблюдения, какой сервис или сервисы это запускает для использования пакета.

Быстрый ответ

Можно отключить (замораживают) пакеты путем отключения сервисов пакета.

2
ответ дан 2 December 2019 в 01:28

Нет, в настоящее время Ubuntu не имеет этой функции. Если Вы не используете пакет, но можете использовать его в будущем, необходимо удалить его и установить позже, когда Вы готовы использовать его.

1
ответ дан 2 December 2019 в 01:28

Другие вопросы по тегам:

Похожие вопросы: