Инструменты Manjaro

From Manjaro Linux
Jump to: navigation, search


Введение

manjaro-tools содержит множество различных инструментов специально для разработчиков Manjaro и состоит из трех пакетов:

  • manjaro-tools-base содержит основные инструменты, различные инструменты chroot и buildset
  • manjaro-tools-pkg содержит небольшие вспомогательные инструменты, buildpkg и buildtree
  • manjaro-tools-iso содержт небольшие вспомогательные инструменты и buildiso

Пакеты manjaro-tools заменяют собой devtools и manjaroiso.


Подробное руководство пользователя доступно на GitHub.

Настройка

manjaro-tools может быть сконфигурировано правкой файла /etc/manjaro-tools/manjaro-tools.conf

Файлы

Мы переименовали скрипты.

  • mkmanjaroroot --> mkchroot
  • manjarobuild --> buildpkg
  • mkset --> buildset
  • pacstrap --> basestrap
  • genfstab --> fstabgen
  • arch-chroot --> manjaro-chroot

buildset

buildset предназначен для создания списков сборки. Списки сборки можно сформировать в /etc/manjaro-tools/sets/<buildlistname>.set

Справка выглядит так:

$ buildset -h
Usage: buildset [options]
    -c <name>   Create set
    -r <name>   Remove set
    -s <name>   Show set
    -i          Iso mode
    -q          Query sets
    -h          This help


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

buildset -c <name>

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

Например, клонировав https://github.com/manjaro/packages-openrc

$ ls 
consolekit/                  manjaro-tools-git/           openrc-net/
eudev/                       manjaro-tools-git-devel/     openrc-systemdcompat/
eudev-systemdcompat/         manjaro-tools-iso-profiles/  openrc-video/
kde-servicemenus-pkg-tools/  manjaro-tools-livecd/        packages/
keyboardctl-openrc/          networkmanager-openrc/       pkgbuilds-review/
kf5-servicemenus-pkg-tools/  openrc-aur/                  polkit-consolekit/
lib32-eudev/                 openrc-base/                 sddm-consolekit/
lib32-eudev-systemdcompat/   openrc-core/                 sysvinit/
lxqt-lightdm-greeter/        openrc-desktop/              upower-pm-utils/
manjaro-openrc/              openrc-devel/                README.md
manjaro-tools/               openrc-misc/

Запустив buildset -c openrc получим

$ buildset -c openrc
==> Creating [/etc/manjaro-tools/sets/openrc.set] ...
 -> Adding consolekit
 -> Adding eudev
 -> Adding eudev-systemdcompat
 -> Adding kde-servicemenus-pkg-tools
 -> Adding kf5-servicemenus-pkg-tools
 -> Adding lib32-eudev
 -> Adding lib32-eudev-systemdcompat
 -> Adding lxqt-lightdm-greeter
 -> Adding manjaro-openrc
 -> Adding manjaro-tools
 -> Adding manjaro-tools-git
 -> Adding manjaro-tools-git-devel
 -> Adding manjaro-tools-iso-profiles
 -> Adding manjaro-tools-livecd
 -> Adding networkmanager-openrc
 -> Adding openrc-aur
 -> Adding openrc-base
 -> Adding openrc-core
 -> Adding openrc-desktop
 -> Adding openrc-devel
 -> Adding openrc-misc
 -> Adding openrc-net
 -> Adding openrc-systemdcompat
 -> Adding openrc-video
 -> Adding polkit-consolekit
 -> Adding sddm-consolekit
 -> Adding sysvinit
 -> Adding upower-pm-utils
Замечание: Задаваемое имя должно отличаться от названия каталога в директории pkgbuilds. В противном случае команда не сработает. Лучше всего добавлять текущую дату к имени.

buildpkg

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

Если требуется детальный пример того, как использовать buildpkg для сборки пакетов для локального репозитория, можно обратиться к инструкции here.

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


Справка для i686 выглядит так:

$ buildpkg -h
Usage: buildpkg [options] [--] [makepkg args]
   -p <profile>       Set profile or pkg [default: default]
   -a <arch>          Set arch  [default: i686]
   -b <branch>        Set branch [default: stable]
   -r <dir>           Chroots directory [default: /srv/manjarobuild]
   -c                 Recreate chroot
   -w                 Clean up
   -n                 Install and run namcap check
   -s                 Sign packages
   -q                 Query settings and pretend build
   -h                 This help

Для сборки одного пакета нужно зайти в директорию, в которой находится каталог сборки пакета (тот, что собержит PKGBUILD), и запустить:

buildpkg -p <package-name>

