[GUIDE] Как полностью удалить NetworkManager из Arch Linux с установленным Cinnamon'ом.

Aivar
И обновлять систему потом так же:
# pacman -Syudd
в противном случае заблеклистиная обязательная зависимость не даст обновиться.
Обновляться с пропуском всех проверок, кстати, - ай-ай-ай!
А разве в данном случае не сработает занесение NM в IgnorePkg (/etc/pacman.conf)?
Никогда так с зависимыми пакетами не делал, а потому интересно с практической точки зрения. Но, думаю должно сработать и в данном случае.

UPD - а вообще pacman очень хороший, лучше нет. На данный момент в IgnorePkg= прописан firefox, а в NoUpgrade=boot/grub/grub.cfg
Ошибки не исчезают с опытом - они просто умнеют
vasek
А разве в данном случае не сработает занесение NM в IgnorePkg (/etc/pacman.conf)?
Не сработает ,пакет у которого в зависимостях игнорируемый не обновится, без ручного dd

Заглушка в данном случае оптимальный вариант, если не принимать просто забить
vs220
Не сработает ,пакет у которого в зависимостях игнорируемый не обновится, без ручного dd
жаль, думал что прокатит ..... тогда заглушка действительно хороший вариант для тех, кто не любитель иметь в системе лишнее.
Ошибки не исчезают с опытом - они просто умнеют
vasek
ТС ничего сам не ставил - NM притянулся автоматом при установке DE.
Я не знаю, у меня ничего не притягивалось. Я НМ ставил потом отдельно и отключал dhcpcd.
Давайте жить дружно! :-)
Тэээкс. Как выяснилось гвозди, которыми прибит NetworkManager к Cinnamon'у не такие уж и длинные ;-) Первоначальное решение также имеет право на жизнь, т.к. оно позволяет остаться на официальном канале обновлений, если же кто хочет выжечь NM из системы калёным железом - я сейчас покажу как, однако в этом случае придется пересобирать пакеты cinnamon и cinnamon-control-center каждый раз самостоятельно при обновлении версий исходников (благо они не такие уж и объемные).

Исходные данные - те же:
Cinnamon 4.09
Cinnamon-control-center 4.01
NetworkManager (уже убит и не шевелится), вместо него - любой по вкусу

Итак, создаем пустую директорию cinnamon. В нее складываем все файлы для этого пакета, взятые с официального сайта Arch Linux, за исключением файла PKGBUILD. Он у нас будет свой, вот такой:


pkgname=cinnamon-mod
pkgver=4.0.9
pkgrel=1
pkgdesc="Innovative Linux desktop. Slim version."
arch=('x86_64')
url="https://github.com/linuxmint/Cinnamon"
license=('GPL2')
provides=("cinnamon=$pkgver")
conflicts=('cinnamon')
replaces=('cinnamon')
depends=('accountsservice' 'caribou' 'cinnamon-control-center' 'cinnamon-menus' 'cinnamon-screensaver'
         'cinnamon-session' 'cinnamon-settings-daemon' 'cjs' 'gnome-backgrounds' 'gnome-themes-extra'
         'gstreamer' 'libgnomekbd' 'libkeybinder3' 'librsvg' 'muffin' 'nemo' 'polkit-gnome'
         'python-cairo' 'python-dbus' 'python-gobject' 'python-pam' 'python-pexpect' 'python-pillow'
         'python-pyinotify' 'xapps')
optdepends=('blueberry: Bluetooth support'
            'cinnamon-translations: i18n'
            'gnome-panel: fallback mode'
            'metacity: fallback mode'
            'system-config-printer: printer settings')
makedepends=('intltool' 'gtk-doc' 'gobject-introspection')
options=('!emptydirs')
source=("${pkgname%-*}-${pkgver}.tar.gz::${url}/archive/${pkgver}.tar.gz"
        '0001-cinnamon-settings-don-t-rely-on-the-presence-of-cinn.patch'
        'set_wheel.patch'
        'default-theme.patch'
        'remove-networkmanager.patch')

sha512sums=('SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP')

