На момент написания статьи, так уж получилось, что когда решил улучшить свою консоль запросов 4.0 - сделать замер выполнения запросов под 1с 8.2 на Linux. Оказалось что под 1с 8.2 (старше версии 13) на сервере нет возможности запустить приложение. Для Windows серверов такая проблема легко обходится - есть COM объекты, которые реализуют нужные процедуры.
Однако Linux не поддерживает технологию OLE и COM (тем не менее, попытки сделать компоненту для вызова классов NET под Linux принимались с определенным результатом). Для моего случая, данного результата оказалось недостаточно - слишком старые в поддержке дистрибутивы Linux поддерживает 1с 8.2.
Основы создания внешних компонент рассмотрены в другой статье, здесь автор ограничится настройкой оснастки.
Актуальная ссылка на скачивания шаблона компонент VNCOMP82 под платформы 8.2 и старая версия шаблона под платформу 8.3 (2014 год).
Шаблон VNCOMP82 с внесенными в него исправлениями под Linux находится по этой ссылке:
Скачать платформу 1С:Предприятие 8.2 (учебная версия, полный комплект). Сама ссылка ведет на архив ссылки в Webarchive и уже оттуда можно скачать этот бесплатный учебный диск.
Если стоит цель разработки под платформу 8.3 и под разные типы клиентов и браузеров, тогда имеет смысл скачать другие шаблоны в свободном доступе - так как они обновлены и представляют большее удобство разработчику.
Переходим к выбору дистрибутива Linux.
Почему Debian.
Не смотря на то, что Ubuntu и СentOS удобнее чем Debian (на первом этапе знакомства), у них есть главный недостаток: стремительный рост системных требований. Ubuntu в 2025 году отказалась от поддержки IA-32, требуя уже более 1ГБ ОЗУ. У CentOS ситуация похожая.
Debian 12, вышедший в 2023 году с установленным LXDE рабочим столом (не учить же в самом деле все команды 1С-нику) - как самая легковесная оболочка потреблял около 300 МБ ОЗУ (замеры проводил на Virtualbox). Это по меркам современности является пренебрежимо малой величиной, однако настроить окружение для сборки внешних компонент на этом дистрибутиве на самом деле задача тривиальная. Debian 13 (август 2025 года) также не слишком повысила требования к системным ресурсам.
Самое главное, что нужно помнить всегда - Debian скачивается как DVD диск (это справедливо для версий 4.0-13). В этом случае можно сразу установить GUI (для 1С разработчика без GUI очень неудобно). Хорошие сборки можно найти либо на сайте debian, или же на случай очень древних версий - webarchive (Debian до некоторых пор DVD не очень жаловал как установочный носитель).
Установка версии, начиная с версии Debian 4 и новее в целом идентична для виртуальной машины за маленьким отличием: в новых версиях есть возможность поставить LXDE рабочий стол, который легче, нежели Gnome рабочий стол. И естественно ставить мышь как ps/2 и диски ide для версий 4-8.
Debian 3.x устанавливается иначе, и также там русская локализация - это KOIR, а не UTF-8 как для всех версий с 4.0.
Настройка среды для сборки (под debian 4 и новее).
После того, как была произведена установка Debian, нужно разобраться с поддержкой пакетов. Если для тестового стенда выбраны последние актуальные версии debian, то все хорошо и настройку проводить не надо. Однако если дистрибутив устарел основательно, то нужно сначала тогда выполнить настройку для установки пакетов из архива.
Для этих целей подойдет следующий пакетный файл bash (код расширен под установку архива для всех версий, у которых он доступен):
#!/bin/bash
# Универсальный менеджер архивных репозиториев Debian
# Поддерживает версии от 2.0 (Hamm) до текущей стабильной
# Цвета для вывода
RED='\033[0;31m'
GREEN='\033[0;32m'
BLUE='\033[1;34m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Проверка наличия русской локализации UTF-8
check_russian_locale() {
if locale -a | grep -qi "ru_RU.utf8" || locale -a | grep -qi "ru_RU.utf-8"; then
return 0
else
return 1
fi
}
# Установка русской локализации (только для etch и выше)
install_russian_locale() {
echo -e "${BLUE}Русская локаль не найдена. Установить? (y/N) ${NC}"
read -r answer
if [[ $answer = [Yy]* ]]; then
echo -e "${BLUE}Установка русской локали...${NC}"
apt-get update
apt-get install -y locales
sed -i '/ru_RU.UTF-8/s/^# //g' /etc/locale.gen
locale-gen ru_RU.UTF-8
update-locale LANG=ru_RU.UTF-8
export LANG=ru_RU.UTF-8
# Проверяем успешность генерации
if ! locale -a | grep -qi "ru_RU.utf"; then
echo -e "${BLUE}Стандартный метод не сработал, используем dpkg-reconfigure...${NC}"
dpkg-reconfigure locales
fi
echo -e "${GREEN}Русская локаль успешно установлена.${NC}"
return 0
else
echo -e "${BLUE}Продолжаем с английской локалью.${NC}"
return 1
fi
}
# Инициализация языковых переменных
init_language() {
# Сначала получаем кодовое имя для проверки версии
local codename=$(get_debian_codename)
# Для версий ниже etch (woody, sarge, potato, slink, hamm) всегда используем английский
if [[ "$codename" == "woody" || "$codename" == "sarge" || "$codename" == "potato" || "$codename" == "slink" || "$codename" == "hamm" ]]; then
# Английские тексты для старых версий
MSG_TITLE="=== Debian Archive Repository Manager ==="
MSG_VERSION="Detected version:"
MSG_UNSUPPORTED="WARNING: Version %s is not supported by this script!"
MSG_OLD_WARNING="Warning: This is a very old Debian version (%s)"
MSG_OLD_WARNING2="Some packages may be unavailable or have limited functionality"
MSG_CONFIRM="Do you want to add archive repositories for %s?"
MSG_WARNING="Warning: This will replace your current /etc/apt/sources.list!"
MSG_PROMPT="Continue? (y/N) "
MSG_SUCCESS="Done! System configured to use archive repositories."
MSG_CANCEL="Operation cancelled by user."
MSG_ERROR_ROOT="Error: Root privileges required! Please run with sudo."
MSG_ERROR_BACKUP="Error: Failed to create backup."
MSG_ERROR_VERSION="Error: Version %s is not supported"
MSG_ERROR_DETECT="Error: Failed to detect Debian version"
MSG_BACKUP="Creating backup: %s.bak"
MSG_ADD_REPO="Adding repositories for %s..."
MSG_OLD_CONFIG="Configuring APT for very old versions..."
MSG_OLD_COMPAT="Configuring compatibility with old package formats..."
MSG_UPDATE="Updating package list..."
MSG_SECURITY_ASK="Add security repository from archive? (y/N) "
MSG_BACKPORTS_ASK="Add backports repository? (y/N) "
MSG_BACKPORTS_ADD="Adding backports repository for %s..."
MSG_NONUS_ASK="Add non-US repository (for cryptographic software)? (y/N) "
NOTES_TITLE="Important notes for Debian %s:"
NOTES_1="1. You may need to install apt-transport-http:"
NOTES_2=" apt-get install apt-transport-http"
NOTES_3="2. For HTTPS support you may need:"
NOTES_4=" apt-get install openssl libssl0.9.8"
NOTES_5="3. If you get GPG errors:"
NOTES_6=" apt-get install debian-archive-keyring"
NOTES_7=" apt-key add /usr/share/keyrings/debian-archive-keyring.gpg"
elif check_russian_locale; then
# Русские тексты
MSG_TITLE="=== Менеджер архивных репозиториев Debian ==="
MSG_VERSION="Определена версия:"
MSG_UNSUPPORTED="ВНИМАНИЕ: Версия %s не поддерживается скриптом!"
MSG_OLD_WARNING="Внимание: Это очень старая версия Debian (%s)"
MSG_OLD_WARNING2="Некоторые пакеты могут быть недоступны или иметь ограниченную функциональность"
MSG_CONFIRM="Вы хотите добавить архивные репозитории для %s?"
MSG_WARNING="Внимание: Это заменит текущий /etc/apt/sources.list!"
MSG_PROMPT="Продолжить? (y/N) "
MSG_SUCCESS="Готово! Система настроена для работы с архивными репозиториями."
MSG_CANCEL="Операция отменена пользователем."
MSG_ERROR_ROOT="Ошибка: Требуются root-права! Запустите скрипт с sudo."
MSG_ERROR_BACKUP="Ошибка: Не удалось создать резервную копию."
MSG_ERROR_VERSION="Ошибка: Версия %s не поддерживается"
MSG_ERROR_DETECT="Ошибка: Не удалось определить версию Debian"
MSG_BACKUP="Создаем резервную копию: %s.bak"
MSG_ADD_REPO="Добавляем репозитории для %s..."
MSG_OLD_CONFIG="Настраиваем APT для очень старых версий..."
MSG_OLD_COMPAT="Настраиваем совместимость со старыми форматам пакетов..."
MSG_UPDATE="Обновляем список пакетов..."
MSG_SECURITY_ASK="Добавить security-репозиторий из архива? (y/N) "
MSG_BACKPORTS_ASK="Добавить backports-репозиторий? (y/N) "
MSG_BACKPORTS_ADD="Добавляем backports-репозиторий для %s..."
MSG_NONUS_ASK="Добавить non-US репозиторий (для криптографического ПО)? (y/N) "
NOTES_TITLE="Важные заметки для Debian %s:"
NOTES_1="1. Может потребоваться установка apt-transport-http:"
NOTES_2=" apt-get install apt-transport-http"
NOTES_3="2. Для работы с HTTPS может потребоваться:"
NOTES_4=" apt-get install openssl libssl0.9.8"
NOTES_5="3. Если возникнут ошибки GPG:"
NOTES_6=" apt-get install debian-archive-keyring"
NOTES_7=" apt-key add /usr/share/keyrings/debian-archive-keyring.gpg"
else
# Для etch и выше предлагаем установить русскую локаль
install_russian_locale
# Если пользователь согласился и установка прошла успешно, перезагружаем скрипт
if check_russian_locale; then
echo -e "${GREEN}Перезапуск скрипта с русской локалью...${NC}"
exec "$0" "$@"
else
# Английские тексты по умолчанию
MSG_TITLE="=== Debian Archive Repository Manager ==="
MSG_VERSION="Detected version:"
MSG_UNSUPPORTED="WARNING: Version %s is not supported by this script!"
MSG_OLD_WARNING="Warning: This is a very old Debian version (%s)"
MSG_OLD_WARNING2="Some packages may be unavailable or have limited functionality"
MSG_CONFIRM="Do you want to add archive repositories for %s?"
MSG_WARNING="Warning: This will replace your current /etc/apt/sources.list!"
MSG_PROMPT="Continue? (y/N) "
MSG_SUCCESS="Done! System configured to use archive repositories."
MSG_CANCEL="Operation cancelled by user."
MSG_ERROR_ROOT="Error: Root privileges required! Please run with sudo."
MSG_ERROR_BACKUP="Error: Failed to create backup."
MSG_ERROR_VERSION="Error: Version %s is not supported"
MSG_ERROR_DETECT="Error: Failed to detect Debian version"
MSG_BACKUP="Creating backup: %s.bak"
MSG_ADD_REPO="Adding repositories for %s..."
MSG_OLD_CONFIG="Configuring APT for very old versions..."
MSG_OLD_COMPAT="Configuring compatibility with old package formats..."
MSG_UPDATE="Updating package list..."
MSG_SECURITY_ASK="Add security repository from archive? (y/N) "
MSG_BACKPORTS_ASK="Add backports repository? (y/N) "
MSG_BACKPORTS_ADD="Adding backports repository for %s..."
MSG_NONUS_ASK="Add non-US repository (for cryptographic software)? (y/N) "
NOTES_TITLE="Important notes for Debian %s:"
NOTES_1="1. You may need to install apt-transport-http:"
NOTES_2=" apt-get install apt-transport-http"
NOTES_3="2. For HTTPS support you may need:"
NOTES_4=" apt-get install openssl libssl0.9.8"
NOTES_5="3. If you get GPG errors:"
NOTES_6=" apt-get install debian-archive-keyring"
NOTES_7=" apt-key add /usr/share/keyrings/debian-archive-keyring.gpg"
fi
fi
}
# Функция для определения кодового имени Debian
get_debian_codename() {
# 1. Пробуем /etc/os-release (современные системы)
if [ -f "/etc/os-release" ]; then
codename=$(grep -oP 'VERSION_CODENAME=\K\w+' /etc/os-release 2>/dev/null)
if [ -n "$codename" ]; then
echo "$codename"
return 0
fi
fi
# 2. Пробуем lsb_release
if command -v lsb_release >/dev/null 2>&1; then
codename=$(lsb_release -c -s 2>/dev/null)
if [ -n "$codename" ]; then
echo "$codename"
return 0
fi
fi
# 3. Пробуем /etc/debian_version (для старых версий)
if [ -f "/etc/debian_version" ]; then
deb_version=$(cat /etc/debian_version)
case $deb_version in
"13"*) echo "trixie" ;;
"12"*) echo "bookworm" ;;
"11"*) echo "bullseye" ;;
"10"*) echo "buster" ;;
"9"*) echo "stretch" ;;
"8"*) echo "jessie" ;;
"7"*) echo "wheezy" ;;
"6"*) echo "squeeze" ;;
"5"*) echo "lenny" ;;
"4"*) echo "etch" ;;
"3.1"*) echo "sarge" ;;
"3.0"*) echo "woody" ;;
"2.2"*) echo "potato" ;;
"2.1"*) echo "slink" ;;
"2.0"*) echo "hamm" ;;
*) echo "unknown" ;;
esac
return 0
fi
echo "unknown"
return 1
}
# Функция для добавления архивных репозиториев
add_archive_repos() {
local codename="$1"
local sources_list="/etc/apt/sources.list"
# Проверяем root-права
if [ "$(id -u)" -ne 0 ]; then
echo -e "${RED}${MSG_ERROR_ROOT}${NC}" >&2
return 1
fi
# Резервное копирование
echo -e "${BLUE}$(printf "${MSG_BACKUP}" "$sources_list")${NC}"
cp "$sources_list" "${sources_list}.bak" || {
echo -e "${RED}${MSG_ERROR_BACKUP}${NC}" >&2
return 1
}
# Добавляем репозитории в зависимости от версии
case "$codename" in
trixie|bookworm|bullseye|buster|stretch|jessie|wheezy|squeeze|lenny|etch)
echo -e "${GREEN}$(printf "${MSG_ADD_REPO}" "$codename")${NC}"
cat > "$sources_list" <<EOF
# Основной архивный репозиторий
deb http://archive.debian.org/debian/ $codename main contrib non-free
# Репозиторий безопасности
deb http://archive.debian.org/debian-security/ $codename/updates main contrib non-free
EOF
;;
sarge)
echo -e "${GREEN}$(printf "${MSG_ADD_REPO}" "sarge (Debian 3.1)")${NC}"
cat > "$sources_list" <<EOF
# Основной архивный репозиторий для sarge
deb http://archive.debian.org/debian-archive/debian sarge main contrib non-free
# Репозиторий безопасности для sarge
deb http://archive.debian.org/debian-security sarge/updates main contrib non-free
EOF
;;
woody)
echo -e "${GREEN}$(printf "${MSG_ADD_REPO}" "woody (Debian 3.0)")${NC}"
cat > "$sources_list" <<EOF
# Основной архивный репозиторий для woody
deb http://archive.debian.org/debian-archive/debian woody main contrib non-free
# Старые пакеты для woody
deb http://archive.debian.org/debian-archive/debian-030119 woody main contrib non-free
# Репозиторий безопасности для woody
deb http://archive.debian.org/debian-security woody/updates main contrib non-free
EOF
;;
potato)
echo -e "${GREEN}$(printf "${MSG_ADD_REPO}" "potato (Debian 2.2)")${NC}"
cat > "$sources_list" <<EOF
# Основной архивный репозиторий для potato
deb http://archive.debian.org/debian-archive/debian potato main contrib non-free
# Репозиторий безопасности для potato
deb http://archive.debian.org/debian-security potato/updates main contrib non-free
EOF
;;
slink)
echo -e "${GREEN}$(printf "${MSG_ADD_REPO}" "slink (Debian 2.1)")${NC}"
cat > "$sources_list" <<EOF
# Основной архивный репозиторий для slink
deb http://archive.debian.org/debian-archive/debian slink main contrib non-free
EOF
;;
hamm)
echo -e "${GREEN}$(printf "${MSG_ADD_REPO}" "hamm (Debian 2.0)")${NC}"
cat > "$sources_list" <<EOF
# Основной архивный репозиторий для hamm
deb http://archive.debian.org/debian-archive/debian hamm main contrib non-free
EOF
;;
*)
echo -e "${RED}$(printf "${MSG_ERROR_VERSION}" "$codename")${NC}" >&2
return 1
;;
esac
# Запрос на добавление security-репозитория (только для версий, где это возможно)
if [[ "$codename" != "slink" && "$codename" != "hamm" ]]; then
echo -e "${BLUE}${MSG_SECURITY_ASK}${NC}"
read -r answer
if [[ $answer = [Yy]* ]]; then
case "$codename" in
trixie|bookworm|bullseye|buster|stretch|jessie|wheezy|squeeze|lenny|etch)
echo "deb http://archive.debian.org/debian-security/ $codename/updates main contrib non-free" >> "$sources_list"
;;
sarge|woody|potato)
echo "deb http://archive.debian.org/debian-security $codename/updates main contrib non-free" >> "$sources_list"
;;
esac
fi
fi
# Запрос на добавление backports-репозитория (только для версий, где это возможно)
if [[ "$codename" != "slink" && "$codename" != "hamm" ]]; then
echo -e "${BLUE}${MSG_BACKPORTS_ASK}${NC}"
read -r answer
if [[ $answer = [Yy]* ]]; then
case "$codename" in
trixie|bookworm|bullseye|buster|stretch|jessie|wheezy)
echo -e "${GREEN}$(printf "${MSG_BACKPORTS_ADD}" "$codename")${NC}"
echo "deb http://archive.debian.org/debian/ ${codename}-backports main contrib non-free" >> "$sources_list"
;;
squeeze|lenny|etch|sarge)
echo -e "${GREEN}$(printf "${MSG_BACKPORTS_ADD}" "$codename")${NC}"
echo "deb http://archive.debian.org/debian-backports/ ${codename}-backports main contrib non-free" >> "$sources_list"
;;
woody|potato)
echo -e "${GREEN}$(printf "${MSG_BACKPORTS_ADD}" "$codename")${NC}"
echo "deb http://archive.debian.org/debian-backports/ ${codename}-backports main" >> "$sources_list"
;;
esac
fi
fi
# Запрос на добавление non-US репозитория (для версий до sarge)
if [[ "$codename" == "woody" || "$codename" == "potato" || "$codename" == "slink" || "$codename" == "hamm" ]]; then
echo -e "${BLUE}${MSG_NONUS_ASK}${NC}"
read -r answer
if [[ $answer = [Yy]* ]]; then
case "$codename" in
woody)
echo "deb http://archive.debian.org/debian-non-US/ woody/non-US main contrib non-free" >> "$sources_list"
;;
potato)
echo "deb http://archive.debian.org/debian-non-US/ potato/non-US main contrib non-free" >> "$sources_list"
;;
slink)
echo "deb http://archive.debian.org/debian-non-US/ slink/non-US main contrib non-free" >> "$sources_list"
;;
hamm)
echo "deb http://archive.debian.org/debian-non-US/ hamm/non-US main contrib non-free" >> "$sources_list"
;;
esac
fi
fi
# Для очень старых версий отключаем проверки
if [[ "$codename" == "woody" || "$codename" == "sarge" || "$codename" == "potato" || "$codename" == "slink" || "$codename" == "hamm" ]]; then
echo -e "${BLUE}${MSG_OLD_CONFIG}${NC}"
cat > /etc/apt/apt.conf.d/10-archive-settings <<EOF
Acquire::Check-Valid-Until "false";
Acquire::AllowInsecureRepositories "true";
Acquire::AllowDowngradeToInsecureRepositories "true";
EOF
echo -e "${BLUE}${MSG_OLD_COMPAT}${NC}"
echo 'APT::Cache-Limit "12500000";' >> /etc/apt/apt.conf.d/10-archive-settings
echo 'Acquire::Languages "none";' >> /etc/apt/apt.conf.d/10-archive-settings
fi
# Обновляем APT
echo -e "${BLUE}${MSG_UPDATE}${NC}"
apt-get update -o Acquire::Check-Valid-Until=false
}
# Инициализируем языковые переменные
init_language
# Основной скрипт
echo -e "\n${BLUE}${MSG_TITLE}${NC}"
# Определение версии
codename=$(get_debian_codename) || {
echo -e "${RED}${MSG_ERROR_DETECT}${NC}" >&2
exit 1
}
echo -e "\n${MSG_VERSION} ${GREEN}${codename}${NC}"
# Проверка поддержки
supported_versions=("trixie" "bookworm" "bullseye" "buster" "stretch" "jessie" "wheezy"
"squeeze" "lenny" "etch" "sarge" "woody" "potato" "slink" "hamm")
if ! printf '%s\n' "${supported_versions[@]}" | grep -q "^$codename$"; then
echo -e "${RED}$(printf "${MSG_UNSUPPORTED}" "$codename")${NC}"
exit 2
fi
# Информация о версии
if [[ "$codename" == "woody" || "$codename" == "sarge" || "$codename" == "potato" || "$codename" == "slink" || "$codename" == "hamm" ]]; then
echo -e "${BLUE}$(printf "${MSG_OLD_WARNING}" "$codename")${NC}"
echo -e "${BLUE}${MSG_OLD_WARNING2}${NC}"
fi
# Запрос на подтверждение
echo -e "\n$(printf "${MSG_CONFIRM}" "${GREEN}${codename}${NC}")"
echo -e "${BLUE}${MSG_WARNING}${NC}"
read -p "${MSG_PROMPT}" answer
if [[ $answer = [Yy]* ]]; then
add_archive_repos "$codename"
echo -e "${GREEN}\n${MSG_SUCCESS}${NC}"
# Дополнительные инструкции для старых версий
if [[ "$codename" == "woody" || "$codename" == "sarge" || "$codename" == "potato" || "$codename" == "slink" || "$codename" == "hamm" ]]; then
echo -e "\n${BLUE}$(printf "${NOTES_TITLE}" "$codename")${NC}"
echo -e "${BLUE}${NOTES_1}\n${NOTES_2}\n${NOTES_3}\n${NOTES_4}\n${NOTES_5}\n${NOTES_6}\n${NOTES_7}${NC}"
# Автоматическая установка необходимых пакетов
echo -e "\n${BLUE}Installing required packages...${NC}"
apt-get install -y apt-transport-http openssl libssl0.9.8 debian-archive-keyring
fi
else
echo -e "${BLUE}${MSG_CANCEL}${NC}"
fi
Если кратко - задача этого пакетного файла обеспечить работу пакетного менеджера. Пакетный файл был проверен на Debian 3.0 и более новых версий ( Debian7).
По итогам:
- Будет активирован необходимый архив пакетов.
- Установлена русская локализация UTF-8 для версий 4.0 и выше (по запросу).
Кросс-компиляция внешних компонент под Debian 4 и новее.
После настройки установки пакетов Debian, необходимо настроить gcc таким образом, чтобы можно было собирать либо на AMD64 или на IA-32 компоненты под обе архитектуры (под остальные поддерживаемые 1С ничего сказать не смогу, под них не разрабатывал).
Для упрощения данной задачи воспользуется другим пакетным файлом со следующим содержимым (дополнен старыми процессорами для расширенной поддержки внешних компонент):
#!/bin/bash
# Установка базовых инструментов для компиляции
apt-get update
apt-get -y install build-essential
apt-get -y install uuid-runtime
apt-get -y install uuid-dev
apt-get -y install gcc-multilib
apt-get -y install g++-multilib
# Для 64-битной компиляции (на 32-битных системах)
apt-get -y install libc6-dev-amd64
apt-get -y install linux-libc-dev-amd64
apt-get -y install libc6-dev-x32
apt-get -y install lib64gcc1
apt-get -y install lib64stdc++6
apt-get -y install lib64stdc++6-dev
apt-get -y install lib64z1-dev
apt-get -y install lib64ncurses5-dev
# Для 32-битной компиляции (на 64-битных системах) - основные пакеты
apt-get -y install libc6-dev-i386
apt-get -y install lib32gcc1
apt-get -y install lib32stdc++6
apt-get -y install lib32stdc++6-dev
apt-get -y install lib32z1-dev
apt-get -y install lib32ncurses5-dev
# Дополнительные пакеты для поддержки i386 через дефис (где доступно)
apt-get -y install libc6-i386
apt-get -y install libstdc++6-4.8-dev-i386 # Для Debian 7/8
apt-get -y install libstdc++-4.8-dev-i386-cross # Альтернатива
apt-get -y install zlib1g-dev-i386 # Для некоторых версий
apt-get -y install libncurses5-dev-i386 # Для некоторых версий
# Для работы с мультиархитектурностью в старых версиях
dpkg --add-architecture i386
apt-get update
# Установка 32-битных версий критически важных библиотек
apt-get -y install zlib1g:i386
apt-get -y install libncurses5:i386
apt-get -y install libstdc++6:i386
apt-get -y install libgcc1:i386
apt-get -y install libc6:i386
# Резервная установка через двоеточие (если пакеты с дефисом не найдены)
apt-get -y install libstdc++-dev:i386 || true
apt-get -y install zlib1g-dev:i386 || true
apt-get -y install libncurses5-dev:i386 || true
# ДОПОЛНЕНИЕ: Полный набор пакетов для поддержки i386, i486 и i586 на всех версиях Debian
# Пакеты для старых версий Debian (3.x-5.x)
apt-get -y install libc6-dev-386 || true
apt-get -y install libstdc++5-3.3-dev || true
apt-get -y install libstdc++5-3.3-dev-i386 || true
apt-get -y install lib32gcc-3.3-dev || true
apt-get -y install lib32stdc++6-4.1-dev || true
apt-get -y install libx32gcc1 || true
# Пакеты для средних версий Debian (6.x-8.x)
apt-get -y install libc6-dev-x86 || true
apt-get -y install libstdc++6-4.4-dev-i386 || true
apt-get -y install libstdc++6-4.6-dev-i386 || true
apt-get -y install libstdc++6-4.7-dev-i386 || true
apt-get -y install lib32gcc-4.4-dev || true
apt-get -y install lib32gcc-4.6-dev || true
apt-get -y install lib32gcc-4.7-dev || true
# Пакеты для новых версий Debian (9.x-13.x)
apt-get -y install libc6-dev-x32 || true
apt-get -y install libx32stdc++6 || true
apt-get -y install libx32stdc++6-dev || true
apt-get -y install libx32gcc1-dev || true
apt-get -y install libx32z1-dev || true
# Специальные пакеты для поддержки i486 и i586
apt-get -y install libc6-i486 || true
apt-get -y install libc6-dev-i486 || true
apt-get -y install libc6-i586 || true
apt-get -y install libc6-dev-i586 || true
apt-get -y install libstdc++6-i486 || true
apt-get -y install libstdc++6-i586 || true
apt-get -y install libgcc1-i486 || true
apt-get -y install libgcc1-i586 || true
# Дополнительные библиотеки для совместимости
apt-get -y install lib32mudflap0 || true
apt-get -y install lib32gomp1 || true
apt-get -y install lib32objc4 || true
apt-get -y install lib32quadmath0 || true
apt-get -y install lib32asan0 || true
apt-get -y install lib32atomic1 || true
apt-get -y install lib32cilkrts5 || true
apt-get -y install lib32ubsan0 || true
# Специальные пакеты для очень старых версий Debian (2.x-4.x)
apt-get -y install libc6-dev-3.3 || true
apt-get -y install libc6-dev-3.3-i386 || true
apt-get -y install libstdc++2.10-dev || true
apt-get -y install libstdc++2.10-dev-i386 || true
apt-get -y install libc6-dev-486 || true # Для i486
apt-get -y install libc6-dev-586 || true # Для i586
# Файлы заголовков для ядра Linux (разные версии)
apt-get -y install linux-kernel-headers || true
apt-get -y install linux-headers-2.4 || true
apt-get -y install linux-headers-2.6 || true
apt-get -y install linux-headers-3.0 || true
apt-get -y install linux-headers-4.0 || true
apt-get -y install linux-headers-5.0 || true
# Дополнительные инструменты для сборки
apt-get -y install binutils-i386-linux-gnu || true
apt-get -y install binutils-i486-linux-gnu || true # Для i486
apt-get -y install binutils-i586-linux-gnu || true # Для i586
apt-get -y install libtool || true
apt-get -y install autoconf || true
apt-get -y install automake || true
Смысл его в следующем: он устанавливает gcc и к нему необходимые библиотеки multilib, uuid. Если первой нет, то тогда устанавливаются пакеты, которые обеспечивают необходимую поддержку для старых версий GCC.
Теперь наконец-то можно и сделать файл компиляции под AMD64 пакета VNCOMP82. Для этого необходимо сделать 2 вещи:
- Скопировать Makefile в Make64 (исходный для IA-32 понадобится).
- В нем сделать 2 вещи: заменить название в переменной TARGET и заменить ключ -m32 на -m64.
После этого тестовый пример можно легко собрать компилятором следующей цепочкой:
make
-rm *.o *.d
make -f Make64
-rm *.o *.d
make
make -f Make64
На этом настройку можно считать завершенным. Наш дистрибутив debian теперь готов к разработке внешних компонент для Linux сервера. Для Windows достаточно просто установить Visual Studio 2008 express.
Debian 3.1 (дополнение под debian 3.1 sarge от 21.08.2025)
Если все-же есть необходимость собрать улучшенную с точки зрения поддержки компоненту, то здесь необходимо учесть следующие рекомендации для этого дистрибутива:
- Выбираем графический рабочий стол kde версии 3.x - его можно установить отдельным скриптом после включения архивных пакетов.
- После того, как были установлены базовые расширения по gcc, необходимо gcc обновить до версии 3.4.6, иначе придется исходники предварительно конвертировать в utf-8, что для тестового стенда категорически не удобно (скрипт для этой операции приложен к публикации).
- Установка локализации cp1251 для gcc сводится отдельным пакетным файлом. Для полной поддержки пункта 2 (тоже во вложениях к публикации).
После этого можно успешно собирать внешние компоненты аналогично debian 4-x DVD, однако с преимуществами - чуть меньший размер программы и возможность корректной сборки под intel 386 (первый процессор, который корректно поддерживал защищенный режим с точки зрения ОС).
Скрипты для этого приложены также в файлах.
Пакетные файлы в виде файлов sh приложены к статье.
Вступайте в нашу телеграмм-группу Инфостарт