code:
                INARY PACKAGE MANAGER
                ---------------------

Pisi çatalı: Copyright (C) 2005 - 2011, Tubitak/UEKAE
          GNU/Genel Kamu Lisansı sürüm 2 ile lisanslanmıştır.

Inary çatalı ve geliştirmeleri: Copyright (C) 2016 - 2018 Suleyman POYRAZ (Zaryob)
          Lisansı GNU/Genel Kamu Lisansı sürüm 3'e yükseltilmiştir.

https://github.com/Pardus-Linux/pisi adresinden çatallanmıştır

Inary paket yönetim sistemi mevcut pisi paket yöneticisinin eksiklerini,
hatalarını onarmak, python3 ile yeniden ele alınıp açık kaynak dünyasındaki
son gelişmeleri yakalamak amacıyla 21-12-2016 tarihinde pisi çatalı üzerinde
çalışılarak başlamış; ilerleyen başlangıç niteliğinde olan pisi çatalından
kodlama yöntemi ve kullanılan ek modüller bakımından ayrılmış ve kendine
özgü bir hale dönüşmüş, ayrıca pisi adının lisanslı olması sebebyle yeniden
adlandırılarak geliştirilmeye devam edilmiştir.

Yazılım inary adını aldığı zaman gitlab sitesi üzerinden kamuya yayılmıştır.

Diğer paket yönetim sistemlerinden ayrılan yanları:
 - Dinamik dosya veritabanına sahiptir. Kurulu dosyalarda değişme olup olmadığı
   ile ilgili takipler kolayca yapılabilir.
 - Python ile kodlanmış diğer paket yöneticilerine göre oldukça hızlı ve seri
   iş yapar.
 - Tüm kurulum betiği python scriptlerinden oluştuğu için betikleri anlaması
   kolaydır, pakete ait diğer veriler xml dosyalarında depo edildiği için paket
   yapım arayüzü ile terminal ekranına gerek kalmadan paket oluşturma işi
   yapılabilir.
 - Paket sonrası ve öncesi işlemler (postinstall) ayrı bir yazılım tarafından
   yapıldığı işlem karmaşasına sebep olmaz.

Diğer özellikleri:
 - Sağlam ve python içinde gömülü bir veritabanı ile çalıştığı için hızlıdır.
 - LZMA ve XZ sıkıştırma yöntemleri kullandığı için daha küçük paketlere sahiptir.
 - Basit düzey ve üst düzey tüm işlemleri aynı kararlılıkla yerine getirir
 - Forend uygulamaları tasarlanmasına elverişli bir yapıdadır.
 - Terminal arayüzü oldukça anlaşılır ve kullanıcı dostudur.

Kurulum bağımlılıkları:
python3-requests
iksemel (https://gitlab.com/Zaryob/iksemel)
intltool
intltool-debian

path: README


code:
INARY 2.0 Yol Haritası ve Yapılacaklar
======================================

- Yapacağım
? Nasıl yapılacağını bulamadım
/ Üzerinde Çalışıyorum
+ Yaptım

1. Pre-Alpha
  / Daha temiz logging stratejisi:
    / Her çıktının log dosyasına yazılması işleri biraz karıştırıyor. log dosyası şişiyor.
    bu iş için bir çare bulmak lazım. Adım adım neler yapacağım:
      + ctx.ui.debug fonksiyonu gerekli olmadıkça kullanılmamalı.
      + ctx.ui.info önemli mesajlar ve detaylar için (verbose parametresi ile kullanılmalı)
      / Bilgilendirme için kullanılan mesajlar ayıklanıp logdan ayrılmalı.
    / Fix ctx.ui functions:
      / ctx.ui içindeki fonksiyonlar düzenlenmeli. Bazıları çok canavarca kullanılmış.
        + ctx.ui.notify düzenlemesi
        + ctx.ui.choose düzenlemesi
  + Paket kurulması öncesi tam bilgilendirme.
    + İndirilecek boyutu yazdır.
    + İndirilmiş boyutu yazdır.
    + Eğer paket kurulacak ise toplam install.tar.xz boyutunu yazdır.
    + Eğer update yapılacak ise değişecek boyutu yazdır.
    + Silecek paketin ne kadar yer açacağını yazdır.
  - Biraz daha anlaşılır paket yapılandırmaları.
    - Mevcut Comar forku olan SCOM kodunda uygun düzenlemeler yaparak hangi script nerede hata
      oluşturdu ise geri çevir.
    - Script hata oluşturunca inary paket yönetiminin donmasını engelle.
    - debconf benzeri yapılandırma arayüzü oluştur.
  - TestSuit:
    - Hangi testler eklenecek ise ona göre doldurulacak.

2. Alpha
  - Localization-Çeviriler:
    / de
    + en
    / es
    / fr
    / hr
    / hu
    / it
    / nl
    / pt
    / pt_BR
    / ru
    / tr
    / uk
    - az

  - Inary-Devtools:
      - Depo paketlerinin geçmişini resetleyecek bir araç.
      - Depo elemanlarının çevirilerini kolaylaştıracak bir araç.
      - pkgconfig ldd ve .so uzantılı linkleri kullanarak bir paketin
        kırık bağımlılığını raporlayacak bir araç.

  - Inary-SIGN:
      - GPG bazlı index ve paket imzası kontrol mekanizması.
        - GPG signed repository.
        - GPG signing script.

  - Full System Emerge:
      - Kaynak repolarından bağımlılık getirirek paket build etmek.
      - Derlemeli upgrade mekanizması.
      - Kaynak repolarından devam ederse derlenmiş paketlerin sisteme alınmasında
        katı sınırlama yapmak.

  - History için düzenlemeler:
      - hs komutu sonrası kırılmaların önlenmesi.
      - hs komutunun tüm terminaller için uygun hale getirilmesi.

  - Database methodları:
      - lazydb içindeki biraz ilkel ve yavaş olan db yönetim mantığı düzenlenmeli.
      database pickle ile oluşturulmak yerine adam akıllı bir database yönetimi ile
      (sqlite) veya bir yığın depolama ile (shelve) sağlanması hız katabilir.

  - Yeni Komutlar.
      - downgrade: Paket sürümünü güncellemeden önceki haline getirmek.
      - shell: inary paket yöneticisi için kabuk ortamı
      - reconfigure: seçilen paketi yeniden yapılandırma. (ncurses arayüzü ile)
      + configure-manager: değişen config dosyalarının takibi için

3. Beta
  - Repo yönetim iyileştirmeleri:
      - Bazı repoların önceliği belirlenmeli. Öncelikli olan repolardaki paket
       önceliksiz repodaki aynı addaki paketten üstte olmalı.

  - Index iyileştirmeleri.

  / Inary config manager. [ inary config ] komutu:
      - değişmiş config dosyları kırılmış dosya olarak görülmemeli.
      + yeni paket kurulumunda mevcut config kurulup yeni config *.config.new
      şeklinde yeniden adlandırılmalı
      + değişen config dosyalarının dökümü
      + mevcut config dosyalarından yeni ile eskiyi emergedeki gibi değiştirebilme
      imkanı.

  - Inary licence manager:
      - Kapalı kaynak lisanslı olan paketleri yüklemeden önce sorma.
      - Paket kurulumu sırasında lisans kabul beyanı.
      - Bazı lisans çeşitlerine karşı paket filtreleme.

  - Inary Package manager Curses ui.
      - Neden yapmayayım ki.

4. Release
  - Removing deprecated modules:
      - autoxml için formatter kütüphanesi.
  - Code optimizations:
      - Optimize imports.
      - Optimize definitions.
      - Optimize runtime variables.
      - Optimize class and superclasses.

5. Post Release
    ... Zamanla eklenecek ...

6. Long Term
    ... Zamanla eklenecek ...

repo_name: SulinOS/inary

path: ROADMAP

license: mit


code:
Inary TODO List
==============
A list of tasks to accomplish, organized into priority sections. This wasn't deleted because
i want to continue pisi project but now inary evolved a new package manager. its time to
change RoadMap.

Legend:
- Todo
? Not determined if/how we have to do
/ In progress
+ Accomplished

1. Pre-Alpha

  + reading spec file
  + writing
    + files
    + metadata
  + Actions API framework
    + sample api modules (example: autotools)
      + C Language Tools
      - GoLang Tools
      + Python Language Tools
      + Ruby Language Tools
        - Use gem agent
      + Perl Language Tools
      + CMake Tools
    + unit test
  + source building
    + Detailed build log file
  + package module
    + extraction
    + add file / compression
  + package creation
  + install database
  + package database
  + command line interface
    + inary-build
    + inary-install
    + inary-index
    + inary-updatedb
  + single repository index
  + simple dependency checking
  + Package/Files
  + Detailed inary logs into /var/log

2. Alpha
  + multi-package dependency analysis (eray)
    + design a package operation planner
    + install/remove operations (eray)
  + command line interface:
    + inary remove
    + svn-like CLI
  + configuration file
    + define the format of the configuration file
    + extend Config module (config.py) accordingly
    + define configuration keys (baris - meren)
  + query
    + list of installed packages (eray)
  + refactor actionsAPI (caglar)
  + fix xml indentation (meren)
  + define file types (doc, executable, conf, etc...) (baris - meren)
  + write specfile (eray)
  + file locking for database access [not tested!] (eray)
  + implement file uri
    + extend the modules dealing with files accordingly
  + ui module improvements
  + methods for interaction (yes, no questions, etc.)
  + implement source database (eray)
  + easy package preparation
    ? convert ebuild to inary
    \ convert deb packages to inary
    \ convert rpm packages to inary
  + Configuring system interface after installing
    + what do we need to specify in a package
    + package install: register script and configure system with it
    + package remove: unregister script and reconfigure systen with it  (Zaryoh)
  + internet installation
    + support URI's whereever a filename is supported
    + http server
    + https server
    + ftp server
    + inary updatedb over internet

3. Beta
  + build cmd: install build deps
  + improve url support, it's a little dumb at the moment
    + devise a File class that works with URLs
    + add URL support to autoxml
  + info cmd: reverse dependencies of a package
  + a helper script for finding dependencies (eray)
  + autoxml: automated xml processing (eray)
    + design
    + basic types
    + list type
    + class type
    + localtext/text types (localtext.... Ummm?.... )
      + write meaningful localtext datas
      + return meaningful localtext summaries and descriptions
    + revised interface
    + Error handling
      + improved error handling, check routines, hooks, format/print routines
      + write a meaningful traceback output
    + xmlfile support (read/write)
    + string member, in addition to tag/attribute members
    + replace specfile with new specfile using autoxml
    + autoxmlize: metadata, index, dependency and related code paths
    + inheritance support
    + revise writing, error reporting, tests
  + components (eray)
    + requirementsu
    + xml format, add to PSPEC
  + index component.xml's and make use of them in build
  + a database of components:
      + query components by name
      + query list of packages in a component
      + index: update component database(s)
      + bug fixing
    + install/remove/upgrade components
    + safety switch: preserve system.base, install system.devel for build, etc.
    + info <component>
    + started documentation
  + component dependencies
  + multiple package repository (eray)
    + decide how to implement
    + support repo order
    - file conflict checker
  + refactor xml support and implement multiple backends
    + ciksemel based modules rewrite with xml.dom.minidom (Zaryob)
  + partial caching and automatic resume for file download (meren)
    + use a '.part' extension
    + resume file downloading (pycurl) (Zaryob)
  + search-file command (eray)
  + exception handling (eray)
    + uniform exception hierarchy
    + proper handling
  + API: we even have application users (eray)
    + a facade module inary.api  (eray)
    + clean unuseful inary.api functions
    + a library init command (eray)
    + high-level package ops, index (eray)
    + info/util commands (eray)
    + build commands (baris)
  + documentation
    + actionsAPI documentation, unittests (caglar - meren)
    + versioning information document (eray - baris)

  + UI
    - INARYMAT
      / Automatic dependency finder
        / read pkgconfig files and find dependencies (Zaryob)
        - find cycle dependencies (Zaryob)
      - Automatic build upgrader
        / creating pspec files from shell script type
    - pykde & pygtk GUI (cartman)
      + pykde interface (used package-manager)
    + improve interface (eray)
      + refactor UI, reintroduce base class
      + add an ack interface, start cleaning up a bit
    + cli (eray)
      + ask alternatives to choose from
    + eliminate \n's from infos, what's the point?
    + metaclass coolness for CLI command framework (eray)
    + i18n support
      + translations and correct language for summary, description (packagers)
      + make inary messages translatable (eray)
      + .pot support for dist script (gurer)
      / translate messages mesajların çevirisinin yapılması (inary tr.po)
        - az
        + de
        + en
        + es
        + fr
        - hr
        + hu
        + it
        - nl
        - pl
        - pt_BR
        + ru
        - sv
        + tr
        - uk
      + proper unicode handling in code - tons of fixes (eray - baris)
    / configure-pending (eray) (should return which packages configured)
      - report scom scripts problems to developers
      + configure pendings (Zaryob)
    + proper commar connection (baris - gurer)
    + ignore-deps (eray)
    + more robust upgrade (eray)
    + query (eray)
      + find package by name, display summary/description
      + info --files option (like rpm -ql, but better of course)
    + implement missing unit tests
      + sourcedb
      + package (baris)
      + configuration file (baris)
    + upgrade (eray)
      + upgrade operation
      + test upgrade op
      + system-wide upgrade (upgrade-all) komutu
    + incremental build (eray)
      + generate binary release number by comparing MD5s (eray)
      + keep track of successfully completed configure, make, install steps
      (necessary for large-scale builds?) (meren)
    + database locking bugs (eray)

    + SHOULD WORKING UNDER FIXME PARTS

4. Release
  * high priority
    + transaction stuff for database (eray)
    + database version file
  * low priority
    + search command: (eray)
    + implement an inverted index
    + search in summary and description

5. Post Release
  * high priority
    - refactoring
    sort of match the refactoring of inary-2.x series and improve it

    + accelerate search
    / package signing
      / an embebed package signer.(Zaryob)
      + a flag to sign package after building
      + code to check if the package has a valid signature
    - cli improvements
      - non interactive mode (similar to --auto in urpmi)
    / high-level build commands
      + an emerge command, just for fun
        + make use of binary repo to satisfy dependencies in emerge
      / build command enhancements:
        + aware of repo sources
        ? full dependency analysis like install/upgrade etc.
        ? build-all (or build-distro) command, or as a separate tool
    + make a package and sourcedb for each repo
      + packagedb
      + sourceb
    ? improve url support: consider adding "other" protocols
      - removable media: media://
      - ftp support
  * medium priority
    - UI impl: non-interactive use that selects defaults and logs output
    - UI impl: a general purpose Qt or GTK UI
    / multi-architecture support
      + design decisions
      + extend XML specs to support that
      - cross-platform building support
      + incremental build/fetch for repository index (inary-index.xml)
    / xdelta support (caglar)
      - diffsets
    - a command (check-repo) to check if repos are consistent wrt dep relations
    - component improvements (optional)
      - maintain a list of components each component has
      - maintain a list of packages
    - more support for categories:
      - put categories into a database
      - fast search for categories
  * low priority
    / overhaul installdb (try to merge its use with packagedb) (eray)
    / verify metodlari
      + SpecFile
      + MetaData
      + Files
      / Index (somebody should write one :} )
    - autoxml:
      - revise error checking, printing and tests
      - uri type
      - date type
      - enum type
      - make autoxml dependent on only xmlext and xmlfile interfaces
    - search command: (eray)
      + search components
      - english stemming
      - turkish stemming
      - phonetic/syntactic fault tolerance (whichever works!)
        - in particular evaluate soundex and metaphone
        - research if there are language independent phonetic encodings
        - implement as an option (or make it possible to turn it off if it works well :))
    - fault tolerant search in package names (somehow)