prepare() {
    cd "${srcdir}"/Cinnamon-${pkgver}

    # Remove NetworkManager
    # This patch must be applied before adding polkit agent to required components
    patch -Np1 -i ../remove-networkmanager.patch
    rm -rf "${srcdir}/Cinnamon-${pkgver}/files/usr/share/cinnamon/applets/network@cinnamon.org"

    # Check for the cc-panel module path, not for the irrelevant binary
    # https://github.com/linuxmint/Cinnamon/pull/7382
    patch -p1 -i ../0001-cinnamon-settings-don-t-rely-on-the-presence-of-cinn.patch

    # Use wheel group instread of sudo (taken from Fedora)
    patch -Np1 -i ../set_wheel.patch

    # Set default theme to 'cinnamon'
    patch -Np1 -i ../default-theme.patch

    # Replace MintInstall with GNOME Software
    sed -i 's/mintinstall.desktop/org.gnome.Software.desktop/' data/org.cinnamon.gschema.xml.in

    # Add polkit agent to required components
    sed -i 's/RequiredComponents=\(.*\)$/RequiredComponents=\1polkit-gnome-authentication-agent-1;/' \
        files/usr/share/cinnamon-session/sessions/cinnamon*.session

    # https://github.com/linuxmint/Cinnamon/issues/3575#issuecomment-374887122
    # Cinnamon has no upstream backgrounds, use GNOME backgrounds instead
    sed -i 's|/usr/share/cinnamon-background-properties|/usr/share/gnome-background-properties|' \
        files/usr/share/cinnamon/cinnamon-settings/modules/cs_backgrounds.py

    NOCONFIGURE=1 ./autogen.sh
}

build() {
    cd "${srcdir}"/Cinnamon-${pkgver}

    ./configure --prefix=/usr \
                --sysconfdir=/etc \
                --libexecdir=/usr/lib/cinnamon \
                --localstatedir=/var \
                --disable-static \
                --disable-gtk-doc \
                --disable-schemas-compile \
                --enable-compile-warnings=yes

    # https://bugzilla.gnome.org/show_bug.cgi?id=656231
    sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool

  make
}
package() {
    cd "${srcdir}"/Cinnamon-${pkgver}

  make DESTDIR="${pkgdir}" install
}

И рядом в эту же директорию кладем файл remove-networkmanager.patch:


--- a/js/ui/statusIconDispatcher.js
+++ b/js/ui/statusIconDispatcher.js
@@ -12,7 +12,6 @@
     'gnome-volume-control-applet': 'volume', // renamed to gnome-sound-applet
                                              // when moved to control center
     'gnome-sound-applet': 'volume',
-    'nm-applet': 'network',
     'gnome-power-manager': 'battery',
     'keyboard': 'keyboard',
     'a11y-keyboard': 'a11y',
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -239,7 +239,7 @@
 libcinnamon_la_CPPFLAGS = $(MUFFIN_CFLAGS) $(cinnamon_cflags)

 Cinnamon-0.1.gir: libcinnamon.la St-1.0.gir
-Cinnamon_0_1_gir_INCLUDES = Clutter-0 ClutterX11-0 CoglPango-0 Cogl-0 Meta-Muffin.0 Soup-2.4 CMenu-3.0 NM-1.0
+Cinnamon_0_1_gir_INCLUDES = Clutter-0 ClutterX11-0 CoglPango-0 Cogl-0 Meta-Muffin.0 Soup-2.4 CMenu-3.0
 Cinnamon_0_1_gir_CFLAGS = $(libcinnamon_la_CPPFLAGS) -I $(srcdir)
 Cinnamon_0_1_gir_LIBS = libcinnamon.la
 Cinnamon_0_1_gir_FILES = $(libcinnamon_la_gir_sources)
--- a/configure.ac
+++ b/configure.ac
@@ -81,7 +81,7 @@
                                libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_MIN_VERSION
                                gobject-introspection-1.0 >= $GOBJECT_INTROSPECTION_MIN_VERSION
                                polkit-agent-1 >= $POLKIT_MIN_VERSION xfixes
-                               libnm atk-bridge-2.0)
+                               atk-bridge-2.0)

 PKG_CHECK_MODULES(CINNAMON_PERF_HELPER, gtk+-3.0 gio-2.0)
