Sources list как найти

Translation(s): English — Français — Italiano — Portugês Brasileiro — Русский


Apt > sources.list


Contents

  1. /etc/apt/sources.list

    1. Тип архива
    2. URL Репозитория
    3. Дистрибутив
    4. Компонент
  2. Пример sources.list
  3. Используем Tor вместе с Apt
  4. CD-ROM
  5. Проблемы с разрешением доменных имен
  6. Debug Symbol Packages
  7. Подробнее

/etc/apt/sources.list

Как часть своей работы, Apt использует файл содержащий список ‘источников’ из которых могут быть скачаны пакеты. Этот файл /etc/apt/sources.list.

Содержимое этого файла обычно имеет следующий формат (приведенные ниже данные являются вымышленными и не должны использоваться):

deb http://site.example.com/debian distribution component1 component2 component3
deb-src http://site.example.com/debian distribution component1 component2 component3

Тип архива

Первое слово в каждой строке, deb или deb-src, указывает тип архива. Deb указывает что архив содержит бинарные пакеты (deb), пре-компилированные пакеты для нормального использования. Deb-src указывает что это архив пакетов с иходным кодом, который содержит оригинальные исходные коды программ плюс контрольный файл Debian (.dsc) и diff.gz содержащий изменения и необходимый для пакетирования программы.

URL Репозитория

Следующая запись в строке это адрес (URL) репозитория с которого вы хотите скачивать пакеты. Основной список зеркал репозитория Debian находитсяздесь.

Дистрибутив

‘distribution’ может быть либо кодовое имя / псевдоним релиза (jessie, stretch, buster, sid), либо класс релиза (stable, oldstable, testing, unstable). Если вы имеете в виду отслеживание класса релиза, а затем хотите использовать название релиза, или же если вы просто хотите отслеживать цикл релизов Debian, то используйте кодовое имя.

Например, если у вас есть система работающая на Debian 11.7 «bullseye» и вы не хотите обновляться когда выйдет Debian «bookworm», в таком случае нужно использовать «bullseye» вместо «bookworm». Если вы всегда хотите помогать с тестированием дистрибутива, то используйте «testing». Если вы отслеживаете цикл «bookworm» и хотите оставаться на нём от тестирования и до конца его жизни, используйте «bookworm».

Компонент

main состоит из DFSG-compliant пакетов, которым не требуется другое ПО из других зон. Эти пакеты считаются частью дистрибуции Debian

contrib пакеты содержат DFSG-compliant ПО, но у них зависимостей из зоны main (возможно упакованы в non-free).

non-free содержит ПО, которое не соответствует DFSG.

Пример sources.list

Ниже приведен пример файла sources.list для Debian 9/Stretch.

deb http://deb.debian.org/debian/ stretch main
deb-src  http://deb.debian.org/debian/ stretch main

deb http://deb.debian.org/debian/ stretch-updates main
deb-src  http://deb.debian.org/debian/ stretch-updates main

deb http://security.debian.org/debian-security/ stretch/updates main
deb-src http://security.debian.org/debian-security/ stretch/updates main

Если вы хотите подключить репозиторий с несвободными компонентами системы, то добавьте contrib non-free после main:

deb http://deb.debian.org/debian/ stretch main contrib non-free
deb-src http://deb.debian.org/debian/ stretch main contrib non-free

deb http://deb.debian.org/debian/ stretch-updates main contrib non-free
deb-src http://deb.debian.org/debian/ stretch-updates main contrib non-free

deb http://security.debian.org/debian-security/ stretch/updates main contrib non-free
deb-src http://security.debian.org/debian-security/ stretch/updates main contrib non-free

Для редактирования вашего файла sources.list, вы можете воспользоваться утилитой software-properties-gtk. Расположенной в Menu → System → Administration → Software Sources.

gksu --desktop /usr/share/applications/software-properties.desktop /usr/bin/software-properties-gtk

Используем Tor вместе с Apt

Apt может получать и загружать обновления через Tor. Для этого вам нужно установить пакеты tor и apt-transport-tor. Затем вы можете использовать официальные onion-ресурсы в Debian.

Ниже приведен пример файла sources.list использующий onion-ресурсы в Debian 9/Stretch:

deb tor+http://vwakviie2ienjx6t.onion/debian stretch main
deb-src tor+http://vwakviie2ienjx6t.onion/debian stretch main

deb tor+http://vwakviie2ienjx6t.onion/debian stretch-updates main
deb-src tor+http://vwakviie2ienjx6t.onion/debian stretch-updates main

deb tor+http://sgvtcaew4bxjd7ln.onion/debian-security stretch/updates main
deb-src tor+http://sgvtcaew4bxjd7ln.onion/debian-security stretch/updates main

CD-ROM

Если вы хотите использовать CD-ROM для установки пакетов или автоматического обновления системы через APT, то можно записать его в /etc/apt/sources.list. Для этого можно использовать программу apt-cdrom, например:

# apt-cdrom add

Можно использовать -d для каталога точки монтирования CD-ROM или добавить точку монтирования не-CD (т.е. USB накопитель).

Проблемы с разрешением доменных имен

Если у вас сломалось/не работает разрешение имён. Например, ниже запущен порт S/390x в QEMU Chroot:

# apt-get update
0% [Working]Unsupported socketcall: 20
Unsupported socketcall: 20
Unsupported socketcall: 20
Unsupported socketcall: 20
Unsupported socketcall: 20
Unsupported socketcall: 20
Unsupported socketcall: 20
Unsupported socketcall: 20
Err:1 http://ftp.us.debian.org/debian testing InRelease
  Temporary failure resolving 'ftp.us.debian.org'
Reading package lists... Done
W: Failed to fetch http://ftp.us.debian.org/debian/dists/testing/InRelease  Temporary failure resolving 'ftp.us.debian.org'
W: Some index files failed to download. They have been ignored, or old ones used instead.

Вы можете временно обойти эту проблему, указав IP адрес репозитория (получив его с другой машны):