code:
Here we take notes of the strange stuff, so we can refactor them after
Pardus 2007 release.

==> Locale support
* bindtextdomain and textdomain calls are not necessary, because
gettext.translation() dont use them.

* setlocale call is probably necessary for some stuff, but not for
message translation, it seems gettext.translation() api looks for
environment LC_ALL, LC_MESSAGES anyway.

* pygettext.py shouldn't be needed at all. Plain xgettext works with
python source.

==> Utility functions
* sha1_file and sha1_data functions has some
exception confusion. These two functions should be a lot simpler.

* To estimate required disk size for the packages more accurately we can
calculate package size + (nr of files * inode size of fs).

* Why in a world like this there exists *parse_package* util functions? These must be all methods of package class

* Remove all unneeded util functions, most of them belongs its classes

==> code readability
* Public functions should contain doc strings.

* Python builtins like file, list, etc should be avoided in variable names.
There is even a file.py module!

* a,b,c,d,f,r,_i,A,B,C,G are equally bad.

* some import'ed modules are not used inside the importer modules, cleanup needed.

* Convert all String Concatenation into "%s" % string form which is much faster, readable and correct

==> exceptions
* Current model is bad. Exception names should tell what is the error type. Instead
we have one Error exception in every module. If I call inary.api.install("lala"),
I should get inary.api.PackageNotFound or inary.install.PackageNotFound or something
like that. For every kind of error, you get inary.api.Error now, and only way to find
out exact error is try to parse error string (which is localized).

* class Exception(Exception) is evil.

* There shouldn't be a bare Except: clause in inary modules.

==> database
* We should have a DB performance test suite to find important points to make faster,
if we cannot measure, we cannot improve.

==> class attributes
* In some classes there are some attributes assigned but never
used. (see remove_unused_attributes.patch)

* Inary uses heavy classes and creates thousands of instances of them
  (Package, Metadata, Dependency, ...). These classes should define
  __slots__ to reduce the heap used.

==> actionsAPI
* Get rid of ugly exception model
* Refactor/clean the code
* Add strict checks to models
* Maybe? Get rid of functional logic, switch to OO one
* ActionsAPI still needs an updated API document

==> Inary API
* Write a real one

==> Function parameters
* Check function parameters and see if some parameters (especially the
ones named tmpDir/tmp_dir/target_dir) are redundant now. See
http://liste.uludag.org.tr/uludag-commits/2007-February/010070.html

==> Fixes (that need API breakage)
* http://liste.uludag.org.tr/uludag-commits/2007-February/010117.html

==> Logging

* Improve logging with all needed update/downgrade/install/remove information so one can easily find the history of packages,
currently Inary wrotes everyting into logs which is not usefull. Also this information can be used for rollback and reporting.

==> function code lengths

* we have some functions that goes pages long... divide all of them to small digestable chunks..
  avoid writing functions longer than your editor's screen.

==> assertions

* Lots of assertions used in the code with no following descriptive string information.

==> repo order

* When trying to install a package or looking for a dependency for a package the first found package
  in "repo order" is used. This design decision is not very good. When a new repo that has the latest
  version of any package is added and if it is the last repo in order, inary can not upgrade to this
  package.

  We can remove this order thing and in this situation we can use the latest version of the package.
  This should also lead to some other problems but between these two not very good solutions this
  seems to be the better one.

path: RefactorPlan


code:
[build]
build_host = localhost
# buildhelper = None
commonflags = -U_FORTIFY_SOURCE -march=armv8-a+crc -mtune=cortex-a53 -O3 -s -pipe
cflags = %(commonflags)s
cxxflags = %(commonflags)s
host = aarch64-pc-linux-gnueabi
cc = %(host)s-gcc
cxx = %(host)s-g++
compressionlevel = 9
enableSandbox = False
fallback = http://source.sulinlinux.com/1.0
generateDebug = False
jobs = -j9
ldflags = -Wl,-O1,--sort-common,--as-needed,-z,relro
ignored_build_types = emul32

[directories]
cache_root_dir = /var/cache/epic
archives_dir = %(cache_root_dir)s/archives
cached_packages_dir = %(cache_root_dir)s/packages
compiled_packages_dir = %(cache_root_dir)s/packages
debug_packages_dir = %(cache_root_dir)s/packages-debug
lib_dir = /var/lib/inary
history_dir = %(lib_dir)s/history
index_dir = %(lib_dir)s/index
info_dir = %(lib_dir)s/info
kde_dir = /usr
lock_dir = /run/lock/subsys
log_dir = /var/log
packages_dir = %(lib_dir)s/package
qt_dir = /usr
tmp_dir = /var/inary

[general]
architecture = aarch64
autoclean = False
bandwidth_limit = 0
allowrfp=False
destinationdirectory = /
distribution = Sulin ARM64
distribution_release = 0.1
distribution_id = s19
# ftp_proxy = None
# http_proxy = None
# https_proxy = None
allow_docs=True
allow_pages=True
allow_dbginfo=True
allow_static=False
ignore_delta = False
ignore_safety = False
ssl_verify = True
gpg_verify = False
package_cache = False
package_cache_limit = 0


code:
[build]
build_host = localhost
# buildhelper = None
commonflags = -U_FORTIFY_SOURCE -march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16 -O3 -s -pipe
cflags = %(commonflags)s
cxxflags = %(commonflags)s
host = armv7l-pc-linux-gnueabihf
cc = %(host)s-gcc
cxx = %(host)s-g++
compressionlevel = 9
enableSandbox = False
fallback = http://source.sulinlinux.com/1.0
generateDebug = False
jobs = -j9
ldflags = -Wl,-O1,--sort-common,--as-needed,-z,relro
ignored_build_types = emul32

[directories]
cache_root_dir = /var/cache/epic
archives_dir = %(cache_root_dir)s/archives
cached_packages_dir = %(cache_root_dir)s/packages
compiled_packages_dir = %(cache_root_dir)s/packages
debug_packages_dir = %(cache_root_dir)s/packages-debug
lib_dir = /var/lib/inary
history_dir = %(lib_dir)s/history
index_dir = %(lib_dir)s/index
info_dir = %(lib_dir)s/info
kde_dir = /usr
lock_dir = /run/lock/subsys
log_dir = /var/log
packages_dir = %(lib_dir)s/package
qt_dir = /usr
tmp_dir = /var/inary

[general]
architecture = armv7h
autoclean = False
bandwidth_limit = 0
allowrfp=False
destinationdirectory = /
distribution = Sulin ARM
distribution_release = 0.1
distribution_id = s19
# ftp_proxy = None
# http_proxy = None
# https_proxy = None
allow_docs=True
allow_pages=True
allow_dbginfo=True
allow_static=False
ignore_delta = False
ignore_safety = False
ssl_verify = True
gpg_verify = False
package_cache = False
package_cache_limit = 0