К примеру, нужно собрать пакет upower-pm-utils, который находится в папке со следующими папками PKGBUILD:

$ ls
consolekit                  manjaro-tools          openrc-video
eudev                       networkmanager-openrc  packages
eudev-systemdcompat         openrc-aur             polkit-consolekit
kde-servicemenus-pkg-tools  openrc-base            README.md
keyboardctl-openrc          openrc-core            sddm-consolekit
kf5-servicemenus-pkg-tools  openrc-desktop         sysvinit
lib32-eudev                 openrc-devel           upower-pm-utils
lib32-eudev-systemdcompat   openrc-misc
manjaro-openrc              openrc-net

Можно использовать опцию -q, чтобы удостовериться, что установленные настройки корректны:

$ buildpkg -q upower-pm-utils
==> manjaro-tools
 -> version: 0.9.5.6
 -> manjaro_tools_conf: /etc/manjaro-tools/manjaro-tools.conf
==> OPTIONS:
 -> arch: i686
 -> branch: stable
 -> chroots: /srv/manjarobuild
==> ARGS:
 -> mkchrootpkg_args: -r /srv/manjarobuild/stable/i686
 -> makepkg_args: 
 -> clean_first: false
 -> wipe_clean: false
 -> namcap: false
 -> sign: false
==> PATHS:
 -> chrootdir: /srv/manjarobuild/stable/i686
 -> profiledir: /etc/manjaro-tools/sets
 -> pkg_dir: /var/cache/manjaro-tools/stable/i686
 -> pacman_conf: /usr/share/manjaro-tools/pacman-default.conf
 -> makepkg_conf: /usr/share/manjaro-tools/makepkg-i686.conf
 -> mirrors_conf: /usr/share/manjaro-tools/pacman-mirrors-stable.conf
==> BLACKLIST:
 -> blacklist_trigger: eudev lib32-eudev upower-pm-utils eudev-systemdcompat lib32-eudev-systemdcompat
 -> blacklist: libsystemd
==> SETS:
 -> profiles: default
 -> profile: upower-pm-utils
 -> is_profile: false
==> Build queue:
 -> upower-pm-utils

Чтобы собрать пакет воспользуйтесь опцией -p.

$ buildpkg -p upower-pm-utils
==> Updating chroot for [testing] (x86_64)...
:: Synchronizing package databases...
 core is up to date
 extra is up to date
 community is up to date
:: Starting full system upgrade...
 there is nothing to do
==> Making package: upower-pm-utils 0.9.23-4 (Mon Jan 12 12:38:16 IST 2015)
==> Retrieving sources...
...
...
==> Leaving fakeroot environment.
==> Finished making: upower-pm-utils 0.9.23-4 (Mon Jan 12 07:08:28 UTC 2015)

Очистить chroot перед сборкой можно опцией -c.

$ buildpkg -p upower-pm-utils -c
==> Creating chroot for [testing] (x86_64)...
 -> Deleting chroot copy 'aaditya'...
 -> Deleting chroot copy 'root'...
==> Creating install root at /mnt/datalinux2/manjaro-tools/testing/x86_64/root
==> Installing packages to /mnt/datalinux2/manjaro-tools/testing/x86_64/root
:: Synchronizing package databases...
 core                     133.7 KiB  30.8K/s 00:04 [######################] 100%
 extra                   1920.2 KiB   392K/s 00:05 [######################] 100%
 community                  2.7 MiB   512K/s 00:05 [######################] 100%
:: There are 25 members in group base-devel:
:: Repository core
  1) autoconf  2) automake  3) binutils  4) bison  5) fakeroot  6) file
  7) findutils  8) flex  9) gawk  10) gcc  11) gettext  12) grep  13) groff
  14) gzip  15) libtool  16) m4  17) make  18) pacman  19) patch
  20) pkg-config  21) sed  22) sudo  23) texinfo  24) util-linux  25) which
...
...
==> Creating clean working copy [aaditya]...
==> Making package: upower-pm-utils 0.9.23-4 (Mon Jan 12 12:37:00 IST 2015)
==> Retrieving sources...
...
...
==> Leaving fakeroot environment.
==> Finished making: upower-pm-utils 0.9.23-4 (Mon Jan 12 07:07:20 UTC 2015)

Для сборки набора пакетов можно использовать имя набора. Текущий набор может быть запрошен с помощью опции -q.

buildtree

buildtree - небольшая утилита для синхронизации arch abs репозиториев git пакетов manjaro.

Имеются следующие аргументы команды:

$ buildtree -h
Usage: buildtree [options]
    -s            Sync manjaro tree
    -a            Sync arch abs
    -c            Clean package tree
    -q            Query settings
    -h            This help[/code]

Синхронизация с ветками Arch и Manjaro:

buildtree -as

buildiso

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

Если требуется детальная инструкция о том, как собрать свой собственный образ Manjaro с нуля, обратитесь к статье (англ.)here.


Обзор

Справка для x86_64 выглядит так:

$ buildiso -h
Usage: buildiso [options]
    -p <profile>       Buildset or profile [default: default]
    -a <arch>          Arch [default: x86_64]
    -b <branch>        Branch [default: stable]
    -r <dir>           Chroots directory
                       [default: /var/lib/manjaro-tools/buildiso]
    -c                 Disable clean work dir
    -x                 Clean xorg cache
    -l                 Clean lng cache
    -i                 Build images only
    -s                 Generate iso only
                       Requires pre built images (-i)
    -v                 Verbose output, show profies detail (-q)
    -q                 Query settings and pretend build
    -h                 This help


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

$ ls
cinnamon       kde          kde-openrc  lxqt-openrc  netbook     openbox-legacy  shared   xfce-minimal
enlightenment  kde5         lxde        mate         net-openrc  pekwm-openrc    sysmenu  xfce-openbox-openrc
gnome          kde-minimal  lxqt        net          openbox     README.md       xfce

Проверка перед сборкой

Чтобы дать команду на проверку корректности настроек перед сборкой образа (опция-q), например профиля xfce-openbox-openrc, используйте такую команду:

$ buildiso -p xfce-openbox-openrc/ -b stable -q
==> manjaro-tools
 -> version: 0.9.6.4
 -> user_config: /home/aaditya/.config/manjaro-tools.conf
==> PROFILE:
 -> buildsets: community|default|official|openrc
 -> buildset_iso: xfce-openbox-openrc/
 -> is_buildset: false
==> OPTIONS:
 -> arch: x86_64
 -> branch: stable
 -> chroots_iso: /mnt/datalinux2/manjaro-tools/buildiso
==> ARGS:
 -> clean_first: true
 -> clean_cache_xorg: true
 -> clean_cache_lng: true
 -> clean_cache_iso: true
 -> images_only: false
 -> iso_only: false
==> PATHS:
 -> sets_dir_iso: /etc/manjaro-tools/sets/iso
 -> cache_dir_iso: /mnt/datalinux2/manjaro-tools/cache/iso
 -> cache_dir_xorg: /mnt/datalinux2/manjaro-tools/cache/xorg/x86_64
 -> cache_dir_lng: /mnt/datalinux2/manjaro-tools/cache/lng/x86_64
==> IMAGES SETTINGS:
 -> manjaro_kernel: linux318
 -> manjaro_version: 2015.03
 -> plymouth_theme: manjaro-elegant
==> ISO SETTINGS:
 -> iso_label: MJRO0812
 -> iso_version: openrc-2015-03-01
 -> code_name: Ascella
==> LIVECD:
 -> username: manjaro
 -> password: manjaro
 -> addgroups: video,audio,power,disk,storage,optical,network,lp,scanner,wheel
 -> hostname: manjaro
==> BUILD QUEUE:
--> Profile: [xfce-openbox-openrc/] ...
 -> Packages-Custom: Packages-Xfce
 -> initsys: openrc
 -> displaymanager: lxdm
 -> is_plymouth: false
 -> pacman_conf: pacman-multilib.conf
 -> work_dir: /mnt/datalinux2/manjaro-tools/buildiso/xfce-openbox-openrc//x86_64
 -> iso_file: manjaro-xfce-openrc-2015-03-01-x86_64.iso
 -> start_openrc: syslog-ng cronie acpid alsasound dbus consolekit wicd bluetooth
 -> start_openrc_live: livecd mhwd-live pacman-init pacman-boot

Сборка

Для сборки образа выполните:

$ buildiso -p xfce-openbox-openrc/ -b stable
==> Start building [xfce-openbox-openrc/]
--> Profile: [xfce-openbox-openrc/] ...
 -> Packages-Custom: Packages-Xfce
==> Cleaning up ...
 -> Deleting chroot 'root-image'...
 -> Deleting chroot 'xfce-image'...
 -> Cleaning [/mnt/datalinux2/manjaro-tools/cache/xorg/x86_64] ...
 -> Cleaning [/mnt/datalinux2/manjaro-tools/cache/lng/x86_64] ...
