Различия между версиями 2 и 3
Версия 2 от 2008-07-23 03:08:09
Размер: 7632
Редактор: ArtemSerebriyskiy
Комментарий:
Версия 3 от 2008-07-23 22:06:54
Размер: 30002
Редактор: ArtemSerebriyskiy
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 2: Строка 2:

Как пакеты устроены в альте: для того, чтбы пакет устанвить, удалить или просм. инф. о нём, исп. так наз. устанвщик пакетов. Почему уст. вменяется сборка пакетов, лектор не знает. Для работы с одним пакетом исп. поргр-уст, которая называется RPM (RedHat Package Manager). Мы уже видели, чт умеет уст. делать. rpm -qlp (query, file list, package file) показывает список файлов в пакете. Точно также можно посм. список файлов уст. пакета, без ключа -p. rpm -qi --- просм. инф. о пакете.

rpm -q --changelog --- лг версий. Это некое требование отн. полиси сборки --- вы длжны указать изменения.

Попробуем уст.пакет --- rpm -i. Не хочет уст. уст. пакет, потому чт нужны ещё два пакета. Если взять другой пакет без зависимостей, то ег можн. уст. Посмотрим, какие зависимости у неуст. пакета: ... . Та же самая ист. происх. и с удалением. Мы можем удалить уст. пакет., птому чт н ни от чег независит. А вот если попр. удалить coreutils, то не удастся, поск. от него немного пакетов зависит.

Понятно, что rpm это утилита техническая, и так никто не делает.

Чтбы обесп. разумный для польз. утилит при бесп. того же функционала, есть другой класс утилит --- диспетчер пакетов. Диспетчер пакетов работает с хранилищами. Хранилищем мжет быть сизиф, ветка, дистр., диски... Можн добавтьи в кач-ве хранилище ещё ветку, потому что там всё. Эт всё разные хранилища, в которыми обязан рабтать диспетчер пакетов, чтобы делать три главных действия: рек. устанвка пакетов (rpm не может сделть этого, поск. не знает, где файлы). Тчно также втрое св-в диспетчера --- рекурсивное удаление. Точно также, как рек. установка происх. путём просм. индексв хран., удаление происх. путём просм. лок. индексов Треть е важне свойств дисп. --- обновление. В альтлинукс исп. традицинно менеджер apt, котрый взят из debian. Альт -- единственный в мире дистрибутив, который исп. rpm и apt.

Комплект утилит apt --- кмплект утилит работы с хранилищами. Есть две главных компоненты --- apt-get, кторый рабтает непср. с хранилищами. И утилита apt-cache, кторая рабтает с индексами, с инф. тм, чт находится в зранилище. Смысл разд. следующий: apt-get лезет в сеть и скач. индексы, а apt-cache не тр. рабты в сети, а рабтает с лок. копиями индексов.

Установим таки xvfb-runю Обратите внимание, как рабтает apt-get с командй install. Сначала вспомним, чт есть место, где указаны хранилища, которыми ндао опльз. Что делаетapt-get install^ просм. индексы, строит дерево завис., находит имя пакета, и говорит: что помимо того, что над уст., над уст ещё два пакета.

С рек. уст и уд. есть проблемы. Вт у нас набралось сколько-то пакетов. Мы пставили kde, теперь хотим удалить. Как эт сделать --- никак. Эт спец. рек. уст. и удаления. То есть если пакеты не зависят ни т чего, т их нельзя удалить. Другой вариант --- в дебиане есть флаг --- мы сами его ставили или по зависимстям. Тогда при уд. проверяется, есть ли по зависимстям, и удаляются. Н в этом случае если мы хотим оставить всё kde кроме игрушек, то так просто это не сделаешь. Это палка о двух концах.

(пропущен куск из-за ребута тачки)

apt-cache search исп не репозитории, а локальные индексы. Для прсм. инф. о пакете мжн. исп. apt-cache show.

Пара команд, связанные с обн.: apt-get update --- скачивает с всех хранилищ все индексы и заново формирует кэш. После этого считаем, чт кэши лежат в сотв. месте. Для обновления исп. команда dist-upgrade. В приницпе, при подкл. апдейтов, бэкпортов он захочет чег-нибудь обновить.

Унф. файлы к apt лежат в /etc/apt/. Самый нужный файл наз. sources.list, он пустй, и каталог sources.list.d. В этом каталоге много файлов, мнго инф. разных хран. в разных местах, все они закомм. Формат: тип пакета, подпись, url хранилища, название хранилища, одн или неск. названий веток.

Почему файлов так мнго? Есть неск. зеркал, и если вам по неким сообр. некоторые адреса ближе.
##1:32:15
=== Устройство пакетов в АльтЛинуксе ===
Для того, чтобы пакет установить, удалить или просмотреть информацию о нём(или чтобы собрать пакет из исходников)
используется так называемый установщик пакетов. Почему установщику традиционно вменяется необходимость уметь собирать
пакеты является загадкой. Для работы с одним пакетом (будь то установленный файл или неустановленный пакет) используется
программа -установщик, которая называется RPM (RedHat Package Manager). Мы уже видели, что умеет установщик делать
{{{
rpm -qlp
}}}
ключ '-q' --- query(покажи информацию), '-l' --- file list(покажи список файлов), '-p'--- package (все это не к
установленному пакету, а к пакету, лежащему в файле) ) показывает список файлов в пакете. Точно также можно посмотреть
список файлов находящихся внутри уже установленного пакета --- без ключа -p.
rpm -qi --- просмотреть информацию о пакете.
{{{
[george@class305 ~]$ rpm -qi tar
Name : tar Relocations: (not relocateable)
Version : 1.15.1 Vendor: ALT Linux Team
Release : alt8 Build Date: Сбт 14 Апр 2007 20:01:52
Install date: Втр 15 Июл 2008 21:23:38 Build Host: ldv.hasher.altlinux.org
Group : Архивирование/Резервное копирование Source RPM: tar-1.15.1-alt8.src.rpm
Size : 1213918 License: GPL
Packager : Dmitry V. Levin <ldv@altlinux.org>
URL : http://www.gnu.org/software/tar/
Summary : Утилита проекта GNU для архивации файлов
Description :
The GNU tar program saves many files together into one archive and
can restore individual files (or all of the files) from the archive.
tar can also be used to add supplemental files to an archive and to
update or list files in the archive. tar includes multivolume support,
automatic archive compression/decompression, the ability to perform
remote archives and the ability to perform incremental and full backups.
}}}