code:
[build]
build_host = localhost
# buildhelper = None
commonflags = -mtune=atom -march=i686 -O3 -s -pipe -fomit-frame-pointer -fstack-protector -D_FORTIFY_SOURCE=2 -ggdb3 -funwind-tables -fasynchronous-unwind-tables
cflags = %(commonflags)s
cxxflags = %(commonflags)s
host = i686-pc-linux-gnu
cc = %(host)s-gcc
cxx = %(host)s-g++
compressionlevel = 9
enableSandbox = True
fallback = http://source.sulinlinux.org/1.0
generateDebug = False
jobs = -j5
ldflags = -Wl,-O1 -Wl,-z,relro -Wl,--hash-style=gnu -Wl,--as-needed -Wl,--sort-common
ignored_build_types = emul32

[directories]
cache_root_dir = /var/cache/inary
archives_dir = %(cache_root_dir)s/archives
cached_packages_dir = %(cache_root_dir)s/packages
compiled_packages_dir = %(cache_root_dir)s/packages
debug_packages_dir = %(cache_root_dir)s/packages-debug
lib_dir = /var/lib/inary
history_dir = %(lib_dir)s/history
index_dir = %(lib_dir)s/index
info_dir = %(lib_dir)s/info
kde_dir = /usr
lock_dir = /run/lock/subsys
log_dir = /var/log
packages_dir = %(lib_dir)s/package
qt_dir = /usr
tmp_dir = /var/inary

[general]
architecture = i686
autoclean = False
bandwidth_limit = 0
allowrfp=False
destinationdirectory = /
distribution = SulinOS
distribution_release = 2019
distribution_id = s19
# ftp_proxy = None
# http_proxy = None
# https_proxy = None
allow_docs=True
allow_pages=True
allow_dbginfo=True
allow_static=False
ignore_delta = False
ignore_safety = False
ssl_verify = True
gpg_verify = False
package_cache = False
package_cache_limit = 0


code:
[build]
build_host = localhost
# buildhelper = None
commonflags = -mtune=generic -O3 -s -pipe -fstack-protector -D_FORTIFY_SOURCE=2 -g -fPIC
cflags = %(commonflags)s
cxxflags = %(commonflags)s
host = x86_64-pc-linux-gnu
cc = %(host)s-gcc
cxx = %(host)s-g++
compressionlevel = 9
enableSandbox = False
fallback = https://master.dl.sourceforge.net/project/sulinos/archives
generateDebug = True
jobs = -j5
ldflags = -Wl,-O1 -Wl,-z,relro -Wl,--hash-style=gnu -Wl,--as-needed -Wl,--sort-common
#makeflags =
ignored_build_types = pae

[directories]
cache_root_dir = /var/cache/inary
archives_dir = %(cache_root_dir)s/archives
cached_packages_dir = %(cache_root_dir)s/packages
compiled_packages_dir = %(cache_root_dir)s/packages
debug_packages_dir = %(cache_root_dir)s/packages-debug
lib_dir = /var/lib/inary
history_dir = %(lib_dir)s/history
index_dir = %(lib_dir)s/index
info_dir = %(lib_dir)s/info
kde_dir = /usr
lock_dir = /run/lock/subsys
log_dir = /var/log
packages_dir = %(lib_dir)s/package
qt_dir = /usr
tmp_dir = /var/inary

[general]
architecture = x86_64
autoclean = False
bandwidth_limit = 0
allowrfp=False
allow_docs=False
allow_pages=False
allow_dbginfo=False
allow_static=False
destinationdirectory = /
distribution = Sulin
distribution_release = 2019
distribution_id = s19
# ftp_proxy = None
# http_proxy = None
# https_proxy = None
ignore_delta = False
ignore_safety = False
ssl_verify = True
gpg_verify = False
package_cache = False
package_cache_limit = 0


code:
apache http://www.apache.org/dist/
apache http://apache.planetmirror.com.au/dist/
apache http://gd.tuwien.ac.at/infosys/servers/http/apache/dist/
apache http://apache.fastorama.com/dist/
apache http://mir2.ovh.net/ftp.apache.org/dist/
apache ftp://ftp.planetmirror.com/pub/apache/dist/
apache ftp://gd.tuwien.ac.at/pub/infosys/servers/http/apache/dist/
apache ftp://ftp.fastorama.com/mirrors/ftp.apache.org/dist/
berlios http://download.berlios.de/
berlios http://download2.berlios.de/
cpan http://search.cpan.org/CPAN/
cpan http://www.perl.com/CPAN/
cpan http://mirrors.jtlnet.com/CPAN/
cpan ftp://ftp.ncsu.edu/pub/mirror/CPAN/
cpan ftp://ftp.duke.edu/pub/perl/
gentoo http://mirror.yandex.ru/gentoo-distfiles/distfiles/
#### Gnome Mirrors #####
#   Main mirrors       #
########################
gnome http://ftp.gnome.org/pub/GNOME/sources
gnome http://ftp.unina.it/pub/linux/GNOME/sources/
gnome http://ftp.belnet.be/mirror/ftp.gnome.org/sources/
###############################################################
# Found 9 mirrors in other countries, but same continent (EU) #
###############################################################
gnome https://ftp.acc.umu.se/pub/GNOME/sources/
gnome https://mirrors.dotsrc.org/gnome/sources/
gnome https://ftp2.nluug.nl/windowing/gnome/sources/
gnome https://ftp1.nluug.nl/windowing/gnome/sources/
gnome https://fr2.rpmfind.net/linux/gnome.org/sources/
gnome http://ftp.rpmfind.net/linux/gnome.org/sources/
gnome https://ftp-stud.hs-esslingen.de/pub/Mirrors/ftp.gnome.org/sources/
gnome https://www.mirrorservice.org/sites/ftp.gnome.org/pub/GNOME/sources/
gnome https://ftp.fau.de/gnome/sources/
################################################
# Found 11 mirrors in other parts of the world #
################################################
gnome http://ftp.is.co.za/mirror/ftp.gnome.org/sources/
gnome https://muug.ca/mirror/gnome/sources/
gnome https://mirrors.ustc.edu.cn/gnome/sources/
gnome http://mirror.nbtelecom.com.br/gnome/sources/
gnome https://mirror.freemirror.org/gnome/sources/
gnome https://ftp-nyc.osuosl.org/pub/gnome/sources/
gnome http://ftp.cse.buffalo.edu/pub/Gnome/sources/
gnome https://mirror.umd.edu/gnome/sources/
gnome http://ftp.nara.wide.ad.jp/pub/X11/GNOME/sources/
gnome https://ftp-osl.osuosl.org/pub/gnome/sources/
gnome https://ftp-chi.osuosl.org/pub/gnome/sources/
gnome ftp://ftp.cse.buffalo.edu/pub/Gnome/sources/
gnu http://ftp.gnu.org/gnu/
gnu ftp://ftp.gnu.org/gnu/
gnu http://ftp.club.cc.cmu.edu/pub/gnu/
gnu http://mirrors.usc.edu/pub/gnu/
gnu http://mirrors.kernel.org/gnu/
gnu ftp://ftp.club.cc.cmu.edu/gnu/
gnu ftp://aeneas.mit.edu/pub/gnu/
gnu ftp://ftp.cse.ohio-state.edu/mirror/gnu/
gnu ftp://ftp.cs.tu-berlin.de/pub/gnu/
gnu ftp://mirrors.kernel.org/gnu/
gnu ftp://ftp.cs.ubc.ca/pub/gnu/
gnu ftp://ftp.math.uni-bremen.de/pub/gnu/
gnu ftp://ftp.informatik.rwth-aachen.de/pub/gnu/
gnu ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/ftp.gnu.org/
gnu ftp://ftp.mirror.ac.uk/sites/ftp.gnu.org/gnu/
gnu ftp://sunsite.cnlab-switch.ch/mirror/gnu/
gnu http://ftp-stud.fht-esslingen.de/pub/Mirrors/ftp.gnu.org/
gnu ftp://ftp.stacken.kth.se/pub/gnu/
gnu ftp://ftp.isy.liu.se/pub/gnu/
gnu ftp://ftp.task.gda.pl/pub/gnu/
gnu ftp://ftp.nluug.nl/pub/gnu/
gnu ftp://ftp.funet.fi/pub/gnu/prep/
gnu ftp://sunsite.icm.edu.pl/pub/gnu/
gnu ftp://ftp.freenet.de/pub/mirrors.ibiblio.org/pub/mirrors/gnu/ftp/gnu/
gnu ftp://ftp.mirror.nl/pub/mirror/gnu/
gnu ftp://ftp.esat.net/pub/gnu/
gnu ftp://ftp.mcc.ac.uk/pub/gnu/
gnu ftp://ftp.cise.ufl.edu/pub/mirrors/GNU/
gnu ftp://ftp.uninett.no/pub/gnu/
gnu ftp://ftp.duth.gr/pub/gnu/
gnu ftp://sunsite.dk/mirrors/gnu/
gnu http://mirrors.sunsite.dk/gnu/
gnu ftp://ftp.etsimo.uniovi.es/pub/gnu/
gnu ftp://ftp.sunet.se/pub/gnu/
gnu http://ftp.roedu.net/mirrors/gnu.org/
gnu ftp://ftp.forthnet.gr/pub/gnu/
gnu ftp://ftp.univie.ac.at/packages/gnu/
gnu ftp://core.ring.gr.jp/pub/GNU/
gnu ftp://ftp.cs.cuhk.edu.hk/pub/gnu/gnu/
gnu ftp://tron.um.u-tokyo.ac.jp/pub/GNU/
gnu http://ftp.azc.uam.mx/mirrors/gnu/
gnu ftp://ftp.kaist.ac.kr/gnu/
gnu ftp://ftp.chg.ru/pub/gnu/
gnu ftp://ftp.inf.utfsm.cl/pub/gnu/
gnu ftp://ftp.arnes.si/software/gnu/
gnu ftp://gnu.cs.lewisu.edu/gnu/
gnu http://ftp.wayne.edu/pub/gnu/
gnu ftp://ftp.wayne.edu/pub/gnu/
gnu http://kambing.vlsm.org/gnu/
gnu http://gd.tuwien.ac.at/gnu/gnusrc/

#### KDE Mirrors #####
# Main mirrors       #
######################

kde http://download.kde.org/
kde http://master.kde.org/
kde ftp://ftp.kde.org/pub/kde/

################################################################
# Found 24 mirrors in other countries, but same continent (EU) #
################################################################

