Установка пакетов в Debian

Дата: 09.10.2015Метки:

В Debian установка пакетов выполняется двумя способами. Первый вариант — из подключенных репозиториев. Второй — установка deb-пакета с локального раздела диска. В зависимости от типа установки, используется программы APT или DPKG.

Установка пакетов в Debian с помощью APT

Команда apt-get использует базу пакетов, автоматически определяет и устанавливает все необходимые зависимости. Для установленных через apt-get пакетов, существует механизм автоматического отслеживания и установки обновлений. Поэтому, в большинстве случаев рекомендуется установка пакетов в Debian с помощью команды apt-get.

В Debian установка пакетов из репозитория начинается с обновления локального кэша APT:

apt-get update

В результате работы, команда обновит информацию о всех пакетах, которые содержатся в репозиториях. Далее, по своему усмотрению мы можем использовать одну из команд ниже.

APT: установка пакетов
В Debian установка пакетов выполняется с помощью команды:

apt-get install mysql-server

APT: поиск пакетов
C помощью простых текстовых запросов можно использовать APT для поиска пакетов в репозитории:

apt-cache search mysq-server

APT: список зависимостей
Вывести перечень необходимых для установки пакета программ или библиотек:

apt-cache depends mysq-server

Установка deb-пакета с помощью DPKG

Если по какой-либо причине, необходимого нам пакета нет в репозиториях, в таком случае, можно установить deb-пакет используя команду dpkg.

Самостоятельно DPKG не умеет загружать необходимые для работы пакета зависимости. Также, отсутствует механизм для обновления пакетов. Как правило, команду dpkg используют в тех редких случаях, когда необходима установка deb-пакета с локального диска.

DPKG: установка deb-пакета

dpkg -i /tmp/mysql-server-5.5.deb
apt-get -f install

Последняя команда используется для автоматической загрузки и установки всех необходимых для работы пакета зависимостей.

Список установленных пакетов в Debian

Дата: 08.10.2015Метки:

В процессе настройки системы, может возникнуть необходимость просмотреть список всех установленных пакетов в Debian. Дополнительно, будет нелишним сохранить данную информацию во время резервного копирования системы.

В таком случае, вместо вывода списка установленных пакетов на экран, нам необходимо записать информацию в текстовый файл. При необходимости, с помощью этого файла мы сможем без труда вернуть состав установленных пакетов и их зависимостей к первоначальному состоянию.

В большинстве случаев, когда необходимо просмотреть информацию о установленных пакетах в Debian, будет удобно использовать команду:

dpkg -l

На экран будет выведен список, включающий информацию о версии пакета и его описание. Для удобства, в сочетании с командой dpkg можно использовать фильтрацию по названию пакета:

# Для точного название пакета
dpkg -l mc
# Да отображения пакетов по маске
dpkg -l php*

Если необходимо узнать место расположения файлов для уже установленного пакета, необходимо использовать команду ниже:

dpkg -L mc

Используем dpkg для бэкапа и установки пакетов

Рассмотрим ситуацию, когда вам необходимо сохранить список установленных пакетов в файл, для его дальнейшего использования. В этом случае необходимо просто направить результат выполнения команды:

dpkg --get-selections > ~/package.list

При желании, можно ограничить список установленных пакетов по маске или названию. Для установки пакетов на основе информации из файла, необходимо выполнить команду:

dpkg --set-selections < ~/package.list
apt-get update && apt-get -u dselect-upgrade

Скачать пакет из репозитория Debian

Дата: 05.10.2015Метки:

Как правило, программы и обновления в Linux устанавливаются преимущественно из репозиториев. До тех пор, пока не закончиться срок поддержки дистрибутива, версии пакеты в репозитории постоянно находятся в движении.

Мейнтейнеры регулярно следят за выпуском обновлений и поддерживают репозиторий в актуальном состоянии. После добавления новой версии пакета, старые сразу удаляются. Связи с чем, может возникнуть необходимость сохранить необходимую версию пакета, для того что бы использовать ее в будущем.

Как вариант, можно просто скачать deb-пакет из репозитория Debian без его последующей установки. Для этого у пакетного менеджера apt-get в Debian есть специальная опция download, которая позволяет скачать пакет в текущую директорию. Для того чтобы скачать пакет из репозитория Debian необходимо выполнить команду ниже:

cd /tmp
apt-get download package-name

Если пакет уже был ранее установлен в системе, можно скопировать deb-файл из каталога:

cd /var/cache/apt/archives/

Создать tar.gz

Дата: 03.10.2015Метки:

Наиболее часто в процессе работы в Linux пользователи сталкиваются с форматом архива tar.gz, который является своего рода стандартом для Linux систем. Расширение имени файла состоит из двух частей не случайно.

