Новости:

Форуму исполнилось 12 лет!

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

Главное меню

[перевод] slackpkg+-1.4.0/README

Автор bormant, 08 августа 2014, 15:22:51

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

bormant

Перевод: (c) Serg Bormant, 2015.
Источник: f36b4b25164d62add50629c759d03dae  /usr/doc/slackpkg+-1.4.0/README


Плагин slackpkg+ для сторонних хранилищ

slackpkg -- это пакетный менеджер для Slackware.

slackpkg+ -- это плагин для slackpkg.
   Он добавляет поддержку сторонних хранилищ.
   Можно устанавливать, обновлять и искать пакеты по нескольким хранилищам.

Спасибо alienbob и phenixia2003 за участие, пожелания и/или исправления.

               
*************** ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ ***************
Это НЕОФИЦИАЛЬНЫЙ инструмент. Используйте на свой риск.
Сторонние хранилища НЕ ЯВЛЯЮТСЯ официальными. Авторы
сторонних хранилищ не отвечают за любые возможные
повреждения вашего компьютера.
********************************************************

-----


НАСТРОЙКА

Основная настройка:

* Отредактируйте /etc/slackpkg/slackpkgplus.conf.
* Раскомментируйте одно или более зеркал и добавьте их в список REPOPLUS.

Учтите, что пакеты сторонних хранилищ, присутствующие в официальных
хранилищах, не будут отображаться (см. ниже).

* Опционально, установите PKGS_PRIORITY, чтобы задать порядок предпочтения
  пакетов, присутствующих в нескольких хранилищах, или чтобы разрешить
  хранилищу перекрывать официальные пакеты Slackware.

Список поддерживаемых хранилищ смотрите в repositories.txt, другие
можно добавить самостоятельно.

Если подключили не поддерживающие gpg хранилища, возможно потребуется
указать "CHECKGPG=off" в /etc/slackpkg/slackpkg.conf

Затем выполните
# slackpkg update gpg
# slackpkg update

Для обновления slackpkg+ раскомментируйте хранилище "slackpkgplus", теперь
# slackpkg upgrade-all
будет обновлять slackpkg+ при выходе новых версий.

-----


MIRRORPLUS

Все зеркала задаёт массив MIRRORPLUS. Допустимы следующие протоколы:

1) http/ftp/https: например,

     MIRRORPLUS['slacky']=http://repository.slacky.eu/slackware64/

   Зеркало должно содержать все файлы метаданных (CHECKSUMS.md5, ...).
   Добавив/удалив хранилище, необходимо выполнить "slackpkg update".

2) Локальное зеркало: например,

     MIRRORPLUS['alienlocal']=file://mirrors/alienbob/x86/14.0/

   Каталог должен содержать все файлы метаданных (CHECKSUMS.md5, ...).
   Добавив/удалив хранилище, необходимо выполнить "slackpkg update".

3) Локальный каталог пакетов: например,

     MIRRORPLUS['mypackages']=dir://mypackages/

   Все пакеты должны быть в одном каталоге (подкаталоги не разрешены).
   "slackpkg update" такие хранилища игнорирует. Содержимое каталогов
   перечитывается при каждом запуске slackpkg.

-----


ИСПОЛЬЗОВАНИЕ

Смотрите "man slackpkg" :D

Используйте команду
# slackpkg upgrade-all
для поддержания системы в актуальном состоянии. Команда ищет обновлённые
пакеты во всех настроенных хранилищах.

Используйте команду
# slackpkg install-new
(если используете Slackware-current) для установки пакетов, добавленных
в систему на этапе разработки. Команда ищет добавленные пакеты ТОЛЬКО в
официальном хранилище Slackware.

Команды
# slackpkg {install,upgrade,remove,reinstall}
принимают следующие типы параметров:

1) имя-пакета (охватывает все хранилища), например,
   # slackpkg install bsd-games

2) фрагмент имени-пакета (охватывает все хранилища), например,
   # slackpkg install alsa

3) путь к пакетам в хранилище (охватывает все хранилища), например,
   # slackpkg install xap

4) имя-хранилища, например,
   # slackpkg upgrade alienbob
   обновит все пакеты из хранилища alienbob, а
   # slackpkg install ktown
   установит все пакеты из хранилища ktown

5) имя-хранилища:имя-пакета, например,
   # slackpkg install slacky:openjdk
   установит openjdk из slacky, даже если есть другой openjdk в другом
   хранилище