##1:36:20 - дописать к скриншоту
rpm -q --changelog --- лог версий. Это некое требование относительно полиси сборки --- вы должны указать изменения.
{{{
[george@class305 ~]$ rpm -q --changelog tar
* Сбт Апр 14 2007 Dmitry V. Levin <ldv@altlinux.org> 1.15.1-alt8

- Reduced macro abuse in specfile.

* Втр Ноя 28 2006 Dmitry V. Levin <ldv@altlinux.org> 1.15.1-alt7

- Disabled GNUTYPE_NAMES handling by default and
  added --allow-name-mangling option to re-enable it.
    (CVE-2006-6097, patch from Kees Cook).

    * Втр Май 16 2006 Dmitry V. Levin <ldv@altlinux.org> 1.15.1-alt6

    - Fixed build with gcc-4.1.0.

    * Сбт Фев 18 2006 Dmitry V. Levin <ldv@altlinux.org> 1.15.1-alt5

    - Backported upstream fix for potential heap buffer overrun
      in handling extended headers (CVE-2006-0300).

      * Срд Ноя 16 2005 Dmitry V. Levin <ldv@altlinux.org> 1.15.1-alt4

      - Backported savedir() fix from gnulib CVS.

      * Вск Ноя 13 2005 Dmitry V. Levin <ldv@altlinux.org> 1.15.1-alt3

      - Backported a few fixes from tar CVS.

      * Вск Май 15 2005 Dmitry V. Levin <ldv@altlinux.org> 1.15.1-alt2

      - Reviewed patches.
      - Replaced broken mdk-doubleslash.patch with
        alt-contains_dot_dot.patch
        - Applied fixes from Debian's tar package.
        - Renamed patched according to our conventions, rediffed
          and renumbered them.
          - Added missing tests/append.at and enabled test suit by default.
          - Do not even build rmt.

          * Птн Янв 14 2005 Ilya Evseev <evseev@altlinux.ru> 1.15.1-alt1

          - Updated to 1.15.1
          - specfile: added russian summary/description, changed URL's
          - patchset changes:
             + rediff P1,P3,P21
                + remove P2,P11,P12,P22,P23,P31,P32 since they are in upstream now
                   + replace P13 from 1.13.25-rh to 1.14-mdk, add P33 from Mdk
                   - Replaced pre-written manual page with help2man-generated one.
                   - /sbin/rmt is explicitly excluded from packaging
                     because dump package provides better rmt implementation.

                     * Пнд Сен 29 2003 Dmitry V. Levin <ldv@altlinux.org> 1.13.25-alt3

                     - Fixed symlink extraction bug (deb #149532).
                     - Fixed archive corruption in special cases (deb #126274).
                     - Updated package dependencies.

                     * Пнд Июн 16 2003 Stanislav Ievlev <inger@altlinux.ru> 1.13.25-alt2.1

                     - fix build in bte. no hard-compiled aclocal-1.6

                     * Сбт Сен 28 2002 Dmitry V. Levin <ldv@altlinux.org> 1.13.25-alt2

                     - Replaced our dot-dot patch with better one from Owl.
                     - Fixed build with autoconf >= 2.53 (rh).
                     - Fixed argv NULL termination (rh).
                     - Don't include hardlinks to sockets and doors in a tar file (rh).
                     - Updated without_librt patch.

                     * Пнд Окт 08 2001 Dmitry V. Levin <ldv@altlinux.ru> 1.13.25-alt1

                     - 1.13.25, updated patches to new version.

                     * Сбт Сен 29 2001 Dmitry V. Levin <ldv@altlinux.ru> 1.13.22-alt1

                     - 1.13.22, updated patches to new version.

                     * Втр Июл 17 2001 Dmitry V. Levin <ldv@altlinux.ru> 1.13.19-ipl2mdk

                     - Merged RH and Owl patches.

                     * Чтв Ноя 16 2000 Dmitry V. Levin <ldv@fandra.org> 1.13.18-ipl1mdk

                     - Merged RH and MDK patches.
                     - Fixed texinfo documentation.

                     * Втр Сен 26 2000 Dmitry V. Levin <ldv@fandra.org> 1.13.17-ipl6mdk

                     - Fix exit code (RH).

                     * Вск Апр 02 2000 Dmitry V. Levin <ldv@fandra.org>

                     - Merged RH patches.

                     * Вск Фев 20 2000 Dmitry V. Levin <ldv@fandra.org>

                     - Fandra adaptions

                     * Чтв Фев 17 2000 Chmouel Boudjnah <chmouel@mandrakesoft.com> 1.13.17-1mdk

                     - Make -y alias to -I and document it as obsoltes.
                     - 1.13.17.

                     * Втр Янв 11 2000 Frederic Lepied <flepied@mandrakesoft.com> 1.13.11-3mdk

                     - call configure with LINGUAS unset.

                     * Пнд Ноя 01 1999 Chmouel Boudjnah <chmouel@mandrakesoft.com>

                     - Reinserting -y support patchs.

                     * Срд Окт 27 1999 Chmouel Boudjnah <chmouel@mandrakesoft.com>

                     - Split: back to the tar stable version for cassini.

                     * Втр Окт 26 1999 Chmouel Boudjnah <chmouel@mandrakesoft.com>

                     - 1.13.13.

                     * Чтв Окт 07 1999 Chmouel Boudjnah <chmouel@mandrakesoft.com>

                     - 1.13.12.

                     * Птн Сен 03 1999 Chmouel Boudjnah <chmouel@mandrakesoft.com>

                     - 1.13.11

                     * Птн Авг 20 1999 Thierry Vignaud <tvignaud@mandrakesoft.com>

                     - 1.13.10

                     * Птн Авг 13 1999 Thierry Vignaud <tvignaud@mandrakesoft.com>

                     - 1.3.6

                     * Чтв Июл 22 1999 Thierry Vignaud <tvignaud@mandrakesoft.com>

                     - 1.13.5

                     * Чтв Июл 15 1999 Thierry Vignaud <tvignaud@mandrakesoft.com>

                     - 1.13.2
                     - french description

                     * Пнд Июл 12 1999 Bernhard Rosenkraenzer <bero@mandrakesoft.de>

                     - 1.13.1

                     * Птн Июл 09 1999 Chmouel Boudjnah <chmouel@mandrakesoft.com>

                     - 1.3.
                     - Patch to handle bzip2.

                     * Пнд Апр 12 1999 Chmouel Boudjnah <chmouel@mandrakesoft.com>

                     - Update to 1.2.64011.

                     * Сбт Апр 10 1999 Bernhard Rosenkraenzer <bero@linux-mandrake.com>

                     - add de locale
                     - some spec tweaks
                     - bzip2 man/info pages
                     - Mandrake adaptions
                     - update to 1.12.64010 to get the -y (--bzip2) option

                     * Пнд Мар 08 1999 Michael Maher <mike@redhat.com>

                     - added patch for bad name cache.
                     - FIXES BUG 320

                     * Срд Фев 24 1999 Preston Brown <pbrown@redhat.com>

                     - Injected new description and group.

                     * Птн Дек 18 1998 Preston Brown <pbrown@redhat.com>

                     - bumped spec number for initial rh 6.0 build

                     * Втр Авг 04 1998 Jeff Johnson <jbj@redhat.com>

                     - add /usr/bin/gtar symlink (change #421)

                     * Втр Июл 14 1998 Jeff Johnson <jbj@redhat.com>

                     - Fiddle bindir/libexecdir to get RH install correct.
                     - Don't include /sbin/rmt -- use the rmt from dump.
                     - Turn on nls.

                     * Пнд Апр 27 1998 Prospector System <bugs@redhat.com>

                     - translations modified for de, fr, tr

                     * Чтв Окт 16 1997 Donnie Barnes <djb@redhat.com>

                     - updated from 1.11.8 to 1.12
                     - various spec file cleanups
                     - /sbin/install-info support

                     * Чтв Июн 19 1997 Erik Troan <ewt@redhat.com>

                     - built against glibc

                     * Чтв Май 29 1997 Michael Fulbright <msf@redhat.com>

                     - Fixed to include rmt
}}}

Попробуем установить пакет --- rpm -i.
{{{
[root@class305 george]# rpm -i xvfb-run-1.2-alt2.noarch.rpm
error: failed dependencies:
        xorg-x11-xvfb is needed by xvfb-run-1.2-alt2
        fakeroot is needed by xvfb-run-1.2-alt2

}}}
Мы видим что установщик отказывается устанавливать пакет, потому что нужны два других предварительно установленных
пакета. Если взять другой пакет без неудовлетворенных зависимостей, то его можно установить.
{{{
[root@class305 george]# rpm -i vim-plugin-moin-syntax-1.8-alt2.noarch.rpm
[root@class305 george]# rpm -qpl vim-plugin-moin-syntax-1.8-alt2.noarch.rpm
/etc/alternatives/packages.d/moinmoin.vim
/usr/share/vim/ftplugin/moin.vim
/usr/share/vim/syntax/moinmoin.vim
}}}

Посмотрим, какие зависимости у неустановившегося пакета:
{{{
[root@class305 george]# rpm -qpl xvfb-run-1.2-alt2.noarch.rpm
/usr/bin/xvfb-run
[root@class305 george]# rpm -qRp xvfb-run-1.2-alt2.noarch.rpm
xorg-x11-xauth
xorg-x11-xvfb
fakeroot
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
coreutils
sh
}}} Мы видим зависимости этого пакета, при этом часть из них не удовлетворена. Та же самая история происходит и с
удалением. Мы можем свободно удалить только что поставленный пакет, потому что от него никто не зависит.
{{{
[root@class305 george]# rpm -e vim-plugin-moin-syntax
}}} А вот если попробовать удалить пакет от которого зависят другие пакеты- например coreutils, то это не удастся.
{{{
[root@class305 george]# rpm -e coreutils
error: removing these packages would break dependencies:
        coreutils is needed by dmsetup-1.02.22-alt1
        coreutils is needed by less-394-alt1
        coreutils is needed by module-init-tools-compat-3.3-alt0.5.pre6
        ...
}}}

Как видно установщик это утилита техническая, и обычный пользователь ей пользоваться не может и не должен.

Для того , чтобы с одной стороны обеспечить более разумный интерфейс к работе с пакетами для пользователя, а с другой
стороны сюда включить дополнительную функциональность, есть другой класс утилит --- диспетчер пакетов. Диспетчер пакетов
работает с хранилищами. На самом деле пользователь(администратор) работает не с каким-то конкретным пакетом- ему из
конкретных вещей надо знать только название- он работает с одним или несколькими хранилищами. Хранилищем может быть ветка,
дистрибутив, диски... Можно добавить в качестве хранилища например ещё одну ветку. Это всё разные хранилища, с которыми
обязан работать диспетчер пакетов, чтобы делать три главных действия:
 * рекурсивная установка пакетов - т.е. автоматически удовлетворять зависимости доставляя нужные пакеты. RPM не может
 сделать этого, поскольку не знает, откуда взять дополнительные пакеты).
 * Втрое свойство диспетчера --- рекурсивное удаление. Точно также, как рекурсивная установка происходит путём просмотра
 индексов в хранилищах, удаление происходит путём просмотра локальных индексов.
 * Третье важное свойств диспетчера --- обновление - установка более новой версии. Этот случай выделяется из-за специфичных
 особенностей при обработке индексов.
В АльтЛинуксе используется традиционно диспетчер apt, который взят из Gnu/Debian. Альт -- единственный в мире дистрибутив,
который используется rpm и apt.

Комплект утилит apt --- комплект утилит работы с хранилищами. В нем есть две главных компоненты:
 * утилита apt-get, которая работает непосредственно с хранилищами.
 * утилита apt-cache, которая работает с индексами, с информацией о том, что именно находится в хранилище.
Смысл разделения на apt-get и apt-cache следующий: apt-get обычно лезет в сеть и скачивает информацию о пакетах и
формирует индексы, а apt-cache не требует для работы в сети, а работает с локальными копиями индексов, в частности ищет
информацию и прочее.
##1:54:20
Установим таки xvfb-run
{{{[root@class305 george]# apt-get install xvfb-run
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
  fakeroot xorg-x11-xvfb
  The following NEW packages will be installed:
    fakeroot xorg-x11-xvfb xvfb-run
    0 upgraded, 3 newly installed, 0 removed and 0 not upgraded.
    Need to get 1708kB of archives.
    After unpacking 4341kB of additional disk space will be used.
    Do you want to continue? [Y/n]
    Get:1 ftp://ftp.altlinux.org i586/classic fakeroot 1.9.4-alt2 [48.5kB]
    Get:2 ftp://ftp.altlinux.org i586/classic xorg-x11-xvfb 2:1.3.0.0-alt21.M40.10 [1656kB]
    Get:3 ftp://ftp.altlinux.org noarch/classic xvfb-run 1.2-alt2 [4107B]
    Fetched 1708kB in 0s (3963kB/s)
    Committing changes...
    Preparing... ####################################################### [100%]
    1: fakeroot ####################################################### [ 33%]
    2: xorg-x11-xvfb ####################################################### [ 66%]
    3: xvfb-run ####################################################### [100%]
    Done.
}}}
Обратите внимание, как работает команда apt-get с параметром install. Сначала вспомним, что есть место, где указаны
хранилища, которыми надо пользоваться для установки\удаления пакета. apt-get install делает следующее:
 1. просмотривает все индексы
 2. строит дерево зависимостей
 3. находит соответствующего кандидата тому пакету, который мы хотим
 4. предупреждает, что помимо этого надо установить ещё два пакета.
 5. скачивает их из хранилища
 6. устанавливает все в правильном порядке

С рекурсивной установкой и удалением есть свои проблемы. Предположим мы поставили пакет, который рекурсивно потянул за
собой еще пакеты и т.д. Вот у нас в итоге набралось сколько-то пакетов. Мы все это поставили и теперь хотим удалить. Как
это сделать? Ответ - в общем случае никак. Дело в том, что при рекурсивном удалении удаляются пакеты которые зависят от
выбранного. Т.е. те которые не могут существовать без него. Но те пакеты, от которых зависел выбранный могут и не удалятся,
поскольку их существование ничему не противоречит. Т.е. мы получаем что в системе остаются пакеты, которые на самом деле не
нужны, просто невозможно определить действительно ли они не нужны. Есть вариант решения этой проблемы --- он используется
в Debian - есть флаг, который ставится каждому пакету и соответствует тому, поставлен ли этот пакет по требованию
пользователя или для автоматического удовлетворения зависимостей. Тогда при удалении очередного пакета проверяется,
остались ли в системе пакеты, которые помечены флагом "установлен по зависимостям" и если от них больше ничего не зависит,
то они удаляются. Но в этом случае возникают проблемы. Пусть у нас есть виртуальный пакет- т.е. пакет который не содержит
в себе ничего кроме зависимостей- таким например является пакет kde. предположим теперь что мы хотим удалить одну из
автономных составляющих системы, которая ставилась с помощью виртуального пакета -например удалить все игры из kde.
Однако удаление пакета, отвечающего за игры приведет к удалению пакета верхнего уровня (того самого kde) и окажется что все
остальные компоненты системы помечены как "установленный по зависимостям" и система предложит удалить их все. Так что
решение с такими флагами это палка о двух концах.

Рассмотрим как происходит рекурсивное удаление
{{{
root@class305 george]# apt-get remove fakeroot
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be REMOVED:
  fakeroot xvfb-run
0 upgraded, 0 newly installed, 2 removed and 0 not upgraded.
Need to get 0B of archives.
After unpacking 77.9kB disk space will be freed.
Do you want to continue? [Y/n] n
Abort.
}}}

Теперь попробуем удалить пакет coreutils - это пакет который жизненно необходим системе.
{{{
[root@class305 george]# apt-get remove coreutils
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be REMOVED:
 GConf ImageMagick SysVinit Thunar a2ps abiword acpid alsa-utils alt-docs-genextras
 alt-docs-main alterator alterator-aptgroups alterator-auth alterator-backend-x11
 alterator-browser-qt alterator-control alterator-datetime alterator-lookout
 ...
WARNING: The following essential packages will be removed
This should NOT be done unless you know exactly what you are doing!
 apt rpm (due to apt) gnupg (due to apt) basesystem coreutils (due to basesystem) etcskel
 (due to basesystem) service (due to basesystem) shadow-utils (due to basesystem) startup
 (due to basesystem) SysVinit (due to basesystem) util-linux (due to basesystem) vitmp
 (due to basesystem)
0 upgraded, 0 newly installed, 562 removed and 0 not upgraded.
Need to get 0B of archives.
After unpacking 1494MB disk space will be freed.
You are about to do something potentially harmful
To continue type in the phrase 'Yes, do as I say!'
}}}
Мы видим что диспетчер предупреждает что некоторые пакеты из тех, которые будут удалены помечены как 'essential' -
жизненно важные для системы и продолжать удаление надо только в том случае если вы уверены что вы делаете.

Рассмотрим еще возможности диспетчера:
 * для поиска пакетов используется apt-cache с ключом search.
 {{{
 [root@class305 george]# apt-cache search search
 basket - multi-purpose note-taking application
 beagle - The Beagle Search Infrastructure
 beagle-crawl-system - Indexing subsystem for system files
 ...
 }}}
 apt-cache search ищет ключевое слово не только в коротком описании пакета, но и в длинном описании. Как уже говорилось
 используются не хранилища, а локальные индексы.
 * Для просмотра информации о пакете можно использовать apt-cache с ключом show
 {{{
 [root@class305 george]# apt-cache show xword
 Package: xword
 Section: Text tools
 Installed Size: 63480
 Maintainer: Vitaly Lipatov <lav@altlinux.ru>
 Version: 1.0-alt1
 Pre-Depends: rpmlib(PayloadFilesHavePrefix) (<= 4.0-1), rpmlib(CompressedFileNames) (<= 3.0.4-1)
 Depends: python-module-pygtk, coreutils
 Provides: gedam, xword (= 1.0-alt1)
 Obsoletes: gedam
 Architecture: noarch
 Size: 21742
 MD5Sum: 5d9baebcbbb103782b3918d7c555742c
 Filename: xword-1.0-alt1.noarch.rpm
 Description: Xword is a GNOME crossword puzzle program
 Gedam is a GNOME program I wrote for doing crossword puzzles. It is
 similar to the AcrossLite program for Windows, and it can read and write
 the file format of that program. Consequently, it works well for doing
 puzzles from The New York Times. Although there is an existing version
 of AcrossLite for Linux, it has several glaring problems: poor support,
 the use of Motif, and the lack of a clock.

 For crossword files search in Google by "AcrossLite", f.i.
 http://puzzles.about.com/library/weekly/aa040697.htm
 }}}
 * для обновления индексов используется команда apt-get с ключом update. Она скачивает со всех хранилищ все индексы и
 заново формирует кеш из индексов.
 {{{
 [root@class305 george]# apt-get update
 Get:1 ftp://updates.altlinux.org i586 release [720B]
 Get:2 ftp://ftp.altlinux.org i586 release [1005B]
 Get:3 ftp://ftp.altlinux.org i586 release [730B]
 Get:4 ftp://ftp.altlinux.org noarch release [728B]
 Get:5 ftp://ftp.altlinux.org i586 release [702B]
 Fetched 3885B in 0s (7192B/s)
 Hit ftp://updates.altlinux.org i586/updates pkglist
 Hit ftp://ftp.altlinux.org i586/classic pkglist
 Hit ftp://updates.altlinux.org i586/updates release
 Hit ftp://ftp.altlinux.org i586/classic release
 Hit ftp://ftp.altlinux.org i586/classic pkglist
 Hit ftp://ftp.altlinux.org i586/classic release
 Hit ftp://ftp.altlinux.org noarch/classic pkglist
 Hit ftp://ftp.altlinux.org noarch/classic release
 Hit ftp://ftp.altlinux.org i586/backports pkglist
 Hit ftp://ftp.altlinux.org i586/backports release
 Reading Package Lists... Done
 Building Dependency Tree... Done
 }}}

 *Для обновления системы целиком используется apt-get dist-upgrade.


Конфигурационные файлы к системе apt лежат в /etc/apt/. Там лежит файл apt.conf - это настройки самой системы apt. Самый
нужный файл называется sources.list - он может быть пустым и каталог sources.list.d. В этом каталоге много файлов, в
каждом из них может хранится информация о различных хранилищах в разных местах. Большинство этой информации изначально
закоментированно. Формат файла таков:
##Вставит вид строки
'#' в начале строки означает комментарий.
тип пакета, подпись(если есть), url хранилища, название хранилища, одно или несколько названий веток.
Почему файлов так много? Есть несколько зеркал, и возможно по сетевым соображениям некие зеркала вам ближе. Для того чтобы
ими воспользоваться надо расскоментировать соответствующие строчки в соответствующих файлах.
##2:27:00
Строка 35: Строка 482:
|| 0 || 1 || 1 || 1 || || 1 || ArtemSerebriyskiy, DmitryChistikov, MaximByshevskiKonopko || || || || 10 || 1 || 1 || 1 || || 1 || ArtemSerebriyskiy, DmitryChistikov, MaximByshevskiKonopko || || ||

Утилиты для работы с пакетами

Устройство пакетов в АльтЛинуксе

Для того, чтобы пакет установить, удалить или просмотреть информацию о нём(или чтобы собрать пакет из исходников) используется так называемый установщик пакетов. Почему установщику традиционно вменяется необходимость уметь собирать пакеты является загадкой. Для работы с одним пакетом (будь то установленный файл или неустановленный пакет) используется программа -установщик, которая называется RPM (RedHat Package Manager). Мы уже видели, что умеет установщик делать

rpm -qlp

ключ '-q' --- query(покажи информацию), '-l' --- file list(покажи список файлов), '-p'--- package (все это не к установленному пакету, а к пакету, лежащему в файле) ) показывает список файлов в пакете. Точно также можно посмотреть список файлов находящихся внутри уже установленного пакета --- без ключа -p. rpm -qi --- просмотреть информацию о пакете.