kde http://www-ftp.lip6.fr/pub/X11/kde/
kde http://kde.mirrors.omnilance.com/
kde http://www.mirrorservice.org/sites/download.kde.org/
kde http://mirrors.ircam.fr/pub/KDE/
kde http://piotrkosoft.net/pub/mirrors/ftp.kde.org/
kde http://ct.mirror.garr.it/mirrors/KDE/
kde http://ftp.fi.muni.cz/pub/kde/
kde http://ftp.SURFnet.nl/windowing/kde/
kde http://mirrors.dotsrc.org/kde/
kde http://mirror.easyname.at/kde/
kde http://ftp.funet.fi/pub/mirrors/ftp.kde.org/pub/kde/
kde http://fr2.rpmfind.net/linux/KDE/
kde http://ftp.nluug.nl/pub/windowing/kde/
kde http://kde.mirror.anlx.net/
kde http://mirror.karneval.cz/pub/kde/
kde http://mirrors.nav.ro/kde/
kde http://ba.mirror.garr.it/mirrors/KDE/
kde http://ftp.acc.umu.se/mirror/kde.org/ftp/
kde http://mirrors.up.pt/pub/kde/
kde http://ftp.gwdg.de/pub/linux/kde/
kde http://mirrors.netix.net/kde/
kde http://ftp.icm.edu.pl/pub/unix/kde/
kde http://mirror.hs-esslingen.de/Mirrors/ftp.kde.org/pub/kde/
kde http://ftp.cc.uoc.gr/mirrors/kde/
################################################
# Found 16 mirrors in other parts of the world #
################################################
kde http://ftp.kddlabs.co.jp/pub/X11/kde/
kde http://mirror.cc.columbia.edu/pub/software/kde/
kde http://mirror.csclub.uwaterloo.ca/kde/
kde http://ftp.neowiz.com/X/KDE/
kde http://kde.c3sl.ufpr.br/
kde http://mirror.its.dal.ca/kde/
kde http://mirror.freedif.org/KDE/ftp/
kde http://mirrors.mit.edu/kde/
kde http://kde.mirrors.tds.net/pub/kde/
kde http://linorg.usp.br/kde/downloads/
kde http://mirrors.ustc.edu.cn/kde/
kde http://mirror.retentionrange.co.bw/kde/
kde http://ftp.ussg.iu.edu/kde/
kde http://mirrors.ocf.berkeley.edu/kde/
kde http://ftp.is.co.za/mirror/ftp.kde.org/
kde http://kde.freemirror.org/kde/ftp/
sourceforge http://master.dl.sourceforge.net/project/
sourceforge http://netix.dl.sourceforge.net/project/
sourceforge http://netcologne.dl.sourceforge.net/project/
sourceforge http://nchc.dl.sourceforge.net/project/
sourceforge http://liquidtelecom.dl.sourceforge.net/project/
sourceforge http://jaist.dl.sourceforge.net/project/
sourceforge http://iweb.dl.sourceforge.net/project/
sourceforge http://vorboss.dl.sourceforge.net/project/
sourceforge http://managedway.dl.sourceforge.net/project/
sourceforge http://tenet.dl.sourceforge.net/project/
sourceforge http://ufpr.dl.sourceforge.net/project/
sourceforge http://versaweb.dl.sourceforge.net/project/
sourceforge http://razaoinfo.dl.sourceforge.net/project/
sourceforge http://phoenixnap.dl.sourceforge.net/project/
sourceforge http://newcontinuum.dl.sourceforge.net/project/
sourceforge http://cfhcable.dl.sourceforge.net/project/
sourceforge http://gigenet.dl.sourceforge.net/project/
sourceforge http://excellmedia.dl.sourceforge.net/project/
sourceforge http://ayera.dl.sourceforge.net/project/
xorg http://ftp.x.org/pub/
xorg http://xorg.freedesktop.org/archive/
xorg http://mirror.sg.depaul.edu/pub/x.org/
xorg http://x.paracoda.com/pub/
xorg http://x.hostingzero.com/
xfce http://mirror.netcologne.de/xfce/
xfce http://ftp.udc.es/xfce/
xfce http://www.p0llux.be/xfce/
xfce http://archive.be.xfce.org/
xfce http://archive.be2.xfce.org/
xfce http://archive.se.xfce.org/
xfce http://xfce.mirror.uber.com.au/
xfce http://mirror.yongbok.net/X11/xfce-mirror/
xfce http://archive.al-us.xfce.org/
mate http://pub.mate-desktop.org/releases/1.16/


code:
# This file contains valid path list for epic sandbox
# and used in the build process to constrain actions.py inside
# the build directories

# Paths like /tmp allow writing to /tmp2/lala
# while /tmp/ only allows inside the /tmp directory
# ~ at the beginning of the path is replaced by epic user's home directory

# Each package has its build directory (/var/epic/pkgname) allowed by default
# And ccache directory is automatically added when that feature is enabled
# Any other extra path should be configured here

# Generic system paths needed by almost all programs
/tmp/
/var/tmp/
/var/run/utmp
/dev/tty
/dev/pts/
/dev/pty
/dev/null
/dev/zero
/dev/ptmx
/dev/shm/
/dev/full
/run/shm
/proc/
# stupid autoconf family needs /usr/lib/conftest* and /usr/lib/cf* for some conftest,
# http://sources.gentoo.org/viewcvs.py/portage/trunk/sandbox/files/sandbox/sandbox.c also permits these
/usr/lib/conftest
/usr/lib/cf
# every qt/KDE application check these
~/.qt/.qt_plugins_3.3rc.lock
~/.qt/qt_plugins_3.3rc.tmp
~/.qt/.qtrc.lock
~/.qt/.qt_designerrc.lock
/usr/qt/3/etc/settings/.qt_plugins_3.3rc.lock
/usr/qt/3/etc/settings/qt_plugins_3.3rc.tmp
/usr/qt/3/etc/settings/qt_plugins_3.3rc
/usr/qt/3/etc/settings/.qtrc.lock
/usr/qt/3/etc/settings/.qt_designerrc.lock

# FontConfig cache directory
/var/cache/fontconfig


code:
D /run/lock/files.ldb 0777 root root - -
F /run/lock/files.ldb/LOCK 0666 root root - -


code:
.. -*- coding: utf-8 -*-

%%%%%%%%%%%%%%%%%%%%
About Inary Software
%%%%%%%%%%%%%%%%%%%%

`PiSi` fork: Copyright (C) 2005 - 2011, Tubitak / UEKAE
          Licensed with GNU / General Public License version 2.

Inary fork and enhancements: Copyright (C) 2016 - 2018 Suleyman POYRAZ (Zaryob)
          License has been upgraded to version 3 of the GNU / General Public License.

.. _Pisi: https://github.com/Pardus-Linux/pisi

Bifurcated from https://github.com/Pardus-Linux/pisi

Inary package management system started to work on the pisi fork on 21-12-2016 in order \
to repair the deficiencies and errors of the existing pisi package manager and to port it \
to python3 to catch up with the latest developments in Python Programming language;
The first pisi fork (spam) was separated from the fork in terms of coding method and additional \
modules used and turned into a unique one. The name of the library has been changed from \
pisi to inary. The reason for this is to avoid conflicts with linux distributions that \
use similar infrastructure, such as `Solus`_ and  `PisiLinux`_.

.. _Solus: https://dev.sol.us/
.. _PisiLinux: https://www.pisilinux.org

The software was called inary and was made available to the public through the `gitlab`_ and `github`_ \
when it provided the appropriate conditions for the end users.

.. _github: https://github.com/SulinOS
.. _gitlab: https://gitlab.com/SulinOS

What distinguishes it from other package management systems:

  * Has dynamic file database. It is easy to follow up whether there is a change in the installed files.
  * Compared to other package managers coded with Python, it is quite fast.
  * Since all the installation script consists of python script. Since the other data of the package is stored in xml files, package building steps can be done without without entering tons of code.
  * Post-package and post-package operations (postinstall) do not cause any process confusion by separate software.

Other features:
  * It is robust and fast because it works with a database embedded in python.
  * Because it uses LZMA and XZ compression methods, it has smaller packages.
  * Simple and high-level operations with the same determination
  * It includes an API suitable for designing forend applications.
  * Terminal interface is very understandable and user-friendly.


code:
.. -*- coding: utf-8 -*-

===========
inary blame
===========

`inary blame` gives information of packager name and email from :term:`installdb` or package file.
 `blame` operation gives information under history tag rather than giving detailed information

**Using**
---------

.. code-block:: shell

          sh ~$ inary blame <package-name or package-file>
          sh ~$ inary bl <package-name or package-file>

**Options**
--------------

blame options:

            -r, --release     Blame for the given release

            -a, --all         Blame for the given release

**Example Runtime**
-----------------------------

.. code-block:: shell

            $ inary blame expat
            Name: expat, version: 2.2.6, release: 1
            Package Maintainer: Süleyman POYRAZ <zaryob.dev@gmail.com>
            Release Updater: Süleyman POYRAZ <zaryob.dev@gmail.com>
            Update Date: 2018-12-23

            First release


code:
.. -*- coding: utf-8 -*-

===========
inary build
===========

`inary build` command  is used to build binary packages from source files. \
Building operation can be made with giving :term:`pspec.xml` path or source name \
whether any source repository have been added.

**Using**
---------

Build command can be used two ways.

.. code-block:: shell

          sh ~$ inary build <pspec-file>
          sh ~$ inary bi <package-file>

and also used with giving source name (unlike emerge, only the package creations happens)

.. code-block:: shell

          sh ~$ inary build <source-package-name>
          sh ~$ inary bi <source-package-name>

**Options**
--------------

build options:
            -q, --quiet                  Run inary build operation without printing extra debug information.
            --ignore-dependency         Do not take dependency information into account.
            -O, --output-dir            Output directory for produced packages.
            --ignore-action-errors      Bypass errors from ActionsAPI.
            --ignore-safety             Bypass safety switch.
            --ignore-check              Bypass testing step.
            --create-static             Create a static package with ar files.
            -F, --package-format        Create the binary package using the given format. Use '-F help' to see a list of supported formats.
            --use-quilt                 Use quilt patch management system instead of GNU patch.
            --ignore-sandbox            Do not constrain build process inside the build folder.

The inary package manager allows you to do the building step by step (each step is specified in the :term:`actions.py` script as a function.) \
If an error occurs in any of these steps, the construction can be resumed from the step left. These step specifications is also given to build \
command as parameters.

Build Steps:
            --fetch                     Break build after fetching the source archive.
            --unpack                    Break build after unpacking the source archive, checking sha1sum and applying patches.
            --setup                     Break build after running configure step.
            --build                     Break build after running compile step.
            --check                     Break build after running check step.
            --install                   Break build after running install step.
            --package                   Create INARY package.

**Example Runtime Output**
--------------------------

.. code-block:: shell

      sh ~$ inary build
      Building source package: "expat"
      expat-2.2.6.tar.bz2 [cached]
      >>> Unpacking archive(s)...
       -> (/var/inary/expat-2.2.6-1/work) unpacked.
      >>> Setting up source...
      GNU Config Update Finished.
      GNU Config Update Finished.
      [Running Command]: ./configure                 --prefix=/usr                 --build=x86_64-pc-linux-gnu                 --mandir=/usr/share/man                 --infodir=/usr/share/info                 --datadir=/usr/share                 --sysconfdir=/etc                 --localstatedir=/var                 --libexecdir=/usr/libexec                 --disable-static
      >>> Build source...
      [Running Command]: make -j5
      >>> Installing...
      [Running Command]: make DESTDIR=/var/inary/expat-2.2.6-1/install man1dir=/usr/share/man/man1 install
      [Running Command]: install -m 0644 "doc/expat.png" /var/inary/expat-2.2.6-1/install/usr/share/doc/expat/html
      [Running Command]: install -m 0644 "doc/valid-xhtml10.png" /var/inary/expat-2.2.6-1/install/usr/share/doc/expat/html
      [Running Command]: install -m 0644 "doc/reference.html" /var/inary/expat-2.2.6-1/install/usr/share/doc/expat/html
      [Running Command]: install -m 0644 "doc/style.css" /var/inary/expat-2.2.6-1/install/usr/share/doc/expat/html
      [Running Command]: install -m 0644 "Changes" /var/inary/expat-2.2.6-1/install/usr/share/doc/expat
      [Running Command]: install -m 0644 "README.md" /var/inary/expat-2.2.6-1/install/usr/share/doc/expat
      Removing special "libtool", file: "/var/inary/expat-2.2.6-1/install/usr/lib/libexpat.la"...
      Building package: "expat"
      Creating "expat-2.2.6-1-s19-x86_64.inary"...
      Building package: "expat-devel"
      Creating "expat-devel-2.2.6-1-s19-x86_64.inary"...
      Building package: "expat-docs"
      Creating "expat-docs-2.2.6-1-s19-x86_64.inary"...
      Building package: "expat-pages"
      Creating "expat-pages-2.2.6-1-s19-x86_64.inary"...
      Keeping build directory
      *** 0 error, 1 warning


