Инструменты пользователя

Инструменты сайта


software:linux_server:dfs:dfs

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
software:linux_server:dfs:dfs [2025/03/26 20:14] – создано vladpolskiysoftware:linux_server:dfs:dfs [2025/03/26 21:55] (текущий) – [Комментарии, предложения, ошибки] vladpolskiy
Строка 59: Строка 59:
  
 [[https://packages.debian.org/jessie/dpkg|dpkg]] [[https://packages.debian.org/jessie/dpkg|dpkg]]
-[gcc-4.9-base](https://packages.debian.org/jessie/gcc-4.9-base) 
  
-[gnupg](https://packages.debian.org/jessie/gnupg)+[[https://packages.debian.org/jessie/gcc-4.9-base|gcc-4.9-base]]
  
-[gpgv](https://packages.debian.org/jessie/gpgv)+[[https://packages.debian.org/jessie/gnupg|gnupg]]
  
-[libacl1](https://packages.debian.org/jessie/libacl1)+[[https://packages.debian.org/jessie/gpgv|gpgv]]
  
-[libapt-pkg4.12](https://packages.debian.org/jessie/libapt-pkg4.12)+[[https://packages.debian.org/jessie/libacl1|libacl1]]
  
-[libattr1](https://packages.debian.org/jessie/libattr1)+[[https://packages.debian.org/jessie/libapt-pkg4.12|libapt-pkg4.12]]
  
-[libbz2-1.0](https://packages.debian.org/jessie/libbz2-1.0)+[[https://packages.debian.org/jessie/libattr1|libattr1]]
  
-[libc6](https://packages.debian.org/jessie/libc6)+[[https://packages.debian.org/jessie/libbz2-1.0|libbz2-1.0]]
  
-[libgcc1](https://packages.debian.org/jessie/libgcc1)+[[https://packages.debian.org/jessie/libc6|libc6]]
  
-[liblzma5](https://packages.debian.org/jessie/liblzma5)+[[https://packages.debian.org/jessie/libgcc1|libgcc1]]
  
-[libpcre3](https://packages.debian.org/jessie/libpcre3)+[[https://packages.debian.org/jessie/liblzma5|liblzma5]]
  
-[libreadline6](https://packages.debian.org/jessie/libreadline6)+[[https://packages.debian.org/jessie/libpcre3|libpcre3]]
  
-[libselinux1](https://packages.debian.org/jessie/libselinux1)+[[https://packages.debian.org/jessie/libreadline6|libreadline6]]
  
-[libstdc++6](https://packages.debian.org/jessie/libstdc++6)+[[https://packages.debian.org/jessie/libselinux1|libselinux1]]
  
-[libtinfo5](https://packages.debian.org/jessie/libtinfo5)+[[https://packages.debian.org/jessie/libstdc++6|libstdc++6]]
  
-[libusb-0.1-4](https://packages.debian.org/jessie/libusb-0.1-4)+[[https://packages.debian.org/jessie/libtinfo5|libtinfo5]]
  
-[multiarch-support](https://packages.debian.org/jessie/multiarch-support)+[[https://packages.debian.org/jessie/libusb-0.1-4|libusb-0.1-4]]
  
-[readline-common](https://packages.debian.org/jessie/readline-common)+[[https://packages.debian.org/jessie/multiarch-support|multiarch-support]]
  
-[tar](https://packages.debian.org/jessie/tar)+[[https://packages.debian.org/jessie/readline-common|readline-common]]
  
-[zlib1g](https://packages.debian.org/jessie/zlib1g)+[[https://packages.debian.org/jessie/tar|tar]]
  
 +[[https://packages.debian.org/jessie/zlib1g|zlib1g]]
  
-## Creating the Debian From Scratch system 
  
-All following commands need to be performed as `root`, so become the `root` user on your host system:+==== Создание системы Debian From Scratch ====
  
-`su`+Все следующие команды необходимо выполнять как пользователь ''root'', то есть стать rootпользователем вашей хост-системы:
  
-### Preparing the virtual kernel filesystem mount points +<code bash> 
-First we create the directories which are supposed to contain virtual kernel filesystems. These are filesystems which are located in memory only and created dynamically every time the kernel is loaded. +su 
 +</code>
  
-Each kind has a different purpose. The `devpts` contains device files for each pseudo terminal on your system. The `proc` contains information about every single process. The `sysfs` contains driver and device information. The `tmpfs` is a freely usable space which programs may use to store information in memory. +==== Подготовка точек монтирования файловой системы виртуального ядра ====
  
-Since we have not built our kernel yetwe are forced to use the ones existing on our host system by mounting them in the appropriate locations in our target systemWhen our system is fully builtthe new kernel will automatically mount these filesystems in their appropriate places+Сначала мы создаем каталогикоторые должны содержать виртуальные файловые системы ядраЭто файловые системыкоторые находятся только в памяти и создаются динамически каждый раз при загрузке ядра
-```+ 
 +Каждый тип имеет свое назначение. ''devpts'' Содержит файлы устройств для каждого псевдотерминала в вашей системе. ''proc'' Содержит информацию о каждом отдельном процессе. ''sysfs'' Содержит информацию о драйверах и устройствах. Это ''tmpfs'' свободно используемое пространство, которое программы могут использовать для хранения информации в памяти. 
 + 
 +Поскольку мы еще не построили наше ядро, мы вынуждены использовать те, которые существуют в нашей хостовой системе, смонтировав их в соответствующих местах в нашей целевой системе. Когда наша система будет полностью построена, новое ядро ​​автоматически смонтирует эти файловые системы в соответствующих местах. 
 + 
 +<code bash>
 mkdir -pv $LFS/{dev,proc,sys,run} mkdir -pv $LFS/{dev,proc,sys,run}
 mknod -m 600 $LFS/dev/console c 5 1 mknod -m 600 $LFS/dev/console c 5 1
Строка 125: Строка 130:
   mkdir -pv $LFS/$(readlink $LFS/dev/shm)   mkdir -pv $LFS/$(readlink $LFS/dev/shm)
 fi fi
-```+</code>
  
-### Entering our chroot environment+==== Вход в нашу среду chroot ====
  
-We must nowas the `root` user on our host system, enter our base environment by changing our root directory into the final system'root directory, and use the temporary environment we've previously constructed to build our final systemUse the following command after you have become `root` on your host:+Теперь мы должныкак ''root'' пользователь нашей хостовой системы, войти в нашу базовую среду, изменив наш корневой каталог на корневой каталог конечной системы, и использовать временную среду, которую мы ранее построили, чтобы построить нашу конечную системуИспользуйте следующую команду после того, как вы стали ''root'' на своем хосте:
  
-```+<code bash>
 chroot "$LFS" /tools/bin/env -i \ chroot "$LFS" /tools/bin/env -i \
 HOME=/root                  \ HOME=/root                  \
Строка 138: Строка 143:
 PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin:/tools/sbin \ PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin:/tools/sbin \
 /tools/bin/bash --login +h /tools/bin/bash --login +h
-```+</code>
  
-### Installing dpkg+==== Установка dpkg ====
  
 With our `/tools` environment completely set up, we are ready to directly compile and install `dpkg` into our target environment. Replace the `build` variable with the appropriate architecture if it isn't 64-bit (which I am assuming that it is): With our `/tools` environment completely set up, we are ready to directly compile and install `dpkg` into our target environment. Replace the `build` variable with the appropriate architecture if it isn't 64-bit (which I am assuming that it is):
  
  
-```+<code bash>
 ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --build=x86_64-unknown-linux-gnu ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --build=x86_64-unknown-linux-gnu
 make make
 make install make install
-```+</code>
  
-##### Creating dpkg's database +=== Создание базы данных dpkg === 
-We need to create `dpkg`'s databasewhich is merely a text file located in `/var/lib/dpkg/status``dpkg` stores all of its package information in this fileincluding package versionarchitecturedependencies, etcIt does not yet currently existWithout this file, dpkg will not function correctlyso it is important that we create this before we move forward.+Нам нужно создать ''dpkg'' базу данных , которая представляет собой просто текстовый файлрасположенный в /var/lib/dpkg/status. ''dpkg'' хранит всю информацию о пакете в этом файлевключая версию пакетаархитектурузависимости и тдВ настоящее время он еще не существует. Без этого файла dpkg не будет работать правильно, поэтому важно создать егопрежде чем двигаться дальше.
  
-`touch /var/lib/dpkg/status`+<code bash> 
 +touch /var/lib/dpkg/status 
 +</code>
  
-##### Creating temporary links linking to /tools/bin/bash +=== Создание временных ссылок, ссылающихся на /tools/bin/bash === 
-In order the for pre and post-installation scripts that come inside a standard .deb file to workthese need to be able to have access to a shellThese typically either specify using `/bin/sh` or `/bin/bash`Without access to a shell at the exact location that the script specifiesthe installation script will fail thus causing the installation of the package itself to fail.+Для того, чтобы скрипты до и после установки, которые находятся внутри стандартного файла .deb, работали, они должны иметь доступ к оболочкеОбычно они указывают, используя /bin/shили /bin/bash. Без доступа к оболочке в точном месте, указанном в скрипте, скрипт установки завершится ошибкойчто приведет к ошибке установки самого пакета.
  
-We must mitigate this problem by making sure that the `/bin` directory already existsand then creating symlinks from these two locations towards the bash we have in our temporary `/tools` environment+Мы должны решить эту проблему, убедившись, что /binкаталог уже существуета затем создав символические ссылки из этих двух мест на bash, который находится в нашей временной /toolsсреде.
  
-When we get to the point of installing debian's "priority:essential" packageswhich include both of these shellsthese symlinks will be overwritten with native copies of these binaries.+Когда мы дойдем до момента установки пакетов Debian «priority:essential»которые включают обе эти оболочкиэти символические ссылки будут перезаписаны собственными копиями этих двоичных файлов.
  
-```+<code bash>
 mkdir /bin mkdir /bin
 ln /tools/bin/bash /bin/bash ln /tools/bin/bash /bin/bash
 ln /tools/bin/bash /bin/sh ln /tools/bin/bash /bin/sh
-```+</code>
  
  
-### Installing apt+==== Установка apt ====
  
-Before we can install `apt`and use this to automatically install the most of the rest of our system software, we have to install its immediate dependencies on our target system first.+Прежде чем мы сможем установить ''apt'' и использовать его для автоматической установки большей части остального системного программного обеспечениянам сначала необходимо установить его непосредственные зависимости в нашей целевой системе. 
 +{{:software:linux_server:dfs:68747470733a2f2f63646e2e7261776769742e636f6d2f73636f747477696c6c69616d626561736c65792f64656269616e2d66726f6d2d736372617463682f6d61737465722f696d616765732f6170742d646570656e64656e636965732e737667.svg |}} 
 +== Рисунок 2. Дерево зависимостей apt, глубина в один уровень ==
  
-![](https://cdn.rawgit.com/scottwilliambeasley/debian-from-scratch/master/images/apt-dependencies.svg) +Каждая из этих непосредственных зависимостей имеет свой собственный набор зависимостей для выполненияМы начнем с завершения дерева зависимостей для ''debian-archive-keyring''В отличие от процесса компиляциинеобходимого для установки ''dpkg'', процесс, который мы теперь используем для установки программного обеспечения, заключается в установке . ''deb'' файлов с использованием ''dpkg''
-##### Figure 2 - The apt dependency treeone level deep+
  
-Each of these immediate dependencies has their own set of dependencies to fulfill. We shall start by completing the dependency tree for `debian-archive-keyring`. Unlike the compilation process needed to install `dpkg`, the process we now use to install software is by installing .`deb` files using `dpkg`. +==== Установка debian-archive-keyring ====
  
-#### Installing debian-archive-keyring+Итак, мы начнем выполнять ''dpkg'' зависимости , сначала установив ''debian-archive-keyring''. Однако здесь есть проблема - у нас есть циклическая зависимость, как показано ниже.
  
-So we shall start fulfilling `dpkg`'s dependencies by first by installing `debian-archive-keyring`. Howeverthere is a problem here - we have a circular dependency as illustrated below.+{{:software:linux_server:dfs:68747470733a2f2f63646e2e7261776769742e636f6d2f73636f747477696c6c69616d626561736c65792f64656269616e2d66726f6d2d736372617463682f6d61737465722f696d616765732f64656269616e2d617263686976652d6b657972696e672d646570732e7376.svg |}} 
 +== Рисунок 3. Дерево зависимостей Debian-Archive-Keyringциклическая зависимость выделена красным==
  
-![](https://cdn.rawgit.com/scottwilliambeasley/debian-from-scratch/master/images/debian-archive-keyring-deps.svg) +''libgcc1'' зависит от ''multiarch-support'', который зависит от ''libc6'', который зависит от ''libgcc1''Это серьезная проблемапоскольку ни один из этих пакетов не будет полностью установлен без других.
-##### Figure 3 - The debian-archive-keyring dependency treecircular dependency in red+
  
-`libgcc1` depends on `multiarch-support`which depends on `libc6`which depends on `libgcc1`. This is a major problemas because none of these packages will fully install without having the others.+Чтобы решить этуказалось бынеразрешимую проблемунам придется немного отступить от правил.
  
-In order to solve this seemingly impossible problem, we will need to bend the rules a little bit.+Для начала нам необходимо установить ''gcc-4.9-base'':
  
-First, we need to install `gcc-4.9-base`:+<code bash> 
 +dpkg -i (location of gcc-4.9-base
 +</code>
  
-`dpkg -i (location of gcc-4.9-base)`+Затем нам нужно будет сначала установить один пакет частично:
  
-Then, we will need to install one package first in a partial way:+<code bash> 
 +dpkg - i (LOCATION_OF_libgcc1) 
 +</code>
  
-`dpkg - i (LOCATION_OF_libgcc1)`+ПРИМЕЧАНИЕ: Здесь вы получите сообщение об ошибке, содержащее ошибки, очень похожие на следующие:
  
-NOTE: You will receive an error here, containing errors very similar to the following: +<code bash>
- +
-```+
 Unpacking libc6:amd64 (2.28-10) over (2.28-10) ... Unpacking libc6:amd64 (2.28-10) over (2.28-10) ...
 dpkg: dependency problems prevent configuration of libc6:amd64: dpkg: dependency problems prevent configuration of libc6:amd64:
Строка 210: Строка 220:
 Errors were encountered while processing: Errors were encountered while processing:
  libc6:amd64  libc6:amd64
-```+</code>
  
-This is normal at this point you cannot fully install any of these packagesYou can only partially install themwhich we will remedy later on.+Это нормально на этом этапе вы не можете полностью установить ни один из этих пакетовВы можете установить их только частичночто мы исправим позже.
  
-Once the package is installedtweak the database to convince it that it -was- fully installed:+После установки пакета настройте базу данныхчтобы убедиться, что она полностью установлена:
  
-`sed -ir 's/not-installed/installed/' /var/lib/dpkg/status`+<code bash> 
 +sed -ir 's/not-installed/installed/' /var/lib/dpkg/status 
 +</code>
  
-Now install the other two packages in order:+Теперь установите два других пакета по порядку:
  
-`dpkg -i (location_of_multiarch)`+<code bash> 
 +dpkg -i (location_of_multiarch) 
 +</code>
  
-`dpkg -i (location_of_libc6)`+<code bash> 
 +dpkg -i (location_of_libc6) 
 +</code>
  
-And reinstall libgcc1 to cover over our ugly little hack and complete the full installation of each package:+И переустановите libgcc1, чтобы скрыть наш маленький некрасивый хак и завершить полную установку каждого пакета:
  
-`dpkg -i --reinstall (location of libgcc1)`+<code bash> 
 +dpkg -i --reinstall (location of libgcc1) 
 +</code>
  
-#### Installing the rest of apt's dependencies+====Установка остальных зависимостей apt====
  
-At this pointI am assuming that -allof the .deb files you need to install have been placed in a single directoryDouble check to see that you have all of these files`cd` to this directory right now.+На этом этапе я предполагаючто -всефайлы .deb, которые вам нужно установить, были помещены в один каталогДважды проверьте, что у вас есть все эти файлы. cdв этот каталог прямо сейчас.
  
-The truth isfor the remaining dependenciesthe dependency tree for all of them is just too complicated for me to map out and give you a granular series of installation commands to execute what should otherwise be a straightforward operation.+Правда в томчто для всех оставшихся зависимостей дерево зависимостей слишком сложноечтобы я мог его составить и предоставить вам подробную последовательность команд установки для выполнения того, что в противном случае было бы простой операцией.
  
-Regardless of the actual dependency treethere is a quick and dirty way to install the rest of the entire apt dependency treeSimply execute the following commandand repeat it as many times as you need until dpkg no longer complains:+Независимо от фактического дерева зависимостейесть быстрый и грязный способ установить остальную часть всего дерева зависимостей apt. Просто выполните следующую команду и повторяйте ее столько разсколько вам нужно, пока dpkg не перестанет жаловаться:
  
-dpkg -i *`+<code bash> 
 +dpkg -i * 
 +</code>
  
-What happens here is that dpkg will attempt to install all software packages in the directoryIt will inevitably failbut do not fretSimply repeat the command until everything is installed.+Здесь происходит следующее: dpkg попытается установить все программные пакеты в каталогеЭто неизбежно приведет к сбоюно не волнуйтесьПросто повторяйте команду, пока все не будет установлено.
  
-##### How this works+=== Как это работает ===
  
-What happens when we run the command above is that dpkg is attempting to install each package without actually taking into mind the dependency treeSo with each execution of the above commandanother level of the dependency tree will be fulfilleduntil it's successfully able to confirm that the entire tree was installedOnce you no longer get any errors from dpkg, it means everything was installed.+Что происходит, когда мы запускаем команду выше, так это то, что dpkg пытается установить каждый пакет, фактически не принимая во внимание дерево зависимостейТаким образомс каждым выполнением команды выше будет выполняться еще один уровень дерева зависимостейпока не будет успешно подтверждено, что все дерево было установленоКак только вы больше не получаете никаких ошибок от dpkg, это означает, что все было установлено.
  
-dpkg is simply not as intelligent as something like apt, which would automatically build a dependency mapand install all prerequisite software before attempting to install software dependent on said software.+dpkg просто не так умен, как что-то вроде apt, которое автоматически создает карту зависимостей и устанавливает все необходимое программное обеспечение перед попыткой установки программного обеспечениязависящего от указанного программного обеспечения.
  
-You might also notice that dpkg itself is part of the .deb files that needed to be installedDon't worrythis doesn't break anythingWe already have dpkg, but are just installing the official package to update its own database because the database never actually contained itself as part of the list of installed packages.+Вы также можете заметить, что сам dpkg является частью файлов .deb, которые необходимо установитьНе волнуйтесьэто ничего не сломаетУ нас уже есть dpkg, но мы просто устанавливаем официальный пакет для обновления его собственной базы данных, поскольку база данных никогда не содержала себя как часть списка установленных пакетов.
    
-##### Double checking if everything is installed+====Дважды проверьте, все ли установлено====
    
-To be absolutely certainyou can execute the following commandwhich counts how many packages dpkg counts as installed in its database:+Чтобы быть абсолютно увереннымвы можете выполнить следующую командукоторая подсчитывает, сколько пакетов dpkg считает установленными в своей базе данных:
  
-`echo $(($(dpkg -l | wc -l)-5))`+<code bash> 
 +echo $(($(dpkg -l | wc -l)-5)) 
 +</code>
  
-If this returns the value 23, then you can correctly assume that everything was installed as intended+Если возвращается значение 23, то можно с уверенностью предположить, что все установлено так, как задумано.
  
-### Creating networking configuration files+=====Создание файлов конфигурации сети=====
  
-Before we proceed with updating `apt's` cache, we need to define both the system's networking configuration filesand apt's list of software repositories.+Прежде чем приступить к обновлению ''apt's'' кэшанам необходимо определить как файлы конфигурации сети системы, так и список репозиториев программного обеспечения apt.
  
-#### /etc/resolv.conf+==== /etc/resolv.conf====
  
-`/etc/resolv.conf` is a file needed in order for your system to have DNS resolutionWithout this fileno resolution typically happens, which makes updating `apt`'s cache of installable packages via `/etc/apt/sources.list` difficult.+''/etc/resolv.conf'' это файл, необходимый для того, чтобы ваша система имела разрешение DNS. Без этого файла разрешение обычно не происходитчто затрудняет обновление aptкэша устанавливаемых пакетов через ''/etc/apt/sources.list''.
  
-```+<code bash>
 cat > /etc/resolv.conf << "EOF" cat > /etc/resolv.conf << "EOF"
 nameserver 8.8.8.8 nameserver 8.8.8.8
 nameserver 8.8.4.4 nameserver 8.8.4.4
 EOF EOF
-```+</code>
  
-#### /etc/apt/sources.list+==== /etc/apt/sources.list====
  
-sources.list is a file which `apt` uses to contact the repositories that hold your softwareYou want to use the repositories from one and only one distribution as much as possibleotherwise you risk breaking your Debian's clear chain of dependencies and creating an insane mess of your system+**sources.list** — это файл, который ''apt'' используется для связи с репозиториями, содержащими ваше программное обеспечениеВы хотите использовать репозитории из одного и только одного дистрибутива как можно чащев противном случае вы рискуете нарушить четкую цепочку зависимостей вашего Debian и создать безумный беспорядок в вашей системе.
  
-```+<code bash>
 cat > /etc/apt/sources.list << "EOF" cat > /etc/apt/sources.list << "EOF"
 # Debian Jessie main repos # Debian Jessie main repos
Строка 292: Строка 314:
 deb-src http://httpredir.debian.org/debian/ jessie-updates main deb-src http://httpredir.debian.org/debian/ jessie-updates main
 EOF EOF
-```+</code>
  
-#### /etc/hosts+==== /etc/hosts====
  
-`/etc/hosts` is a file used to contain mapping of IP addresses to hostnamesThis file is usually checked before DNS queriesat the very leastthis should contain your `ipv4` and `ipv6` loopback addresses.+''/etc/hosts'' это файл, используемый для хранения сопоставления IP-адресов с именами хостовЭтот файл обычно проверяется перед DNS-запросамипо крайней мереон должен содержать ваши ''ipv4'' и ''ipv6'' петлевые адреса.
  
-```+<code bash>
 cat > /etc/hosts << "EOF" cat > /etc/hosts << "EOF"
 127.0.0.1       localhost 127.0.0.1       localhost
Строка 305: Строка 327:
 ::1     localhost ip6-localhost ip6-loopback ::1     localhost ip6-localhost ip6-loopback
 EOF EOF
-```+</code>
  
-#### /etc/hostname+==== /etc/hostname====
  
-`/etc/hostname` is used to contain your host'DNS nameEdit this if you like.+''/etc/hostname'' используется для хранения имени DNS вашего хостаОтредактируйте это, если хотите.
  
-```+<code bash>
 cat > /etc/hostname << "EOF" cat > /etc/hostname << "EOF"
 debianfromscratch debianfromscratch
 EOF EOF
-```+</code>
  
-### Updating apt's package lists+=====Обновление списков пакетов apt=====
  
-We are now ready to update our list of packages and take full advantage of `apt`To do this, we update our local keyring of valid Debian developer gnu pgp signatures using `apt-key update`and then update with `apt-get update`+Теперь мы готовы обновить наш список пакетов и в полной мере воспользоваться apt. Для этого мы обновляем нашу локальную связку ключей действительных подписей разработчиков Debian gnu pgp с помощью ''apt-key update''а затем обновляем с помощью ''apt-get update''
-```+ 
 +<code bash>
 apt-key update apt-key update
 apt-get update apt-get update
-```+</code>
  
-### Creating user and group databases+=====Создание баз данных пользователей и групп=====
  
-Before we install more softwarewe must make sure that our passwordgroup and authentication mechanisms are all in placeThis is because some packages will require the adding of a new user or group to the system as part of their installation process. Without these base functionalities already in placeinstallation of said packages will fail.+Прежде чем устанавливать больше программного обеспечениямы должны убедитьсячто все наши механизмы паролей, групп и аутентификации на местеЭто связано с темчто некоторые пакеты потребуют добавления нового пользователя или группы в систему в рамках процесса установки. Без этих базовых функций установка указанных пакетов не удастся.
  
-##### debianutils +=== debianutils=== 
-We install debianutils to provide the `tempfile` command needed by one of `base-passwd`'s installation scriptsWithout this command, installation of `base-passwd` will fail.+Мы устанавливаем debianutils, чтобы предоставить ''tempfile'' команду, необходимую одному из ''base-passwd'' установочных скриптовБез этой команды установка ''base-passwd'' не будет выполнена.
  
-`apt-get install debianutils`+apt-get install debianutils
  
-##### base-passwd  +=== base-passwd === 
-We install `base-passwd` to provide standard the standard minimal `/etc/passwd` and `/etc/group` fileswhich are the same across all debian systemsIt does this by running the `update-passwd` binary upon its installation.+Мы устанавливаем ''base-passwd'', чтобы предоставить стандартный минимальный стандарт ''/etc/passwd'' и ''/etc/group'' файлыкоторые одинаковы во всех системах DebianЭто происходит путем запуска ''update-passwd'' двоичного файла при его установке.
  
-`apt-get install base-passwd`+<code bash> 
 +apt-get install base-passwd 
 +</code>
  
-##### Creating /etc/shadow and /etc/gshadow +=== Создание /etc/shadow и /etc/gshadow=== 
-We have to manually create `/etc/shadow` and `/etc/gshadow`as the `passwd` package will fail to configure if it cannot find these files:+Нам придется вручную создать ''/etc/shadow'' и ''/etc/gshadow''так как ''passwd'' пакет не сможет настроиться, если не сможет найти эти файлы:
  
-`touch /etc/shadow /etc/gshadow`+<code bash> 
 +touch /etc/shadow /etc/gshadow 
 +</code>
  
-##### login  +===авторизоваться=== 
-We then install the `login` packagewhich gives us the ability to establish new sessions on the system with `login`privilege escalation with `su`the linux pluggable authentication module (PAM) files for both said binariesa fake shell `/bin/nologin`,  and the `/etc/login.defs` file which is essential for group creationThere are more functionalities included with this packagebut these are the most mentionable.+Затем мы устанавливаем ''login'' пакеткоторый дает нам возможность устанавливать новые сеансы в системе с ''login''повышение привилегий с ''su''файлы подключаемого модуля аутентификации Linux (PAM) для обоих указанных двоичных файловподдельную оболочку ''/bin/nologin'' и ''/etc/login.defs'' файл, который необходим для создания группыВ этот пакет включено больше функцийно эти наиболее упоминаемые.
  
-`apt-get install login`+<code bash> 
 +apt-get install login 
 +</code>
    
-##### passwd  +=== пароль === 
-We then install `passwd` package, which provides the lion's share of utilities and configuration files used to create and manipulate user and group account information.+Затем мы устанавливаем ''passwd'' пакет, который предоставляет львиную долю утилит и файлов конфигурации, используемых для создания и управления информацией об учетных записях пользователей и групп.
  
-`apt-get install passwd`+<code bash> 
 +apt-get install passwd 
 +</code>
  
-##### adduser  +=== adduser === 
-We must also install the `adduser` packagebecause this provides us with the default `/etc/adduser.conf` file which will be needed to install new users properly.+Нам также необходимо установить ''adduser'' пакетпоскольку он предоставляет нам ''/etc/adduser.conf'' файл по умолчанию, который понадобится для правильной установки новых пользователей.
  
-`apt-get install adduser`+<code bash> 
 +apt-get install adduser 
 +</code>
  
-##### Establishing root password and shadowfile entries +=== Установка пароля root и записей shadowfile=== 
-With all the aforementioned utilities and packages installed, our system is now capable of the full functionality of user & group account manipulation.+После установки всех вышеупомянутых утилит и пакетов наша система теперь способна выполнять все функции управления учетными записями пользователей и групп.
  
-At this point, we should run passwd to change our root password+На этом этапе нам следует запустить ''passwd'', чтобы изменить пароль ''root''.
  
-`passwd root`+<code bash> 
 +passwd root 
 +</code>
  
-We should then run `pwconv` to convert our /etc/passwd entries into shadow entries in `/etc/shadow`:+Затем нам следует запустить ''pwconv'' преобразование наших записей ''/etc/passwd'' в теневые записи в ''/etc/shadow'':
  
-`pwconv`+<code bash> 
 +pwconv 
 +</code>
  
-### Fixing the terminal and adding reading/editing utilities+==== Исправление терминала и добавление утилит чтения/редактирования====
  
-Our terminal does not yet have the full functionality one would expect of a terminaland standard terminal utilities may still fail to function properly at this pointLet's install the proper libraries and create the configurations needed to make these before we install +Наш терминал пока не обладает полной функциональностьюкоторую можно было бы ожидать от терминала, и стандартные утилиты терминала могут по-прежнему не работать должным образом на этом этапеДавайте установим соответствующие библиотеки и создадим конфигурации, необходимые для того, чтобы сделать ихпрежде чем мы установим
  
-#### Creating /etc/inputrc file+=== Создание файла /etc/inputrc===
  
-`/etc/inputrc` is the global configuration file for the used by the `libreadline6` librarywhich most shells use in order to understand how to handle many special keyboard situationssuch as what behavior should be default when hitting the HOME and END keysWithout this filemany special keys and two-key stroke combos such as ctrl+left will fail to work+''/etc/inputrc'' это глобальный файл конфигурации для используемой библиотеки ''libreadline6''который большинство оболочек используют для понимания тогокак обрабатывать многие особые ситуации с клавиатурой, например, какое поведение должно быть по умолчанию при нажатии клавиш HOME и END. Без этого файла многие особые клавиши и двухклавишные комбинациитакие как ctrl+left, не будут работать.
  
-Since this file is not created by default when installing the `libreadline6` librarywe must create it ourselves.+Поскольку этот файл не создается по умолчанию при установке ''libreadline6'' библиотекинам придется создать его самостоятельно.
  
-```+<code bash>
 cat > /etc/inputrc << "EOF" cat > /etc/inputrc << "EOF"
 # /etc/inputrc - global inputrc for libreadline # /etc/inputrc - global inputrc for libreadline
Строка 450: Строка 487:
 $endif $endif
 EOF EOF
-```+</code>
  
-#### ncurses libraries and binaries +=== Библиотеки и двоичные файлы ncurses=== 
-A large number of command line utilites rely on the ncurses library to provide a text-interface for user interaction over the terminalThese include simple utilities such as `less` and `nano`Without this library, these utilities will fail to display properlyWe must install the complete suite of the ncurses library in order to prevent said errors from occurring:+Большое количество утилит командной строки полагаются на библиотеку ncurses для предоставления текстового интерфейса для взаимодействия пользователя через терминалК ним относятся простые утилиты, такие как ''less'' и ''nano''Без этой библиотеки эти утилиты не будут отображаться должным образомМы должны установить полный набор библиотеки ncurses, чтобы предотвратить возникновение указанных ошибок:
  
-`apt-get install ncurses-base ncurses-bin ncurses-doc`+<code bash> 
 +apt-get install ncurses-base ncurses-bin ncurses-doc 
 +</code>
  
-#### dialog +=== dialog=== 
-Dialog is a perl module which some scripts attempt to use to provide a text-interface used during configuration or installationYou may have noticed some packages warning you that this utility was non-existent during installationLet's fix this+Dialog — это модуль ''perl'', который некоторые скрипты пытаются использовать для предоставления текстового интерфейса, используемого во время настройки или установкиВы могли заметить, что некоторые пакеты предупреждали вас, что эта утилита отсутствует во время установкиДавайте исправим это:
  
-`apt-get install dialog`+<code bash> 
 +apt-get install dialog 
 +</code>
  
-#### less, vim and nano +=== less, vim and nano=== 
-Now that we've installed most of the libraries and utilities needed for terminal utilitieslet's install some of the most basic and well-used ones:+Теперькогда мы установили большую часть библиотек и утилит, необходимых для терминальных утилит, давайте установим некоторые из самых основных и часто используемых из них:
  
-`apt-get install less vim nano`+<code bash> 
 +apt-get install less vim nano 
 +</code>
  
-### Creating the standard filesystem hierarchy on a Debian system +==== Создание стандартной иерархии файловой системы в системе Debian==== 
-Let's create the standard folder structure for a debian systemThis can be done easily by installing `base-files`First, we have to remove the `/var/mail` directory though or else it will complain that it already exists.+Давайте создадим стандартную структуру папок для системы DebianЭто можно легко сделать, установив ''base-files''Сначала нам нужно удалить ''/var/mail'' каталог, иначе он будет жаловаться, что он уже существует.
  
-```+<code bash>
 rm -rf /var/mail rm -rf /var/mail
 apt-get install base-files apt-get install base-files
-```+</code>
  
-### Building the man documentation system +==== Создание системы документации для человека ==== 
-Any Linux system typically has a database full of manual pagesaccessed by the `man` command. Most programs we've installed already have already added their documentation files in the proper locationAll we need to do now is actually install `man` to take advantage of themand any more that are added as time passes by.+В любой системе Linux обычно есть база данныхполная страниц руководства, доступ к которой осуществляется с помощью ''man'' командыБольшинство программ, которые мы уже установили, уже добавили свои файлы документации в нужное место. Все, что нам нужно сделать сейчас, это установить их ''man'', чтобы воспользоваться ими, и любыми другимикоторые будут добавлены со временем.
  
-`apt-get install man`+<code bash> 
 +apt-get install man 
 +</code>
  
-### Installing all remaining essential packages +==== Установка всех оставшихся необходимых пакетов ==== 
-We've installed most of the packagesall that is left to do is install the rest of the packages marked with the priority `essential` by the Debian maintainersSome of these are absolutely essential to system managementand some will barely be used at all+Мы установили большую часть пакетовосталось только установить остальные пакеты, отмеченные приоритетом ''essential'' со стороны сопровождающих Debian. Некоторые из них абсолютно необходимы для управления системойа некоторые вообще вряд ли будут использоваться.
  
-To comply with the Debian standardwe must install all of these:+Чтобы соответствовать стандарту Debian, нам необходимо установить все это:
  
-`apt-get install bash bsdutils coreutils dash diffutils e2fsprogs findutils grep gzip hostname libc-bin init mount perl-base sed sysvinit-utils tar util-linux`+<code bash> 
 +apt-get install bash bsdutils coreutils dash diffutils e2fsprogs findutils grep gzip hostname libc-bin init mount perl-base sed sysvinit-utils tar util-linux 
 +</code>
  
-Here follows is a short description of each package installed:+Ниже приведено краткое описание каждого установленного пакета:
  
-Description What it provides | +Описание |Что это дает 
-| ------------- | :-----: +| **bash**: |Оболочка GNU Bourne-again, которая является стандартной оболочкой Linux. | 
-| **bash**: | The gnu bourne-again shellwhich is your standard linux shell. | +| **bsdutils**:Предоставляет несколько двоичных файловнаиболее важный reniceиз которых необходим для изменения приоритетов процессов и loggerиспользуется для взаимодействия с системным модулем syslog.| 
-| **bsdutils**:Provides a few binariesmost notably `renice` which is needed for changing process priorities, and `logger` which is used for interacting with the syslog system module.| +| **coreutils**: |Самая важная группа двоичных файлов, необходимая для того, чтобы сделать любую оболочку полезной. | 
-| **coreutils**:The absolute most essential group of binaries needed to make any shell useful. | +| **dash**: |Оболочка Debian Almquist, которая представляет собой более быструю версию sh и предназначена в основном для использования в скриптах. | 
-| **dash**: | The Debian Almquist shellwhich is a faster version of sh intended mainly for use by scripts. | +| **diffutils**: |Предоставляет утилиты для сравнения содержимого файлов между собой.  | 
-| **diffutils**:Provides utilities for comparing the contents of files between each other.  | +| **e2fsprogs**: |Предоставляет утилиты для работы с семейством файловых систем ext.  | 
-| **e2fsprogs**:Provides  utilities for working with the ext family of filesystems.  | +| **findutils**: |Предоставляет утилиту find для поиска файлов.  | 
-| **findutils**:Provides the find utility for finding files.  | +| **grep**: |Предоставляет утилиту grep, используемую для поиска строк в файлах или выводимых в нее данных. | 
-| **grep**: | Provides the grep utilityused for finding strings within files or output you pipe into it. | +| **gzip**: |Предоставляет утилиту gzip, используемую для работы с файлами, использующими кодировку LZ77. | 
-| **gzip**: | Provides the gzip utilityused for working with files using LZ77 encoding. | +| **hostname**: |Предоставляет набор утилит для управления именем хоста системы. | 
-| **hostname**:Provides the a set of utilities for manipulating the system's host name. | +| **libc-bin**: |Предоставляет реализацию GNU стандартной библиотеки C. Необходим для создания и использования программ. | 
-| **libc-bin**: Provides the GNU implementation of the standard libraryEssential for creating and using programs. | +| **init**: |Предоставляет стандартный набор средств инициализации системы для Debian. | 
-| **init**: | Provides the standard system initialization suite for Debian. | +| **mount**: |Предоставляет стандартные системные утилиты для монтирования и размонтирования файловых системвключая файлы подкачки.  | 
-| **mount**: | Provides the standard system utilities for mounting and unmounting filesystemsincluding swapfiles.  | +| **perl-base**: |Предоставляет язык программирования Perl.  | 
-| **perl-base**:Provides the perl programming language.  | +| **sed**: |Предоставляет язык программирования sed, обычно используемый для редактирования текста.  | 
-| **sed**: | Provides the sed programming languagegenerally used for editing text.  | +| **sysvinit-utils**: |Предоставляет утилиты типа system-v. | 
-| **sysvinit-utils**:Provides system-v like utilities. | +| **tar**: |Предоставляет программу tar, используемую для хранения и извлечения файлов из архива на ленте.  | 
-| **tar**: | Provides the tar programused for storing and retrieving files from a taped archive.  | +| **util-linux**: |Предоставляет множество жизненно важных системных утилит. |
-| **util-linux**:Provides many vital system utilities. |+
  
-### Installing the kernel+==== Установка ядра ====
  
-You have two options hereeither you can install the latest kernel image for your system architecture provided by the Debian projector you can compile your own.+Здесь у вас есть два вариантавы можете либо установить последний образ ядра для архитектуры вашей системы, предоставленный проектом Debian, либо скомпилировать свой собственный.
  
-#### Installing Debian's kernel+=== Установка ядра Debian===
  
-If you want to install Debian's standard kernelyou will want to search for the available images provided for your architectureand then install the approriate image.+Если вы хотите установить стандартное ядро ​​Debian, вам нужно будет найти доступные образысоответствующие вашей архитектуре, а затем установить соответствующий образ.
  
-```+<code bash>
 apt-cache search linux-image apt-cache search linux-image
 apt-get install (selected image) apt-get install (selected image)
-```+</code>
  
-#### Compiling and installing your own custom kernel+=== Компиляция и установка собственного ядра===
  
-You can also compile your own custom kernel if you feel like it+При желании вы также можете скомпилировать свое собственное ядро.
  
-To do this, you will need a tarball of the Linux kernel sourcewhich you probably already have.+Для этого вам понадобится tar-архив исходного кода ядра Linux, который у вас, вероятно, уже есть.
  
-You will also need to install the gcc package (which incidentally installs most other software needed to compile), the libncurses5-dev package (which provides the libraries needed to use the command line configuration utility for the kernel source), the bc package (a language that supports precision numbers)and the make package (the make utility used for compiling the source into binary). +Вам также потребуется установить пакет gcc (который, кстати, устанавливает большую часть другого программного обеспечения, необходимого для компиляции), пакет libncurses5-dev (который предоставляет библиотеки, необходимые для использования утилиты конфигурации командной строки для исходного кода ядра), пакет bc (языкподдерживающий точные числа) и пакет make (утилита make, используемая для компиляции исходного кода в двоичный файл).
  
-`apt-get install gcc libncurses5-dev bc make`+<code bash> 
 +apt-get install gcc libncurses5-dev bc make 
 +</code>
  
-Now open up your extracted kernel sourceEnsure that there are no stale files left behind from the developers in the source tree:+Теперь откройте извлеченный исходный код ядраУбедитесь, что в дереве исходного кода нет устаревших файлов, оставленных разработчиками:
  
-`make mrproper`+<code bash> 
 +make mrproper 
 +</code>
  
-Install the header files for this particular kernelYou will need these in the future if you intend to compile software that will take advantage of this kernel'API in the future:+Установите файлы заголовков для этого конкретного ядраОни вам понадобятся в будущем, если вы собираетесь компилировать программное обеспечение, которое будет использовать API этого ядра в будущем:
  
-```+<code bash>
 make INSTALL_HDR_PATH=dest headers_install make INSTALL_HDR_PATH=dest headers_install
 cp -rv dest/include/* /usr/include cp -rv dest/include/* /usr/include
-```+</code>
  
-I recommend that you use the default configuration as the base for your kernel buildas it will at the very least ensure that your system will be able to boot using the image we create later.+Я рекомендую вам использовать конфигурацию по умолчанию в качестве основы для сборки ядратак как это, по крайней мере, гарантирует, что ваша система сможет загрузиться с использованием образа, который мы создадим позже.
  
-`make defconfig`+<code bash> 
 +make defconfig 
 +</code>
  
-Then, customize your kernel according to your heart's desire.+Затем настройте свое ядро ​​по своему вкусу.
  
-`make menuconfig`+<code bash> 
 +make menuconfig 
 +</code>
  
-This book cannot help you figure out what exact modules to add to the kernel - you need determine the exact hardware that exists on your system yourselfand do research as to what modules will make those pieces of hardware functional. Google is your friend+Эта книга не поможет вам разобратьсякакие именно модули следует добавить в ядро ​​— вам нужно самостоятельно определить точное оборудование, которое есть в вашей системе, и провести исследование относительно того, какие модули сделают это оборудование функциональным. Google — ваш друг.
  
-After you've customized your kernel, compile it.+После настройки ядра скомпилируйте его.
  
-`make`+<code bash> 
 +make 
 +</code>
  
-If you've created a modular kernelinstall the compiled modules into it:+Если вы создали модульное ядроустановите в него скомпилированные модули:
  
-`make modules_install`+<code bash> 
 +make modules_install 
 +</code>
  
-Copy the completed kernel into the /boot/ directoryand make sure that it's name starts with 'vmlinuz'It's a good idea to append an identifying string to the name of this fileThe version number of this kernel will doWe also copy the System.map fileand the config for this kernel (so we can easily examine how this kernel was built). We append our identifying string to this toobecause as time passes by we may want to install more kernels.+Скопируйте готовое ядро ​​в каталог /boot/ и убедитесьчто его имя начинается с 'vmlinuz'Хорошей идеей будет добавить идентификационную строку к имени этого файлаНомер версии этого ядра подойдетМы также копируем файл System.map и конфигурацию для этого ядра (чтобы мы могли легко проверитькак было собрано это ядро). Мы также добавляем к этому нашу идентификационную строкупотому что со временем мы можем захотеть установить больше ядер.
  
-```+<code bash>
 cp -v arch/x86/boot/bzImage /boot/vmlinuz-(identifier) cp -v arch/x86/boot/bzImage /boot/vmlinuz-(identifier)
 cp -v System.map /boot/System.map-4.4.2 cp -v System.map /boot/System.map-4.4.2
 cp -v .config /boot/config-(identifier) cp -v .config /boot/config-(identifier)
-```+</code>
  
-### Adding modular functionality to the system+==== Добавление модульной функциональности в систему====
  
-Regardless of if you installed the standard Debian GNU/Linux kernelor compiled your ownyou are going to need to provide your system with the binaries needed to loadremove and manipulate kernel modules+Независимо от того, установили ли вы стандартное ядро ​​Debian GNU/Linux или скомпилировали свое собственноевам потребуется снабдить свою систему двоичными файламинеобходимыми для загрузкиудаления и управления модулями ядра
  
-`apt-get install kmod `+<code bash> 
 +apt-get install kmod 
 +</code>
  
-The only exception to this case would be if you compiled your own monolithic kernel with no modulesand do not intend on adding any beyond the ones you've already compiled into the kernel (which would generally be the case if you're doing embedded development).+Единственным исключением из этого случая может быть случайкогда вы скомпилировали свое собственное монолитное ядро ​​без модулей и не собираетесь добавлять ничего, кроме тех, которые вы уже скомпилировали в ядро ​​(что обычно и происходит, если вы занимаетесь разработкой встраиваемых систем).
  
-### Making the system bootable+==== Делаем систему загрузочной==== 
 +=== Переконфигурирование диска с предустановленным загрузчиком GRUB2=== 
 +Если эта система Debian Linux находится на разделе уже загрузочного диска, все, что нужно сделать, чтобы сделать эту систему загрузочной, — это заменить файл конфигурации загрузчика диска, включив соответствующий раздел этой системы в список загрузочных разделов.
  
 +Если вы используете GRUB2, то использование ''grub2-mkconfig'' утилиты делает это очень простым. Просто укажите ей местоположение уже существующего файла grub.cfg:
  
-#### Reconfiguring a drive with a pre-installed GRUB2 bootloader +<code bash> 
-If this Debian Linux system is on a partition of an already bootable drive, all one needs to do to make this system bootable is to replace the configuration file of the drive's bootloader to include this system's corresponding partition in its list of bootable partitions.+grub2-mkconfig -o /boot/(path to grub.cfg) 
 +</code>
  
-If using GRUB2, then using the `grub2-mkconfig` utility makes it very simple to do soMerely point it to the location of the already existing grub.cfg file:+=== Установка GRUB2 на диск без предустановленного загрузчика=== 
 +В случаеесли раздел находится на диске, на котором еще нет собственного загрузчика, вы должны установить и настроить его самостоятельноЧтобы установить GRUB2, вы должны сначала выйти из chroot.
  
-`grub2-mkconfig -o /boot/(path to grub.cfg)` +<code bash>
- +
-#### Installing GRUB2 onto a drive with no pre-installed bootloader +
-In the event that the partition is on a drive that does not yet have its own bootloader, you must install it and configure it yourself. To install GRUB2, you must first exit your chroot. +
- +
-```+
 exit exit
 grub2-install /dev/(location of drive that holds this partition)` grub2-install /dev/(location of drive that holds this partition)`
-```+</code>
  
-Since this GRUB2 install does not have a configuration file yetlet's create one via template:+Поскольку в этой установке GRUB2 пока нет файла конфигурациидавайте создадим его с помощью шаблона:
  
-```+<code bash>
 cat > /boot/grub/grub.cfg << "EOF" cat > /boot/grub/grub.cfg << "EOF"
 # Begin /boot/grub/grub.cfg # Begin /boot/grub/grub.cfg
Строка 611: Строка 671:
 } }
 EOF EOF
-```+</code>
  
-Thenedit this file to replace the (kernel-location) string in the file with the actual location of said kernel inside the partition.+Затем отредактируйте этот файлзаменив строку (kernel-location) в файле фактическим местоположением указанного ядра внутри раздела.
  
-Afterwards, use the previously aforementioned `chroot` command provided in the 'Entering our chroot' section to return to the chroot.+После этого используйте ранее упомянутую ''chroot'' команду, приведенную в разделе «Вход в chroot», чтобы вернуться в chroot.
  
-### Creating /etc/fstab+==== Создание /etc/fstab====
  
-Before you boot into your system, it is absolutely -vital- for you to create and configure your /etc/fstab file+Перед загрузкой системы вам абсолютно необходимо создать и настроить файл /etc/fstab.
  
-If you do -not- have an /etc/fstab file or fail to specify what partition is to be mounted as the root filesystemyou will be stuck within a temporaryread-only filesystem created by the kernellocated only in RAMIt uses this to switch into the supposed root filesystemYou do not want to be stuck here.+Если у вас нет файла /etc/fstab или вы не указаликакой раздел должен быть смонтирован как корневая файловая системавы застрянете во временной файловой системе только для чтениясозданной ядром, расположенной только в оперативной памятиОно использует ее для переключения на предполагаемую корневую файловую системуВы не хотите застрять здесь.
  
-So we create a base /etc/fstab:+Итак, создаем базу /etc/fstab:
  
-```+<code bash>
 cat > /etc/fstab << "EOF" cat > /etc/fstab << "EOF"
 # Begin /etc/fstab # Begin /etc/fstab
Строка 637: Строка 697:
 # End /etc/fstab # End /etc/fstab
 EOF EOF
-``` +</code>
- +
-Modify the first entry with the partition location of this system, and the type of filesystem. The second entry should contain the location of your swap partition. If you don't intend on using one, remove the line.+
  
-### The End+Измените первую запись на расположение раздела этой системы и тип файловой системы. Вторая запись должна содержать расположение вашего раздела подкачки. Если вы не собираетесь его использовать, удалите строку.
  
-CongratulationsYou've finished building your Debian systemand now have the complete range of functionality expected of a Debian system on top of your regular LFS install.+==== Конец==== 
 +ПоздравляемВы завершили сборку своей системы Debian и теперь имеете полный набор функцийожидаемых от системы Debian, в дополнение к обычной установке LFS.
  
-### Commentssuggestionsbugs+==== Комментариипредложенияошибки====
  
-If you found this guide usefulor have suggestions, the author would love to hear from youEmail him at +Если вы нашли это руководство полезным или у вас есть предложенияавтор будет рад услышать от васНапишите ему по адресу
  
-scottwilliambeasley AT gmail .com . Replace the AT with @, and remove spaces.+[[mail>]]scottwilliambeasley@gmail.com
  
-Alsocontributions or additions to this manual are very much welcomedYou may do so by using this repository:+Такжевклады или дополнения к этому руководству очень приветствуютсяВы можете сделать это, используя этот репозиторий:
  
-  * https://github.com/scottwilliambeasley/debian-from-scratch/+  * [[https://github.com/scottwilliambeasley/debian-from-scratch/|Ссылка на оригинальную статью]]
   * https://git.wwoss.ru/lfs/debian-from-scratch   * https://git.wwoss.ru/lfs/debian-from-scratch
 +==== Дополнения и Файлы ====
 +{{ :software:linux_server:dfs:debian-from-scratch-master.zip |}}
software/linux_server/dfs/dfs.1743009256.txt.gz · Последнее изменение: 2025/03/26 20:14 — vladpolskiy