С операционной системой GNU/LINUX я знаком с 2005 года. За это время я опробовал много дистрибутивов и долгое время моим основным дистрибутивом был OpenSuse. Но сейчас, уже более пяти лет, дистрибутив Gentoo является моим единственным. Мне нравится узнавать, что-то новое. И в этот раз я решил "пощупать" Slackware Linux.
Моё железо
Процессоры: 4 × AMD A8-7600 Radeon R7, 10 Compute Cores 4C+6G
Память: 19,5 ГиБ ОЗУ
Графический процессор: NVIDIA GeForce GTX 1050 Ti/PCIe/SSE2
Материнская плата: Asrock FM2A68M-HD+
Мои программы
Используемый оконный менеджер: KDE Plasma 5
Интернет: Firefox, Google Chrome
Графика: gimp, krita, blender
Видео: vlc, mpv, avidemux, kdenlive
Аудио: elisa, audacity
Офис: libreoffice, calibre
Игры: steam, portproton
Особенности настройки
Не буду описывать процесс установки. В сети много написано и снято видео по этой теме. Скажу лишь, что образ системы записанный на флешку с ventoy, устанавливал на ssd диск, на соседний с Gentoo раздел. Двухсот сорока гигабайтный диск разбит довольно просто: 300 метров под efi раздел, 109 гигабайт - это моя gentoo, ещё 109 - для новой slackware и остальное это swap.
Использовал файловую систему BTRFS. Так как в установщике при выборе этой файловой системы совсем не берётся в расчёт носитель, то пришлось немного "пошаманить". Создал субволумы @root и @home, монтировал и перенес систему в @root, а в fstab прописал такие опции:
(ssd,discard,compress=lzo,subvol=@root).
@home потом монтировался в /home с теми же опциями.
От ELILO отказался сразу в пользу grub2. Впоследствии ELILO и lilo удалил. Локализацию использовал глобальную. Изменив строчки:
export LANG=en_US.UTF8
На:
Export LANG=ru_UA.UTF8
В файлах /etc/profile.d/lang.sh и /etc/profile.d/lang.csh
KDE plasma 5
В рабочем столе KDE Plasma 5 обнаружил баг. Если в kde использовать автологин, то загрузка рабочего стола зависает на заставке. Неприятно, значит обойдемся без автологина. При запуске kde с сессией wayland получаем черный экран. Пока не разбирался в проблеме, в Gentoo wayland сессия работает.
После установки системы начался долгий процесс настройки системы под себя. Это и подключение сторонних репозиториев с помощью slackpkg+ и установка мультилиб пакетов, просто нужных мне приложений и удаление ненужных.
Для подключения сторонних репозиториев достаточно отредактировать файл /etc/slackpkg/slackpkgplus.conf, там все просто в самом файле есть инструкция как это сделать. Мой файл выглядит так:
# Configuration for slackpkg+.
# Please read manpage: "man slackpkgplus.conf" and documentation /usr/doc/slackpkg+-*/README
# Enable (on) / Disable (off) slackpkg+
SLACKPKGPLUS=on
# set to '0' to never show the download progress bar
# set to '1' to show the bar only in download packages (default)
# set to '2' to always show the download bar
# set to '3' for a debug mode
VERBOSE=1
# Enable TERSE to use a smaller output in installpkg/upgradepkg
USETERSE=on
# Enable a smaller output for slackpkg search. It replace first column with one colorized
# on: [unin] uninstalled, [inst] installed, [upgr] upgrade, [mask] uninstalled/masked
# tiny: [-] uninstalled, [I] installed, [I] upgrade, [M] uninstalled/masked
# off: leave unchanged and black/white.
#TERSESEARCH=tiny
TERSESEARCH=on
# Use proxy. Leave commented to use system settings.
#PROXY=off
#PROXY=<host>:<port>
# By default slackpkg+ deny to install 32bit packages.
#
# Set this flag to 'on' allow slackpkg+ to install 32bit packages on a 64bit slackware
# installation (possibly unsafe). Please, do not install both 32 and 64bit of the same
# package to avoid problems, and NEVER upgrade existing 64bit packages with relative 32bit package.
# Do not forget to install the multilibs.
ALLOW32BIT=off
# Enable (on) / Disable (off) the official slackpkg blacklist. May be useful to temporarily skip
# the slackware blacklist. You can also override it from command line:
# 'USEBL=off slackpkg upgrade-all'
USEBL=on
# Enable (on) / Disable (off) the legacy blacklist system ignoring the improvement
# from slackpkg 15. Some improvement are not useful with third party repositories
# Note that the legacy system does apply it as regex to the entire pkglist row
# repository, name, version, arch, build, fullname, series/path, extension.
LEGACYBL=off
# Add custom option to 'wget'.
# You can solve the repository unavailability problems by set a timeout here
# Also add "-q" for super terse output (useful with USETERSE=on)
WGETOPTS="--timeout=20 --tries=2"
# If you want replace wget with another downloader search DOWNLOADCMD in documentation
# at /usr/doc/slackpkg+-*/README
#DOWNLOADCMD="wget2 --progress=bar -O"
# Enable (on) / Disable (off) checking disk space to download and install packages. Default to "off"
#CHECKDISKSPACE=on
# Defines if the changelog of any third party repository must be searched in parent URL when not found in base URL.
# Can be set to "on" or "off" (default)
SEARCH_CLOG_INPARENT=on
# Use the cache for metadata files (CHECKSUMS.md5,...). Enable it (on) to speedup the slackpkg update
# process by downloading just new files (see README). Disabled by default (off)
CACHEUPDATE=off
# You can download-only by setting DOWNLOADONLY to 'on'. You may (you should) also use it in command line,
# for example: "DOWNLOADONLY=on slackpkg upgrade-all". Useful for large upgrades.
# You may also use 'slackpkg download' if you want to download few packages
#DOWNLOADONLY=off
# Enable (on) / Disable (off) notification events (see notifymsg.conf)
#ENABLENOTIFY=off
# Enable (on) / Disable (off) the greylist feature. See /etc/slackpkg/greylist
GREYLIST=on
# Defines if commands 'search' and 'file-search' are case-sensitive (on) or not (off). Default to "on"
SENSITIVE_SEARCH=off
# Defines if command 'file-search' does search Whole Word (on) or accept partial words (off). Note that
# you may obtains many many results searching a short partial word
WW_FILE_SEARCH=off
# Select the show order in dialog box. Available "package" "repository" "tag" "path" "arch"
SHOWORDER=package
# Allow to show more details of the package in 'slackpkg info <package>'. Accepts "none", "basic", "filelist"
DETAILED_INFO=basic
# Enable (on) / Disable (off) a Strict GPG Check. A repository should contains packages signed
# with the only original GPG-KEY. In some custom repository may be wanted to mix heterogeneous
# packages; to use that repository set Strict GPG Check to off. P.S: a repository can
# contain just ONE gpg-key; you may manually import the other.
STRICTGPG=on
# If two or more repositories contains some same packages, you can specify
# from which repository you prefer to search it.
# The syntax is "<repository_name>:<package_name>"
# Accepts regular expressions. To give priority to an entire repository use "<repository_name>"
# Examples:
#PKGS_PRIORITY=( restricted:vlc )
# OR
#PKGS_PRIORITY=( myrepo )
#
# if you have two repositories to give priority you must set both in the same line
#PKGS_PRIORITY=( myrepo restricted:vlc )
#
#
# If you want a multilib system, uncomment the 'multilib' repository and set:
PKGS_PRIORITY=( slackpkgplus multilib alienbob restricted slackonly )
# (Use /usr/doc/slackpkg+-*/setupmultilib.sh to setup a multilib configuration)
#
# Otherwise you can try to upgrade a package from a repository that contains a package with the
# same tag of the already installed package. Typically that means to upgrade a package from the
# same author of the already installed package.
# Note that this method may not works properly where two repositories contains a package with the
# same tag.
# Set TAG_PRIORITY to 'on' to enable this function
TAG_PRIORITY=off
# List repositories you want to use (defined below)
# remember to launch 'slackpkg update' if you modify this row.
#REPOPLUS=( slackpkgplus restricted alienbob )
REPOPLUS=( slackpkgplus multilib restricted alienbob slackonly )
# Define mirrors (uncomment one or more mirror; remember to add it to REPOPLUS)
# GPG Note: after adding/renaming a repository, you must to run 'slackpkg update gpg';
# some repositories as salixos, have a partial GPG support;
# for that repositories you may need to run slackpkg with 'slackpkg -checkgpg=off ...'
# Slackware 15.0 - x86_64
MIRRORPLUS['multilib']=https://slackware.nl/people/alien/multilib/15.0/
MIRRORPLUS['alienbob']=https://slackware.nl/people/alien/sbrepos/15.0/x86_64
MIRRORPLUS['restricted']=https://slackware.nl/people/alien/restricted_sbrepos/15.0/x86_64
MIRRORPLUS['slackonly']=https://packages.slackonly.com/pub/packages/15.0-x86_64/
# use this to keep the slackpkg+ package updated to the latest stable release
MIRRORPLUS['slackpkgplus']=https://slakfinder.org/slackpkg+15/
# use the development branch to use the mainline version and help develop by reporting bugs.
MIRRORPLUS['slackpkgplus']=https://slakfinder.org/slackpkg+dev/
# Local repository:
#MIRRORPLUS['alienbob']=file://repositories/alien/sbrepos/15.0/x86/
#
# Local packages (you do not need metadata nor 'slackpkg update' command):
#MIRRORPLUS['myrepo']=dir://repositories/mypackages/
#
# Remote packages (you do not need metadata)
#MIRRORPLUS['slackpkgbeta']=httpsdir://slackpkg.org/beta/
# SBo SlackBuilds. Uncomment it to allow slackpkg to search SlackBuilds on SlackBuilds.org
# This does not replace sbopkg; slackpkg just report the package, version and url; you may
# download it via 'slackpkg download <packagename>' and build it yourself or via sbopkg.
SBO['15.0']=https://www.slackbuilds.org/slackbuilds/15.0/
#SBO['current']=https://cgit.ponce.cc/slackbuilds/
# Plugin section:
# Here you can enable some optional feature. Please read documentation before enable it.
#
# ZLookKernel can help you to rebuild initrd and reinstall lilo/elilo/grub. This feature was
# removed in slackpkg-15.0. 'enable' this setting to enable it.
# read /usr/libexec/slackpkg/functions.d/zlookkernel.sh for more information
# It will ask confirmations at every step, unless you will set 'PLUGIN_ZLOOKKERNEL_PROMPT=off'
# It will manage /boot/vmlinuz by default; if you use kernel generic, please set
# the PLUGIN_ZLOOKKERNEL_IMAGE=/boot/vmlinuz-generic to manage it
#PLUGIN_ZLOOKKERNEL=disable
#PLUGIN_ZLOOKKERNEL_PROMPT=on
#PLUGIN_ZLOOKKERNEL_IMAGE=/boot/vmlinuz
#
# ZChangeLog track all repository changes everytime you run 'slackpkg update'
# It write the changelog at /var/lib/slackpkg/RepoChangeLog.txt
# 'enable' this setting to enable it. Also set 'PLUGIN_ZCHANGELOGS_SHOW=on' to print
# the changes in standard output at the end of 'update' process.
# read /usr/libexec/slackpkg/functions.d/zchangelog.sh for more information
#PLUGIN_ZCHANGELOG=disable
#PLUGIN_ZCHANGELOG_SHOW=off
#
#
# Supported Repositories (see /usr/doc/slackpkg+-* for details and notes):
#
#slackpkgplus: https://slakfinder.org/slackpkg+{dev,1.7,1.8,15}/
#multilib: https://slackware.nl/people/alien/multilib/{15.0,current}/
#alienbob: https://slackware.nl/people/alien/sbrepos/{15.0,current}/{x86,x86_64}/
#restricted: https://slackware.nl/people/alien/restricted_sbrepos/{15.0,current}/{x86,x86_64}/
#msb: https://slackware.uk/msb/{15.0,current}/latest/{x86,x86_64}/
#csb: https://slackware.uk/csb/{15.0,current}/{x86,x86_64}/
#slackers: https://slack.conraid.net/repository/slackware64-current/
#slackonly: https://packages.slackonly.com/pub/packages/15.0-x86_64/
#slackel: http://www.slackel.gr/repo/{i486,x86_64}/current/
#slint: https://slackware.uk/slint/x86_64/slint-15.0/
#salixos: https://download.salixos.org/{i486,x86_64}/15.0/
#salixextra: https://download.salixos.org/{i486,x86_64}/extra-15.0/
После выполнить обновление системы:
# slackpkg update gpg - эта команда обновляет ключи GPG
# slackpkg update - эта обновляет список пакетов
# slackpkg upgrade-all - эта применяет изменения, в случае появления новых пакетов устанавливает их
Установка multilib пакетов:
# slackpkg update multilib
# slackpkg upgrade-all
Для поиска новых пакетов просто выполним slackpkg search <пакет>
# slackpkg search vlc
Looking for vlc in package list. Please wait... DONE
The list below shows all packages with name matching "vlc".
[inst] alienbob : npapi-vlc-20171129-x86_64-1alien
[inst] alienbob : vlc-3.0.16-x86_64-1alien
[unin] alienbob : vlc2-2.2.8-x86_64-4alien
[mask] restricted : npapi-vlc-20171129-x86_64-1alien
[mask] restricted : vlc-3.0.16-x86_64-1alien
[mask] restricted : vlc2-2.2.8-x86_64-4alien
You can search specific files using "slackpkg file-search file".
Also found in SBo (download it with 'slackpkg download <package>'):
[ package ]
vlc-3.0.16-sbo-15.0
Для установки нового пакета slackpkg install <пакет>
Поражает "зоопарк" приложений с помощью которых можно установить, обновить и удалить приложения в системе. Но не одно из этих приложений не помогает в решении зависимостей. Есть правда приложение slapt-get, про которое рассказывают, что оно умеет это делать, но последняя версия этого приложения для slackware 14.2, так что вряд-ли подойдёт мне. Из всего разнообразия установщиков в хотелось бы выделить только приложение sbopkg, это консольный фронтенд для сайта slackbuilds.org. На этом сайте размещают так называемые слакбилды. Это приложение позволяет загрузить исходники нужных приложений, если нужно отредактировать опции сборки, собрать и установить.
Слакбилды это скрипты помогающие собрать нужное приложение и сформировать его в установочный пакет. Чем-то эти слакбилды напоминают ебилды в gentoo, но в отличии от последних они тоже не умеют удовлетворять зависимости.
Nvidia, cuda, ffmpeg и создание установочного пакета
Так как за вывод изображения на монитор отвечает видеокарта Nvidia Geforce 1050 ti, то было решено использовать проприетарный драйвер.
В репозиториях slackware имеются пакеты с драйвером nvidia, после обновления системы и установки пакетов мультилиб, драйвера nvidia были установлены, также установил пакет nv-codec-headers, эта библиотека нужна для использования мощностей cuda при кодировании и декодировании видео, но это не помогло. Пакет ffmpeg из основного репозитория собран без поддержки cuda. А в репозиториях slackbuilds ffmpeg только для версии 14.2. Собрал ffmpeg с поддержкой cuda из исходников, оформил в установочный пакет и заменил им основной.
Для этого скачал исходники ffmpeg, распаковал, перешел в директорию приложения и выполнил:
./configure --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --docdir=/usr/doc/ffmpeg-4.4.1 \
--mandir=/usr/man --enable-gpl --enable-version3 --enable-avfilter --enable-libmp3lame \
--enable-libass --enable-libdav1d --enable-libdc1394 --enable-libdrm --enable-libfribidi \
--enable-libgme --enable-libgsm --enable-libopencore-amrnb --enable-libopencore-amrwb \
--enable-libopenjpeg --enable-libopus --enable-librsvg --enable-libsmbclient \
--enable-libssh --enable-libspeex --enable-libtheora --enable-libv4l2 --enable-libvo-amrwbenc \
--enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi \
--enable-postproc --enable-runtime-cpudetect --enable-sdl2 --enable-vaapi --enable-vdpau \
--enable-pthreads --enable-bzlib --enable-zlib --enable-shared --enable-static \
--disable-debug --enable-libbluray --enable-frei0r --enable-openal --enable-opencl \
--enable-libpulse --enable-libvidstab --enable-libwebp --enable-libfdk-aac \
--enable-openssl --enable-nonfree --arch=x86_64 --enable-pic \
--extra-cflags='-I/tmp/build/tmp-ffmpeg/ffmpegdeps/usr/include \
-I/tmp/build/tmp-ffmpeg/ffmpegdeps/usr/include/SDL2 -DRUNTIME_CPUDETECT' \
--extra-ldflags='-L/tmp/build/tmp-ffmpeg/ffmpegdeps/usr/lib64 -lpthread -ldl -lssl \
-lcrypto -lz -lusb -ldrm' --pkg-config-flags=--static --enable-ffnvcodec --enable-cuda \
--enable-cuvid --enable-cuda-nvcc
$ make -j5 - собираем
$ sudo make install DESTDIR=/tmp/build - устанавливаем приложение во временную директорию
$ cd /tmp/build - перейдем в нее
$ sudo mkdir install && cd install - создадим директорию install и перейдем в нее
В эту директорию нужно добавить файл slack.desc
$ sudo wget https://slackbuilds.org/slackbuilds/14.2/multimedia/ffmpeg/slack-desc
$ cd ../ - вернемся в предыдущую директорию
$ su - для дальнейшей работы нужны привелегии администратора
# makepkg -l y -c n ../ffmpeg-4.4.1-x86_64-sbo.tgz - создадим установочный пакет
Slackware package ../ffmpeg-4.4.1-x86_64-sbo.tgz created. - пакет создан
# cd ../ - перейдем на директорию выше
# ls * | grep ffmpeg - проверим наличие пакета
ffmpeg-4.4.1-x86_64-sbo.tgz
теперь можно установить собранное приложение, но сначала удалим старое
# slackpkg remove ffmpeg - удаление пакета
# installpkg ffmpeg-4.4.1-x86_64-sbo.tgz - установка нового пакета
Так можно собрать установочный пакет для любого приложения.
Правда это породило некоторые проблемы. Те приложения которые зависят от ffmpeg, перестали работать. Многие из них приходилось пересобирать, а ненужные просто удалять. Так пересобрал simplescreenrecorder, avidemux и mpv. А obstudio, haruna и megasync были установлены из репозитория flatpak.
Для просмотра видео я пользуюсь mpv player. После обновления ffmpeg этот плеер вполне нормально собирается с поддержкой cuda.
Steam
Отдельно хочется рассказать о steam. После установки приложение не захотело запускаться. Виной тому оказался драйвер nvidia из репозитория curent. Его пришлось удалить и установить самораспаковывающийся скрипт с официального сайта. После чего и steam и portproton заработали. Для проверки работы была установлена игра Ведьмак 3. Игра вполне сносно работает.
Делаем Pipewire основным звуковым сервером
Для этого в файле /etc/pulse/client.conf меняем
autospawn = yes
на
autospawn = no
А файл /etc/xdg/autostart/pulseaudio.desktop переименовываем в /etc/xdg/autostart/pulseaudio.desktop.sample
Теперь достаточно переименовать файлы pipewire-media-session.desktop.sample, pipewire-pulse.desktop.sample и pipewire.desktop.sample в директории /etc/xdg/autostart убрать из названия .sample или сделать как я, просто скопировать в ~/.config/autostart своей домашней директории и переименовать:
$ cp /etc/xdg/autostart/pipewire*.desktop.sample ~/.config/autostart/
$ cd ~/.config/autostart/
$ ls * | grep pipewire
pipewire-media-session.desktop.sample
pipewire-pulse.desktop.sample
pipewire.desktop.sample
# теперь нужно переименовать их
$ mv pipewire-media-session.desktop{.sample,}
$ mv pipewire-pulse.desktop{.sample,}
$ mv pipewire.desktop{.sample,}
# проверяем
$ ls * | grep pipewire
pipewire-media-session.desktop
pipewire-pulse.desktop
pipewire.desktop
Перегрузиться. Для проверки того, что pipewire включен выполним:
$ LANG=C pactl info | grep "Server Name"
Server Name: PulseAudio (on PipeWire 0.3.44)
Впечатление от системы
Эта система вызывает странные чувства. С одной стороны это один из самых старых дистрибутивов от которого ждёшь стабильность и простоту, но на деле получаешь еще одну головную боль. Я с Gentoo, за эти пять лет, не имел столько проблем, чем за несколько дней использования slackware.
По началу slackware представлялась мне чем-то монолитным и, возможно, так это и было, пока не начал устанавливать приложения из исходников. Как только начинаешь компилировать приложения, система сразу начинает походить на Gentoo.
Но если там все собирается по определенному сценарию, то здесь начинаешь упираться "рогами" в то, что некоторые приложения просто не собираются. Самым простым решением стало, устанавливать приложения из flatpak.
Вывод
Ещё какое то время поизучаю этот реликт. Поищу для себя что нибудь новое, хотя фактически все что я узнал за это время, это то как устанавливать программы в Slackware.
Комментарии
10:17
01:13
14:14
https://ibb.co/n6wXxL0
П.С. Вчера Haruna из flatpak'а поставил, потому как собранные версии из АУР перестали запускаться.
14:23
14:55
А сильно глубоко я не лез, потом на Арч вернулся. Тут всё, по сути, из памак делается. Как мне он сказал: Дебиан — красноглазить в Терминале.
15:21
во вторых, практически не существует софта, который не собирается под дебиан. Устанавливая что-то из AUR, вы собираете софт из сорцов (в основном) и ничего не мешает сделать тоже самое из любого другого дистра.
Да, не в один клик, а в три. Невелика разница.
15:43
17:42
Через памак я весь нужный софт ставлю, плюс отсюда же систему кастомизировал, вместо посещения ...-look сайтов, даже пакет для русификации установил. Потому как Синнамон иногда встречает английским языком и для русификации нужен пакет "cinnamon-translations".
01:11
01:02
09:27
Зачем менять ?
14:52
01:04
15:36
15:51
16:01
01:06
18:05
18:50
13:05
13:04
20:48
А по статье... Хм. Много трудов. Главное, чтобы не напрасных.
01:07
01:31
02:20
03:07
urllib.urlopen() ?
03:17
03:20
08:15
08:45
11:16
08:48
https://i.imgur.com/HNOzXXU.png
10:58
11:24
http://slackware.uk/salix/x86_64/15.0/salix/ap/
мой скрин с альфой Salix 15 вот уже пару недель ждёт своей очереди))
12:24
14:28
Я слышал, что она подходит для старых 32-х битных систем времён winxp, так ли это? Думаю, свой старый ПК с xp на Линукс перевести, пока выбор пал на slackware
16:20
проще на старый комп установить что то вроде puppy или antix
06:31
11:43
18:55
Пользовался Саликс ОС с 13.37 версии (посторен на Слаке, минималистичен, графические конфигурации, и Слапт-гет), но из-за не обширного количества пакет в репах, и из-за этого возни со Сурцери, попробовал недавно Арч (конкретно, Манжару - вроде постабильней за счет тестирования и проверок пакетов Арча), и вот 2 недели сижу на ней...
И тут все ничего, норм, но поднимается проблема во время обновлений - иногда пишет, нет ключей, поэтому некоторые пакеты не смогу обновить. Приходится удалять ключи, обновлять ключи, перезагружать комп...
Если что - установку и обновления делаю в консоли.