code:
.. -*- coding: utf-8 -*-

===========
inary check
===========

`inary check`  command performs a detailed analysis of the packages installed in the system. \
If there is content that is broken or deleted, or a modified config file, it allows us to see.

**Using**
---------
`check` command analyze only the named package if the argument is given...

.. code-block:: shell

          sh ~$ inary check <package-name>

...but analyzes all system if no argument is given.

.. code-block:: shell

          sh ~$ inary check

**Options**
--------------
check options:
            -c, --component              Check installed packages under given component.
            --config                     Checks only changed config files of the packages.

**Example Runtime Output**
--------------------------

.. code-block:: shell

        sh ~$ inary check
        Checking integrity of "acl"        OK
        Checking integrity of "bash"       OK
        Checking integrity of "unzip"      OK
        Checking integrity of "tar"        OK

        sh ~$ inary check acl
        Checking integrity of "acl"        OK


code:
.. -*- coding: utf-8 -*-

=======================
inary configure-pending
=======================

`inary configure-pending` is used to complete the post-install scripts of packages installed on the system, \
but did not process the scripts after installation

.. note:: This operation needs privileges and can be allowed by only super user.

**Using**
---------

`configure-pending` operation configures only the named package if the argument is given...

.. code-block:: shell

          sh ~# inary configure-pending <package-name>
          sh ~# inary cp <package-name>

...but executes post-install scripts for all pending packages if no argument is given

.. code-block:: shell

          sh ~# inary configure-pending
          sh ~# inary cp

**Example Runtime Output**
--------------------------

.. code-block:: shell

        sh ~# inary configure-pending acl bash unzip gcc binutils tar
        Configuring "acl".
        Configuring "acl" package.
        Configured "acl".
        Configuring "bash".
        Configuring "bash" package.
        Configured "bash".
        Configuring "unzip".
        Configuring "unzip" package.
        Configured "unzip".
        Configuring "tar".
        Configuring "tar" package.
        Configured "tar".


code:
.. -*- coding: utf-8 -*-

==================
inary delete-cache
==================

`inary delete-cache` allows to clean inary's temporary files package and source code archives. It does not take any other argument, or parameter.

.. note:: This operation needs privileges and can be allowed by only super user.

**Using**
---------

.. code-block:: shell

          sh ~# inary dc
          sh ~# inary delete-cache

**Example Runtime Output**
--------------------------

.. code-block:: shell

        sh ~# inary delete-cache
        Cleaning package cache "/var/cache/inary/packages"...
        Cleaning source archive cache "/var/cache/inary/archives"...
        Cleaning temporary directory "/var/inary"...
        Removing cache file "/var/cache/inary/packagedb.cache"...
        Removing cache file "/var/cache/inary/sourcedb.cache"...
        Removing cache file "/var/cache/inary/componentdb.cache"...
        Removing cache file "/var/cache/inary/groupdb.cache"...


code:
.. -*- coding: utf-8 -*-

===========
inary delta
===========

The `inary delta` command is used to create delta packages from two different release of packages.
It creates a delta package of only the changed files.

This allows us to minimize updates and reduce the data network less regularly.
allows us to use.

.. note:: delta packets are recommended only for packages created from the same version source.

**Using**
---------

.. code-block:: shell

            sh ~$ inary delta <older-release-of-package> <newer-release-of-package>

.. note: Creating `delta` packages are only available with same source packages' different releases.

**Options**
-----------

delta options:
            -t, --newest-package          Use arg as the new package and treat other arguments as old packages.
            -O, --output-dir              Output directory for produced packages.
            -F, --package-format          Create the binary package using the given format. Use '-F help' to see a list of supported formats.

**Example Runtime Output**
--------------------------

.. code-block:: shell

            sh ~$ inary delta expat-2.2.6-1-s19-x86_64.inary expat-2.2.6-2-s19-x86_64.inary
            Creating delta package: "expat-1-2-s19-x86_64.delta.inary"...


code:
.. -*- coding: utf-8 -*-

============
inary emerge
============

`inary emerge` command is used to build a source package from the source repository and to install the system.

.. note:: This operation needs privileges and can be allowed by only super user.

**Using**
---------
`emerge` operation takes an argument which is source package name.

.. code-block:: shell

          sh ~# inary emerge <package-name>
          sh ~# inary em <package-name>

**Options**
-----------

emerge options:
          -c, --component              Emerge available packages under given component
          --ignore-file-conflicts      Ignore file conflicts.
          --ignore-package-conflicts   Ignore package conflicts.
          --ignore-scom                Bypass scom configuration agent.

**Example Runtime Output**
--------------------------

.. code-block:: shell

        sh ~$ inary emerge expat
        Building source package: "expat"
        expat-2.2.6.tar.bz2 [cached]
        >>> Unpacking archive(s)...
         -> (/var/inary/expat-2.2.6-1/work) unpacked.
        >>> Setting up source...
        GNU Config Update Finished.
        GNU Config Update Finished.
        [Running Command]: ./configure                 --prefix=/usr                 --build=x86_64-pc-linux-gnu                 --mandir=/usr/share/man                 --infodir=/usr/share/info                 --datadir=/usr/share                 --sysconfdir=/etc                 --localstatedir=/var                 --libexecdir=/usr/libexec                 --disable-static
        >>> Build source...
        [Running Command]: make -j5
        >>> Installing...
        [Running Command]: make DESTDIR=/var/inary/expat-2.2.6-1/install man1dir=/usr/share/man/man1 install
        [Running Command]: install -m 0644 "doc/expat.png" /var/inary/expat-2.2.6-1/install/usr/share/doc/expat/html
        [Running Command]: install -m 0644 "doc/valid-xhtml10.png" /var/inary/expat-2.2.6-1/install/usr/share/doc/expat/html
        [Running Command]: install -m 0644 "doc/reference.html" /var/inary/expat-2.2.6-1/install/usr/share/doc/expat/html
        [Running Command]: install -m 0644 "doc/style.css" /var/inary/expat-2.2.6-1/install/usr/share/doc/expat/html
        [Running Command]: install -m 0644 "Changes" /var/inary/expat-2.2.6-1/install/usr/share/doc/expat
        [Running Command]: install -m 0644 "README.md" /var/inary/expat-2.2.6-1/install/usr/share/doc/expat
        Removing special "libtool", file: "/var/inary/expat-2.2.6-1/install/usr/lib/libexpat.la"...
        Building package: "expat"
        Creating "expat-2.2.6-1-s19-x86_64.inary"...
        Building package: "expat-devel"
        Creating "expat-devel-2.2.6-1-s19-x86_64.inary"...
        Building package: "expat-docs"
        Creating "expat-docs-2.2.6-1-s19-x86_64.inary"...
        Building package: "expat-pages"
        Creating "expat-pages-2.2.6-1-s19-x86_64.inary"...
        Keeping build directory
        Installing package "expat" version 2.2.6 release 1
        Extracting files of "expat" package.
        Adding files of "expat" to database...
        Installing "expat".


code:
.. -*- coding: utf-8 -*-

==============
inary emergeup
==============

`inary emergeup` command analyzes the upgraded source packages and it is used to build \
a source package from the source repository and to install the system. So it supplies \
to upgrade packages with building in your system.

.. note:: This operation needs privileges and can be allowed by only super user.

**Using**
---------

`emergeup` operation builds an upgrades one specific package if the argument is given...

.. code-block:: shell

          sh ~# inary emergeup <package-name>
          sh ~# inary emup <package-name>

...but upgrades all waiting source packages if no argument is given.

.. code-block:: shell

          sh ~# inary emergeup
          sh ~# inary emup

**Options**
-----------

emerge options:
          -c, --component              Emerge available packages under given component
          --ignore-file-conflicts      Ignore file conflicts.
          --ignore-package-conflicts   Ignore package conflicts.
          --ignore-scom                Bypass scom configuration agent.

**Example Runtime Output**
--------------------------

.. code-block:: shell

        sh ~$ inary emergeup expat
        Building source package: "expat"
        expat-2.2.6.tar.bz2 [cached]
        >>> Unpacking archive(s)...
         -> (/var/inary/expat-2.2.6-1/work) unpacked.
        >>> Setting up source...
        GNU Config Update Finished.
        GNU Config Update Finished.
        [Running Command]: ./configure                 --prefix=/usr                 --build=x86_64-pc-linux-gnu                 --mandir=/usr/share/man                 --infodir=/usr/share/info                 --datadir=/usr/share                 --sysconfdir=/etc                 --localstatedir=/var                 --libexecdir=/usr/libexec                 --disable-static
        >>> Build source...
        [Running Command]: make -j5
        >>> Installing...
        [Running Command]: make DESTDIR=/var/inary/expat-2.2.6-1/install man1dir=/usr/share/man/man1 install
        [Running Command]: install -m 0644 "doc/expat.png" /var/inary/expat-2.2.6-1/install/usr/share/doc/expat/html
        [Running Command]: install -m 0644 "doc/valid-xhtml10.png" /var/inary/expat-2.2.6-1/install/usr/share/doc/expat/html
        [Running Command]: install -m 0644 "doc/reference.html" /var/inary/expat-2.2.6-1/install/usr/share/doc/expat/html
        [Running Command]: install -m 0644 "doc/style.css" /var/inary/expat-2.2.6-1/install/usr/share/doc/expat/html
        [Running Command]: install -m 0644 "Changes" /var/inary/expat-2.2.6-1/install/usr/share/doc/expat
        [Running Command]: install -m 0644 "README.md" /var/inary/expat-2.2.6-1/install/usr/share/doc/expat
        Removing special "libtool", file: "/var/inary/expat-2.2.6-1/install/usr/lib/libexpat.la"...
        Building package: "expat"
        Creating "expat-2.2.6-2-s19-x86_64.inary"...
        Building package: "expat-devel"
        Creating "expat-devel-2.2.6-2-s19-x86_64.inary"...
        Building package: "expat-docs"
        Creating "expat-docs-2.2.6-2-s19-x86_64.inary"...
        Building package: "expat-pages"
        Creating "expat-pages-2.2.6-2-s19-x86_64.inary"...
        Keeping build directory
        Installing package "expat" version 2.2.6 release 2
        Extracting files of "expat" package.
        Adding files of "expat" to database...
        Installing "expat".


code:
.. -*- coding: utf-8 -*-

===========
inary fetch
===========

`inary fetch` is used to download packages from the repository. It fetchs binary packages to
working directory

**Using**
---------