[george@class305 ~]$ rpm -qi tar
Name        : tar                          Relocations: (not relocateable)
Version     : 1.15.1                            Vendor: ALT Linux Team
Release     : alt8                          Build Date: Сбт 14 Апр 2007 20:01:52
Install date: Втр 15 Июл 2008 21:23:38      Build Host: ldv.hasher.altlinux.org
Group       : Архивирование/Резервное копирование   Source RPM: tar-1.15.1-alt8.src.rpm
Size        : 1213918                          License: GPL
Packager    : Dmitry V. Levin <ldv@altlinux.org>
URL         : http://www.gnu.org/software/tar/
Summary     : Утилита проекта GNU для архивации файлов
Description :
The GNU tar program saves many files together into one archive and
can restore individual files (or all of the files) from the archive.
tar can also be used to add supplemental files to an archive and to
update or list files in the archive.  tar includes multivolume support,
automatic archive compression/decompression, the ability to perform
remote archives and the ability to perform incremental and full backups.

rpm -q --changelog --- лог версий. Это некое требование относительно полиси сборки --- вы должны указать изменения.

[george@class305 ~]$ rpm -q --changelog tar
* Сбт Апр 14 2007 Dmitry V. Levin <ldv@altlinux.org> 1.15.1-alt8

- Reduced macro abuse in specfile.