Это связано с тем, что самостоятельно утилита tar не умеет сжимать файлы, а лишь выполняет функцию объединения нескольких файлов внутри одного архива. В соответствии с традициями UNIX, такие архиваторы как gzip или bzip2 умеют работать одновременно только с одним файлом. Связи с чем, работая в связке эти программы дополняют друг друга.

В содержимое tar архива записываются файлы и такая информация как: структура директорий, права доступа и временные метки файлов. После чего данные сжимается архиватором. В итоге мы получаем архив с tar.gz расширением имени файла.

Синтаксис команды tar и описание значения ключей:

tar [-ключи] [название архива] [путь к файлам]

: создать файл архива;
-x: извлечь файлы;
-z: тип архива .gzip;
-j: тип архива .bz2;
-v: отображать информацию о процессе выполнения;
-f: записать архив в файл.

Создать tar.gz

Чтобы создать tar.gz архив необходимо выполнить команду tar с указанными ниже ключами:

tar -czvf files.tar.gz /files
# Для нескольких файлов
tar -czvf files.tar.gz file1 file2 dir1 dir2

Чтобы распаковать tar.gz файл используем команду:

tar -xzvf files.tar.gz

Создать .tar.bz2

В отличие от предыдущего метода, данный алгоритм сжатия более эффективен, но уступает производительность GZIP. Чтобы создать tar.bz2 архив необходимо выполнить команду:

tar -cjvf file.tar.bz2 /files
# Для нескольких файлов
tar -cjvf  file1 file2 dir1 dir2

Чтобы распаковать tar.bz2 файл используем команду:

tar -xjvf files.tar.gz

Распаковка архивов в Linux

Дата: 28.09.2015Метки:

В процессе работы в Linux часто сталкивавшийся с необходимости распаковки различного рода архивов. До того момента, пока не запомнишь на память формат команды, приходится каждый раз искать в поисковике параметры распаковки того, или иного архива. Для того чтобы немного облегчит себе жизнь, можно использовать специальный скрипт для распаковки архивов в Linux.

Скрипт содержит команды для распаковки большинства популярных форматов архивов, для его работы важно чтобы требуемый архиватор был установлен в системе. Для работы скрипта в Debian/Ubuntu, необходимо добавить функцию unpack в содержимое системного файла /etc/bash.bashrc конфигурации bash.

nano /etc/bash.bashrc

Скрипт для распаковки архивов в Linux:

function unpack {
if [ -z "$1" ]; then
    echo "Usage: extract "
 else
    if [ -f "$1" ] ; then
        NAME=${1%.*}
        case "$1" in
          *.tar.bz2)   tar xvjf ./"$1"    ;;
          *.tar.gz)    tar xvzf ./"$1"    ;;
          *.tar.xz)    tar xvJf ./"$1"    ;;
          *.lzma)      unlzma ./"$1"      ;;
          *.bz2)       bunzip2 ./"$1"     ;;
          *.rar)       unrar x -ad ./"$1" ;;
          *.gz)        gunzip ./"$1"      ;;
          *.tar)       tar xvf ./"$1"     ;;
          *.tbz2)      tar xvjf ./"$1"    ;;
          *.tgz)       tar xvzf ./"$1"    ;;
          *.zip)       unzip ./"$1"       ;;
          *.Z)         uncompress ./"$1"  ;;
          *.7z)        7z x ./"$1"        ;;
          *.xz)        unxz ./"$1"        ;;
          *.exe)       cabextract ./"$1"  ;;
          *)           
        esac
    else
        echo "'$1' - file does not exist"
    fi
fi
}

Применяем изменения командой:

source /etc/bash.bashrc ~/bashrc

Вне зависимости от формата запакованного файла, теперь для распаковки архивов в Linux достаточно использовать всего одну команду unpack:

$ extract file.gz
$ extract file.tar.gz
$ extract file.tar.bz2

Grep: исключить строки

Дата: 27.09.2015Метки:

Часто внутри конфигурационных файлов я оставляю для себя небольшие заметки в виде комментариев. Это позволяет быстро вспомнить важные моменты и значительно помогает в процессе настройки. Со временем количество комментариев может настолько много, что они напротив затрудняют чтение файла. Кроме того, бывают ситуации когда необходимо исключить из файлов комментарии, которые не должны увидеть посторонние.

Чтобы избавить себя от рутины, я предпочитаю через команду grep исключить из файла сразу все имеющиеся в нем комментарии. Чтобы с помощью grep исключить только строки по заданному условию, необходимо выполнить команду с опцией -v в качестве параметра.

Команда ниже выведет на экран из содержимого файла example.conf только активные настройки, удалив при этом все имеющиеся в нем комментарии и пустые строки.

grep -v '^#|^$' example.conf

В результате выполнения команды, будут исключены строки начинающиеся с символа решетки ^#, а фильтр ^$ удалит из файла пустые строки.