.. code-block:: shell

          sh ~$ inary fetch <package-name>
          sh ~$ inary fc <package-name>

**Options**
--------------

fetch options:
          -o, --output-dir             Output directory for the fetched packages
          --runtime-deps               Download with runtime dependencies.

**Example Runtime**
-----------------------------

.. code-block:: shell

          sh ~$ inary fc expat
          "expat" package found in "core" repository.
          expat-2.2.7-2-s19-x86_64.inary (194.0 KB)


code:
.. -*- coding: utf-8 -*-

===========
inary graph
===========

`inary graph` command draws the dependency graphic between the repositories attached to the system and creates an dot file.

**Output**
----------

graph options:
            -r, --repository            Specify a particular repository.
            -i, --installed             Graph of installed packages
            --ignore-installed          Do not show installed packages.
            -R, --reverse               Draw reverse dependency graph.
            -o, --output                Dot output file

**Example Runtime Output**
--------------------------

.. code-block:: shell

            sh ~$ inary graph
            Plotting a graph of relations among all repository packages.


code:
.. -*- coding: utf-8 -*-

==========
inary help
==========

`inary help` comand gives information about all inary commands and options.

**Using**
---------

.. code-block::

              sh ~$ inary help
              sh ~$ inary ?

**Output**
---------------

.. code-block::

              sh ~$ inary help
              usage: inary [options] <command> [arguments]

              where <command> is one of:

                         add-repo (ar) - Add a repository
                            blame (bl) - Information about the package owner and release
                            build (bi) - Build INARY packages
                                 check - Verify installation
                   config-manager (cm) - Inary Config file manager.
                configure-pending (cp) - Configure pending packages
                     delete-cache (dc) - Delete cache files
                            delta (dt) - Creates delta packages
                     disable-repo (dr) - Disable repository
                           emerge (em) - Build and install INARY source packages from repository
                       emergeup (emup) - Build and upgrade INARY source packages from repository
                      enable-repo (er) - Enable repository
                            fetch (fc) - Fetch a package
                                 graph - Graph package relations
                              help (?) - Prints help for given commands
                          history (hs) - History of inary operations
                            index (ix) - Index INARY files in a given directory
                                  info - Display package information
                          install (it) - Install INARY packages
                   list-available (la) - List available packages in the repositories
                  list-components (lc) - List available components
                   list-installed (li) - Print the list of all installed packages
                      list-newest (ln) - List newest packages in the repositories
                    list-orphaned (lo) - List orphaned packages
                     list-pending (lp) - List pending packages
                        list-repo (lr) - List repositories
                     list-sources (ls) - List available sources
                    list-upgrades (lu) - List packages to be upgraded
                      rebuild-db (rdb) - Rebuild Databases
                           remove (rm) - Remove INARY packages
                  remove-orphaned (ro) - Remove orphaned packages
                      remove-repo (rr) - Remove repositories
                           search (sr) - Search packages
                      search-file (sf) - Search for a file
                      update-repo (ur) - Update repository databases
                          upgrade (up) - Upgrade INARY packages

              Use "inary help <command>" for help on a specific command.

              Options:
               --version                    : show program's version number and exit
               -h [--help]                  : show this help message and exit

               general options:
                -D [--destdir] arg          : Change the system root for INARY commands.
                -y [--yes-all]              : Assume yes in all yes/no queries.
                -u [--username] arg
                -p [--password] arg
                -L [--bandwidth-limit] arg  : Keep bandwidth usage under specified KB's.
                -v [--verbose]              : Detailed output
                -d [--debug]                : Show debugging information.
                -N [--no-color]             : Suppresses all coloring of INARY's output.


code:
.. -*- coding: utf-8 -*-

=============
inary history
=============

`inary history` command allows us to list the commands made in the past, undo \
changes made after a certain time (takeback), and create a system restore \
point (snapshot).
Basically it is inary's transactional history manager.

**Using**
---------

.. code-block:: shell

            sh ~$ inary hs
            sh ~$ inary history

**Options**
-----------

history options:
           -l, --last                  Output only the last 'n' operations.
           -s, --snapshot              Take snapshot of the current system.
           -t, --takeback              Takeback to the state after the given operation finished.

**Hints**
---------

`history` operation is not used to display only historical operations. This allows \
us to roll back operations or create a restore point at a time whenever user want.

.. note: Transactinal process will be specified in package processes.

.. note:: snapshot and takeback operations needs privileges and can be allowed by only super user.

**Example Runtime Output**
--------------------------

.. code-block:: shell

            sh ~$ inary history
            Inary Transactional History:
            Operation #1: repository update:
            Date: 2019-10-06 14:10
                * trykl


code:
.. -*- coding: utf-8 -*-

%%%%%%%%%%%%%%
Inary Commands
%%%%%%%%%%%%%%

.. toctree::
   :maxdepth: 0

   ./blame.rst
   ./build.rst
   ./check.rst
   ./configure-pending.rst
   ./delete-cache.rst
   ./delta.rst
   ./emerge.rst
   ./emergeup.rst
   ./fetch.rst
   ./graph.rst
   ./info.rst
   ./install.rst
   ./help.rst
   ./history.rst
   ./index_cmd.rst
   ./rebuild-db.rst
   ./remove.rst
   ./remove-orphaned.rst
   ./search.rst
   ./search-file.rst
   ./upgrade.rst
   ./repo-commands.rst
   ./list-commands.rst


code:
.. -*- coding: utf-8 -*-

===========
inary index
===========

`inary index` command creates an index file of repository. This command collects \
all informations in :term:`pspec.xml` and :term:`metadata.xml` from binary packages \
then accumulates this informations as an index file.

`index` operation creates index files from both of source packages and binary packages. \
But filtering is also possible.

**Using**
---------

`index` operation creates index from one directory if the argument is given...

.. code-block:: shell

          sh ~$ inary index <directory>
          sh ~$ inary ix <directory>

...but indexes all tree on working directory if no argument is given.

.. code-block:: shell

          sh ~$ inary index
          sh ~$ inary ix

**Options**
-----------
index options
          -a, --absolute-urls         Store absolute links for indexed files.
          -o, --output                Index output file
          --compression-types         Comma-separated compression types for index file
          --skip-sources              Do not index INARY spec files.
          --skip-signing              Do not sign index.

**Example Runtime Output**
--------------------------

.. code-block:: shell

          sh ~# inary graph

.. code-block:: shell

          sh ~$ inary ix
          Building index of Inary files under "."

          * Generating index tree...

           * Adding "components.xml" to index
           * Adding "distribution.xml" to index
           * Adding "groups.xml" to index

           * Adding binary packages:
             * Adding packages from directory "a"... done.
             * Adding packages from directory "b"... done.
             * Adding packages from directory "c"... done.
             * Adding packages from directory "d"... done.
             * Adding packages from directory "e"... done.
             * Adding packages from directory "f"... done.
             * Adding packages from directory "g"... done.
             * Adding packages from directory "h"... done.
             * Adding packages from directory "i"... done.
             * Adding packages from directory "j"... done.
             * Adding packages from directory "k"... done.
             * Adding packages from directory "l"... done.
             * Adding packages from directory "liba"... done.
             * Adding packages from directory "libb"... done.
             * Adding packages from directory "libc"... done.
             * Adding packages from directory "libd"... done.
             * Adding packages from directory "libe"... done.
             * Adding packages from directory "libf"... done.
             * Adding packages from directory "libg"... done.
             * Adding packages from directory "libi"... done.
             * Adding packages from directory "libj"... done.
             * Adding packages from directory "libk"... done.
             * Adding packages from directory "libl"... done.
             * Adding packages from directory "libm"... done.
             * Adding packages from directory "libn"... done.
             * Adding packages from directory "libo"... done.
             * Adding packages from directory "libp"... done.
             * Adding packages from directory "libq"... done.
             * Adding packages from directory "libr"... done.
             * Adding packages from directory "libs"... done.
             * Adding packages from directory "libt"... done.
             * Adding packages from directory "libu"... done.
             * Adding packages from directory "libv"... done.
             * Adding packages from directory "libw"... done.
             * Adding packages from directory "libx"... done.
             * Adding packages from directory "liby"... done.
             * Adding packages from directory "m"... done.
             * Adding packages from directory "n"... done.
             * Adding packages from directory "o"... done.
             * Adding packages from directory "p"... done.
             * Adding packages from directory "q"... done.
             * Adding packages from directory "r"... done.
             * Adding packages from directory "s"... done.
             * Adding packages from directory "t"... done.
             * Adding packages from directory "u"... done.
             * Adding packages from directory "v"... done.
             * Adding packages from directory "w"... done.
             * Adding packages from directory "x"... done.
             * Adding packages from directory "y"... done.
             * Adding packages from directory "z"... done.
          * Writing index file.
          * Index file written.


code:
.. -*- coding: utf-8 -*-

==========
inary info
==========

`inary info` shows detailed information including provides, dependencies, component, etc.
Unlike blame command, it allows us to see all the components written in :term:`pspec.xml`

**Using**
---------

.. code-block:: shell

          sh ~$ inary info <package-name>

**Options**
--------------

info options:
          -f, --files                 Show a list of package files.
          -c, --component             Info about the given component.
          -F, --files-path            Show only paths.
          -s, --short                 Do not show details.
          --xml                       Output in xml format.

**Example Runtime**
-----------------------------

.. code-block:: shell

            sh ~$ ianry info expat
            "expat" package is not installed.
            Package found in "trykl" repository:
            Name                : expat, version: 2.2.7, release: 2
            Summary             : XML parsing libraries
            Description         : This is expat, the C library for parsing XML, written by James Clark. Expat is a stream oriented XML parser. This means that you register handlers with the parser prior
                                  to starting the parse. These handlers are called when the parser discovers the associated structures in the document being parsed. A start tag is an example of the kind
                                  of structures for which you may register handlers.
            Licenses            : as-is
            Component           : system.base
            Provides            :
            Dependencies        :
            Distribution        : Sulin, Dist. Release: 2019
            Architecture        : x86_64, Installed Size: 753.35 KB, Package Size: 193.97 KB, install.tar.xz sha1sum: 1c3cbb71e89f2b2249c11f6042ea8bf034e3d4da
            Reverse Dependencies: mesa wayland perl-XML-Parser fontconfig dbus expat-docs gdb git polkit python3 expat-32bit expat-pages cmake python dbus-glib expat-devel

            "expat" package is not found in source repositories.


code:
.. -*- coding: utf-8 -*-

=============
inary install
=============

`inary install` command is used to installing binary packages from inary file or repository.

.. note:: This operation needs privileges and can be allowed by only super user.

**Using**
---------

.. code-block:: shell

          sh ~# inary install <package-name>
          sh ~# inary it <package-name>

**Options**
--------------

install options:
          --ignore-dependency          Do not take dependency information into account.
          --ignore-safety              Bypass safety switch.
          --ignore-scom                Bypass scom configuration agent.
          -n, --dry-run                Do not perform any action, just show what would be done.
          --reinstall                  Reinstall already installed packages.
          --ignore-check               Skip distribution release and architecture check.
          --ignore-file-conflicts      Ignore file conflicts.
          --ignore-package-conflicts   Ignore package conflicts.
          -c, --component              Install component's and recursive components' packages.
          -r, --repository             Name of the component's repository.
          -f, --fetch-only             Fetch upgrades but do not install.
          -x, --exclude                When installing packages, ignore packages and components whose basenames match pattern.
          --exclude-from               When installing packages, ignore packages and components whose basenames match any pattern contained in file.
          -s, --store-lib-info         Store previous libraries info when package is updating to newer version.

