Подробный гайд по установке и запуску 1С:Предприятие 8.3 в Fedora Linux - Часть 1
Гайд для Fedora: как поставить/запустить 1С:Предприятие 8.3 под Linux, сделать так, чтобы ошибки и “чего не хватает” было видно в терминале, и как быстро находить недостающие пакеты/библиотеки.
Важно:
Дальше предполагаем 64-битную 1С:Предприятие 8.3 для Linux и обычную Fedora с графическим сеансом. Если у вас серверная Fedora без GUI — тоже прочитайте раздел про xvfb-run/X11.
0. Главный принцип: запускать 1С из терминала и логировать всё
1С на Linux часто ведёт себя так:
- часть ошибок платформер пишет в
stderrв терминале; - ошибки динамического линковщика
error while loading shared librariesвидны только при запуске из терминала; - GTK/WebKit/GLib-предупреждения тоже попадают в терминал;
- некоторые ошибки 1С показывает только в GUI, тогда надо смотреть логи/техжурнал/
strace.
Задача гайда: сделать запуск из терминала, запись лога и диагностику зависимостей.
1. Подготовка Fedora
1.1. Обновите систему
sudo dnf upgrade --refresh
1.2. Установите русскую локаль
sudo dnf install glibc-langpack-ru
Проверка:
locale -a | grep -i ru_RU
Можно выставить системно:
sudo localectl set-locale LANG=ru_RU.UTF-8
Или временно в текущем терминале:
export LANG=ru_RU.UTF-8
export LC_ALL=ru_RU.UTF-8
После системной смены локали лучше перезайти в сеанс.
1.3. Создайте каталог для скриптов
mkdir -p ~/bin
Если ~/bin ещё не в PATH:
grep -q 'HOME/bin' ~/.bashrc || echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
2. Установка 1С:Предприятие 8.3 в Fedora
Официальные пакеты 1С обычно скачиваются с портала 1С / releases.1c.ru в виде RPM/DEB-пакетов. Для Fedora нужны RPM-пакеты x86_64.
Примерный состав клиентской установки:
1C-enterprise83-common1C-enterprise83-client- иногда языковые/дополнительные пакеты.
2.1. Посмотрите зависимости RPM до установки
Перейдите в каталог с пакетами, например:
cd ~/Downloads/1c
Посмотреть зависимости пакета:
rpm -qpR ./1C-enterprise83-client-*.rpm | less
Это полезно, если потом dnf ругается.
2.2. Установка через dnf
Лучше ставить не голым rpm, а через dnf, чтобы он попытался подтянуть зависимости:
sudo dnf install ./1C-enterprise83-common-*.rpm ./1C-enterprise83-client-*.rpm
Если у вас несколько RPM, можно указать их явно:
sudo dnf install ./1C-enterprise83-common-8.3.*.rpm ./1C-enterprise83-client-8.3.*.rpm
Если пакеты не подписаны, а вы уверены, что скачали их официально:
sudo dnf install --nogpgcheck ./1C-enterprise83-common-*.rpm ./1C-enterprise83-client-*.rpm
Но --nogpgcheck используйте только для проверенных пакетов.
2.3. Проверка установки
Обычно платформа ставится в /opt/1cv8/x86_64:
ls -l /opt/1cv8/x86_64
Там будут каталоги версий, например:
8.3.22.xxxx
8.3.24.xxxx
Поиск исполняемого файла:
find /opt/1cv8/x86_64 -type f -name 1cv8 -o -type f -name 1cv8c
Тонкий клиент обычно 1cv8c, толстый клиент/конфигуратор — часто 1cv8.
3. Типовые зависимости для 1С в Fedora
Набор зависит от версии 1С, но для клиента почти всегда нужны GTK/X11/WebKit/шрифты/GStreamer/библиотеки рендеринга.
3.1. Базовый набор пакетов
Выполните:
sudo dnf -y install \
glibc-langpack-ru \
gtk3 libsecret enchant2 dconf gsettings-desktop-schemas adwaita-icon-theme hicolor-icon-theme xdg-utils bubblewrap \
gstreamer1 gstreamer1-plugins-base gstreamer1-plugins-good \
libX11 libXext libXrender libXt libXi libXrandr libXcursor libXcomposite libXdamage libXfixes libXScrnSaver libXxf86vm libXpm libXaw libXtst libXinerama libXmu \
cairo pango gdk-pixbuf2 atk at-spi2-atk at-spi2-core libxkbcommon libxkbcommon-x11 libepoxy librsvg2 \
mesa-libGL mesa-libEGL mesa-libgbm libdrm \
libcurl openssl-libs libxml2 libxslt sqlite-libs libicu libuuid libblkid zlib libffi libjpeg-turbo libtiff libpng libwebp \
cups-libs libusb1 libnotify nss nspr xz-libs bzip2-libs libatomic alsa-lib pulseaudio-libs libcanberra-gtk3 \
dejavu-sans-fonts dejavu-serif-fonts liberation-fonts google-noto-sans-fonts google-noto-serif-fonts \
xorg-x11-fonts-Type1 xorg-x11-fonts-misc \
strace lsof file
Если какой-то пакет в вашей версии Fedora называется иначе или не находится — уберите его и установите остальное. Дальше будем точечно искать через dnf provides.
3.2. WebKit
1С может использовать WebKit для отображения HTML-контента/справок/некоторых форм.
Проверьте доступные пакеты:
sudo dnf search webkit2gtk
Если 1С требует libwebkit2gtk-4.1.so.0:
sudo dnf install webkit2gtk4.1
Если 1С требует libwebkit2gtk-4.0.so.37:
sudo dnf install webkit2gtk4.0
Если пакета webkit2gtk4.0 в вашей Fedora уже нет — это частая проблема. Не рекомендую делать случайные символические ссылки на другую версию WebKit: обычно это приводит к падениям.
Лучше:
- использовать версию 1С, которая поддерживает актуальный WebKit;
- или использовать контейнер/distrobox с Ubuntu LTS/другой поддерживаемой 1С системой;
- или ставить нужный WebKit из проверенного репозитория, но это уже повышенный риск.
3.3. Шрифты и кэш шрифтов
Проверьте кириллицу:
fc-list :lang=ru family | sort -u | head
Если список пустой или маленький:
sudo dnf install dejavu-sans-fonts dejavu-serif-fonts liberation-fonts google-noto-sans-fonts google-noto-serif-fonts
Можно дополнительно, если доступно:
sudo dnf install paratype-pt-fonts || true
Обновите кэш шрифтов:
fc-cache -f
3.4. Словари для проверки орфографии, если нужно
sudo dnf install hunspell-ru hunspell-en-US
3.5. Если нужны GStreamer-плагины
Если 1С ругается на мультимедиа/скан/медиа-компоненты, можно дополнительно поставить:
sudo dnf install gstreamer1-plugins-bad-free || true
Для части плагинов может понадобиться RPM Fusion:
sudo dnf install \
https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
4. Скрипт диагностики: показать, чего не хватает
Создайте файл:
nano ~/bin/1c-doctor
Вставьте:
#!/usr/bin/env bash
set -u
REQUEST="${1:-${ONEC_BIN:-1cv8}}"
echo "== 1C doctor =="
echo "Date: $(date)"
if [[ -r /etc/os-release ]]; then
. /etc/os-release
echo "OS: ${PRETTY_NAME:-unknown}"
fi
echo "Kernel: $(uname -r)"
echo "Requested binary: $REQUEST"
BIN=""
if [[ -x "$REQUEST" ]]; then
BIN="$REQUEST"
elif command -v "$REQUEST" >/dev/null 2>&1; then
BIN=$(command -v "$REQUEST")
else
SEARCH_NAME=$(basename "$REQUEST")
BIN=$(find /opt/1cv8/x86_64 -maxdepth 2 -type f -name "$SEARCH_NAME" 2>/dev/null | sort -V | tail -n 1)
fi
if [[ -z "${BIN:-}" ]]; then
echo "ERROR: 1C binary not found for request: $REQUEST"
echo "Install 1C client RPM or set ONEC_BIN=/path/to/1cv8"
exit 1
fi
DIR=$(dirname "$BIN")
echo "1C binary: $BIN"
echo "1C dir: $DIR"
file "$BIN" 2>/dev/null || true
echo
echo "== Locale =="
locale || true
if ! locale -a 2>/dev/null | grep -Eiq '^ru_RU\.utf-?8$'; then
echo "WARNING: ru_RU.UTF-8 is not available."
echo "Fix: sudo dnf install glibc-langpack-ru"
fi
echo
echo "== Display/session =="
echo "DISPLAY=${DISPLAY:-unset}"
echo "WAYLAND_DISPLAY=${WAYLAND_DISPLAY:-unset}"
echo "XDG_SESSION_TYPE=${XDG_SESSION_TYPE:-unset}"
if [[ -z "${DISPLAY:-}" && -z "${WAYLAND_DISPLAY:-}" ]]; then
echo "WARNING: GUI needs DISPLAY or WAYLAND_DISPLAY."
echo "For SSH use ssh -X, for headless use xvfb-run."
fi
echo
echo "== ldd missing libraries for main binary =="
export LD_LIBRARY_PATH="$DIR:${LD_LIBRARY_PATH:-}"
MISSING=$(ldd "$BIN" 2>/dev/null | awk '/not found/{print $1}' | sort -u || true)
if [[ -n "$MISSING" ]]; then
echo "$MISSING"
echo
echo "== dnf provides candidates =="
while IFS= read -r lib; do
[[ -z "$lib" ]] && continue
echo "--- $lib ---"
dnf -q provides "*/$lib" 2>/dev/null | sed -n '1,12p'
done <<< "$MISSING"
else
echo "No missing libraries reported by ldd."
fi
echo
echo "== Quick check of 1C bundled .so files in binary dir =="
find "$DIR" -maxdepth 1 -type f -name '*.so*' -print -exec ldd {} \; 2>/dev/null | awk '/not found/{print}' | sort -u || true
echo
echo "== Installed packages related to 1C/GTK/WebKit =="
rpm -qa | grep -Ei '1C-enterprise|webkit2gtk|gtk3|gstreamer|enchant|libsecret|cairo|pango|gdk-pixbuf|mesa-lib' | sort
echo
echo "== Fonts =="
if command -v fc-list >/dev/null 2>&1; then
echo "Cyrillic-capable fonts sample:"
fc-list :lang=ru family 2>/dev/null | sort -u | head -n 15
else
echo "fontconfig not found"
fi
echo
echo "== SELinux =="
if command -v getenforce >/dev/null 2>&1; then
echo "SELinux mode: $(getenforce)"
if [[ $(id -u) -eq 0 ]]; then
ausearch -m avc -ts recent 2>/dev/null | grep -Ei '1cv8|/opt/1cv8' | tail -n 10 || true
else
echo "Run as root to show recent AVC denials, or:"
echo "sudo ausearch -m avc -ts recent | grep -Ei '1cv8|/opt/1cv8'"
fi
else
echo "SELinux tools not found"
fi
echo
echo "== Recent coredumps =="
if command -v coredumpctl >/dev/null 2>&1; then
coredumpctl list --no-pager 2>/dev/null | tail -n 5 || true
fi
echo
echo "== User data dirs =="
ls -ld "$HOME/.1C" 2>/dev/null || echo "$HOME/.1C not found yet"
ls -ld "$HOME/.config/1C" 2>/dev/null || true
Сохраните файл и сделайте исполняемым:
chmod +x ~/bin/1c-doctor
Запуск:
~/bin/1c-doctor
Если нужен тонкий клиент:
~/bin/1c-doctor 1cv8c
Если нужно проверить конкретный файл:
~/bin/1c-doctor /opt/1cv8/x86_64/8.3.24.xxxx/1cv8
Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.