echo "deb http://128.30.2.26/debian testing main contrib" > /etc/apt/sources.list

apt-get update
Get:1 http://128.30.2.26/debian testing InRelease [232 kB]
Get:2 http://128.30.2.26/debian testing/main s390x Packages [7583 kB]
Get:3 http://128.30.2.26/debian testing/main Translation-en [5134 kB]
Get:4 http://128.30.2.26/debian testing/contrib s390x Packages [42.7 kB]       
Get:5 http://128.30.2.26/debian testing/contrib Translation-en [44.7 kB]       
Fetched 13.0 MB in 32s (403 kB/s)                                              
Reading package lists... Done

Debug Symbol Packages

Для отладки аварийных остановок работы программ часто требуются соответствующие файлы символов отладки. Для большинства пакетов Debian они находятся в пакетах dbgsym. Они доступны из отдельного архива.

Ниже приведен пример файла sources.list для dbgsym-пакетов Debian 9/Stretch:

deb http://deb.debian.org/debian-debug/ stretch-debug main

Подробнее

  • sources.list(5) man page

  • Список неофициальных репозиториев, что-бы получить дополнительные программы ( Skype, Opera, Google )

  • AptCLI

  • AptPreferences

  • APT HOWTO

  • поиск по неофициальным репозиториям (восновном очень старые пакеты)

  • Debian на CD/DVD

  • Добавление списка источников, в том числе cd, используя apt-setup

  • deb.debian.org


ru/PackageManagement

Репозитории — это сетевые хранилища программного обеспечения. Они используются в дистрибутивах Linux, и в том числе в Debian для быстрой установки программного обеспечения с помощью пакетного менеджера. Более подробно о том какие репозитории бывают и зачем они нужны написано в статье Репозитории Debian.

В этой же статье мы поговорим о том как добавить репозитории в Debian различными способами. Самый простой и часто используемый вариант — настройка репозиториев вручную, с него мы и начнём.

Новички часто сталкиваются с проблемой, что после установки новой системы пакетный менеджер не может найти ни одного пакета. Это связано с тем, что по умолчанию основные репозитории Debian в систему не добавлены, там есть только репозитории из DVD дисков с помощью которых вы устанавливали систему. Эта проблема очень просто решается. Системные репозитории находятся в файле /etc/apt/sources.list. Давайте сначала посмотрим на содержимое этого файла по умолчанию:

sudo vi /etc/apt/sources.list

Синтаксис строки репозитория такой:

тип адрес дистрибутив ветка_1 ветка_2

Типов репозиториев может быть два. Это deb и deb-src. Первый — для бинарных файлов, второй — для файлов исходных кодов. Дистрибутив указывает кодовое имя дистрибутива, например, для Debian 10 — это buster, для девятой версии stretch. Для стабильных обновлений есть еще один репозиторий, где вместе с кодовым именем дистрибутива указывается слово updates, например: buster-updates.

Веток есть всего три, вот они:

  • main — полностью свободные пакеты, это основа дистрибутива Debian;
  • contrib — свободные пакеты, которые могут зависеть от несвободных;
  • non-free — все остальные несвободные пакеты.

Основы разобрали, теперь давайте посмотрим как добавить репозитории.

1. Файл /etc/apt/sources.list

Именно в этот файл репозиториев Debian надо добавлять системные репозитории. Чтобы получить доступ ко всем системным пакетам надо добавить репозиторий stable, со стабильной версией Debian, и репозиторий стабильных обновлений. Вот так будут выглядеть их строчки:

deb http://deb.debian.org/debian/ buster main contrib non-free
deb http://deb.debian.org/debian/ buster-updates main contrib non-free

Просто добавьте их в конец файла /etc/apt/sources.list. Вы уже знаете какая часть за что отвечает и сможете разобраться. Если вы захотите добавить репозиторий Backports или Testing, то вам тоже следует использовать этот файл.

2. Папка /etc/apt/sources.list.d/

Сторонние репозитории тоже можно добавить в основной системный файл, но этого делать не следует, чтобы не засорять его лишними строками. Для сторонних репозиториев была придумана директория /etc/apt/sources.list.d/. В ней надо создать файл с именем репозитория и расширением .list, а затем добавить в неё репозиторий, как это делалось с основным конфигурационным файлом. Например, для браузера Chrome:

sudo vi /etc/apt/sources.list.d/google-chrome.list

deb http://dl.google.com/linux/chrome/deb/ stable main

Касательно сторонних репозиториев, есть ещё один момент. По умолчанию система не может им доверять, и для того чтобы это исправить нужно импортировать ключ репозитория. Обычно ключи можно найти на сайте, где вы нашли сам репозиторий, для того же Google Chrome ключ можно импортировать командой:

wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -

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

sudo apt update

3. Команда apt-add-repository

Эта команда делает то же самое, что мы делали вручную на первом шаге. Она добавляет репозиторий в /etc/apt/sources.list. Отлично подходит для добавления системных репозиториев. Для сторонних репозиториев её можно использовать не всегда, поскольку она добавляет кодовое имя дистрибутива в строку репозитория, а это может её сломать, если владельцами репозитория такое явно не было задумано. Например, с помощью этой команды вы можете добавить testing репозиторий:

sudo apt-add-repository 'deb http://ftp.ru.debian.org/debian/ testing main non-free contrib'

А потом удалить, если он больше не нужен:

sudo apt-add-repository --remove 'deb http://ftp.ru.debian.org/debian/ testing main non-free contrib'

Выводы

В этой небольшой статье мы рассмотрели добавление репозиториев Debian на примере операционной системы Debian 10. Как видите, для этого есть несколько способов и какой из них вы будете использовать зависит от вас. А как добавляете репозитории вы? Напишите в комментариях!

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Об авторе

Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.

Contents

  1. The Basics

    1. Explanation of the Repository Format
    2. Other Versions
  2. Adding Repositories

    1. Adding the Universe and Multiverse Repositories
    2. Adding Partner Repositories
    3. Adding Other Repositories
    4. Adding Launchpad PPA Repositories
    5. Enabling Repositories with a (non-interactive) Script
  3. Suggestions & Recommendations
  4. Further Reading