6) file:локальное-имя-файла (txz/tgz), например,
   # slackpkg install file:mypackage-1.0-noarch-1my.txz
   установит mypackage несмотря на отсутствие записи в slackpkgplus.conf
   (разрешено использование относительных и абсолютных путей)

7) dir:каталог, например,
   # slackpkg {install|upgrade} dir:/root/myrepo
   установит или обновит все пакеты из root/myrepo/
   (Завершающий "/" необязателен.)
   Примечание: "slackpkg install ." -- синоним "slackpkg install dir:./", но
   "slackpkg install ./" таким синонимом НЕ ЯВЛЯЕТСЯ, см. FILE в man slackpkg.

-----


НАСТРОЙКА ПРИОРИТЕТОВ

Если пакет присутствует более чем в одном хранилище, поиск производится
в следующем порядке:

1) по списку PKGS_PRIORITY (перекрывать официальные пакеты разрешено)
2) по списку официального хранилища Slackware
   (заданному в /etc/slackpkg/mirrors)
3) по списку REPOPLUS (перекрывать официальные пакеты не разрешено)
4) все остальные по списку MIRRORPLUS

Синтаксис PKGS_PRIORITY:
  PKGS_PRIORITY=( <имя хранилища>:<имя пакета> ... )

например,
  PKGS_PRIORITY=( alienbob:openjdk )

<имя пакета> допускает регулярные выражения, например,
  PKGS_PRIORITY=( restricted:.*vlc.* )
означает "все пакеты хранилища restricted, содержащие строку 'vlc'",
  PKGS_PRIORITY=( ktown:.* )
означает "все пакеты хранилища ktown".

Последний вариант может быть сокращён до
  PKGS_PRIORITY=( ktown )

Все подходящие пакеты из ktown перекроют соответствующие пакеты slackware,
если их не исключить явно:
  PKGS_PRIORITY=( patches:harfbuzz slackware64:harfbuzz ktown )
что означает "все пакеты ktown, кроме harfbuzz".


-----


MULTILIB

Если нужно использовать мультибиблиотечную систему, возможно автоматически
настроить хранилище multilib в slackpkgplus.conf и выполнить установку,
запустив:
# /usr/doc/slackpkg+-*/setupmultilib.sh

Для настройки мультибиблиотечности вручную (например, если система уже
мультибиблиотечная),
раскомментируйте правильный "MIRRORPLUS['multilib']=...",
раскомментируйте "PKGS_PRIORITY=( multilib:.* )".
Если не планируете собирать 32-битные пакеты на 64-битной машине, можно
обойтись без установки gcc:

  PKGS_PRIORITY=( patches:gcc slackware64:gcc multilib )


Для установки multilib вручную выполните:
# slackpkg update gpg
# slackpkg update
# slackpkg upgrade-all
# slackpkg install multilib

Поддержание мультибиблиотечности в актуальном состоянии:
# slackpkg update
# slackpkg upgrade-all
и "slackpkg install multilib", если "slackpkg install-new" обнаружил
добавленные пакеты.

Для удаления мультибиблиотечности уберите "multilib:.*" из PKGS_PRIORITY
и из REPOPLUS, но пока НЕ удаляйте соответствующую строку MIRRORPLUS,
затем выполните:
# slackpkg update
# slackpkg remove multilib
Примечание: это не удалит основные мультибиблиотечные пакеты, заменившие
официальные пакеты 64-битной системы. Для их удаления выполните:
# slackpkg upgrade-all
теперь удалите или закомментируйте соответствующую строку MIRRORPLUS и,
наконец, выполните:
# slackpkg update

или просто выполните
# /usr/doc/slackpkg+-*/setupmultilib.sh


-----


KTOWN (СВЕЖИЙ KDE)

Если нужно установить пакеты KDE из хранилища ktown от AlienBOB-а
(сейчас 4.14.3 и 5.2.0), добавьте "PKGS_PRIORITY=( ktown )", затем выполните:
# slackpkg update gpg
# slackpkg update
# slackpkg install ktown
# slackpkg upgrade-all

Не забудьте прочесть специальные инструкции в
  http://taper.alienbase.nl/mirrors/alien-kde/current/latest/  (kde 4)
  http://taper.alienbase.nl/mirrors/alien-kde/current/testing/ (kde 5)
поскольку может потребоваться поработать руками.
На время написания этого документа
для kde4:
# slackpkg remove kdeadmin kdenetwork kdesdk kdetoys kwallet kdnssd
для kde5:
в /etc/rc.d/rc.4 после строки echo "Starting up X11 session manager..."
добавьте:

if [ -x /usr/bin/sddm ]; then
    exec /usr/bin/sddm
fi

Поддержание KDE из хранилища ktown в актуальном состоянии:
# slackpkg update
# slackpkg upgrade-all
Периодически нужно выполнять
# slackpkg install ktown

Для восстановления KDE от Slackware уберите "ktown" из PKGS_PRIORITY
и из REPOPLUS, но пока НЕ удаляйте соответствующую строку MIRRORPLUS,
затем выполните:
# slackpkg update
# slackpkg upgrade-all
# slackpkg install kde
# slackpkg remove ktown
теперь удалите или закомментируйте соответствующую строку MIRRORPLUS и
выполните:
# slackpkg update


Примечание: ktown5 требует ktown4, поэтому нужно настроить оба хранилища:
PKGS_PRIORITY=( ktown5 ktown4 )
MIRRORPLUS['ktown4']=...
MIRRORPLUS['ktown5']=...

затем выполнить
...
# slackpkg install ktown5 ktown4


------


ПЕРСОНАЛЬНЫЕ ПАКЕТЫ

Если самостоятельно собираете пакеты, возможно устанавливать их без
installpkg, используя slackpkg+. Это поможет отслеживать установку/обновление
и снизит вероятность ошибок. Создавать персональное хранилище с ключом gpg
и метаданными каждый раз при сборке пакета НЕ нужно, также НЕ нужно править
файл slackpkgplus.conf или выполнять "slackpkg update".

Вы можете:

1) установить/обновить/переустановить отдельный пакет, передав полное имя
   файла пакета (по абсолютному или относительному пути), например,
   # slackpkg install file:package-1.0-noarch-1my.txz
   или
   # slackpkg upgrade file:../repo/package-2.0-noarch-1my.txz

2) установить/обновить/переустановить все пакеты отдельного каталога (но не
   поддерева), передав имя каталога (по абсолютному или относительному пути),
   например,
   # slackpkg install dir:/myrep
   или
   # slackpkg upgrade dir:./test/package/
   или
   # slackpkg reinstall .

   Примечание: "." -- синоним для "dir:./", других аналогичных синонимов нет.
   "slackpkg install ./" (или /myrepo/, или ./package.txz) вызовут ошибку,
   поскольку синтаксис slackpkg уже предусматривает входной ФАЙЛ, и в вызове
   "slackpkg install ./list.txt" list.txt должен быть обычным текстовым файлом
   со списком пакетов для установки (см. man slackpkg).

   Если каталог содержит разные версии пакета, slackpkg покажет старший по
   алфавиту, поэтому pkg-9 попадёт в список и вместо pkg-8, и вместо pkg-10.
   Извините... это ограничение slackpkg!

   Совет: Если хотите использовать dir:/myrepo для отслеживания установок,
   но исходных txz/tgz файлов по тем или иным причинам уже нет, можно
   создать пустые файлы; это обманет slackpkg+, который ищет только по
   имени файлов, а не по содержимому (если только не запустите для них
   slackpkg reinstall ;)) То есть, если выполнить
   # touch mypkg1-1.0-noarch-1my.txz
   # touch mypkg2-1.1-noarch-3my.tzx
   (где mypkg1 и mypkg2 являются установленными ранее пакетами),
   "slackpkg install ." (или upgrade) их не покажет, но
   "slackplg reinstall ." ПОКАЖЕТ (поэтому соглашаться на установку не надо)

ВНИМАНИЕ: slackpkg+ не проверяет gpg и md5 для персональных пакетов!!

-----


НЕЛОКАЛЬНЫЕ ПАКЕТЫ БЕЗ МЕТАДАННЫХ

Некоторые пользователи делятся пакетами на своих персональных сайтах, но не
создают файлов метаданных (особенно, если пакетов немного). Для установки
отдельного пакета нужно было загружать и устанавливать его вручную. Теперь,
можно передать URL пакета slackpkg+, который автоматически загрузит и
установит/обновит пакет.

Вы можете:

1) установить/обновить/переустановить отдельный пакет, задав полный URL:
   # slackpkg install http://site/path/package-1.0-noarch-1my.txz
   Например, можно пользоваться этой возможностью для установки снапшотов
   slackpkg+ (которые по команде "slackpkg upgrade slackpkg+" не
   устанавливаются, поскольку являются тестовыми версиями):
   # slackpkg upgrade http://www.slackfinder.org/slackpkg+/pkg/slackpkg+20130905.2-noarch-1mt.txz