**Example Runtime**
-----------------------------

.. code-block::

          sh ~# inary it gsm
          Checking dependencies for install...
          Total size of package(s): 0.00  B / 93.87 KB
          After this operation, 389.92 KB space will be used.
          Downloading 1 / 1
          Package "gsm" found in repository "core"
          Installing 1 / 1
          Installing "gsm", version 1.0.13, release 1
          Extracting the files of "gsm"
          Adding files of "gsm" package to database...
          Installed "gsm"


code:
.. -*- coding: utf-8 -*-

=======================
Other Commands in INARY
=======================

**inary list-available**
========================

`inary list-available` commands allows to see installable packages in added repositories.

**Using**
---------

.. code-block:: shell

          sh ~# inary list-available
          sh ~# inary la

**Options**
-----------

list-available:
          -l, --long                  Show in long format
          -c, --component             List available packages under given component
          -U, --uninstalled           Show uninstalled packages only

**inary list-sources**
======================

`inary list-sources` commands allows to see source packages in added repositories.

**Using**
---------
.. code-block:: shell

          sh ~# inary list-sources
          sh ~# inary ls

**Options**
-----------

list-sources options:
          -l, --long                Show in long format

**inary list-newest**
=====================

`inary list-newest` commands allows to lastest added/updated packages in added repositories.

**Using**
---------
.. code-block:: shell

            sh ~# inary list-newest
            sh ~# inary ln

**Options**
-----------
list-newest options:
            -s, --since                 List new packages added to repository after this given date formatted as yyyy-mm-dd.
            -l, --last                  List new packages added to repository after last nth previous repository update.

**inary list-upgrades**
=======================

`inary list-upgrades` commands allows to upgrade-able packages in added repositories.

**Using**
---------
.. code-block:: shell

            sh ~# inary list-upgrades
            sh ~# inary lu

**Options**
-----------
list-upgrades options:
            -l, --long                  Show in long format.
            -c, --component             List upgradable packages under given component.
            -i, --install-info          Show detailed install info.

**inary list-installed**
========================

`inary list-installed` commands allows to see installed packages in system.

**Using**
---------
.. code-block:: shell

            sh ~# inary list-installed
            sh ~# inary li

**Options**
-----------
list-installed options:
           -b, --with-build-host        Only list the installed packages built by the given host.
           -l, --long                   Show in long format
           -c, --component              List installed packages under given component.
           -i, --install-info           Show detailed install info.

**inary list-repo**
===================

`inary list-repo` commands allows to added repositories and their information in system.

**Using**
---------
.. code-block:: shell

            sh ~# inary list-repo
            sh ~# inary lr

**inary list-orphaned**
=======================

`inary list-orphaned` commands allows to see orphaned packages in system.

**Using**
---------
.. code-block:: shell

            sh ~# inary list-orphaned
            sh ~# inary lo

**Options**
-----------
list-orphaned options:
            -a, --all                    Show all packages without reverse dependencies.
            -x, --exclude                Ignore packages and components whose basenames match pattern.

**inary list-components**
=========================

`inary list-components` commands allows to see components in repositories.

**Using**
---------
.. code-block:: shell

            sh ~# inary list-components
            sh ~# inary lc

**Options**
-----------
list-components options:
             -l, --long                  Show in long format
             -r, --repository            Name of the source or package repository


code:
.. -*- coding: utf-8 -*-

================
inary rebuild-db
================

`inary rebuild-db` command is used to rebuilding all databases including :term:`filesdb`

.. note:: This operation needs privileges and can be allowed by only super user.

**Using**
---------
.. code-block:: shell

          sh ~# inary rdb
          sh ~# inary rebuild-db

**Options**
-----------

rebuild-db options:
         -f, --files                 Rebuild files database

**Example Runtime Output**
--------------------------

.. code-block:: shell

        sh ~# inary rebuild-db
        Rebuild INARY databases? (yes/no):  y
        Creating files database...
        Adding files of "expat" package to database...
        Added files database...


code:
.. -*- coding: utf-8 -*-

=====================
inary remove-orphaned
=====================

`inary remove-orphaned` allows us to delete packages whose come as a dependency \
of any package then reverse dependencies have been deleted. That is, it automatically \
removes unneeded packages.

.. note:: This operation needs privileges and can be allowed by only super user.

**Using**
---------

.. code-block:: shell

          sh ~$ inary remove-orphaned
          sh ~$ inary ro

**Options**
--------------

remove-orphaned options:
          --ignore-dependency           Do not take dependency information into account.
          --ignore-safety               Bypass safety switch.
          --ignore-scom                 Bypass scom configuration agent.
          -n, --dry-run                 Do not perform any action, just show what would be done.
          -x, --exclude                 When removing orphaned, ignore packages and components whose basenames match pattern.

**Example Runtime**
-----------------------------

.. code-block::

        sh ~$ inary remove-orphaned
        The following list of packages will be removed in the respective order to satisfy dependencies:
        libnut libdc1394
        After this operation, 11.21 MB space will be freed.
        Removing "libnut"
        Removing files of "libnut" package from database...
        Removing files of "libnut" package from system...
        Removed "libnut"
        Removing "libdc1394"
        Removing files of "libdc1394" package from database...
        Removing files of "libdc1394" package from system...
        Removed "libdc1394"


code:
.. -*- coding: utf-8 -*-

============
inary remove
============

`inary remove` is the command to remove the package from the system.

.. note:: This operation needs privileges and can be allowed by only super user.

**Using**
---------

.. code-block:: shell

          sh ~$ inary remove <package-name>
          sh ~$ inary rm <package-name>

**Options**
--------------

remove options:
          --ignore-dependency          Do not take dependency information into account.
          --ignore-safety              Bypass safety switch.
          --ignore-scom                Bypass scom configuration agent.
          -n, --dry-run                Do not perform any action, just show what would be done.
          --purge                      Removes everything including changed config files of the package.
          -c, --component              Remove component's and recursive components' packages.

**Example Runtime**
-----------------------------

.. code-block::

            sh ~$ inary rm mjpegtools
            The following list of packages will be removed in the respective order to satisfy dependencies:
            gst-plugins-bad-dbginfo gst-plugins-bad-devel gst-plugins-bad mjpegtools-devel
            Removing "gst-plugins-bad-dbginfo"
            Removing files of "gst-plugins-bad-dbginfo" package from database...
            Removing files of "gst-plugins-bad-dbginfo" package from system...
            Removed "gst-plugins-bad-dbginfo"
            Removing "gst-plugins-bad-devel"
            Removing files of "gst-plugins-bad-devel" package from database...
            Removing files of "gst-plugins-bad-devel" package from system...
            Removed "gst-plugins-bad-devel"
            Removing "gst-plugins-bad"
            Removing files of "gst-plugins-bad" package from database...
            Removing files of "gst-plugins-bad" package from system...
            Removed "gst-plugins-bad"
            Removing "mjpegtools-devel"
            Removing files of "mjpegtools-devel" package from database...
            Removing files of "mjpegtools-devel" package from system...
            Removing "mjpegtools"
            Removing files of "mjpegtools" package from database...
            Removing files of "mjpegtools" package from system...


code:
.. -*- coding: utf-8 -*-

==============================
Managing Repositories in INARY
==============================

inary package manager can download binary packages from repositories on local and remote \
servers. It allows adding and removing package repositories with a few commands.

.. note:: Repository operations needs privileges and can be allowed by only super user.

**Adding Repository**
---------------------

Adding a repository in system making with `inary add-repo` command

.. note:: Repository url can be a file path.

**Options**
^^^^^^^^^^^

add-repo options:
          --ignore-check               Ignore repository distribution check
          --no-fetch                   Does not fetch repository index and does not check distribution match
          --at                         Add repository at given position (0 is first)

.. note: --at option can not effective now.

**Using**
^^^^^^^^^

.. code-block:: shell

          sh ~$ inary add-repo <repository-name> <repository-url>
          sh ~$ inary ar <repository-name> <repository-url>

**Hints**
^^^^^^^^^

* GPG key check is performed during the repository addition. This check action can be by-passed, if not bypass, the added repository will be deactivated

**Removing Repository**
-----------------------

Removing a repository in system making with `inary remove-repo` command

**Using**
^^^^^^^^^

.. code-block:: shell

          sh ~$ inary remove-repo <repository-name>
          sh ~$ inary rr <repository-name>

**Update Repository**
---------------------

Refreshing the repository informations can be made with `inary update-repo` command. \
It synchronizes repository information whether index's sha1sum has changed.

**Options**
^^^^^^^^^^^

update-repo options:
          --f, --force               Update database in any case

**Using**
^^^^^^^^^
`update-repo` operation refreshes given repositor(y/ies) if the argument is given...

.. code-block:: shell

          sh ~$ inary update-repo <repository-name>
          sh ~$ inary ur <repository-name>

...but refreshes all repositories if no argument is given.

.. code-block:: shell

          sh ~$ inary update-repo
          sh ~$ inary ur

**Hints**
^^^^^^^^^
* GPG key checking is also making when this process is happened. So, if you won't confirm to pass this check action your updated repository will be deactivated.
* Disable repositories will not updated unless otherwise specified.

**Changing Activity of a Repository**
-------------------------------------

There are two types of repository in the system:
* Enable Repositories: added repositories are enabled by default.
* Disable Repositories: if a GPG key error is occurred while adding/updating a repository, or, if the user requests this, the repositories are deactivated.

**Enabling Repository**
^^^^^^^^^^^^^^^^^^^^^^^

`inary enable-repo` command is used to activate a repository which has already deactivated.

.. code-block:: shell

          sh ~$ inary enable-repo <repository-name>
          sh ~$ inary er <repository-name>

**Disabling Repository**
^^^^^^^^^^^^^^^^^^^^^^^^

`inary disable-repo` command is used to deactivate a repository.

.. code-block:: shell

          sh ~$ inary disable-repo <repository-name>
          sh ~$ inary dr <repository-name>


code:
.. -*- coding: utf-8 -*-

=================
inary search-file
=================

`inary search-file` command is used to search files from :term:`installdb`. It allows us \
to determine which package contains a given filename. It allows regex inside of it. So, \
just one keyword is enough to searching, in order to allows regex script.

**Using**
---------

.. code-block:: shell

          sh ~$ inary search-file <file-name>
          sh ~$ inary sf <file-name>

**Options**
--------------

search-file options:
          -l, --long                   Show in long format.
          -q, --quiet                  Show only package name.

**Example Runtime**
-----------------------------

.. code-block::

        sh ~$ inary search-file expat.h
        Searching for "expat.h"
        Package "expat-devel" has file "/usr/include/expat.h"
        Package "python3-devel" has file "/usr/include/python3.7m/pyexpat.h"
        Package "python-devel" has file "/usr/include/python2.7/pyexpat.h"


code:
.. -*- coding: utf-8 -*-

============
inary search
============

`inary search` command allows to search from package names and summary.

**Using**
---------

.. code-block:: shell

          sh ~$ inary search <package-name>
          sh ~$ inary sr <package-name>

**Options**
--------------