IconsPage/terminal.png This page describes how to manage software repositories from the command line. (GUI tools are also available: Managing Repositories in Ubuntu or Kubuntu).

IconsPage/important.png If you are using a minimal install or server install you will need to be familiar with a terminal based text editor like nano. If you are using a GUI install you can use Nano or GEdit.

The Basics

Ubuntu uses apt for package management. Apt stores a list of repositories or software channels in the file

/etc/apt/sources.list

and in any file with the suffix .list under the directory

/etc/apt/sources.list.d/

See man sources.list for more about this storage mechanism.

By editing these files from the command line, we can add, remove, or temporarily disable software repositories.

  • IconsPage/note.png Note: It’s always a good idea to backup a configuration file like sources.list before you edit it. To do so, issue the following command:

    sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

Typically, the beginning of the file /etc/apt/sources.list looks like this:

# sources.list
#deb cdrom:[Ubuntu 13.10 _Saucy Salamander_ - Release i386 (20131016.1)]/ saucy main restricted

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://ch.archive.ubuntu.com/ubuntu/ saucy main restricted
deb-src http://ch.archive.ubuntu.com/ubuntu/ saucy main restricted
#...

Explanation of the Repository Format

  • All the lines beginning with one or two hashes (#) are comments, for information only.
  • The lines without hashes are apt repository lines. Here’s what they say:

    • deb: These repositories contain binaries or precompiled packages. These repositories are required for most users.

    • deb-src: These repositories contain the source code of the packages. Useful for developers.

    • http://archive.ubuntu.com/ubuntu: The URI (Uniform Resource Identifier), in this case a location on the internet. See the official mirror list or the self-maintained mirror list to find other mirrors.

    • saucy is the release name or version of your distribution.

    • main & restricted are the section names or components. There can be several section names, separated by spaces.

Other Versions

  • IconsPage/note.png For other Ubuntu releases you would replace the ‘saucy’ with the current version you have installed (‘precise’, ‘quantal’, ‘raring’, ‘saucy’, ‘trusty’, …) Type lsb_release -sc to find out your release.

Adding Repositories

Adding the Universe and Multiverse Repositories

Additional software repositories such as Universe and Multiverse can be enabled by uncommenting the corresponding apt lines (i.e. delete the ‘#’ at the beginning of the line). For Universe, uncomment those lines:

  • deb http://us.archive.ubuntu.com/ubuntu/ saucy universe
    deb-src http://us.archive.ubuntu.com/ubuntu/ saucy universe
    deb http://us.archive.ubuntu.com/ubuntu/ saucy-updates universe
    deb-src http://us.archive.ubuntu.com/ubuntu/ saucy-updates universe

There are four similar lines for ‘multiverse’.

OR you may use the add-apt-repository command. If your release is ‘saucy’:

  • sudo add-apt-repository "deb http://us.archive.ubuntu.com/ubuntu/ saucy universe multiverse"
    sudo add-apt-repository "deb http://us.archive.ubuntu.com/ubuntu/ saucy-updates universe multiverse"

IconsPage/note.png Depending on your location, you should replace ‘us.’ by another country code, referring to a mirror server in your region. Check sources.list to see what is used!

Type lsb_release -sc to find out your release. You may repeat the commands with «deb-src» instead of «deb» in order to install the source files.

Don’t forget to retrieve the updated package lists:

  • sudo apt-get update

Adding Partner Repositories

You can add the partner repositories by uncommenting the following lines in your /etc/apt/sources.list file:

  • deb http://archive.canonical.com/ubuntu saucy partner
    deb-src http://archive.canonical.com/ubuntu saucy partner

Then update as before:

  • sudo apt-get update

    IconsPage/important.png Be aware that the software contained within this repository is NOT open source.

Adding Other Repositories

There are some reasons for which you might want to add non-Ubuntu repositories to your list of software sources. Caution: To avoid trouble with your sytem, only add repositories that are trustworthy and that are known to work on Ubuntu systems!


  • You can add custom software repositories by adding the apt repository line of your software source to the end of the sources.list file. It should look something like this:

    deb http://mirror3.ubuntulinux.nl/ hardy-seveas freenx

  • Don’t forget to make apt aware of your changes:
    sudo apt-get update

Adding Launchpad PPA Repositories

Adding Launchpad PPA (Personal Package Archive) is possible conveniently via the command: add-apt-repository. This command is similar to «addrepo» on Debian.

  • The command updates your sources.list file or adds/edits files under sources.list.d/. Type man add-apt-repository for detailed help.

  • If a public key is required and available it is automatically downloaded and registered.
  • Should be installed by default. On older or minimal Ubuntu releases, you may have to install software-properties-common and/or python-software-properties first (sudo apt-get install python-software-properties)

    sudo add-apt-repository ppa:<repository-name>

    Example: sudo add-apt-repository ppa:nhandler/ppa

Enabling Repositories with a (non-interactive) Script

IconsPage/note.png This section seemed obsolete due to the add-apt-repository command, thus it has been removed.

Suggestions & Recommendations

  • It is always a good idea to back up configuration files like /etc/apt/sources.list before you begin editing. You can then revert your changes if needed.

  • If you decide to add other repositories to sources.list, make sure that the repository is meant to work (and known to work) with Ubuntu. Repositories that are not designed to work with your version of Ubuntu can introduce inconsistencies in your system and might force you to re-install. Also, make sure that you really need to add external repositories as the software package(s) you are looking for may already have been introduced into the official repositories!

  • Please keep in mind that it may not be legal (typically because of export restrictions) to enable some non-Ubuntu software repositories in some countries.

  • You may be asked enter a security key when adding a non-Ubuntu repository to your sources. See Managing Authentication Keys for instructions.

  • Remember to retrieve updated package lists by issuing a sudo apt-get update when you’re done editing sources.list.

Further Reading

  • The Debian Apt User Manual

  • Apt-get

  • Software Management

  • Secure Apt on the Debian Wiki


CategoryCommandLine CategoryPackageManagement

Из этой статьи вы узнаете что такое репозитории в Linux. Мы научимся их настраивать на примере Debian 11 и Ubuntu 22.04.

Что такое репозиторий

Репозиторий – это своеобразное хранилище приложений. У многих GNU/Linux дистрибутивов есть свои репозитории. А также разработчики какого-нибудь отдельного программного обеспечения могут создать свой репозиторий. Но в этом случае такой репозиторий нужно разделить на ветки, одна ветка будет подходить для одной Linux системы, а другая для другой.

В репозиториях, которые подходят для Debian и Ubuntu приложения хранятся в виде архивов. Такие архивы называются пакетами. Эти пакеты имеют особый формат – deb. Есть ещё другой, популярный, формат пакетов – rpm, но системы полагающиеся на такие пакеты я не рассматриваю.

Linux сервера и их репозитории

Linux сервера и их репозитории

Репозитории могут быть доступны с использованием различных протоколов, но самым распространённым является http. Такие репозитории могут быть открыты с помощью обычного браузера. И от туда можно скачать необходимый пакет для установки. Но правильнее устанавливать пакеты в систему из репозиториев с помощью специальных утилит – пакетных менеджеров.

На этом уроке мы познакомимся с подключением системных и сторонних репозиториев. А пакетные менеджеры рассмотрим позже.

Конфиги со списком репозиториев

Пакетные менеджеры, которые умеют устанавливать пакеты из репозиториев, должны знать адреса репозиториев. И эти адреса записываются в конфиг – /etc/apt/sources.list. А также можно создавать дополнительные конфиги с расширением .list в каталоге /etc/apt/sources.list.d/. Всё это справедливо и для Debian и для Ubuntu.

Если помните, в процессе установки систем мы выбирали репозиторий:

  • для Debian – deb.debian.org;
  • для Ubuntu – ru.archive.ubuntu.com.

Давайте теперь посмотрим какие репозитории прописались на наших Linux системах (с помощью egrep -v '^#|^$' я убрал комментарии, а с помощью cat -n добавил нумерацию строк):

alex@ubu:~$ egrep -v '^#|^$' /etc/apt/sources.list | cat -n
    1 deb http://ru.archive.ubuntu.com/ubuntu jammy main restricted
    2 deb http://ru.archive.ubuntu.com/ubuntu jammy-updates main restricted
    3 deb http://ru.archive.ubuntu.com/ubuntu jammy universe
    4 deb http://ru.archive.ubuntu.com/ubuntu jammy-updates universe
    5 deb http://ru.archive.ubuntu.com/ubuntu jammy multiverse
    6 deb http://ru.archive.ubuntu.com/ubuntu jammy-updates multiverse
    7 deb http://ru.archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse
    8 deb http://ru.archive.ubuntu.com/ubuntu jammy-security main restricted
    9 deb http://ru.archive.ubuntu.com/ubuntu jammy-security universe
    10 deb http://ru.archive.ubuntu.com/ubuntu jammy-security multiverse

alex@deb:~$ egrep -v '^#|^$' /etc/apt/sources.list | cat -n
     1  deb http://deb.debian.org/debian/ bullseye main
     2  deb-src http://deb.debian.org/debian/ bullseye main
     3  deb http://security.debian.org/debian-security bullseye-security main
     4  deb-src http://security.debian.org/debian-security bullseye-security main
     5  deb http://deb.debian.org/debian/ bullseye-updates main
     6  deb-src http://deb.debian.org/debian/ bullseye-updates main

Разбираем конфиг

Этот файл состоит из строк, а строки состоят из следующих столбцов:

  • Тип пакетов:
    • deb — архив с уже откомпилированной и готовой к установке программой;
    • deb-src — архив с исходным кодом программы, который перед установкой нужно будет откомпилировать.
  • Адрес репозитория:
    • http://ru.archive.ubuntu.com/ubuntu – для Ubuntu;
    • http://deb.debian.org/debian/ – для Debian;
    • http://security.debian.org/debian-security – обновления безопасности для Debian.
  • Ветки репозитория:
    • для Ubuntu:
      • jammy – приложения для этой версии Ubuntu;
      • jammy-updates – рекомендуемые обновления;
      • jammy-backports – обновления из более новой системы. Допустим для Ubuntu 20.04 определённый пакет уже не обновляется, но из этой ветки можно попробовать его обновить (конечно есть вероятность повредить систему);
      • jammy-security – важные обновления безопасности, без которых ваш сервер легче будет взломать.
    • для Debian:
      • bullseye – приложения для этой версии Debian;
      • bullseye-updates – рекомендуемые обновления;
      • bullseye-security – важные обновления безопасности, без которых ваш сервер легче будет взломать.
  • И в самом конце компоненты, их можно записывать через пробел в одной строке:
    • Для Ubuntu:
      • main – здесь находятся пакеты, которые официально поддерживаются компанией Canonical;
      • restricted – содержит поддерживаемое ПО с закрытым исходным кодом, например MP3 или Flash;
      • universe – содержит ПО, которое поддерживается сообществом пользователей и разработчиков Ubuntu;
      • multiverse – содержит ПО, которое каким-либо образом ограничено либо условиями лицензии, либо юрисдикцией.
    • Для Debian компоненты делятся по критериям свободного ПО (DFSG)
      • main – пакеты полностью соответствуют критериям DFSG. Эти пакеты считаются частью дистрибуции Debian;
      • contrib – пакеты тоже соответствуют критериям DFSG, но зависят от других пакетов, которые не соответствуют этим критериям;
      • non-free – содержит всё остальное ПО, которое не соответствует DFSG.

Классы релизов в Debian

Рассматривая выше ветки репозиториев Debian мы увидели следующее:

  • bullseye;
  • bullseye-updates;
  • bullseye-security.

Но, помимо кодовых имён версий системы, в названиях веток, можно использовать специальные классы релизов:

  • stable – ссылается на текущей стабильный репозиторий Debian, сейчас это bullseye. Как только выйдет новая версия Debian, то stable будет ссылаться на более новую версию;
  • oldstable – ссылается на предыдущий стабильный репозиторий;
  • testing – ссылается на специальную ветку репозитория для разработки нового стабильного релиза;
  • unstable – ссылается на самые свежие, но не протестированные пакеты;
  • experimental – здесь хранятся пакеты, которые только начали разрабатывать;
  • backports – ссылается на testing и unstable, но только для обновлений безопасности.

То есть вы можете изменить свои репозитории на testing, и быть на острие прогресса:

### Это только пример, существует большая вероятность что система очень скоро повредится из за непроверенных обновлений ###
deb http://deb.debian.org/debian/ testing main
deb-src http://deb.debian.org/debian/ testing main
deb http://security.debian.org/debian-security testing-security main
deb-src http://security.debian.org/debian-security testing-security main
deb http://deb.debian.org/debian/ testing-updates main
deb-src http://deb.debian.org/debian/ testing-updates main

Файл Release

Каждый репозиторий, для каждой ветки содержит текстовый файл Release. Например, откройте в браузере репозиторий для Ubuntu: http://ru.archive.ubuntu.com/ubuntu/. Дальше откройте ветку (dists) для jammy. И здесь вы можете скачать и посмотреть файл Release.

Файл Release в репозитории для Ubuntu Jammy

Файл Release в репозитории для Ubuntu Jammy

Он содержит информацию о данной ветке репозитория, например для Ubuntu Jammy файл содержит следующее:

Origin: Ubuntu
Label: Ubuntu
Suite: jammy
Version: 22.04
Codename: jammy
Date: Thu, 21 Apr 2022 17:16:08 UTC
Architectures: amd64 arm64 armhf i386 ppc64el riscv64 s390x
Components: main restricted universe multiverse
Description: Ubuntu Jammy 22.04
MD5Sum:
 *** а здесь контрольные суммы для каждого пакета из репозитория ***

Файл Release – один из самых важных файлов для работы репозитория. Когда пакетный менеджер обновляет список пакетов, то он открывает адрес репозитория и читает этот файл. Если этого файла нет, то репозиторий будет помечен как неисправный и не будет использоваться.

Архитектура пакетов

Если вы ещё раз посмотрите на файл Release в репозитории, то можете заметить там строчку:

Architectures: amd64 arm64 armhf i386 ppc64el riscv64 s390x

Здесь прописаны архитектуры пакетов, которые хранятся в репозитории. Прописывая источник репозитория, например в конфиге /etc/apt/sources.list вы можете указать определённую архитектуру, чтобы предотвратить скачивание и установку пакетов для других архитектур.

Это делается таким способом:

### Пример для Debian ###
deb [arch=amd64] http://deb.debian.org/debian/ bullseye main

Вариант использования официальных репозиториев

Для того чтобы уменьшить вероятность поломки вашей системы из-за непроверенных обновлений, можно немного сократить количество репозиториев в системах Debian и в Ubuntu.

Вообще в Debian дан список самых безопасных репозиториев по умолчанию. Можем лишь закомментировать репозитории с исходниками, так как скорее всего вам они пока не понадобятся. Напомню, что такие строки начинаются со слова deb-src. А если понадобятся вы их просто раскомментируете. После правки у нас осталось 3 источника пакетов:

alex@deb:~$ egrep -v '^#|^$' /etc/apt/sources.list | cat -n
     1  deb http://deb.debian.org/debian/ bullseye main
     2  deb http://security.debian.org/debian-security bullseye-security main
     3  deb http://deb.debian.org/debian/ bullseye-updates main

Ubuntu при установке прописала намного больше своих репозиториев. Но их тоже можно свести к трем. Например, я считаю нужным отключить universe, multiverse и jammy-backports репозитории на сервере. После правки список репозиториев также состоит из 3-ёх строк:

alex@ubu:~$ egrep -v '^#|^$' /etc/apt/sources.list | cat -n
     1  deb http://ru.archive.ubuntu.com/ubuntu jammy main restricted
     2  deb http://ru.archive.ubuntu.com/ubuntu jammy-updates main restricted
     3  deb http://ru.archive.ubuntu.com/ubuntu jammy-security main restricted

Чтобы применить изменения, выполните на обоих системах команду:

$ sudo apt update

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

А если хотите обновить систему, то выполните команду:

$ sudo apt upgrade

Эта команда уже скачивает все обновления и устанавливает их.

Кстати утилита apt – это и есть менеджер пакетов. Рассмотрим её и другие менеджеры пакетов в следующих статьях.

Добавление сторонних репозиториев

Источник репозитория

Некоторые разработчики создают свои собственные репозитории. Например у веб сервера Nginx есть свой репозиторий для разных систем, в том числе для Debian и Ubuntu. Вот его адрес: https://nginx.org/packages/mainline/.

Добавлять репозитории можно в основной конфиг: /etc/apt/sources.list или создавать отдельные конфиги в каталоге /etc/apt/sources.list.d/. Сам я считаю что правильнее для каждого стороннего репозитория создавать отдельные конфиги.

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

alex@deb:~$ sudo nano /etc/apt/sources.list.d/nginx.list 
deb http://nginx.org/packages/debian bullseye nginx 

Или для Ubutnu:

alex@ubu:~$ sudo nano /etc/apt/sources.list.d/nginx.list 
deb http://nginx.org/packages/ubuntu jammy nginx

Приоритет репозитория

Допустим, мы прописали дополнительный репозиторий для nginx, но как системе понять из какого репозитория брать пакет для установки? Ведь пакеты для nginx есть и в системном репозитории и в репозитории от самого nginx. Чтобы ответить на этот вопрос придумали приоритеты репозиториев.

Чтобы задать приоритет репозитория нужно создать файл /etc/apt/preferences.d/XX<имя_репозитория>, где XX это номер файла, чем он выше, тем обработается позднее, то есть будет иметь приоритет над другими настройками.

По нашему примеру для nginx нужно создать следующий файл:

$ sudo nano /etc/apt/preferences.d/99nginx
Package: *
Pin: origin nginx.org
Pin: release o=nginx
Pin-Priority: 900

Разберём написанное:

  • Package: имя пакета. Можно поставить знак * чтобы применить приоритет для всех пакетов из этого репозитория. Также можно указать несколько имён через пробел;
  • Pin: опции прикрепления. Существует много опций, я разберу лишь некоторые:
    • origin “имя автора или поставщика”;
    • release o=nginx – означает что в файле Release репозитория есть поставщик (Origin = o) с именем nginx;
    • release l=Debian – означает что в файле Release репозитория есть Label (l) с именем Debian;
  • Pin-Priority: приоритет.

То-есть Package и Pin это условия для назначения приоритета, а Pin-Priority это действие (назначение приоритета). В нашем примере получается следующее: если имя пакета любое, но владелец репозитория nginx.org и в файле Release прописано “Origin: nginx“, то для таких пакетов ставим приоритет 900.

Приоритет может быть в следующих диапазонах:

  • P >= 1000 – пакет будет установлен из этого репозитория, даже если это приведет к понижению версии уже установленного пакета;
  • 990 <= P < 1000 – пакет будет установлен из этого репозитория, если не установлена более новая версия;
  • 500 <= P < 990 – пакет будет установлен, если нет пакета принадлежащего к целевому выпуску или не установлена более новая версия;
  • 100 <= P < 500 – пакет будет установлен, если нет кандидатов из других репозиториев или установленного пакета более новой версии;
  • 0 < P < 100 – пакет будет установлен, только если он ещё не установлен (любой версии) и если нет кандидатов из других репозиториев;
  • P < 0 – пакет не будет установлен ни при каких условиях;
  • P = 0 – не используется.

Целевой выпуск

Приоритеты с 500 по 990 и с 990 по 1000 очень похожи. Чтобы их отличить нужно понять что такое целевой выпуск. Для Ubuntu или Debian это название версии дистрибутива. Например для Ubuntu – jammy, а для Debian – bullseye. Но это имя ещё нужно задать таким способом:

alex@deb:~$ sudo nano /etc/apt/apt.conf.d/default
APT::Default-Release "bullseye";

alex@ubu:~$ sudo nano /etc/apt/apt.conf.d/default
APT::Default-Release "jammy";

Открытый ключ репозитория

И так, репозиторий мы добавили, приоритет настроили. Давайте попробуем применить изменения:

alex@deb:~$ sudo apt update
Пол:1 http://nginx.org/packages/debian bullseye InRelease [2 860 B]
Ошб:1 http://nginx.org/packages/debian bullseye InRelease
  Следующие подписи не могут быть проверены, так как недоступен открытый ключ: NO_PUBKEY ABF5BD827BD9BF62
Пол:2 http://security.debian.org/debian-security bullseye-security InRelease [44,1 kB]
Сущ:3 http://deb.debian.org/debian bullseye InRelease
Пол:4 http://deb.debian.org/debian bullseye-updates InRelease [39,4 kB]
Чтение списков пакетов… Готово
W: Ошибка GPG: http://nginx.org/packages/debian bullseye InRelease: Следующие подписи не могут быть проверены, так как недоступен открытый ключ: NO_PUBKEY ABF5BD827BD9BF62
E: Репозиторий «http://nginx.org/packages/debian bullseye InRelease» не подписан.
N: Обновление из этого репозитория нельзя выполнить безопасным способом, поэтому по умолчанию он отключён.
N: Информацию о создании репозитория и настройках пользователя смотрите в справочной странице apt-secure(8).

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

Чтобы это сделать, вначале установим необходимые инструменты:

### Для Debian ###
alex@deb:~$ sudo apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring

### Для Ubuntu ###
alex@ubu:~$ sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
Внимание! Утилита gnupg2 для Ubuntu доступна только в репозитории universe, если вы закомментировали эти источники, то разкомментируете их. Это строчки:
deb http://ru.archive.ubuntu.com/ubuntu jammy universe
deb http://ru.archive.ubuntu.com/ubuntu jammy-updates universe
И не забудьте применить изменения, выполнив:
$ sudo apt update

А дальше скачаем открытый ключ (с помощью wget):

$ wget https://nginx.org/keys/nginx_signing.key

Дальше выполняется конвейер команд, это когда вывод одной команды идет на вход другой команде. Такие конвейеры мы будем проходить позже. Но всё равно постараюсь объяснить следующую команду. С помощью cat мы читаем файл ключа, и прочитанное передаём утилите gpg. Утилита gpg переводит прочитанное в необходимый формат и передаёт вывод уже следующей команде tee. Утилита tee (под sudo) сохраняет полученный текст в файл. В конце добавляем >/dev/null, чтобы не было никакого вывода на терминал. Вот сама команда:

$ cat nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Вот так мы получили открытый ключ, который теперь хранится в файле /usr/share/keyrings/nginx-archive-keyring.gpg.

Или можно сразу в одной команде скачать файл (с помощью wget или curl) и сохранить ключ в формате gpg:

### Пример для wget ###
$ wget -O- https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

### Пример для curl ###
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

После этого необходимо указать в конфиге репозитория, что нужно использовать этот ключ. Для этого в конфиге репозитория между deb и адресом репозитория вставляем [signed-by=/путь/к/ключу]:

alex@deb:~$ sudo nano /etc/apt/sources.list.d/nginx.list
deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/debian bullseye nginx

И пробуем ещё раз применить изменения:

alex@deb:~$ sudo apt update
Сущ:1 http://security.debian.org/debian-security bullseye-security InRelease
Сущ:2 http://deb.debian.org/debian bullseye InRelease
Сущ:3 http://deb.debian.org/debian bullseye-updates InRelease
Пол:4 http://nginx.org/packages/debian bullseye InRelease [2 860 B]
Пол:5 http://nginx.org/packages/debian bullseye/nginx amd64 Packages [7 633 B]
Получено 7 633 B за 1с (9 420 B/s)
Чтение списков пакетов… Готово
Построение дерева зависимостей… Готово
Чтение информации о состоянии… Готово
Все пакеты имеют последние версии.

На этот раз всё прошло успешно.

Кстати, если вы хотите в источнике пакетов прописать архитектуру и открытый ключ, то это делается через пробел:

### Пример ###
deb [arch=amd64 signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/debian bullseye nginx

Проверка добавленного репозитория

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

alex@deb:~$ apt-cache policy nginx
nginx:
  Установлен: (отсутствует)
  Кандидат:   1.20.2-1~bullseye
  Таблица версий:
     1.20.2-1~bullseye 990
        990 http://nginx.org/packages/debian bullseye/nginx amd64 Packages
     1.20.1-1~bullseye 990
        990 http://nginx.org/packages/debian bullseye/nginx amd64 Packages
     1.18.0-6.1 990
        990 http://deb.debian.org/debian bullseye/main amd64 Packages

Из вывода становится ясно что пакет nginx ещё не установлен в систему, а кандидатом на установку является пакет с версией 1.20.2 из репозитория http://nginx.org/packages/debian. Приоритет у всех пакетов, кстати стал равным = 990. Это произошло после того, как мы установили целевой выпуск = bullseye. Так как все репозитории относятся к этому выпуску, то на назначенный мною приоритет система перестала смотреть, а назначила репозиториям для bullseye такой приоритет.

Итог

Мы узнали что такое репозитории. Узнали что есть официальные репозитории для системы и они прописываются в конфиг /etc/apt/sources.list. А также есть сторонние репозитории и для них лучше создавать свои конфиги в каталоге /etc/apt/sources.list.d/.

Научились добавлять сторонний репозиторий на примере nginx. Узнали про приоритеты репозиториев и открытые ключи. А также узнали что такое целевой выпуск.

Полезные источники:

  • Очень хорошо про приоритеты и повышение или понижение версий пакетов написано здесь.
  • Инструкция для подключения nginx репозитория в различные системы.
  • Существует Репозиторий от Yandex – он хранит ветки для большинства систем Linux.
  • Репозиторий Ubuntu
  • Репозиторий Debian

Сводка

Репозитории Linux

Имя статьи

Репозитории Linux

Описание

Из этой статьи вы узнаете что такое репозитории в Linux. Мы научимся их настраивать на примере Debian 11 и Ubuntu 22.04

Debian является одним из самых популярных дистрибутивов Linux всех времен, и теперь он получил новую версию Debian 10 Buster.

В Debian появилось много производных, наиболее популярным из которых является Ubuntu.

Дистрибутив Debian Linux широко используется из-за его основного управления пакетами – APT и формата пакетов .deb.

Каждое приложение, системная утилита или игра в Debian распространяется в виде пакета.

Вы можете установить эти пакеты в вашу систему, используя APT (автоматически или вручную).

В этом руководстве мы кратко рассмотрим новые возможности Debian 10, познакомимся с менеджером пакетов APT и узнаем, как настроить его файл sources.list на Debian 10 Buster.

Давайте посмотрим, каковы новые функции и самые важные изменения.

Новые возможности Debian 10 Buster

Наиболее важные функции нового Debian 10 Buster:

  • GNOME Desktop 3.30
  • Linux Kernel 4.19.0-5
  • OpenJDK 11.0
  • AppArmor Enabled by Default
  • Nodejs 10.15.2
  • NFtables заменяет iptables
  • Поддержка множества плат ARM 64 и ARMHF SBC
  • Mailman 3
  • Bash 5.0
  • Debian implementing /usr/merge
  • Secure-boot поддержка
  • Calameres Live-установщик образов Debian-Live

Что такое APT-менеджер и его sources.list

APT – менеджер пакетов, используемый в Debian и его производных.

APT расшифровывается как Advanced Package Tool и представляет собой набор инструментов для управления пакетами Debian и, следовательно, всеми приложениями, установленными в вашей системе Debian.

APT используется для установки, обновления или удаления приложений и пакетов.

APT способен разрешать проблемы с зависимостями и извлекать запрошенные пакеты из репозиториев пакетов.

Он делегирует фактическую установку и удаление пакетов dpkg – низкоуровневому инструменту Debian Package.

APT в основном используется инструментами командной строки, но есть и инструменты с графическим интерфейсом.

Файл /etc/apt/sources.list в Debian содержит список «источников», из которых можно получить пакеты.

Файл sources.list может отличаться в зависимости от различных факторов (с какой среды был установлен Debian, был ли он обновлен с предыдущего выпуска и т. д.)

Это список, который мы имеем в нашей системе:

$ cat /etc/apt/sources.list

deb http://httpredir.debian.org/debian buster main non-free contrib
deb-src http://httpredir.debian.org/debian buster main non-free contrib

deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free

Теперь мы обсудим содержимое этого файла и его различных разделов.

Содержимое и разделы файла Debian sources.list

Разделы файла sources.list следующие:

  • Тип архива
  • URL репозитория
  • распределение
  • Составная часть

Теперь мы подробно рассмотрим каждый из этих разделов.

Тип архива

Первая запись в каждой строке – deb или deb-src представляет тип архивов репозитория.

deb означает, что репозиторий в указанном URL-адресе содержит предварительно скомпилированные пакеты.

Это пакеты, установленные по умолчанию при использовании менеджеров пакетов, таких как apt-get, aptitude, synaptic и т. д.

deb-src указывает исходные пакеты с управляющим файлом Debian (.dsc) и diff.gz, содержащий изменения, необходимые для упаковки программы.

URL репозитория

Следующий раздел в строке ввода – это URL-адрес хранилища, из которого будут загружаться пакеты.

Вы можете найти основной список репозиториев Debian из зеркал исходников Debian Worldwide.

Распределение

Дистрибутивом может быть либо кодовое имя релиза / псевдоним (jessie, stretch, buster, sid) или класс релиза (old stable, stable, testing, unstable) соответственно.

Если вы собираетесь отслеживать класс выпуска, используйте имя класса, если вы хотите отслеживать выпуск версии Debian, используйте кодовое имя.

Составная часть

Обычно в Debian можно использовать три компонента, а именно:

  • main – содержит пакеты, которые являются частью дистрибутива Debian. Эти пакеты соответствуют DFSG.
  • contrib –  Пакеты здесь совместимы с DFSG, но содержат пакеты, которых нет в основном хранилище.
  • non-free – содержит пакеты программного обеспечения, которые не соответствуют требованиям DFSG.

Как мы видим в следующем файле sources.list на Debian 10 Buster, что в строках были перечислены все три типа компонентов:

deb http://httpredir.debian.org/debian buster main non-free contrib
deb-src http://httpredir.debian.org/debian buster main non-free contrib

deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free

Если ваш файл sources.list отличается, вы должны будете добавить разделы contrib и non-free после main, чтобы все пакеты были перечислены.

Если это так в вашей системе, вы можете отредактировать файл /etc/apt/sources.list с помощью nano, vim или любого другого редактора, чтобы внести изменения.

Мы рассмотрим это в следующем разделе статьи.

Если вам также нужны компоненты Backports, contrib и non-free, добавьте строки buster-backports.

Например, для Debian 10 Buster:

deb http://deb.debian.org/debian buster-backports main contrib non-free
deb-src http://deb.debian.org/debian buster-backports main contrib non-free

Вместо этого вы можете использовать https:// … во всех приведенных выше URL-адресах, чтобы использовать репозитории через зашифрованные соединения HTTPS.

(Пользователи Debian 9 Stretch или более ранних выпусков должны сначала установить пакет apt-transport-https.)

Если ваш sources.list содержит все разделы, мы можем запустить обновление пакета, используя apt-get.

Это обеспечит синхронизацию вашего индекса apt.

Затем вы можете установить новые пакеты из репозитория.

$ sudo apt-get update
Hit:1 http://security.debian.org/debian-security buster/updates InRelease
Hit:2 http://cdn-fastly.deb.debian.org/debian buster InRelease
Reading package lists... Done

В некоторых случаях вы можете получить ошибки в репозиториях при обновлении списков пакетов.

В этом случае используйте apt, а не apt-get. apt предпочтительнее apt-get для интерактивного использования.

$ sudo apt update
$ sudo apt upgrade -y

Если это не решает проблему, тогда второй вариант – использовать –allow-releaseinfo-change

$ sudo apt-get --allow-releaseinfo-change update

Добавление пользовательских репозиториев

Не всегда рекомендуется добавлять пользовательские и сторонние репозитории в файл /etc/apt/sources.list.

Вместо этого вы можете создать файл в каталоге /etc/apt/sources.list.d.

Например, чтобы установить docker-ce на Debian 10 Buster из его репозитория upstream, вы должны сделать следующее:

$ sudo vim /etc/apt/sources.list

Добавьте содержание:

deb [arch=amd64] https://download.docker.com/linux/debian buster stable

Вы можете использовать инструмент GNOME для редактирования вашего файла sources.list.

Доступ к нему осуществляется через Меню → Система → Администрирование → Источники программного обеспечения.

gksu --desktop /usr/share/applications/software-properties.desktop /usr/bin/software-properties-gtk

Другой способ – использовать команду apt, используемую для добавления сторонних репозиториев:

$ sudo apt-get install software-properties-common

$ sudo add-apt-repository 
   "deb [arch=amd64] https://download.docker.com/linux/debian 
   $(lsb_release -cs) 
   stable"

Затем вы можете перейти к обновлению apt-cache и установить пакет docker-ce с помощью apt-get.

Это рекомендуемый способ добавления любого другого стороннего репозитория.

Вы заметите, что это не сработает, потому что в вашей системе нет ключа GPG репозитория Docker.

Мы рассмотрим это далее.

Импорт ключей apt

При работе с репозиториями apt и sources.list в какой-то момент вам необходимо импортировать ключи GPG.

Обычно это делается с помощью команды apt-key с синтаксисом:

# apt-key adv --keyserver [server-address] --recv-keys [key-id]

Или вы можете загрузить ключ GPG напрямую и установить его из текущего каталога.

В качестве примера, чтобы загрузить ключи GPG репозитория Docker, вы должны запустить:

$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
OK

Для проверки правильности установки ключа выполните следующее:

$ sudo apt-key fingerprint 0EBFCD88
pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) 
sub   rsa4096 2017-02-22 [S]

После этого вы запустите:

$ sudo apt-get update
$ sudo apt-get install docker-ce

Использование Apt с Tor

Если вы обеспокоены вопросами конфиденциальности или небезопасной передачи данных, вы можете использовать Tor с репозиториями Debian в вашем файле sources.list.

Apt может получать и загружать обновления через Tor.

Чтобы это сработало, вам нужно установить пакеты tor и apt-transport-tor.

Затем вы можете использовать официальные onion сервисы, предоставляемые Debian.

deb tor+http://vwakviie2ienjx6t.onion/debian buster main
deb-src tor+http://vwakviie2ienjx6t.onion/debian buster main

deb tor+http://sgvtcaew4bxjd7ln.onion/debian-security buster/updates main
deb-src tor+http://sgvtcaew4bxjd7ln.onion/debian-security buster/updates main

deb tor+http://vwakviie2ienjx6t.onion/debian buster-updates main
deb-src tor+http://vwakviie2ienjx6t.onion/debian buster-updates main

Заключение

Мы видите, как мы можем манипулировать репозиториями файлов и пакетов sources.list в Debian Linux.

Это обновленная статья для нового выпуска Debian – Debian 10 Buster.

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

Понравилась статья? Поделить с друзьями:
  • Как найти файлы на карантине виндовс 10
  • Как найти то что меня интересует
  • Как найти бик банка получателя сбербанк
  • Как в 1с исправить ответственное лицо
  • Телевизор самсунг нет сигнала как исправить