* Втр Ноя 28 2006 Dmitry V. Levin <ldv@altlinux.org> 1.15.1-alt7

- Disabled GNUTYPE_NAMES handling by default and
  added --allow-name-mangling option to re-enable it.
    (CVE-2006-6097, patch from Kees Cook).

    * Втр Май 16 2006 Dmitry V. Levin <ldv@altlinux.org> 1.15.1-alt6

    - Fixed build with gcc-4.1.0.

    * Сбт Фев 18 2006 Dmitry V. Levin <ldv@altlinux.org> 1.15.1-alt5

    - Backported upstream fix for potential heap buffer overrun
      in handling extended headers (CVE-2006-0300).

      * Срд Ноя 16 2005 Dmitry V. Levin <ldv@altlinux.org> 1.15.1-alt4

      - Backported savedir() fix from gnulib CVS.

      * Вск Ноя 13 2005 Dmitry V. Levin <ldv@altlinux.org> 1.15.1-alt3

      - Backported a few fixes from tar CVS.

      * Вск Май 15 2005 Dmitry V. Levin <ldv@altlinux.org> 1.15.1-alt2

      - Reviewed patches.
      - Replaced broken mdk-doubleslash.patch with
        alt-contains_dot_dot.patch
        - Applied fixes from Debian's tar package.
        - Renamed patched according to our conventions, rediffed
          and renumbered them.
          - Added missing tests/append.at and enabled test suit by default.
          - Do not even build rmt.

          * Птн Янв 14 2005 Ilya Evseev <evseev@altlinux.ru> 1.15.1-alt1

          - Updated to 1.15.1
          - specfile: added russian summary/description, changed URL's
          - patchset changes:
             + rediff P1,P3,P21
                + remove P2,P11,P12,P22,P23,P31,P32 since they are in upstream now
                   + replace P13 from 1.13.25-rh to 1.14-mdk, add P33 from Mdk
                   - Replaced pre-written manual page with help2man-generated one.
                   - /sbin/rmt is explicitly excluded from packaging
                     because dump package provides better rmt implementation.

                     * Пнд Сен 29 2003 Dmitry V. Levin <ldv@altlinux.org> 1.13.25-alt3

                     - Fixed symlink extraction bug (deb #149532).
                     - Fixed archive corruption in special cases (deb #126274).
                     - Updated package dependencies.

                     * Пнд Июн 16 2003 Stanislav Ievlev <inger@altlinux.ru> 1.13.25-alt2.1

                     - fix build in bte. no hard-compiled aclocal-1.6

                     * Сбт Сен 28 2002 Dmitry V. Levin <ldv@altlinux.org> 1.13.25-alt2

                     - Replaced our dot-dot patch with better one from Owl.
                     - Fixed build with autoconf >= 2.53 (rh).
                     - Fixed argv NULL termination (rh).
                     - Don't include hardlinks to sockets and doors in a tar file (rh).
                     - Updated without_librt patch.

                     * Пнд Окт 08 2001 Dmitry V. Levin <ldv@altlinux.ru> 1.13.25-alt1

                     - 1.13.25, updated patches to new version.

                     * Сбт Сен 29 2001 Dmitry V. Levin <ldv@altlinux.ru> 1.13.22-alt1

                     - 1.13.22, updated patches to new version.

                     * Втр Июл 17 2001 Dmitry V. Levin <ldv@altlinux.ru> 1.13.19-ipl2mdk

                     - Merged RH and Owl patches.

                     * Чтв Ноя 16 2000 Dmitry V. Levin <ldv@fandra.org> 1.13.18-ipl1mdk

                     - Merged RH and MDK patches.
                     - Fixed texinfo documentation.

                     * Втр Сен 26 2000 Dmitry V. Levin <ldv@fandra.org> 1.13.17-ipl6mdk

                     - Fix exit code (RH).

                     * Вск Апр 02 2000 Dmitry V. Levin <ldv@fandra.org>

                     - Merged RH patches.

                     * Вск Фев 20 2000 Dmitry V. Levin <ldv@fandra.org>

                     - Fandra adaptions

                     * Чтв Фев 17 2000 Chmouel Boudjnah <chmouel@mandrakesoft.com> 1.13.17-1mdk

                     - Make -y alias to -I and document it as obsoltes.
                     - 1.13.17.

                     * Втр Янв 11 2000 Frederic Lepied <flepied@mandrakesoft.com> 1.13.11-3mdk

                     - call configure with LINGUAS unset.

                     * Пнд Ноя 01 1999 Chmouel Boudjnah <chmouel@mandrakesoft.com>

                     - Reinserting -y support patchs.

                     * Срд Окт 27 1999 Chmouel Boudjnah <chmouel@mandrakesoft.com>

                     - Split: back to the tar stable version for cassini.

                     * Втр Окт 26 1999 Chmouel Boudjnah <chmouel@mandrakesoft.com>

                     - 1.13.13.

                     * Чтв Окт 07 1999 Chmouel Boudjnah <chmouel@mandrakesoft.com>

                     - 1.13.12.

                     * Птн Сен 03 1999 Chmouel Boudjnah <chmouel@mandrakesoft.com>

                     - 1.13.11

                     * Птн Авг 20 1999 Thierry Vignaud <tvignaud@mandrakesoft.com>

                     - 1.13.10

                     * Птн Авг 13 1999 Thierry Vignaud <tvignaud@mandrakesoft.com>

                     - 1.3.6

                     * Чтв Июл 22 1999 Thierry Vignaud <tvignaud@mandrakesoft.com>

                     - 1.13.5

                     * Чтв Июл 15 1999 Thierry Vignaud <tvignaud@mandrakesoft.com>

                     - 1.13.2
                     - french description

                     * Пнд Июл 12 1999 Bernhard Rosenkraenzer <bero@mandrakesoft.de>

                     - 1.13.1

                     * Птн Июл 09 1999 Chmouel Boudjnah <chmouel@mandrakesoft.com>

                     - 1.3.
                     - Patch to handle bzip2.

                     * Пнд Апр 12 1999 Chmouel Boudjnah <chmouel@mandrakesoft.com>

                     - Update to 1.2.64011.

                     * Сбт Апр 10 1999 Bernhard Rosenkraenzer <bero@linux-mandrake.com>

                     - add de locale
                     - some spec tweaks
                     - bzip2 man/info pages
                     - Mandrake adaptions
                     - update to 1.12.64010 to get the -y (--bzip2) option

                     * Пнд Мар 08 1999 Michael Maher <mike@redhat.com>

                     - added patch for bad name cache.
                     - FIXES BUG 320

                     * Срд Фев 24 1999 Preston Brown <pbrown@redhat.com>

                     - Injected new description and group.

                     * Птн Дек 18 1998 Preston Brown <pbrown@redhat.com>

                     - bumped spec number for initial rh 6.0 build

                     * Втр Авг 04 1998 Jeff Johnson <jbj@redhat.com>

                     - add /usr/bin/gtar symlink (change #421)

                     * Втр Июл 14 1998 Jeff Johnson <jbj@redhat.com>

                     - Fiddle bindir/libexecdir to get RH install correct.
                     - Don't include /sbin/rmt -- use the rmt from dump.
                     - Turn on nls.

                     * Пнд Апр 27 1998 Prospector System <bugs@redhat.com>

                     - translations modified for de, fr, tr

                     * Чтв Окт 16 1997 Donnie Barnes <djb@redhat.com>

                     - updated from 1.11.8 to 1.12
                     - various spec file cleanups
                     - /sbin/install-info support

                     * Чтв Июн 19 1997 Erik Troan <ewt@redhat.com>

                     - built against glibc

                     * Чтв Май 29 1997 Michael Fulbright <msf@redhat.com>

                     - Fixed to include rmt

Попробуем установить пакет --- rpm -i.

[root@class305 george]# rpm -i xvfb-run-1.2-alt2.noarch.rpm
error: failed dependencies:
        xorg-x11-xvfb is needed by xvfb-run-1.2-alt2
        fakeroot is needed by xvfb-run-1.2-alt2

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

[root@class305 george]# rpm -i vim-plugin-moin-syntax-1.8-alt2.noarch.rpm
[root@class305 george]# rpm -qpl vim-plugin-moin-syntax-1.8-alt2.noarch.rpm
/etc/alternatives/packages.d/moinmoin.vim
/usr/share/vim/ftplugin/moin.vim
/usr/share/vim/syntax/moinmoin.vim

Посмотрим, какие зависимости у неустановившегося пакета:

[root@class305 george]# rpm -qpl xvfb-run-1.2-alt2.noarch.rpm
/usr/bin/xvfb-run
[root@class305 george]# rpm -qRp xvfb-run-1.2-alt2.noarch.rpm
xorg-x11-xauth
xorg-x11-xvfb
fakeroot
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
coreutils
sh

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

[root@class305 george]# rpm -e vim-plugin-moin-syntax

А вот если попробовать удалить пакет от которого зависят другие пакеты- например coreutils, то это не удастся.

[root@class305 george]# rpm -e coreutils
error: removing these packages would break dependencies:
        coreutils   is needed by dmsetup-1.02.22-alt1
        coreutils   is needed by less-394-alt1
        coreutils   is needed by module-init-tools-compat-3.3-alt0.5.pre6
        ...

Как видно установщик это утилита техническая, и обычный пользователь ей пользоваться не может и не должен.

Для того , чтобы с одной стороны обеспечить более разумный интерфейс к работе с пакетами для пользователя, а с другой стороны сюда включить дополнительную функциональность, есть другой класс утилит --- диспетчер пакетов. Диспетчер пакетов работает с хранилищами. На самом деле пользователь(администратор) работает не с каким-то конкретным пакетом- ему из конкретных вещей надо знать только название- он работает с одним или несколькими хранилищами. Хранилищем может быть ветка, дистрибутив, диски... Можно добавить в качестве хранилища например ещё одну ветку. Это всё разные хранилища, с которыми обязан работать диспетчер пакетов, чтобы делать три главных действия:

  • рекурсивная установка пакетов - т.е. автоматически удовлетворять зависимости доставляя нужные пакеты. RPM не может сделать этого, поскольку не знает, откуда взять дополнительные пакеты).
  • Втрое свойство диспетчера --- рекурсивное удаление. Точно также, как рекурсивная установка происходит путём просмотра индексов в хранилищах, удаление происходит путём просмотра локальных индексов.
  • Третье важное свойств диспетчера --- обновление - установка более новой версии. Этот случай выделяется из-за специфичных особенностей при обработке индексов.

В АльтЛинуксе используется традиционно диспетчер apt, который взят из Gnu/Debian. Альт -- единственный в мире дистрибутив, который используется rpm и apt.

Комплект утилит apt --- комплект утилит работы с хранилищами. В нем есть две главных компоненты:

  • утилита apt-get, которая работает непосредственно с хранилищами.
  • утилита apt-cache, которая работает с индексами, с информацией о том, что именно находится в хранилище.

Смысл разделения на apt-get и apt-cache следующий: apt-get обычно лезет в сеть и скачивает информацию о пакетах и формирует индексы, а apt-cache не требует для работы в сети, а работает с локальными копиями индексов, в частности ищет информацию и прочее.

Установим таки xvfb-run {{{[root@class305 george]# apt-get install xvfb-run Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed:

  • fakeroot xorg-x11-xvfb The following NEW packages will be installed:
    • fakeroot xorg-x11-xvfb xvfb-run 0 upgraded, 3 newly installed, 0 removed and 0 not upgraded. Need to get 1708kB of archives. After unpacking 4341kB of additional disk space will be used. Do you want to continue? [Y/n]

      Get:1 ftp://ftp.altlinux.org i586/classic fakeroot 1.9.4-alt2 [48.5kB] Get:2 ftp://ftp.altlinux.org i586/classic xorg-x11-xvfb 2:1.3.0.0-alt21.M40.10 [1656kB] Get:3 ftp://ftp.altlinux.org noarch/classic xvfb-run 1.2-alt2 [4107B] Fetched 1708kB in 0s (3963kB/s) Committing changes... Preparing... ####################################################### [100%] 1: fakeroot ####################################################### [ 33%] 2: xorg-x11-xvfb ####################################################### [ 66%] 3: xvfb-run ####################################################### [100%] Done.

}}} Обратите внимание, как работает команда apt-get с параметром install. Сначала вспомним, что есть место, где указаны хранилища, которыми надо пользоваться для установки\удаления пакета. apt-get install делает следующее:

  1. просмотривает все индексы
  2. строит дерево зависимостей
  3. находит соответствующего кандидата тому пакету, который мы хотим
  4. предупреждает, что помимо этого надо установить ещё два пакета.
  5. скачивает их из хранилища
  6. устанавливает все в правильном порядке

С рекурсивной установкой и удалением есть свои проблемы. Предположим мы поставили пакет, который рекурсивно потянул за собой еще пакеты и т.д. Вот у нас в итоге набралось сколько-то пакетов. Мы все это поставили и теперь хотим удалить. Как это сделать? Ответ - в общем случае никак. Дело в том, что при рекурсивном удалении удаляются пакеты которые зависят от выбранного. Т.е. те которые не могут существовать без него. Но те пакеты, от которых зависел выбранный могут и не удалятся, поскольку их существование ничему не противоречит. Т.е. мы получаем что в системе остаются пакеты, которые на самом деле не нужны, просто невозможно определить действительно ли они не нужны. Есть вариант решения этой проблемы --- он используется в Debian - есть флаг, который ставится каждому пакету и соответствует тому, поставлен ли этот пакет по требованию пользователя или для автоматического удовлетворения зависимостей. Тогда при удалении очередного пакета проверяется, остались ли в системе пакеты, которые помечены флагом "установлен по зависимостям" и если от них больше ничего не зависит, то они удаляются. Но в этом случае возникают проблемы. Пусть у нас есть виртуальный пакет- т.е. пакет который не содержит в себе ничего кроме зависимостей- таким например является пакет kde. предположим теперь что мы хотим удалить одну из автономных составляющих системы, которая ставилась с помощью виртуального пакета -например удалить все игры из kde. Однако удаление пакета, отвечающего за игры приведет к удалению пакета верхнего уровня (того самого kde) и окажется что все остальные компоненты системы помечены как "установленный по зависимостям" и система предложит удалить их все. Так что решение с такими флагами это палка о двух концах.

Рассмотрим как происходит рекурсивное удаление

root@class305 george]# apt-get remove fakeroot
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be REMOVED:
  fakeroot xvfb-run
0 upgraded, 0 newly installed, 2 removed and 0 not upgraded.
Need to get 0B of archives.
After unpacking 77.9kB disk space will be freed.
Do you want to continue? [Y/n] n
Abort.

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

[root@class305 george]# apt-get remove coreutils
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be REMOVED:
 GConf ImageMagick SysVinit Thunar a2ps abiword acpid alsa-utils alt-docs-genextras
 alt-docs-main alterator alterator-aptgroups alterator-auth alterator-backend-x11
 alterator-browser-qt alterator-control alterator-datetime alterator-lookout
 ...
WARNING: The following essential packages will be removed
This should NOT be done unless you know exactly what you are doing!
 apt rpm (due to apt) gnupg (due to apt) basesystem coreutils (due to basesystem) etcskel
 (due to basesystem) service (due to basesystem) shadow-utils (due to basesystem) startup
 (due to basesystem) SysVinit (due to basesystem) util-linux (due to basesystem) vitmp
 (due to basesystem)
0 upgraded, 0 newly installed, 562 removed and 0 not upgraded.
Need to get 0B of archives.
After unpacking 1494MB disk space will be freed.
You are about to do something potentially harmful
To continue type in the phrase 'Yes, do as I say!'

Мы видим что диспетчер предупреждает что некоторые пакеты из тех, которые будут удалены помечены как 'essential' - жизненно важные для системы и продолжать удаление надо только в том случае если вы уверены что вы делаете.

Рассмотрим еще возможности диспетчера:

  • для поиска пакетов используется apt-cache с ключом search.
     [root@class305 george]# apt-cache search search
     basket - multi-purpose note-taking application
     beagle - The Beagle Search Infrastructure
     beagle-crawl-system - Indexing subsystem for system files
     ...
    apt-cache search ищет ключевое слово не только в коротком описании пакета, но и в длинном описании. Как уже говорилось используются не хранилища, а локальные индексы.
  • Для просмотра информации о пакете можно использовать apt-cache с ключом show
     [root@class305 george]# apt-cache show xword
     Package: xword
     Section: Text tools
     Installed Size: 63480
     Maintainer: Vitaly Lipatov <lav@altlinux.ru>
     Version: 1.0-alt1
     Pre-Depends: rpmlib(PayloadFilesHavePrefix) (<= 4.0-1), rpmlib(CompressedFileNames) (<= 3.0.4-1)
     Depends: python-module-pygtk, coreutils
     Provides: gedam, xword (= 1.0-alt1)
     Obsoletes: gedam
     Architecture: noarch
     Size: 21742
     MD5Sum: 5d9baebcbbb103782b3918d7c555742c
     Filename: xword-1.0-alt1.noarch.rpm
     Description: Xword is a GNOME crossword puzzle program
     Gedam is a GNOME program I wrote for doing crossword puzzles. It is
     similar to the AcrossLite program for Windows, and it can read and write
     the file format of that program. Consequently, it works well for doing
     puzzles from The New York Times. Although there is an existing version
     of AcrossLite for Linux, it has several glaring problems: poor support,
     the use of Motif, and the lack of a clock.
    
     For crossword files search in Google by "AcrossLite", f.i.
     http://puzzles.about.com/library/weekly/aa040697.htm
  • для обновления индексов используется команда apt-get с ключом update. Она скачивает со всех хранилищ все индексы и заново формирует кеш из индексов.
     [root@class305 george]# apt-get update
     Get:1 ftp://updates.altlinux.org i586 release [720B]
     Get:2 ftp://ftp.altlinux.org i586 release [1005B]
     Get:3 ftp://ftp.altlinux.org i586 release [730B]
     Get:4 ftp://ftp.altlinux.org noarch release [728B]
     Get:5 ftp://ftp.altlinux.org i586 release [702B]
     Fetched 3885B in 0s (7192B/s)
     Hit ftp://updates.altlinux.org i586/updates pkglist
     Hit ftp://ftp.altlinux.org i586/classic pkglist
     Hit ftp://updates.altlinux.org i586/updates release
     Hit ftp://ftp.altlinux.org i586/classic release
     Hit ftp://ftp.altlinux.org i586/classic pkglist
     Hit ftp://ftp.altlinux.org i586/classic release
     Hit ftp://ftp.altlinux.org noarch/classic pkglist
     Hit ftp://ftp.altlinux.org noarch/classic release
     Hit ftp://ftp.altlinux.org i586/backports pkglist
     Hit ftp://ftp.altlinux.org i586/backports release
     Reading Package Lists... Done
     Building Dependency Tree... Done
  • Для обновления системы целиком используется apt-get dist-upgrade.

Конфигурационные файлы к системе apt лежат в /etc/apt/. Там лежит файл apt.conf - это настройки самой системы apt. Самый нужный файл называется sources.list - он может быть пустым и каталог sources.list.d. В этом каталоге много файлов, в каждом из них может хранится информация о различных хранилищах в разных местах. Большинство этой информации изначально закоментированно. Формат файла таков:

'#' в начале строки означает комментарий. тип пакета, подпись(если есть), url хранилища, название хранилища, одно или несколько названий веток. Почему файлов так много? Есть несколько зеркал, и возможно по сетевым соображениям некие зеркала вам ближе. Для того чтобы ими воспользоваться надо расскоментировать соответствующие строчки в соответствующих файлах.


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

End date

10

1

1

1

1

ArtemSerebriyskiy, DmitryChistikov, MaximByshevskiKonopko


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex

PspoClasses/080720/03PackageUtils (последним исправлял пользователь MaximByshevskiKonopko 2008-10-09 21:50:53)