search options:
          -l, --language                Summary and description language.
          -r, --repository              Name of the source or package repository.
          -i, --installdb               Search in installdb.
          -s, --sourcedb                Search in sourcedb.
          -c, --case-sensitive          Case sensitive search.
          --name                        Search in the package name.
          --summary                     Search in the package summary.
          --description                 Search in the package description.

**Example Runtime**
-----------------------------

.. code-block::

          sh ~$ inary search expa
          expat           - XML parsing libraries
          expat-32bit     - 32-bit shared libraries for expat
          expat-devel     - Development files for expat
          expat-docs      - Documentation for expat package.
          expat-pages     - ManPages for expat package.
          perl-XML-Parser - A Perl extension interface to James Clark's XML parser, expat


code:
.. -*- coding: utf-8 -*-

=============
inary upgrade
=============

`inary upgrade` command allows to upgrade new release of installed packages.

**Using**
---------

`upgrade` operation upgrades specific one of package if the argument is given...

.. code-block:: shell

          sh ~$ inary upgrade <package-name>
          sh ~$ inary up <package-name>

...but upgrades all new releases if no argument is given.

.. code-block:: shell

          sh ~$ inary upgrade
          sh ~$ inary up

**Options**
--------------

upgrade options:
          --ignore-dependency           Do not take dependency information into account.
          --ignore-safety               Bypass safety switch.
          --ignore-scom                 Bypass scom configuration agent.
          -n, --dry-run                 Do not perform any action, just show what would be done.
          --security-only               Security related package upgrades only.
          -b, --bypass-update-repo      Do not update repositories.
          --ignore-file-conflicts       Ignore file conflicts.
          --ignore-package-conflicts    Ignore package conflicts.
          -c, --component               Upgrade component's and recursive components' packages.
          -r, --repository              Name of the to be upgraded packages' repository.
          -f, --fetch-only              Fetch upgrades but do not install.
          -x, --exclude                 When upgrading system, ignore packages and components whose basenames match pattern.
          --exclude-from                When upgrading system, ignore packages and components whose basenames match any pattern contained in file.
          -s, --compare-sha1sum         Compare sha1sum repo and installed packages.

**Example Runtime**
-----------------------------

.. code-block::

          sh ~# inary up
          Updating repositories.
          Updating package repository: "core"
          No signature found for "/repo/SulinRepository/inary-index.xml"
          Package database updated.
          Checking dependencies for install...
          The following packages will be upgraded:
          libsoup  libsoup-devel
          Total size of package(s): 0.00  B / 410.70 KB
          After this operation, -4160.00  B space will be freed.
          Downloading 1 / 2
          Package "libsoup" found in repository "core"
          Downloading 2 / 2
          Package "libsoup-devel" found in repository "core"
          Installing 1 / 2
          Installing "libsoup", version 2.68.1, release 2
          Upgrading to new distribution release.
          Extracting the files of "libsoup"
          Removing files of "libsoup" package from database...
          Adding files of "libsoup" package to database...
          Upgraded "libsoup"
          Installing 2 / 2
          Installing "libsoup-devel", version 2.68.1, release 2
          Upgrading to new distribution release.
          Extracting the files of "libsoup-devel"
          Removing files of "libsoup-devel" package from database...
          Adding files of "libsoup-devel" package to database...
          Upgraded "libsoup-devel"


code:
# -*- coding: utf-8 -*-
#
# import os
# import sys
# sys.path.insert(0, os.path.abspath('.'))

# -- Project information -----------------------------------------------------

import sys
import os

# pip install sphinx_rtd_theme
# import sphinx_rtd_theme
# html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]

# General substitutions.
project = 'Inary'
copyright = "2016-2019 Zaryob"

# The default replacements for |version| and |release|, also used in various
# other places throughout the built documents.
#
# The short X.Y version.
version =  '1.2_alpha'
# The full version, including alpha/beta/rc tags.
release = '1.2_alpha'

# General configuration
# ---------------------

# Add any Sphinx extension module names here, as strings.
# They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = ['sphinx.ext.autodoc',
              'sphinx.ext.intersphinx',
              'sphinx.ext.todo',
              'sphinx.ext.githubpages',
]
# Later on, add 'sphinx.ext.viewcode' to the list if you want to have
# colorized code generated too for references.

# Add any paths that contain templates here, relative to this directory.
templates_path = ['.templates']

# The suffix of source filenames.
source_suffix = '.rst'

# The master toctree document.
master_doc = 'index'

# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
# today = ''
# Else, today_fmt is used as the format for a strftime call.
today_fmt = '%B %d, %Y'

# List of documents that shouldn't be included in the build.
# unused_docs = []

# List of directories, relative to source directories, that shouldn't be
# searched for source files.
# exclude_dirs = []

# A list of glob-style patterns that should be excluded when looking
# for source files.
exclude_patterns = ['modules']

# The reST default role (used for this markup: `text`) to use for all
# documents.
# default_role = None

# If true, '()' will be appended to :func: etc. cross-reference text.
# add_function_parentheses = True

# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
# add_module_names = True

# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
# show_authors = False

# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'

highlight_language = 'YAML+Jinja'

# Substitutions, variables, entities, & shortcuts for text which do not need to link to anything.
# For titles which should be a link, use the intersphinx anchors set at the index, chapter, and
# section levels, such as  qi_start_:
rst_epilog = """
"""

# Options for HTML output
# -----------------------

# -- Options for HTML output -------------------------------------------------

# The theme to use for HTML and HTML Help pages.  See the documentation for
# a list of builtin themes.
#

html_theme = 'neo_rtd_theme'
import sphinx_theme
html_theme_path = [sphinx_theme.get_html_theme_path()]

#html_theme_path = ['../_themes']
#html_theme = 'highlight'
#html_short_title = 'Inary Documentation'

# The style sheet to use for HTML and HTML Help pages. A file of that name
# must exist either in Sphinx' static/ path, or in one of the custom paths
# given in html_static_path.
# html_style = 'solar.css'

# The name for this set of Sphinx documents.  If None, it defaults to
# "<project> v<release> documentation".
html_title = 'Inary Documentation'

# A shorter title for the navigation bar.  Default is the same as html_title.
html_short_title = "Inary Documentation"

# The name of an image file (within the static path) to place at the top of
# the sidebar.
# html_logo = None

# The name of an image file (within the static path) to use as favicon of the
# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
html_favicon = 'images/favicon.ico'

# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
# html_static_path = ['.static']

# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
html_last_updated_fmt = '%b %d, %Y'

# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
# html_use_smartypants = True

# Custom sidebar templates, maps document names to template names.
# html_sidebars = {}

# Additional templates that should be rendered to pages, maps page names to
# template names.
# html_additional_pages = {}

# If false, no module index is generated.
# html_use_modindex = True

# If false, no index is generated.
# html_use_index = True

# If true, the index is split into individual pages for each letter.
# html_split_index = False

# If true, the reST sources are included in the HTML build as _sources/<name>.
html_copy_source = False

# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it.  The value of this option must be the
# base URL from which the finished HTML is served.
html_use_opensearch = 'true'

# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
html_file_suffix = '.html'

# Output file base name for HTML help builder.
htmlhelp_basename = 'Poseidodoc'

# Options for LaTeX output
# ------------------------

# The paper size ('letter' or 'a4').
# latex_paper_size = 'letter'

# The font size ('10pt', '11pt' or '12pt').
# latex_font_size = '10pt'

# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, document class
# [howto/manual]).
latex_documents = [
    ('index', 'ansible.tex', 'Ansible 2.2 Documentation', "Süleyman POYRAZ", 'manual'),
]

source_suffix = {
    '.rst': 'restructuredtext',
    '.txt': 'restructuredtext',
    '.md': 'markdown',
}

# The name of an image file (relative to this directory) to place at the top of
# the title page.
# latex_logo = None

# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
# latex_use_parts = False

# Additional stuff for the LaTeX preamble.
# latex_preamble = ''

# Documents to append as an appendix to all manuals.
# latex_appendices = []

# If false, no module index is generated.
# latex_use_modindex = True

autoclass_content = 'both'


code:
.. -*- coding: utf-8 -*-

.. _glossary:

Glossary
========

.. glossary::

    installdb
      One of the database used in inary. In this database is created automatically with information of installed packages, their files, their dependency and provides

    filesdb
      One of database used in inary. In this database is created first run of inary and updates regulary. It contains files' paths, sha1sum and permissions of packages.

    pspec.xml
      This file is a part of source packages. It contains specific details about package.

    actions.py
      This file is instruction of building.

    metadata.xml
      This file generates automatically from :term:`pspec.xml`. It includes some details under Package tag in :term:`pspec.xml`.

    files.xml
      This file contains all details about files which included in package.


code:
.. -*- coding: utf-8 -*-

%%%%%%%%%%%%%%
Inary Handbook
%%%%%%%%%%%%%%

Welcome to inary documentation.

This documentation contains information about inary package management for everyone, \
from end users to developers, even though you won't read it.

.. _an_introduction: Documentation Tree

.. toctree::
   :maxdepth: 2

   about.rst
   installation.rst
   commands/index.rst
   faqs.rst
   glossary.rst

Bu belgeleme AGPL-3 ile lisanslanmıştır.


code:
.. -*- coding: utf-8 -*-

%%%%%%%%%%%%%%%%%%%%%
Installation of Inary
%%%%%%%%%%%%%%%%%%%%%

Installation under another distro
`````````````````````````````````

If you're using another distribution, inary can be used in two ways

* to completely switch to sulin: with inary it's easy to switch to sulin without downloading and reinstalling iso
* to install programs in your userspace: Like brew package manager

Use to switch to Sulin from another distro
------------------------------------------

.. code-block:: shell

    sh ~# git clone https://github.com/SulinOS/inary.git
    sh ~# cd inary
    sh ~# python3 setup.py install
    sh ~# cd ..
    sh ~# git clone https://github.com/SulinOS/switch-sulin.git
    sh ~# cd switch-sulin
    sh ~# ./switch-sulin --interactive
    sh ~# inary rdb
    sh ~# inary cp
    sh ~# shutdown -r now

Brew-Like using
---------------

.. code-block:: shell

    sh ~$ mkdir ~/.inary
    sh ~$ git clone https://github.com/SulinOS/inary.git
    sh ~$ python3 setup.py build
    sh ~$ python3 setup.py install --root=~/.inary
    sh ~$ python3 scripts/inary-profile select brew-like
    sh ~$ inary rdb

Installation on SulinOS
```````````````````````
In the distribution of Sulin, Inary comes  preloaded.

.. note:: you can install inary fallowing steps to installing any other distro, but this could break the preloaded inary package.

Upgrade inary
`````````````
Inary allows self-updating...

.. code-block:: shell

    sh ~$ inary ur
    sh ~$ inary up inary

...or you can also upgrade it from exist cloned repository

.. code-block:: shell

    sh ~# cd inary
    sh ~# git pull
    sh ~# python3 setup.py install

Package Post install Processes
``````````````````````````````
For inary package management system, Comar has been forked and developed  and scom \
is a former inary dependency and contains pisi package configuration scripts.

Unless otherwise specified (scom script running can be ignored with using `--ignore-scom` parameter), \
scom scripts will be executed after package installation.

However, unlike in the past, existing inary allows packet processing without using scom. \
In this case, the configuration after the installation of the packages is left entirely \
to the users hand.