--> Loading Packages: [Packages] ...
==> Prepare [Base installation] (root-image)
==> mkiso : Configuration Settings
 -> working directory: /mnt/datalinux2/manjaro-tools/buildiso/xfce-openbox-openrc//x86_64
 -> image name: none
 -> pacman_mirrors: /usr/share/manjaro-tools/pacman-mirrors-stable.conf
==> Creating install root at /mnt/datalinux2/manjaro-tools/buildiso/xfce-openbox-openrc/x86_64/root-image
==> Installing packages to /mnt/datalinux2/manjaro-tools/buildiso/xfce-openbox-openrc/x86_64/root-image
:: Synchronizing package databases...
core                                                    132.7 KiB   202K/s 00:01 [##############################################] 100%
extra                                                  1916.0 KiB   939K/s 00:02 [##############################################] 100%
community                                                 2.8 MiB   524K/s 00:05 [##############################################] 100%
multilib                                                140.9 KiB   217K/s 00:01 [##############################################] 100%
...
...
...
 -> Cleaning up what we can
warning: database file for 'core' does not exist
warning: database file for 'extra' does not exist
warning: database file for 'community' does not exist
warning: database file for 'multilib' does not exist
warning: database file for 'openrc-eudev' does not exist
 -> Copying overlay ...
==> Done [Base installation] (root-image)
--> Loading Packages: [Packages-Xfce] ...
==> Prepare [xfce installation] (xfce-image)
 -> mount [root-image] on [xfce-image]
==> mkiso : Configuration Settings
 -> working directory: /mnt/datalinux2/manjaro-tools/buildiso/xfce-openbox-openrc//x86_64
 -> image name: none
 -> pacman_mirrors: /usr/share/manjaro-tools/pacman-mirrors-stable.conf
==> Creating install root at /mnt/datalinux2/manjaro-tools/buildiso/xfce-openbox-openrc/x86_64/xfce-image
==> Installing packages to /mnt/datalinux2/manjaro-tools/buildiso/xfce-openbox-openrc/x86_64/xfce-image
:: Synchronizing package databases...
...
...
...
Generation complete.
 -> Cleaning up what we can
warning: database file for 'core' does not exist
warning: database file for 'extra' does not exist
warning: database file for 'community' does not exist
warning: database file for 'multilib' does not exist
warning: database file for 'openrc-eudev' does not exist
 -> Copying xfce-overlay ...
==> Configuring [xfce-image]
 -> Configuring Displaymanager ...
 -> Configured: lxdm
--> Congiguring OpenRC ....
 -> Setting syslog-ng ...
 -> Setting cronie ...
 -> Setting acpid ...
 -> Setting alsasound ...
 -> Setting dbus ...
 -> Setting consolekit ...
 -> Setting wicd ...
 -> Setting bluetooth ...
--> Done configuring OpenRC
==> Done configuring [xfce-image]
 -> unmount xfce-image
==> Done [xfce installation] (xfce-image)
--> Loading Packages: [Packages-Livecd] ...
==> Prepare [livecd-image]
 -> mount [livecd-image] on [xfce-image]
 -> append [root-image] on [livecd-image]
==> mkiso : Configuration Settings
 -> working directory: /mnt/datalinux2/manjaro-tools/buildiso/xfce-openbox-openrc//x86_64
 -> image name: none
 -> pacman_mirrors: /usr/share/manjaro-tools/pacman-mirrors-testing.conf
==> Creating install root at /mnt/datalinux2/manjaro-tools/buildiso/xfce-openbox-openrc/x86_64/livecd-image
==> Installing packages to /mnt/datalinux2/manjaro-tools/buildiso/xfce-openbox-openrc/x86_64/livecd-image
:: Synchronizing package databases...
...
...
...
==> Making bootable image
 -> Removing existing bootable image...
==> Creating ISO image...
xorriso 1.3.8 : RockRidge filesystem manipulator, libburnia project.

Drive current: -outdev 'stdio:/mnt/datalinux2/manjaro-tools/cache/iso/manjaro-xfce-openrc-2015-03-01-x86_64.iso'
Media current: stdio file, overwriteable
Media status : is blank
Media summary: 0 sessions, 0 data blocks, 0 data, 62.7g free
Added to ISO image: directory '/'='/mnt/datalinux2/manjaro-tools/buildiso/xfce-openbox-openrc/x86_64/iso'
xorriso : UPDATE : 115 files added in 1 seconds
xorriso : UPDATE : 115 files added in 1 seconds
xorriso : NOTE : Copying to System Area: 432 bytes from file '/mnt/datalinux2/manjaro-tools/buildiso/xfce-openbox-openrc/x86_64/iso/isolinux/isohdpfx.bin'
libisofs: NOTE : Aligned image size to cylinder size by 42 blocks
xorriso : UPDATE :  2.75% done
xorriso : UPDATE :  16.40% done
xorriso : UPDATE :  27.90% done, estimate finish Sun Mar 01 23:10:20 2015
xorriso : UPDATE :  93.66% done
xorriso : UPDATE :  99.20% done
xorriso : UPDATE :  99.46% done
xorriso : UPDATE :  99.47% done
xorriso : UPDATE :  99.67% done
xorriso : UPDATE :  99.68% done
ISO image produced: 343552 sectors
Written to medium : 343552 sectors at LBA 0
Writing to 'stdio:/mnt/datalinux2/manjaro-tools/cache/iso/manjaro-xfce-openrc-2015-03-01-x86_64.iso' completed successfully.

==> Done [Build ISO]
==> Creating [md5sum] ...
 -> md5sum: 78f4b335fc593b7df7edff46a4d91b5d  manjaro-xfce-openrc-2015-03-01-x86_64.iso
==> Done [md5sum]
--> Time compress_images: 9.43 minutes
==> Finished building [xfce-openbox-openrc/]
--> Time make_profile: 13.77 minutes

Сборка с предварительно загруженными пакетами Xorg

Для сборки ISO с использованием заранее загруженного кэша пакетов Xorg нужно использовать аргумент -x:

$ buildiso -p xfce-openbox-openrc/ -b stable -x

Сборка после внесения мелких поправок в конфигурацию настроек

Замечание: Нужно перепроверить, работает ли процедура, описанная ниже.

Если требуется внести незначительные изменения в настройки, вместо сборки всего образа с нуля, можно ограничиться правкой каталога сборки образа, а затем пересобрать образ заново. Например, если изменения коснутся только настроек xfce-overlay/etc/skel/.conkyrc, нужно перейти в рабочую директорию, изменить указанный файл и пересобрать образ, используя аргумент -cs.

Рабочую директорию легко найти с помощью опции -q:

$ buildiso -p xfce-openbox-openrc/ -q
==> manjaro-tools
 -> version: 0.9.6.4
 -> user_config: /home/aaditya/.config/manjaro-tools.conf
==> PROFILE:
 -> buildsets: community|default|official|openrc
 -> buildset_iso: xfce-openbox-openrc/
 -> is_buildset: false
==> OPTIONS:
 -> arch: x86_64
 -> branch: unstable
 -> chroots_iso: /mnt/datalinux2/manjaro-tools/buildiso
...
...
==> BUILD QUEUE:
--> Profile: [xfce-openbox-openrc/] ...
 -> Packages-Custom: Packages-Xfce
 -> initsys: openrc
 -> displaymanager: lxdm
 -> is_plymouth: false
 -> pacman_conf: pacman-multilib.conf
 -> work_dir: /mnt/datalinux2/manjaro-tools/buildiso/xfce-openbox-openrc//x86_64
 -> iso_file: manjaro-xfce-openrc-2015-03-01-x86_64.iso

(рабочая директория выделена жирным шрифтом)

Требуемый файл редактируется от имени рута, например:

$ sudo nano /mnt/datalinux2/manjaro-tools/buildiso/xfce-openbox-openrc//x86_64/xfce-image/etc/skel/.conkyrc

Тут есть небольшая загвоздка; файл, который вы хотите отредактировать, может находиться в нескольких образах одновременно, типа root-image, livecd-image, и DE-image (напр., xfce-image), поэтому нужно отредактировать их все.


Затем можно прересобрать ISO:

$ buildiso -p xfce-openbox-openrc/ -cs

Альтернативный вариант

Создав chroot для ISO, с помощью опции -i, можно вносить изменения, и собирать ISO с опцией -sc.

Например:

$ buildiso -p xfce-openrc/ -b stable -i
==> Start building [xfce-openrc/]
--> Profile: [xfce-openrc/]
 -> Packages-Custom: Packages-Xfce
==> Cleaning up ...
...
...
==> Done [manjaro/iso/isolinux]
==> Creating [isomounts]
 -> Writing livecd entry ...
 -> Writing pkgs entry ...
 -> Writing xfce entry ...
 -> Writing root entry ...
==> Done creating [isomounts]
--> Time build_images: 4.28 minutes
==> WARNING: Continue compress: buildiso -p xfce-openrc/ -sc ...

После этого можно вносить изменения в рабочую директорию и генерировать ISO:

$ buildiso -p xfce-openrc/ -sc

Что ещё почитать