2) установить/обновить/переустановить все пакеты в отдельном нелокальном
   каталоге (но не поддереве), даже если владелец сайта не предоставляет
   метаданные:
   # slackpkg install http://site/path/

   Примечание: эта возможность требует lftp и может не работать, если сервер
   не отдаёт список содержимого каталога или если в пути указан index.html.

ВНИМАНИЕ: slackpkg+ не проверяет gpg и md5 для нелокальных пакетов без
          метаданных!!

-----


УВЕДОМЛЕНИЯ

Некоторые пакеты требуют определённых действий после установки, таких как
обновление связанных пакетов, пересборка модулей ядра или изменение настроек.
О них легко забыть, особенно при крупных обновлениях. Уведомления позволяют
напомнить пользователю о необходимости дополнительных действий. В
/etc/slackpkg/notifymsg.conf возможно задать отдельные события. Подробнее см.
указанный файл. События могут быть как ОЧЕНЬ специфичными (обновив KDE,
напомнить позвонить друзьям ;)) так и вполне полезными "при обновлении ядра
напомнить перекомпилировать все модули драйверов".

Эта функция включается при помощи "ENABLENOTIFY=on" в slackpkgplus.conf.

-----


ПАРАМЕТРЫ WGET

Для загрузки пакетов и метаданных slackpkg+ использует wget.

Для передачи параметров wget предназначена настройка WGETOPTS.

По умолчанию wget при недоступности ссылки повторяет попытку после длительного
таймаута, поэтому недоступные хранилища нужно удалять из файла настроек.
Вместо этого можно задать WGETOPTS="--timeout=5 --tries=1" в slackpkgplus.conf.

-----


ALLOW32BIT

По умолчанию slackpkg+ запрещает установку 32-битных пакетов в 64-битную
систему.

Задав ALLOW32BIT=on можно снять этот запрет (небезопасно). Во избежание
проблем не устанавливайте оба варианта пакета (32 и 64-битный), а также
НИКОГДА не обновляйте 64-битный пакет его 32-битным вариантом.

Не забудьте доустановить multilib.

-----


СЕРЫЙ СПИСОК

Иногда нужно, чтобы slackpkg+ не обновлял отдельные пакеты по команде
upgrade-all. Для этого приходится либо каждый раз снимать отметку, либо
добавлять пакет в чёрный список (файл blacklist). Второй вариант не даст
узнать о выходе новых версий пакета.
Третий вариант -- добавить пакет в серый список (файл graylist).
Все пакеты из серого списка останутся доступными для установки и будут
перечислены в окне slackpkg, но отметки с них будут сняты, что не даст
установить их по ошибке.
Можно поместить в серый список хранилище целиком. Неплоха идея поместить
в серый список все сторонние хранилища, тогда по upgrade-all автоматически
будут обновляться только официальные пакеты Slackware, а изменения всех
сторонних пакетов потребуют проверки и можно убедиться, что именно будет
установлено.

-----


ЖУРНАЛ УСТАНОВКИ

Теперь slackpkg+ записывает в /var/log/slackpkg/install.log все установки
и при возможности указывает, из какого хранилища был загружен файл. Это
поможет следить за системой.

Неплохо выполнить "/usr/lib/slackpkg/makeinstlog.sh -t" (займёт некоторое
время) для инициализации журнала (/var/lib/slackpkg/install.log.tmp).
Параметр "-t" добавляет имя хранилища, откуда был загружен пакет, но
возможны ошибки, поэтому рекомендуется проверить содержимое файла перед
переименованием в install.log. Файл можно редактировать вручную для
изменения или дополнения информации.

При каждом вызове slackpkg install/upgrade/remove добавляется запись журнала.
При каждом вызове slackpkg update производится быстрое перестраивание списка.

-----


УЛУЧШЕНИЯ В ПРОВЕРКЕ ОБНОВЛЕНИЙ

Команда "slackpkg check-updates" отображает изменившиеся после последнего
обновления хранилища. Подробности и варианты использования в crontab см.
http://www.linuxquestions.org/questions/showthread.php?p=5146591

-----


ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ

Статья AlienBOB-а о slackpkg+:
  http://alien.slackbook.org/blog/introducing-slackpkg-an-extension-to-slackpkg-for-3rd-party-repositories/

Вопросы, пожелания и дополнения направляйте по эл.почте
zerouno@slacky.it или воспользуйтесь форумом LQ:
  http://http://www.linuxquestions.org/questions/showthread.php?p=4940074

slackpkg+ на souceforge:
  https://sourceforge.net/projects/slackpkgplus