Установка программ на Astra Linux
Здравствуйте.
Как устанавливать программы в Astra Linux?
К примеру Vipnet или Касперский.
Скачиваю с сайта архив, внутри файлы по типу:
vipnetclient_4.6.0-2691,x86_x64.rmp
Как мне установить такой файл? Я так понимаю через консоль надо, но не могу найти гайд как это сделать.
Желательно дать ссылку или объяснить как, в принципе любую программу установить, а не только эту.
ВАЖНО: Пользуюсь Astra Linux первый день.
Последнее редактирование: 06.02.2020
Montfer
New member
Сообщения 2 358
Вам нужны пакеты с расширением deb
А установка командой sudo dpkg -I /полный/путь/до/файла.deb
Montfer
New member
Сообщения 2 358
И у вас релиз Смоленск?
Treez
New member
Сообщения 7
Вам нужны пакеты с расширением deb
А установка командой sudo dpkg -I /полный/путь/до/файла.deb
Хорошо, попробую.
И у вас релиз Смоленск?
Astra Linux (Orel 2.12.22)
Montfer
New member
Сообщения 2 358
Astra Linux (Orel 2.12.22)
Если орел, то у них есть утилита установки deb пакетов. Просто двойной клик по файлу. Правда эта утилита может запускаться секунд 10-20
Montfer
New member
Сообщения 2 358
Некоторые моменты советую смотреть с ускорением, т.к. затянутое видео
Treez
New member
Сообщения 7
Если орел, то у них есть утилита установки deb пакетов. Просто двойной клик по файлу. Правда эта утилита может запускаться секунд 10-20
Точно, запустилась. Установил.
А где теперь ее искать?)
Montfer
New member
Сообщения 2 358
Точно, запустилась. Установил.
А где теперь ее искать?)
Видео выше
Treez
New member
Сообщения 7
Видео выше
Спасибо. А в «Смоленском» релизе есть такая утилита? Или там только через консоль?
Montfer
New member
Сообщения 2 358
Спасибо. А в «Смоленском» релизе есть такая утилита? Или там только через консоль?
Нет, там через терминал
Montfer
New member
Сообщения 2 358
Ну и гуглите и найдете общую инфу https://www.kv.by/archive/index2008261106.htm
Астра — это форк дебиан. 2.12 (для смоленска — 1.6) подходят пррграммы (и репозитории) для дебиан 9. Еще на форуме говорили, что можно подключить репозитории минт (правда, версию не помню — вроде 19, но это не точно)
Treez
New member
Сообщения 7
Ну и гуглите и найдете общую инфу https://www.kv.by/archive/index2008261106.htm
Астра — это форк дебиан. 2.12 (для смоленска — 1.6) подходят пррграммы (и репозитории) для дебиан 9. Еще на форуме говорили, что можно подключить репозитории минт (правда, версию не помню — вроде 19, но это не точно)
Montfer
New member
Сообщения 2 358
Да, ее официально в свободном доступе нет. К тому же релиз Орел бесплатен только для домашнего некомерческого использования. Для других случаев также необходимо приобретать
Treez
New member
Сообщения 7
Да, ее официально в свободном доступе нет. К тому же релиз Орел бесплатен только для домашнего некомерческого использования. Для других случаев также необходимо приобретать
Большое спасибо за помощь!
АндрейКузнецов
New member
Сообщения 10
Здравствуйте! Помогите новичку. Прочитал тему, посмотрел видео выше. Столкнулся с установкой KES 11, (Операционная система: Astra Linux (Orel) 2.12.45 Версия ядра: 5.15.0-33-generic)
скачал deb пакет с официального сайта (скачивал и для Debian и для Asta) запускаю в QApt результат в скрин 1. Почему-то нет команды для запуска скрипта. Ладно запускаю скрипт самостоятельно. В процессе установки почему-то нет вопроса с GUI. И где искать графический интерфейс после установки.
P.S.: команды
r350@astrabook:~$ sudo su
[sudo] пароль для r350:
root@astrabook:/home/r350# /opt/kaspersky/kesl/bin/kesl-setup.pl
Kaspersky Endpoint Security 11.3.0 for Linux version 11.3.0.7441
Setting up the Anti-Virus Service default locale
Specified locale will be used to show user agreements in this script and
send events to Kaspersky Security Center.
List of available locales:
— ru_RU.UTF-8
— de_DE.UTF-8 [not supported by OS]
— en_US.UTF-8 [not supported by OS]
— fr_FR.UTF-8 [not supported by OS]
— ja_JP.UTF-8 [not supported by OS]
— zh_CN.UTF-8 [not supported by OS]
[ru_RU.UTF-8]:
Anti-Virus Service default locale is changed to ‘ru_RU.UTF-8’.
Service will be restarted if it is already running.
Accepting the End User License Agreement (EULA) and Privacy Policy
Please confirm that you have fully read, understand, and accept the End
User License Agreement (EULA) and Privacy Policy to continue.
NOTE: To quit the EULA and Privacy Policy viewer, press the Q key.
Press ENTER to display the EULA and Privacy Policy:
Read EULA and Privacy Policy from file «/opt/kaspersky/kesl/doc/license.ru»
(utf-8) if it cannot be read here.
I confirm that I have fully read, understand, and accept the terms and
conditions of this End User License Agreement [y/n]: y
I am aware and agree that my data will be handled and transmitted
(including to third countries) as described in the Privacy Policy. I
confirm that I have fully read and understand the Privacy Policy [y/n]: y
I confirm that I have fully read, understand, and accept the terms and
conditions of the Kaspersky Security Network Statement (KSN Statement is
available here: ‘/opt/kaspersky/kesl/doc/ksn_license.ru’) [y/n]: y
Granting the Administrator role
Only users with the Administrator role have full access to the program
management by command line and GUI.
Specify user to grant the ‘admin’ role to (leave empty to skip): root
Configuring file interceptors
Checking if fanotify is available.
Using fanotify interceptor
Starting Kaspersky Endpoint Security 11.3.0 for Linux. This can take some
time. Please wait.
Configuring the update source
Specify the update source. Possible values: KLServers|SCServer|:
[KLServers]: KLServers
Configuring proxy server settings to connect to the updates source
If you use an HTTP proxy server to access the Internet, please enter
the address in one of the following formats:
proxyIPort or userass@proxyIPort, or enter ‘no’ [n]: n
Updated databases are an essential part of your server protection.
Please note that the application may be restarted during the update
process.
Do you want to download the latest databases now? [y]: y
Downloading the latest application databases
Выполнение задачи:
[##################################################]100%
Latest databases are downloaded.
Restarting Kaspersky Endpoint Security 11.3.0 for Linux. This can take some
time. Please wait.
Enabling automatic updates of the application databases
Do you want to enable scheduled updates? [y]: y
Scheduled updates are enabled.
The application databases are scheduled to be updated hourly.
Activate the application
The valid trial key is already added on this device.
Do you want to continue using it?
If you answer ‘no’, the key will be removed [y]:
Как установить tar gz в astra linux
Из готового тарбола (если он учитывает все нужные патчи) можно получить исполняемые программы с помощью следующих команд:
1 разархивировать тарбол:
Создаем папку, куда будем разархивировать тарбол,
mkdir
Копируем туда тарбол
Непосредственно разархивируем в папку:
tat xfzv
— разархивация архивов типа tar.gz и tgz
tat xfjv
— разархивация архивов типа tar.bz и tbz файлы разархивируются в текущую папку (для работы с архивами очень удобно использовать Midnight Commander — MC — свободный клон NC) Переходим в папку с разархивированным тарболом
cd _Имя_папки_
2 конфигурим пакет
./configure
(в тяжелых случаях нужно будет в параметрах указать пути для всех необходимых библиотек и header-файлов — но к счастью, обычно на близких системах они лежат одинакого и сам скрипт configure их находит, также параметы могут потребоваться, если пакет будет распологаться не в том месте, где предполагал разработчик программы, а в каком-либо другом )
3 Создаем пакет:
make
4 Устанавливаем пакет
make install
(последний этап можно теоретически сделать и в ручную скопировав файлы в нужные места) Хочу подчеркнуть, что это наиболее опасный этап — перед ним желательно позаботится о том, как восстановить старый пакет, если в новом есть ошибки.
7.2 Установка программ из сорца (.src.rpm)
Программисты создают проект программы (например с помощью Kdevelop), в котором есть все makefile и файлы конфигурации (configure), а потом упаковывают их в тарболы. В случае доработки пакета создаются Patch-и к исходным текстам, которые заменяют одни строки текста программ на другие. Тарболы и прикладываемые к ним patch-и упаковываются в пакеты-сорцы (.SRC.RPM)(бывают и другие системы пакетов — но я говорю о дистрибутивах на основе RPM — Red Hat, Mandrake, SuSe). RPM-пакет — это особо организованный архив, в который помимо данных (тарбола и патчей — для сырца, необходимых программ — для бинарного RPM) упакованы скрипты установки и обновления. C помощью сорца можно создать бинарный RPM — т.е. такой RPM, в котором упакованы исполняемые пакеты. Причем, если RPM создан на текущей машине, он теоретически будет наилучшим образом подходить к текущей конфигурации пакетов (именно поэтому многие администраторы наиболее важные пакеты собирают из сырцов заново на своей машине). В результате установки сорца- в директорию /usr/src/RPM/source помещаются все необходимые тарболы (обычно один) и патчи (может быть много, а может быть и не одного — все зависит от разработчика и составителя конкретного RPM). — В директорию /usr/src/RPM/spec помещается установочный скрипт (файл с расширением spec) в котором разработчик RPM помещает все действия по установке пакета — разархивирование тарбола, накладывания патчей, транслирование и т.д. Разработано уже много макросов для spec-файлов. С наиболее старыми из них и общей теорией их построения а также опциями команды rpm можно познакомится в RPM-HOWTO . При построении пакета все операции с исходным текстом программ обычно (но не всегда) помещаются в /usr/src/RPM/builder, а новые полученные пакеты (новый сырец и новый бинарник) помещаются соответственно в /usr/src/RPM/RPMS и /usr/src/RPM/SRPMS. Получить из установленного сорца соответствующий пакет можно с помощью команды
rpm -ba packet. spec
7.3 Установка программ из пакетов .RPM
- имя — bash,
- номер версии — 2.0.5,
- номер релиза — alt2,
- архитектура — i586.
Чем больше номер версии (или при одинаковых номерах версии — чем больше номер релиза), тем, соответственно, новее пакет. Управлять пакетами можно из командной строки при помощи программы rpm, которая имеет следующий синтаксис:
rpm -options rpm_package_name
Далее приводятся возможные параметры.
Установка пакета.
Вы можете установить программу, используя опцию -i (опции -v и -h выставлены здесь для того, чтобы включить визуальное отображение процесса установки). Например, для того, чтобы установить klyx, наберите:
rpm -ivh klyx-0.10.9-ipl6mdk.i586.rpm
(настоящее имя зависит от версии программы на доступном носитеое). Заметим, что ipl6mdk означает, что пакет был модифицирован ALT Linux Team (ранее — IPLabs Linux Team) для русской редакции, это его шестая сборка, он входит в дистрибутив Mandrake. i586 указывает на то, что он скомпилирован для процессоров не ниже Pentium(tm). Наличие в имени пакета аббревиатуры alt2 означает, что пакет был собран ALT Linux Team и это его вторая сборка.
Обновление пакета.
Для того чтобы обновить программу (с целью установки более свежей версии), нужно использовать опцию -U, вместо -i, это позволит сохранить все текущие конфигурационные файлы. Если пакета ранее не было в системе, то он будет установлен.
Удаление пакета.
Если вы желаете удалить пакет из системы, внимательно введите:
# rpm -e имя_пакета_без_номера_версии_и_релиза
то есть, например, для пакета klyx:
# rpm -e klyx
Если в процессе удаления пакета произойдет нарушение зависимостей, программа rpm сообщит об этом.
Информация о пакете.
Вы можете запросить у rpm ряд полезной информации о пакете, не устанавливая его — например, бывает удобно просмотреть список всех файлов пакета или краткое описание его возможностей. Для этого используйте опцию -q (query, запрос). -qi используется для получения некоторой информации о ранее установленном пакете; -qip используется для еще не установленных пакетов. В этом случае вы должны указать полный путь и имя пакета (например, /mnt/cdrom/Mandrake/RPMS/klyx-0.10.9-ipl6mdk.i586.rpm); -ql используется для того, чтобы просмотреть список файлов пакета. Добавьте p, если пакет еще не был установлен; -qa выдает список всех установленных пакетов (не нужно указывать имя пакета).
Будьте осторожны с опцией —force — ее можно употреблять только в тех случаях, когда вы хорошо знаете, что делаете.
Если надо установить два или более пакетов, зависящих друг от друга, то установите их одновременно:
# rpm -ihv foo-1.1-3mdk.rpm libfoo-1.5-2mdk.rpm
Часто бывает удобнее, однако, применять программы специально созданные для данного дистрибутива, например, rpmdrake, разработанную MandrakeSoft, kpackage из KDE, gnorpm из GNOME или систему apt (AltLinux). В дистрибутивах, родственных Mandrake удобнее управлять пакетами через графическую оболочку rpmdrake, которую можно запустить через панель управления DrakConf (находящуюся на рабочем столе). Можно выбрать два режима работы — установка или удаление — при помощи кнопок в правом верхнем углу. Выделив пакет, можно получить информацию о нем, входящих в его комплект файлах, а также некоторую другую. Нажав кнопку «Удалить выбранное» или «Установить выбранное», можно удалить или установить выбранные пакеты. Часто бывает так, что требуемый пакет для нормального функционирования требует другие; в этом случае программа предложит вам установить или удалить еще несколько пакетов. При удалении пакетов необходимо соблюдать осторожность, чтобы не удалить важные части системы, например пакеты kernel или glibc. Для использования функции обновления пакетов необходимо указать программе через меню Файл|Настройки дополнительный источник пакетов, в качестве которого может выступать как ресурс Internet, так и локальный каталог или диск CD-ROM. Установку пакетов весьма удобно выполнять и через консольную программу urpmi — с тем отличием, что все действия будут выполняться менее наглядно. Для установки пакетов, поставляемых ALT Linux Team, можно даже запускать программу urpmi не от имени суперпользователя, а от обычного пользователя; единственное, что необходимо сделать для этого ? добавить его в группу urpmi. Для получения дополнительной информации наберите man rpm.
Подписание пакетов ПО
Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
Astra Linux Special Edition РУСБ.10015-17
Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
Astra Linux Special Edition РУСБ.10015-03 (очередное обновление 7.6)
Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
Astra Linux Special Edition РУСБ.10015-16 исп. 1
Astra Linux Special Edition РУСБ.10015-16 исп. 2
Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)
Astra Linux Common Edition 2.12
Подписание пакетов в Astra Linux Special Edition 1.6, 8.1, x.7
Установка пакетов
Для осуществления подписания ПО необходимо установить пакеты:bsign, binutils, gzip, lzma, bzip2, gnupg. Команда для установки пакетов:
sudo apt install bsign binutils gzip lzma bzip2 gnupg
Подписание пакетов
Подписание пакетов должно осуществляться от имени администратора через механизм sudo. Закрытый ключ для подписания должен быть импортирован в набор ключей администратора командой:
sudo gpg —import secret_key.key
Для проверки правильности импорта:
sudo gpg —list-secret-keys
Для подписания пакетов может быть использован сценарий sign-deb.sh. Файл сценария доступен для загрузки с помощью web-браузера по ссылке sign-deb16.sh. Исходный текст сценария:
sign-deb16.sh Развернуть исходный код
#!/bin/bash #--------------------- key_id="" pass_file="" DIR_BIN=$1 DIR_SIGNED=$2 #--------------------- TMP_DIR=$DIR_SIGNED/tmp$$ if [ -z $DIR_BIN ] ; then echo "Specify original directory as first argument." exit 1 fi if [ -z $DIR_SIGNED ] ; then echo "Specify destination directory as second argument." exit 1 fi if [ ! -e $DIR_BIN ] ; then echo "Original directory $DIR_BIN doesn't exist." exit 1 fi list_of_packages=`find $DIR_BIN -type f -name "*.deb"` list_of_udebs=`find $DIR_BIN -type f -name "*.udeb"` for i in $list_of_packages ; do pack_name=`echo $i | awk ''` echo "Unpacking $pack_name" mkdir -p $TMP_DIR/ cp $i $TMP_DIR pushd $TMP_DIR &>/dev/null fakeroot ar x $pack_name SIGN_LOG=$/$.log # Definig archives type data_arch_type=`ls data.tar* | cut -d'.' -f3` control_arch_type=`ls control.tar* | cut -d'.' -f3` popd &>/dev/null # Unpack data archive pushd $TMP_DIR/data &>/dev/null case $data_arch_type in gz) fakeroot tar --same-permissions --same-owner -xzf ../data.tar.gz ;; bz2) fakeroot tar --same-permissions --same-owner -xjf ../data.tar.bz2 ;; lzma) fakeroot tar --same-permissions --same-owner --lzma -xf ../data.tar.lzma ;; xz) fakeroot tar --same-permissions --same-owner -xJf ../data.tar.xz ;; esac popd &>/dev/null # Unpack control archive pushd $TMP_DIR/control &>/dev/null case $control_arch_type in gz) fakeroot tar --same-permissions --same-owner -xzf ../control.tar.gz ;; bz2) fakeroot tar --same-permissions --same-owner -xjf ../control.tar.bz2 ;; lzma) fakeroot tar --same-permissions --same-owner --lzma -xf ../control.tar.lzma ;; xz) fakeroot tar --same-permissions --same-owner -xJf ../control.tar.xz ;; esac popd &>/dev/null # Sign files pushd $TMP_DIR/data &> /dev/null list=`find . -type f` for file in $list ; do elf=`file $file | cut -d: -f2 | awk -F' ' ''` if [ $elf = "ELF" ]; then #if [ "$(file $file | grep ELF)" ];then oldstat=`stat -c %a $file` bsign -N -s --pgoptions="--batch --pinentry-mode=loopback --passphrase-file=$pass_file --default-key=$key_id" $file bsign -w $file newstat=`stat -c %a $file` [ $newstat != $oldstat ] && echo "BSIGN_CHMOD_ERROR in $file" >> $ 2>&1 else echo "$file not ELF" fi done popd &> /dev/null # Counting md5sums pushd $TMP_DIR/control &>/dev/null if [ -e ./md5sums ] ; then filenames=`cat md5sums | awk -F' ' ''` popd &>/dev/null pushd $TMP_DIR/data &> /dev/null for j in $filenames do echo `md5sum $j` >> $TMP_DIR/control/md5sums.new done sed -e 's/\ /\ \ /g' $TMP_DIR/control/md5sums.new > $TMP_DIR/control/md5sums.new_mod popd &> /dev/null mv -f $TMP_DIR/control/md5sums.new_mod $TMP_DIR/control/md5sums &> /dev/null rm -f $TMP_DIR/control/md5sums.new &> /dev/null fi # Packing back in deb pushd $TMP_DIR/data &> /dev/null case $data_arch_type in gz) fakeroot tar --same-permissions --same-owner -czf ../data.tar.gz . ;; bz2) fakeroot tar --same-permissions --same-owner -cjf ../data.tar.bz2 . ;; lzma) fakeroot tar --same-permissions --same-owner --lzma -cf ../data.tar.lzma . ;; xz) fakeroot tar --same-permissions --same-owner -cJf ../data.tar.xz . ;; esac popd &> /dev/null pushd $TMP_DIR/control &> /dev/null case $control_arch_type in gz) fakeroot tar --same-permissions --same-owner -czvf ../control.tar.gz . ;; bz2) fakeroot tar --same-permissions --same-owner -cjvf ../control.tar.bz2 . ;; lzma) fakeroot tar --same-permissions --same-owner --lzma -cvf ../control.tar.lzma . ;; xz) fakeroot tar --same-permissions --same-owner -cJvf ../control.tar.xz . ;; esac popd &> /dev/null pushd $TMP_DIR &> /dev/null fakeroot ar rcs $TMP_DIR/$pack_name debian-binary control.tar.$control_arch_type data.tar.$data_arch_type &> /dev/null cp $ $DIR_SIGNED/$_signed.deb &> /dev/null echo "Creating $DIR_SIGNED/$_signed.deb" popd &> /dev/null rm -rf $TMP_DIR &> /dev/null done for j in $list_of_udebs ; do cp $j $DIR_SIGNED done echo "done" exit 0
В сценарии необходимо указать:
key_id=»<идентификатор_ключа>»
pass_file=»»идентификатор_ключа>
Сценарий должен запускаться от имени суперпользователя (пользователя root). В качестве первого аргумента должен быть указан полный путь до каталога, содержащего пакеты, которые необходимо подписать. В качестве второго аргумента должен быть указан каталог, в который будут помещаться подписанные пакеты, например:
sign-deb16.sh /root/pkg /root/pkg_sign
Если ПО было подписано ранее, ключами, сгенерированными для версий ОС 1.5 и ниже, обеспечить работу такого ПО в режиме ЗПС можно установив пакет astra-digsig-oldkeys. Открытые ключи необходимо размещать в каталоге /etc/digsig/keys/legacy/keys/
Подписание пакетов в Astra Linux Special Edition РУСБ.10015.01 1.4 и 1.5
Подписание пакетов должно осуществляться от имени администратора через механизм sudo. Закрытый ключ для подписания должен быть импортирован в набор ключей администратора командой:
sudo gpg —import key_for_signing.key
Для подписания пакетов может быть использован сценарий. Сценарий должен запускаться от имени пользователя root. В качестве первого аргумента должен быть указан полный путь до каталога, содержащего пакеты, которые необходимо подписать. В качестве второго аргумента должен быть указан каталог, в который будут помещаться подписанные пакеты.
sign_deb.sh Развернуть исходный код
#!/bin/bash key_id="00000000" pass_file="/root/key_password.txt" DIR_BIN=$1 DIR_SIGNED=$2 TMP_DIR=$DIR_SIGNED/tmp$$ SIGN_LOG=sign.log if [ -z $DIR_BIN ] ; then echo "Specify original directory as first argument." exit 1 fi if [ -z $DIR_SIGNED ] ; then echo "Specify destination directory as second argument." exit 1 fi if [ ! -e $DIR_BIN ] ; then echo "Original directory $DIR_BIN doesn't exist." exit 1 fi list_of_packages=`find $DIR_BIN -type f -name "*.deb"` list_of_udebs=`find $DIR_BIN -type f -name "*.udeb"` for i in $list_of_packages ; do pack_name=`echo $i | awk ''` echo "Unpacking $pack_name" mkdir -p $TMP_DIR/ cp $i $TMP_DIR pushd $TMP_DIR &>/dev/null ar x $pack_name SIGN_LOG=$/$.log # Definig archives type data_arch_type=`ls data.tar* | cut -d'.' -f3` control_arch_type=`ls control.tar* | cut -d'.' -f3` popd &>/dev/null # Unpack data archive pushd $TMP_DIR/data &>/dev/null case $data_arch_type in gz) tar --same-permissions --same-owner -xzf ../data.tar.gz ;; bz2) tar --same-permissions --same-owner -xjf ../data.tar.bz2 ;; lzma) tar --same-permissions --same-owner --lzma -xf ../data.tar.lzma ;; xz) tar --same-permissions --same-owner -xJf ../data.tar.xz ;; esac popd &>/dev/null # Unpack control archive pushd $TMP_DIR/control &>/dev/null case $control_arch_type in gz) tar --same-permissions --same-owner -xzf ../control.tar.gz ;; bz2) tar --same-permissions --same-owner -xjf ../control.tar.bz2 ;; lzma) tar --same-permissions --same-owner --lzma -xf ../control.tar.lzma ;; xz) tar --same-permissions --same-owner -xJf ../control.tar.xz ;; esac popd &>/dev/null # Sign files pushd $TMP_DIR/data &> /dev/null list=`find . -type f` for file in $list ; do elf=`file $file | cut -d: -f2 | awk -F' ' ''` if [ $elf = "ELF" ]; then #if [ "$(file $file | grep ELF)" ];then oldstat=`stat -c %a $file` bsign -N -s --pgoptions="--default-key=$key_id --passphrase-file=$pass_file" $file bsign -w $file newstat=`stat -c %a $file` [ $newstat != $oldstat ] && echo "BSIGN_CHMOD_ERROR in $file" >> $ 2>&1 else echo "$file not ELF" fi done popd &> /dev/null # Counting md5sums pushd $TMP_DIR/control &>/dev/null if [ -e ./md5sums ] ; then filenames=`cat md5sums | awk -F' ' ''` popd &>/dev/null pushd $TMP_DIR/data &> /dev/null for j in $filenames do echo `md5sum $j` >> $TMP_DIR/control/md5sums.new done sed -e 's/\ /\ \ /g' $TMP_DIR/control/md5sums.new > $TMP_DIR/control/md5sums.new_mod popd &> /dev/null mv -f $TMP_DIR/control/md5sums.new_mod $TMP_DIR/control/md5sums &> /dev/null rm -f $TMP_DIR/control/md5sums.new &> /dev/null fi # Packing back in deb pushd $TMP_DIR/data &> /dev/null case $data_arch_type in gz) tar --same-permissions --same-owner -czf ../data.tar.gz . ;; bz2) tar --same-permissions --same-owner -cjf ../data.tar.bz2 . ;; lzma) tar --same-permissions --same-owner --lzma -cf ../data.tar.lzma . ;; xz) tar --same-permissions --same-owner -cJf ../data.tar.xz . ;; esac popd &> /dev/null pushd $TMP_DIR/control &> /dev/null case $control_arch_type in gz) tar --same-permissions --same-owner -czvf ../control.tar.gz . ;; bz2) tar --same-permissions --same-owner -cjvf ../control.tar.bz2 . ;; lzma) tar --same-permissions --same-owner --lzma -cvf ../control.tar.lzma . ;; xz) tar --same-permissions --same-owner -cJvf ../control.tar.xz . ;; esac popd &> /dev/null pushd $TMP_DIR &> /dev/null ar rcs $TMP_DIR/$pack_name debian-binary control.tar.$control_arch_type data.tar.$data_arch_type &> /dev/null cp $ $DIR_SIGNED/$_signed.deb &> /dev/null echo "Creating $DIR_SIGNED/$_signed.deb" popd &> /dev/null rm -rf $TMP_DIR &> /dev/null done for j in $list_of_udebs ; do cp $j $DIR_SIGNED done echo "Sign done"
Для корректной работы сценария откорректировать строки сценария:
Заменив значение 00000 на идентификатор ключа, с помощью которого необходимо подписать пакет, а путь /root/key_password.txt на полный путь к файлу с паролем к ключу. Идентификатор ключа можно получить, используя команду:
gpg —list-keys
Подписание ПО в среде операционной системы специального назначения Astra Linux Special Edition РУСБ.10015-01 1.5 ключом, сгенерированным для более ранних версий
Подписание пакетов должно осуществляться от имени администратора через механизм sudo. Закрытый ключ для подписания должен быть импортирован в набор его ключей командой:
sudo gpg —import key_for_signing.key
где key_for_signing.key — название переданного ключа.
Для подписания пакетов может быть использован сценарий. Сценарий должен запускаться от имени пользователя root. В качестве первого аргумента должен быть указан полный путь до каталога, содержащего пакеты, которые необходимо подписать. В качестве второго аргумента должен быть указан каталог, в который будут помещаться подписанные пакеты.
sign-deb.sh Развернуть исходный код
#!/bin/bash key_id="00000000" pass_file="/root/key_password.txt" DIR_BIN=$1 DIR_SIGNED=$2 TMP_DIR=$DIR_SIGNED/tmp$$ SIGN_LOG=sign.log if [ -z $DIR_BIN ] ; then echo "Specify original directory as first argument." exit 1 fi if [ -z $DIR_SIGNED ] ; then echo "Specify destination directory as second argument." exit 1 fi if [ ! -e $DIR_BIN ] ; then echo "Original directory $DIR_BIN doesn't exist." exit 1 fi list_of_packages=`find $DIR_BIN -type f -name "*.deb"` list_of_udebs=`find $DIR_BIN -type f -name "*.udeb"` for i in $list_of_packages ; do pack_name=`echo $i | awk ''` echo "Unpacking $pack_name" mkdir -p $TMP_DIR/ cp $i $TMP_DIR pushd $TMP_DIR &>/dev/null ar x $pack_name SIGN_LOG=$/$.log # Definig archives type data_arch_type=`ls data.tar* | cut -d'.' -f3` control_arch_type=`ls control.tar* | cut -d'.' -f3` popd &>/dev/null # Unpack data archive pushd $TMP_DIR/data &>/dev/null case $data_arch_type in gz) tar --same-permissions --same-owner -xzf ../data.tar.gz ;; bz2) tar --same-permissions --same-owner -xjf ../data.tar.bz2 ;; lzma) tar --same-permissions --same-owner --lzma -xf ../data.tar.lzma ;; xz) tar --same-permissions --same-owner -xJf ../data.tar.xz ;; esac popd &>/dev/null # Unpack control archive pushd $TMP_DIR/control &>/dev/null case $control_arch_type in gz) tar --same-permissions --same-owner -xzf ../control.tar.gz ;; bz2) tar --same-permissions --same-owner -xjf ../control.tar.bz2 ;; lzma) tar --same-permissions --same-owner --lzma -xf ../control.tar.lzma ;; xz) tar --same-permissions --same-owner -xJf ../control.tar.xz ;; esac popd &>/dev/null # Sign files pushd $TMP_DIR/data &> /dev/null list=`find . -type f` for file in $list ; do elf=`file $file | cut -d: -f2 | awk -F' ' ''` if [ $elf = "ELF" ]; then #if [ "$(file $file | grep ELF)" ];then oldstat=`stat -c %a $file` bsign -9 -N -s --pgoptions="--default-key=$key_id --passphrase-file=$pass_file" $file bsign -w $file newstat=`stat -c %a $file` [ $newstat != $oldstat ] && echo "BSIGN_CHMOD_ERROR in $file" >> $ 2>&1 else echo "$file not ELF" fi done popd &> /dev/null # Counting md5sums pushd $TMP_DIR/control &>/dev/null if [ -e ./md5sums ] ; then filenames=`cat md5sums | awk -F' ' ''` popd &>/dev/null pushd $TMP_DIR/data &> /dev/null for j in $filenames do echo `md5sum $j` >> $TMP_DIR/control/md5sums.new done sed -e 's/\ /\ \ /g' $TMP_DIR/control/md5sums.new > $TMP_DIR/control/md5sums.new_mod popd &> /dev/null mv -f $TMP_DIR/control/md5sums.new_mod $TMP_DIR/control/md5sums &> /dev/null rm -f $TMP_DIR/control/md5sums.new &> /dev/null fi # Packing back in deb pushd $TMP_DIR/data &> /dev/null case $data_arch_type in gz) tar --same-permissions --same-owner -czf ../data.tar.gz . ;; bz2) tar --same-permissions --same-owner -cjf ../data.tar.bz2 . ;; lzma) tar --same-permissions --same-owner --lzma -cf ../data.tar.lzma . ;; xz) tar --same-permissions --same-owner -cJf ../data.tar.xz . ;; esac popd &> /dev/null pushd $TMP_DIR/control &> /dev/null case $control_arch_type in gz) tar --same-permissions --same-owner -czvf ../control.tar.gz . ;; bz2) tar --same-permissions --same-owner -cjvf ../control.tar.bz2 . ;; lzma) tar --same-permissions --same-owner --lzma -cvf ../control.tar.lzma . ;; xz) tar --same-permissions --same-owner -cJvf ../control.tar.xz . ;; esac popd &> /dev/null pushd $TMP_DIR &> /dev/null ar rcs $TMP_DIR/$pack_name debian-binary control.tar.$control_arch_type data.tar.$data_arch_type &> /dev/null cp $ $DIR_SIGNED/$_signed.deb &> /dev/null echo "Creating $DIR_SIGNED/$_signed.deb" popd &> /dev/null rm -rf $TMP_DIR &> /dev/null done for j in $list_of_udebs ; do cp $j $DIR_SIGNED done echo "Sign done"
Для корректной работы сценария в строках:
заменить 00000 на идентификатор ключа, с помощью которого необходимо подписать пакет, а вместо /root/key_password.txt — указать полный путь к файлу с паролем к ключу. Идентификатор ключа можно получить, используя команду:
gpg —list-keys
Далее следуйте указаниям в документации.
Дополнительные материалы по GPG
Установка программ в Linux (.tar, .gz, .bz, RPM и DEB)
Каждому пользователю операционных систем Linux, а также других систем приходится устанавливать дополнительные программы. В операционных системах Windows все очень просто, как правило есть установщик setup.exe, который помогает установить софт. А вот в линуксе дела обстоят несколько иначе. Как устанавливать программы в Linux? Сейчас рассмотрим этот вопрос.
В линуксе есть несколько типов установочных пакетов и каждый дистрибутив имеет свой формат пакетов. В дистрибутивах Fedora, Mandriva, Red Hat и Suse используется стандартная установка для линукс RPM, разработанная компанией Red Hat. Файл пакета RPM как правило имеет название имя_программы-версия.rpm.
Еще один из очень популярных форматов это DEB. Используется в Debian, Ubuntu, Knoppix и Mepis. Имеет название имя_программы-версия.deb.
И подошли мы к архивам. Обычно это .tar , .tar.gz , .tgz расширения. Их следует распаковать, а потом уже устанавливать/компилировать.
Выполнять процедуру установки программ нужно от имени суперпользователя.
Установка программ на Debian, Ubuntu
Для работы с пакетами формата DEB есть множество инструментов, но чаще всего используют apt-get , он входит в стандартный набор инструментов. Для установки приложения вводим команду:
apt-get install имя_пакета
apt-get remove имя_пакета
APT хранит локальную базу данных всех доступных для установки пакетов и ссылок где их брать. Эту базу нужно обновлять время от времени, командой:
apt-get update
Для обновления устаревших пакетов (программ) на компьютере набираем следующие команды:
apt-get update ; apt-get upgrade
Про APT можете почитать более подробно на официальном сайте: http://www.debian.org/doc/manuals/apt-howto/
Установка программ на Fedora, Red Hat
Утилита, аналогичная APT — yum. Загрузить и установить пакет из настроенного хранилища пишем команду:
yum install имя_пакета
yum remove имя_пакета
Локальная база yum не сохраняется, поэтому нет необходимости обновлять. Для установки обновлений воспользуемся командой:
yum update
Выбрать что-то определенное для обновления:
yum update имя_пакета
Установка программ в Mandriva
В Mandriva есть свой набор инструментов для работы с пакетами, называется urpmi. Для установки:
urpmi имя_пакета
urpme имя_пакета
Обновить локальную базу со списком пакетов:
urpmi. update -a
Чтобы установить обновления:
urpmi —auto- select
Установка программ из архивов (тарболов)
Для архивов сжатых с помощью GZIP (gz, gz2 и т.д.) делаем так:
tar -xv z f имя_файла
Для архивов сжатых с помощью BZIP (bz, bz2 и т.д.) несколько по другому:
tar -xvjf имя_файла
- x – извлекаем файлы из архива;
- v – подробный вывод инфы на экран;
- f – Обязательная опция. Если не указать, Tar будет пытаться использовать магнитную ленту вместо файла;
- z – обработать архив сжатый при помощи gzip;
- j – обработать архив сжатый при помощи bzip.
После выполнения команды, будет создана папка с именем, аналогичным названию пакета. Затем нужно открыть эту созданную папку командой:
cd имя_папки
Далее в распакованном архиве читаем инструкцию в файле README если есть. Во всяком случае, если программа собрана в виде исполняемого файла, то в пакете будет файл .sh , как правило называется install.sh . Его просто запускаем на исполнение.
А вот если программа представлена в исходном коде, выполняем команды:
./configure
make
make install
После установки выполняем:
make clean
Ну вот и все, ничего сложного. Теперь вы знаете как устанавливать программы на Linux: Debian, Ubuntu, Fedora, Red Hat, Mandriva, в том числе и из архивов.