Для удобства можно перенаправить вывод в текстовый файл:

grep -v '^#|^$' example.conf > new.conf

Чтобы с помощью grep исключить комментарии из множества файлов, можно воспользоваться скриптом ниже:

#!/bin/sh
files="/home/me/data/*.txt"
for i in $files
do
  grep -v '^#|^$' $i > $i.out
  mv  $i.out $i
done

Изменить SSH-приветствие в Debian

Дата: 23.09.2015Метки:

Каждый раз при SSH подключении к серверу на экране отображается стандартное сообщение, которое содержит информацию о последнем входе в систему и информацию про отказ от ответственности. Вместо того что бы при каждой авторизации созерцать на бесполезную с точки зрения администрирования информацию, предлагаю ее заменить на что-нибудь более информативное. Не знаю как вы, а я первым делом при входе на сервер выполняю команду top. Связи с чем, мне было бы удобно видеть интересующую меня информацию сразу при входе на сервер.

Команда для быстрой очистки файла, содержащего текст про отказ от ответственности:

cat /dev/null > /etc/motd

Для отображения интересующей меня информации мы будем использовать скрипт, который будет запускаться при каждом входе в систему. В примере ниже скрипт выводит информацию о нагрузке на процессор, использование оперативной памяти и файловой системы, аптайм сервера. В зависимости от ваших потребностей, вы можете добавить или удалить необходимую для вас информацию.

Для того что бы скрипт автоматически запускался при успешной авторизации пользователя, его необходимо добавить в директорию /etc/profile.d и дать право на запуск:

nano /etc/profile.d/sshinfo.sh
chmod +x /etc/profile.d/sshinfo.sh

Используем dd для теста скорости диска

Дата: 19.09.2015Метки:

Изначально программа dd предназначена для копирования и конвертации файлов в Linux. Но благодаря своей простоте и доступности, часто dd используют для тестирования скорости чтения/записи на диск.

И хотя это не самый точный метод для оценки I/O, тем не менее он достаточно эффективен в ситуациях, когда необходимо оценить производительность файловой системы в Linux. Данный способ подойдет для замеров скорости таких устройств как HDD, SSD и USB накопители.

Для того что бы результаты dd были более точными, необходимо предварительно очистить кэш:

echo 3 > /proc/sys/vm/drop_caches

В процессе выполнения, команда dd создаст файл /tmp/tempfile и запишет его нулями. Для более точных результатов, необходимо что бы данные были физически записаны на диск, для этого необходимо использовать параметр conv=fdatasync.

Команда dd для проверки скорости записи на диск:

# dd if=/dev/zero of=/tmp/tempfile bs=1M count=1024 conv=fdatasync,notrunc
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 2.7261 s, 394 MB/s

Команда dd для проверки скорости чтения с диска:

# dd if=/tmp/tempfile of=/dev/null bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 1.90372 s, 564 MB/s

Для удаления файла, необходимо выполнить команду:

rm /tmp/tempfile

Отключить запуск agetty в Debian

Дата: 16.09.2015Метки:

Для управления доступом к физическим и виртуальным терминалам tty, Debian использует процессы agetty. По умолчанию после загрузки в системе запущено 6 виртуальных терминалов. Для того что отключить не используемые процессы agetty, необходимо в файле getty-static.service изменить параметры запуска службы:

nano /lib/systemd/system/getty-static.service

Для того что бы уменьшить количество запущенных виртуальных терминалов, необходимо удалить из секции [Service] неиспользуемые tty:

[Service]
Type=oneshot
ExecStart=/bin/systemctl --no-block start [email protected]
RemainAfterExit=true

Изменение часового пояса в Linux

Дата: 12.09.2015Метки:

Как правило, на Linux-серверах для настройки аппаратных часов используют время установленное по Гринвичу. Во время загрузки, Linux синхронизирует время с аппаратными часами с учетом сдвига для конкретной временной временной зоны. Абсолютное большинство программ в процессе работы используют время системных часов. После установки нового сервера важно указать правильные настройки часового пояса.

Делаем резервную копию файла с текущими настройками:

mv /etc/localtime  /etc/localtime-old

Создаем символическую ссылку на необходимый нам timezone:

ln -sf /usr/share/zoneinfo/Europe/Nederlands /etc/localtime

Для того чтобы убедиться что системное время соответствует выбранному часовому поясу, необходимо выполнить команду date. Результат выполнения команды:

Sat Sep 12 14:01:37 EEST 2015

Как вариант для изменения часового пояса в Debian можно использовать специальную утилиту. Для этого в терминале необходимо выполнит следующую команду:

dpkg-reconfigure tzdata

На экране появится псевдографический интерфейс, в котором необходимо выбрать регион и город.