--- a/files/usr/share/cinnamon-session/sessions/cinnamon.session
+++ b/files/usr/share/cinnamon-session/sessions/cinnamon.session
@@ -1,6 +1,6 @@
 [Cinnamon Session]
 Name=Cinnamon
-RequiredComponents=cinnamon;cinnamon-screensaver;nemo-autostart;nm-applet;cinnamon-killer-daemon;
+RequiredComponents=cinnamon;cinnamon-screensaver;nemo-autostart;cinnamon-killer-daemon;
 DesktopName=X-Cinnamon
--- a/files/usr/share/cinnamon-session/sessions/cinnamon2d.session
+++ b/files/usr/share/cinnamon-session/sessions/cinnamon2d.session
@@ -1,6 +1,6 @@
 [Cinnamon Session]
 Name=Cinnamon (Software Rendering)
-RequiredComponents=cinnamon2d;cinnamon-screensaver;nemo-autostart;nm-applet;cinnamon-killer-daemon;
+RequiredComponents=cinnamon2d;cinnamon-screensaver;nemo-autostart;cinnamon-killer-daemon;
 DesktopName=X-Cinnamon

Дальше, как обычно, $ makepkg -s

Однако кроме этого нам необходимо пересобрать cinnamon-control-center. Клемент Лефевр, как выяснилось, внял людским просьбам и добавил в него штатную возможность отключения Network- и ModemManager'ов! Для этого необходимо в секцию build официального PKGBUILD'а добавить:


                --disable-networkmanager \
                --disable-modemmanager \

и, естественно, в секции depends удалить ставшие уже ненужными зависимости:


'libmm-glib' 'nm-connection-editor'

после чего собрать обновленный пакет cinnamon-control-center (для удобства - лучше с другим именем, но тут for who how ;-))

После всех вышеприведенных манипуляций Cinnamon начинает вести себя как любое приличное DE и перестает считать что какие-то нелепые NM являются уж совсем обязательной зависимостью ;-)

Наверное стоит закинуть в AUR - ежели кому не лениво. Возможно сам сделаю чуть попозжее.
Aivar
Зачем???

Мне проще разбивать работу на этапы, дабы если возникнет проблема было проще определить, на каком шаге она проявилась. А так да, всё это можно сделать одной транзакцией.
Andy_Vetrov
дабы если возникнет проблема было проще определить, на каком шаге она проявилась
Все правильно, поддерживаю - кто ничего не делает, тот меньше знает и меньше понимает как устроен тот или иной продукт.
Ошибки не исчезают с опытом - они просто умнеют
Для упрощения установки закинул в AUR:

https://aur.archlinux.org/packages/cinnamon-control-center-slim/
https://aur.archlinux.org/packages/cinnamon-slim/
Небольшое дополнение для тех, кто хочет подчистить систему от не сильно нужных пакетов. Связано с Cinnamon не совсем напрямую, но все же. Как известно Cinnamon требует установки оконного менеджера Muffin, у которого в зависимостях стоит zenity, который в свою очередь hardlinked с пакетом webkit2gtk, который по-бОльшему-то счету ни Muffin'у ни Cinnamon'у - не нужен, да и вообще не много кому требуется, хотя отжирает ни много ни мало - 127 МБ. В соответствующее время сакральный вопрос "а нафига?" даже задавался Jan de Groot'у, но ответил: "не нравится - сами выпиливайте". Ну мы - люди не гордые, выпилили: https://aur.archlinux.org/packages/zenity-git

P.S. Млин, сколько же барахла понапихано в стандартные Arch Linux'овые пакеты - и заголовки, и документация и еще чёрт знает чё. Апофеозом на мой взгляд является linux-firmware, приближающийся вплотную к половине гига и имеющий в своем составе прошивки для железа, 99% которого являются махровой экзотикой. В этом отношении подход Debian'овцев, разбивающих данный пакет по производителям, явно более здравый.
Andy_Vetrov
сколько же барахла понапихано в стандартные Arch Linux'овые пакеты - и заголовки, и документация и еще чёрт знает чё.
с одной стороны это хорошо когда это все отдельно, но с другой стороны все вместе мешает только некоторым пользователям...
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
 
Зарегистрироваться или войдите чтобы оставить сообщение.