Decebal Package Manager (dpack) is a simple package manager that was designed to handle package management on Decebal Linux 0.9.0. It can install, upgrade, remove packages. It supports both precompiled packages (name-version-arch-release.tbz2) or source packages (creates and installs packages from source files). It was designed with simplicity in mind, and it provides all i need to manage packages on my Linux box and nothing more.

I used a lot of Linux distributions, and when i decided to create my own Linux distribution i thought that it would be great if my distro had its own packages manager. So i studied all package managers that came in my hand, rpm (redhat package manager), dpkg (debian package manager), pacman (arch linux packages manager), pkgutils (crux package manager) and pkgtools (slackware package manager), portage (from gentoo), and pkgsrc from netbsd. From all these packages managers portage, pkgsrc and pkgtools were the ones that i like. So i decided to create my own scripts and after a while dpack came out. It uses bash, it is easy to port, easy to mantain and i'm to lazy to write it in c.

The program is licensed under the General Public License version 2. If you don't know what i'm talking about take a look at the COPYING file that comes with this archive.

  Since all is writen in bash there is no need for compiling, but the list of dependencies is long...

 The program was tested with the following packages (same version is not really a must, but they come with Decebal Linux and since i only tested it on this distribution you should consider using these package versions):

    bash-3.0 (patchlevel 15)
    wget-1.9.1 (needed for automatic package downloading)
    rsync-2.6.3 (needed when updating the package database builds)
    gcc-3.3.4 (needed when creating packages from sources)
NOTE: dpack will automatically uses SSP (Smash Stack Protector) extensions
      for gcc if they are available. So you should have a SSP capable
      compiler. Take a look at "ssp link here" if you want to know
      more about SSP.


    Unpack the dpack-0.1.5alpha.tar.bz2 archive and run ./bootstrap.
[root@tty4:~]# tar xjf dpack-0.1.5.tar.bz2
[root@tty4:~]# cd dpack-0.1.5
[root@tty4:~/dpack-0.1.5]# ./bootsrap


    All configuration file are located in /etc/dpack. From now on when i refer to this directory will only use 'configuration directory'.

Configuration precompiled packages management

    This file is used by all the scripts in dpack, so if one variable is defined here it will be used bu both dsrc and pkg_add, ex: DOWNLOADTOOL. By default you dont need to make any modifications, but just in case i will explain what each variable does:

DATABASEDIR  - this is the directory where dpack will keep the information
               about installed packages (defaults to /var/lib/pkg)
CACHEDIR     - this the directory where dpack will keep temporary files
               like downloaded packages (defaults to /var/cache/dpack)
DOWNLOADTOOL - the tool that will be used to download files from
               the internet. you can use any download program (defaults
	       to: wget --continue --passive-ftp --tries=3 --waitretry=3)
USECOLORS    - dpack can use colors when printing messages (defaults
               to yes)

Configuration source packages management

    This file is used by dsrc when creating packages. The default settings should be ok. Anyway you can tune it if you want. If you have time you should read something about gcc optimizations and add your optimizations in this file.

PACKAGEDIR     - this is the directory where dpack will search for package build files (defaults to /usr/src/packages)
ERRORLINES     - when using dsrc without the -v (--verbose) argument no messages will be printed on the screen. set here the number of lines that you want to be printed when an error occuers (defaults to 50)
STRIPBINARIES  - normally dsrc will strip binaries. set this to make dsrc not strip them (this will increase the package size a be warned) (defaults to yes)
STRIPLIBRARIES - same as STRIPBINARIES only for libraries
MAINTAINER     - if you decide to write your own package builds and what your name to apear as the maintainer for the packages then modify this to whatever you want
RSYNCMIRROR    - this is the host (ip) that dsrc will use when it updates the packages builds database (defaults to:

And now the nice part. You can optimize your packages by modifying CFLAGS and CXXFLAGS in this file. I will explain in a few words what this means. This optimizations will make gcc use some specific functions found in your cpu, increasing the speed of compiled binaries.

-march=cpu    - this option will break compatibility with older cpu's.
                ex: -march=pentium3 will not work a pentium2

-mcpu=cpu     - will optimize the the code for cpu and keep compatibilty
                with older cpu's

Supported CPUs: pentium2, pentium3, pentium4, athlon-xp, athlon-mp,
                athlon-tbird, athlon

-O2           - activate a lot of optimization for speed and file size
-O3           - activate all -O2 optimizations and 2 more

-pipe         - will use pipes instead of temporary files, this will
                increase the compilation speed

Some examples:

CFLAGS="-march=pentium3 -O3 -pipe"
CXXFLAGS="-march=pentium3 -O3 -pipe"

Will optimize code for the pentium3 cpu (older cpus will not work).

CFLAGS="-march=i686 -mcpu=pentium3 -O3 -pipe"
CXXFLAGS="-march=i686 -mcpu=pentium3 -O3 -pipe"

Will optimize code for the pentium3 cpu and keep compatibility will
older i686 cpu's.

Configuration the update system

  This will only be available in dpack-0.1.6.


    I tried to keep it as simple as possible, so 'program --help' will show you all options and it should be self explanatory, anyhow feel free to view the man pages anytime you want. ;/
    From this point on all will be explained with examples.

Installing packages

    To install a package use the following command:

[root@tty4:~]# pkg_add ed-0.2-i686-1.tbz2

You can use the following options with pkg_add:
 -f|--force      - before installing a package pkg_add will check if the
                   package contains files that are already installed on
                   the system. using -f will skip this check.
 -d|--nodeps     - most of the packages need other packages to run correctly.
                   pkg_add will check if all dependencies are satisfied, and
                   if not it will inform you what packages you need to install.
                   you cand use -d to skip this check (this is not recommanded
                   but you control your box so do what you want).
 -p|--pretentd   - if you only want to find out what files this package will
                   install, or what dependencies it has, you should use this
                   option, it will only print actions but not run them.
 -r|--root PATH  - if you want to install packages on another system, then
                   use this option, PATH is the / for the other
                   should never use this option to install packages in /usr
                   or /opt, the PATH should be a mounted partition or another
                   hdd (ex: pkg_add -r /mnt/hdc1 package).
 -v|--verbose    - normally pkg_add will not print any messages, using this
                   option you will get informations about the current action,
                   like dependecies checks, file install and post install

It is possible to install packages directly from the web:

[root@tty4:~]# pkg_add http://some-url-here/bash-3.0-i686-1.tbz2
[root@tty4:~]# pkg_add ftp://some-url-here/bash-3.0-i686-1.tbz2

Removing packages

    To remove a package you can use the following commands:

[root@tty4:~]# pkg_del ed
[root@tty4:~]# pkg_del ed-0.2-i686-1

You can use the following options:
 -c|--cascade    - this option will remove all packages that depend on
                   the package that is about to be removed. you should only
                   use this option if you know what you are doing, the
                   removing is done without any use with care.
 -b|--nobackups  - normally pkg_del will save configuration files and any
                   other files marked as backups, using this option will make
                   pkg_del skip this step.
 -d|--nodeps     - removing a package can cause other packages not to work
                   correcly anymore or not to work at all, so pkg_del will
                   check if other packages depend on the package that is
                   about to be removed and print any dependencies that it
                   finds. using this option will make pkg_del skip this step
                   (this is not recommended).
 -p|--pretend    - this option will only show files that will be removed,
                   but will not remove them.
 -P|--preserve   - using this option will make pkg_del save the contents
                   of the package that is about to be removed in
 -r|--root       - will remove package from another filesystem (exacly as
                   ths -r option at pkg_add) and use the package database
                   entry from that filesystem.
 -v|--verbose    - will show informations about files that are deleted,
                   pre and post remove scripts and other not that usefull

Upgrading packages
  To uprade a package use the following command:

[root@tty4:~]# pkg_add -u ed-0.2-i686-2.tbz2

  The package that is upgraded needs to be installed first. All options that are presented in chapter 4.1 (Installing packages) can be used here too.

Querying the package database

  Every package installed on the system has a database entry. Since this file is not human readable you can use pkg_info to get information from it. Following options will allow you to query the package database.

 -a|--all         - show all installed packages.
 -d|--dump name   - dump the package database entry (not human readable).
 -g|--group group - show all packages that belong to group
 -i|--info name   - show information about a package
 -l|--list name   - list contents (files) of a package
 -o|--owns file   - print package that owns file
 -r|--root path   - use an alternative database (located in path)

Some examples:

Prints information about an installed package:

[root@tty4:~]# pkg_info -i ed
NAME         : ed
VERSION      : 0.2
ARCH         : i686
RELEASE      : 1
LICENSE      : GPLv2
GROUP        : base
PACKAGER     : Decebal Linux (
URL          :
DESCRIPTION  : A line-oriented text editor.
BUILD DATE   : Mon Jan 24 10:07:06 2005
INSTALL DATE : Mon Jan 24 10:07:08 2005
DEPENDS      : libc

Prints contents of an installed package:

[root@tty4:~]# pkg_info -l ed
ed /bin/
ed /bin/ed
ed /usr/
ed /usr/bin/
ed /usr/bin/red
ed /usr/share/
ed /usr/share/doc/
ed /usr/share/doc/ed-0.2/
ed /usr/share/doc/ed-0.2/ChangeLog
ed /usr/share/doc/ed-0.2/COPYING
ed /usr/share/doc/ed-0.2/INSTALL
ed /usr/share/doc/ed-0.2/NEWS
ed /usr/share/doc/ed-0.2/POSIX
ed /usr/share/doc/ed-0.2/README
ed /usr/share/doc/ed-0.2/THANKS
ed /usr/share/doc/ed-0.2/TODO
ed /usr/share/info/
ed /usr/share/info/
ed /usr/share/man/
ed /usr/share/man/man1/
ed /usr/share/man/man1/ed.1.gz
ed /usr/share/man/man1/red.1

Prints package that owns /bin/ed:

[root@tty4:~]# pkg_info -o /bin/ed
/bin/ed is owned by ed-0.2-i686-1

Building Packages

    Until now i only talked about the scripts that will manage packages in a precompiled form. It is possible to creat, install or upgrade  packages directly from source using dsrc.

To create, install (or upgrade a package) use the followin command:

[root@tty4:~]# dsrc ed
[+] building ed
    [-] checking dependencies...[ OK ]
    [-] fetching source files...[ DONE ]
    [-] checking source files integrity...[ PASSED ]
    [-] extrating source files...[ DONE ]
    [-] running build...[ DONE ]
    [-] creating package ed-0.2-i686-1.tbz2...[ OK ]
[+] installing ed...[ OK ]

This will get the sources needed to compile ed, compile them, create a package called ed-VERSION-ARCH-RELEASE.tbz2 and call pkg_add to install or upgrade the package.

Following options can be used with dsrc:

 -b|--builddeps - build missing dependencies. look at chapter 4.6.2.
 -c|--noclean   - normally dsrc will delete all work files after creating
                  the package. using this option will make dsrc to keep
                  those directories (they contain the unpacked source files
                  and the unarchived package contents). you should only
                  use this for debuggin errors.
 -C|--continue  - if somehow the build process gets interupted, then you
                  cand use this package to continue from where it left. this
                  option is only usefull if you use it together with the
                  option above. (this will only be available in v0.1.6)
 -d|--nodeps    - this option will skip all package dependencies checks, dont
                  use this option unless you know what you are doing. look
                  at chapter 4.6.2 to find out how you can resolve package
 -D|--download  - this option will only download the source files and save
                  then in $CACHEDIR (defined in dsrc.conf).
 -f|--force     - when you build a package with the -k option the package
                  will be saved in
                  using this option will make dsrc overwrite that package.
 -g|--genmd5    - if you create your own build files then use this option
                  to create a verify file for your build.
 -G|--ignoremd5 - use this option to skip the integrity (only use this if
                  you know that your sources are not corrupted).
 -i|--noinstall - normally dsrc will install or upgrade the package after
                  building it, this option will only build the package but
                  not install it.
 -I|--info name - print information about a package (information is from
                  the build file).
 -k|--keep      - after building and installing a package dsrc will delete
                  the built package, this option will make dsrc to save
                  the package in $PACKAGEDIR/group/name/package/
 -n|--nostrip   - do not strip binaries and libraries
 -o|--optimize  - optimize build. look at chapter 4.6.3
 -p|--nossp     - do not use ssp. look at chapter 4.6.4
 -P|--pretend   - only show actions, do not run them. (only in in v0.1.6)
 -r|--rmdeps    - remove installed dependencies (only in v0.1.6)
 -R|--rebuild   - rebuild a package even if it has the same version and 
                  release as the installed one.
 -r|--rmdeps    - remove installed dependencies. look at chapter 4.6.2
 -s|--syncdeps  - install dependencies using dupdate. look at chapter 4.6.2
 -u|--update    - update package build file before building it
 -w|--write dir - save package to dir. only usefull when used together with
                  -k (--keep).
 -v|--verbose   - be more verbose

In the next version (v0.1.6) you will be able to to build an entire group or the entire system using the following commands:

[root@tty4:~]# dsrc kde

Or to execluse some packages when building a group or the entire system:

[root@tty4:~]# dsrc kde#kdegames#kdevelop

If the first argument passed to dsrc is world then it will rebuild the
entire system:

[root@tty4:~]# dsrc world

Will rebuild all packages that are newer then the installed ones.

[root@tty4:~]# dsrc --rebuild world

Will rebuild all installed packages (usefull for optimizations).

When building packages all information is gathered from a build file, that is located in $PACKAGESDIR/group/name. To upgrade all package build files use the following comand:

[root@tty4:~]# dsrc --syncdb
[+] syncing package builds...[DONE]

Verbose or not

    Normally no messages are printed on the screen. If you want to see all messages from the compiling process use the -v (--verbose) option. It is recommended to use this option everytime it is possible.

Handling dependencies

    A lot of packages packages have dependencies. Dependencies can be when you build a package (and only needed during the build process) and are called BUILDTIME dependencies and dependencies need when running the programs in the package. This ones are called RUNTIME dependencies. By default dsrc will not resolve the dependencies, but you can use the follwing options to automatically resolve needed dependencies:

-b|--builddeps - this will build and install all missing dependencies.
-s|--syncdeps  - this option will install all missing dependencies using
                 dupdate (will only be available in v0.1.6)
-r|--rmdeps    - this option will remove installed dependencies (doesnt
                 matter if the deps were installed with -b or -s) (only
		 in v0.1.6)

Updating the package build file

    If you build (install) a package then the package version found in the build file will be used. If you want to build the newest package use the following command:

[root@tty4:~]# dsrc --update ed

Optimized building

    In 3.2. (Configuration source packages management) i've explained how you can optimize the packages, there is another way to optimize  packages on the fly. You can optimize packages for the running CPU (will only run on tis cpu) with the following option:

[root@tty4:~]# dsrc --optimize ed

Smash Stack Protector

    All packages created with dsrc are compiled with SSP (Smash Stack Protector) activated. This will protect the programs against undiscovered buffer overflows in C and C++. For this you need a SSP capable compiler. If your compiler does not support this then a warning will be printed but creation will continue.
    If you want to deactivate the SSP for a package use the following option:

[root@tty4:~]# dsrc --nossp ed

Creating your own package build files

    If you want to build you packages using dsrc you need to create your own build files and place them in PACKAGESDIR/group/name/build. Here are a few notes when creating a package build file:


NAME=             - this is package name
VERSION=          - the package version (this cant contain -)
ARCH=             - the architecture (CPU) (ex:i686,pentium3)
RELEASE=          - package release (releas changes in case package build
                    changes or some new patches are aplied).
URL=""            - homepage of the package
DESC=""           - short description of the package (this should not be
                    longer then 50 characters).
GROUP=            - the group where the package belongs
LICENSE=""        - license for the package (can be more licenses and must
                    be separated by spaces).
SOURCES=""        - can be a local file (must be in the files directory) or
                    a file located on a web or ftp server).
BACKUPS=""        - when upgrading or removing packages, pkg_add and pkg_del
                    save files marked as backups with .pkgbackup extension.
                    you should put files here without the leading /. if you
                    do not understand what i'm talking about take a look
                    at the example build file bellow.
BUILDTIME=""      - packages dependencies that are only needed when building
                    the package and not needed after installing the package.
RUNTIME=""        - package dependencies that are neened when installing the
                    packages. you can use only package names, or >=name-versio,
                    <=name-version or =name-version.
CONFLICTS=""      - some packages cant be installed at the same time on the
                    system so you put here the packages that this package
                    conflicts with.
REMOVES=""        - if the package conflicts with other packages, then you
                    can use this option to tell pkg_add that it should remove
                    packages listed in REPLACES
PROVIDES=""       - some packages provide more packages or virtual packages,
                    a good example would be uw-imap which provides smtp-server,
                    pop2-servr and pop3-server
build             - this is the function that will build the package (take
                    a look bellow to see how to write it)


DESC="An example build file."








build() {

  patch -p1 < foo.patch

  ./configure --prefix=/usr \
              --sysconfdir=/etc \
              --libexexecdir=/usr/sbin \
              --localstatedir=/var/lib \
  make DESTDIR=$PKG install


install_docs will install all arguments in /usr/share/doc/$NAME-$VERSION

If you write build files or find errors in the available build files
please mail them to

Updating packages
    Will only be available in dpack version 0.1.6.

Security updates

    Will only be available in dpack version 0.1.6.


    If you want any bugs please send them to (dont
forget this program is still in the early stage of development).

    Knwon bugs:

[root@tty4:~]# pkg_add -d -r /mnt/hda1 ed-0.2-i686-2.tbz2
   will not work, use the following instead:

[root@tty4:~]# pkg_dd -d --root /mnt/hda1 ed-0.2-i686-2.tbz2

[root@tty4:~]# dsrc -vki --workdir /packages ed
    will not work, use the following instaed:

[root@tty4:~]# dsrc -vki -w /mnt/hda1 ed

Supporting the project

    Read bellow:
    Send me email with features you want/need or bugs that you find. This
will help me improve the program.


    If you find a bug or add an extension please create a patch and send it
to I would apreciate if you use the same coding style.


    I need some money, or computer hardware. Creating this program needs
a lot of time and money, especially for beer.

    What to expect from future versions:

- finish update, dsrc and src
- create a console (ncurses) based interface
- create a gui (gtk) interface
- build a package from installed files
- find files that are not in any packages
- other bugfixes...

Contact information

    Yahoo messenger: praf_linuxjunker

        nick: slider or symtab

        nick: symtab

Have a nice day!!!

Decebal Linux 0.9.0 (Diurapneus)

Thank you for trying out Decebal Linux.

Decebal Linux is intented for developers (at least the 0.9 series).
Newbies can use it too...we've tried to include all sorts of packages.

With a full instalation you'll find :

As a windows user and not only :

-firefox,mozilla + flash plugin (web browsers)
-openoffice,koffice (replacements for M$ word,excel,powerpoint...)
-abiword (fast, powerfull word processor)
-gnumeric (fast, powerfull spreadsheet program)
-gimp (powerfull graphics editor)
-xmms (winamp clone)
-kde3.3.2,xfce4.2.0,openbox,fluxbox,blackbox,enlightenment,fvwm(you have
 XP,98...themes) window managers (gnome2.8 comming soon)
-xchat,kvirc (irc clients, very simmilar to mIRC)
-gaim,kopete (for yahoo,icq,msn and other IM protocols)
-mplayer (THE video player, with subtitles capabilities, codecs and
 alot of themes included)
-thunderbird,kmail (if you're used to M$ outlook, you'll find these good)
-k3b, (if you're used to nero)
-xpdf (for pdf files)
-unzip,unrar,unarj ...
-ppp (with pppconf, simmilar to dialup networking, accounts...)
-valknut (DC++ client)
-audacity (powerfull free audio editor)
-gthumb,gqview (free alternatives to acdsee)
-xsane (scanner access easy)
-xine (another video player)
-no viruses (so, no need for an antivirus)
-no crashes

Console fans, might find the following interesting :

-zgv (console picture viewer)
-links,lynx,elinks (browsers, links can run in graphics mode)
-mplayer (movies in the console :)
-cone (pine clone), mutt
-nano (pico clone), joe
-mp3blaster (mp3 player with playlist capabilities),mpg321
-irssi,BitchX (irc clients)
-centericq (yahoo,icq,msn... client)
-cdrecord (cd burning)
-ncftp (ftp client)
-mc (THE console file manager)
-mencal (very usefull)
-bc (THE calculator. amazing precision, power, SPEED)
-aumix (audio mixer)
-sysconf (not finished system configurator for decebal)

If you install Decebal as a server :

-kernel 2.6.10-grsec (with grsec/pax), (exec-shield in 0.9.0rc2)
-Smash-Stack-Protector (all packages are compiled with SSP)
-apache+ssl+php (Hardened-PHP)
-vsftpd (very secure ftp server)
-postfix (with spamassasin and clamav antivirus) - email system
-dovecot (secure imap and pop3 servers with SSL)
-openssh (3.9p1)
-bind (9.3.0 - runs default in chroot)
-dhcpd and dhcp clients

If you are a programmer :

-anjuta (Integrated Development Enviroment)
-bluefish (advanced HTML editor)
-clisp (will be available in 0.9.0rc2)
-gcc [ gcc (GCC) 3.3.4 (Smash Stack Protector v3.3.2_3) ]
-perl (5.8.6)

If you're used to Linux ...

Decebal Linux has its own package manager. Its called dpack and is
able to recompile each package (the whole system or just a group
in 0.9.0rc2) with dsrc. For this you need a 'build' file. All build
files are found in /usr/src/packages
dsrc will download the sources (if they're not found on the system)
and compile the package for you. 'dsrc --help' is always good.
Whats the point of compiling the packages ? optimisation. Each
compiled package will be optimised for your system and will run faster.
How do you compile (and install) a package ? 'dsrc package' (eg. dsrc bash)
As a developer, please take a look at the package builds. You'll
probably find them _very_ easy to write/maintain.

If you dont want to compile the packages (its time consuming) you
can installed precompiled binaries. A Decebal precompiled packages looks
like this : name-version-arch-release.tbz2
Also, remember that Decebal has packages precompiled for i686, this
means that it wont run on lower architectures older than Pentium2.
We're looking towards making an instalation CD, which will compile
the system on any architecture >=i386

So, if you want to install a precompiled package,
  pkg_add package.tbz2
and 'pkg_add --help' is your friend.

Removing a package, is very easy, 'pkg_del package' (eg. pkg_del mencal)

Information about a package, 'pkg_info package' (eg. pkg_info mencal)

Note that dpack is still in development (version 0.1.5)...a known bug
is its parameters parsing function.
instead of 'dsrc -vgkiR --write /dir package' use :
           'dsrc -vgkiR -w /dir package'


Along with the dpack package manager, Decebal Linux comes with a system
configuration tool called sysconf (version 0.1). Its made using dialog,
you can even use the mouse to configure Decebal (only console at this
stage of development, plan to use Xdialog in the future, or gtk...)

At this stage of development, it is capable to configure the network,
some daemons (vsftp, inetd), login configuration, console settings,
users configuration...

Its modular, and you can run each module by its own like this :
'sysconf network'

'sysconf ppp'

'sysconf howto'
(for browsing the howto's)

Use 'sysconf --help' for more info.


About the system initialisation, we can say that its a combination of
bsdinit and sysV-init.
All services are found in /etc/rc.d
The runlevels can be found in /etc/runlevel.d
Also, take a look at /etc/conf.d

You can modify these files manually (very easy, no linux or programming
skills required) or you can use the frontend we've included.
Its called 'decebal', some exemples :

'decebal start sshd'

'decebal add sshd' - will add sshd to the current runlevel (will be
started at the next boot)

'decebal add sshd 1' - adds sshd to runlevel 1

'decebal show' - shows the services that current runlevel starts

'decebal show 1' - shows the services that start in runlevel 1

'decebal sysinit ' - sets the booting init type, where type can be :
  simple - all messages are echoed to stdout
  normal - print success, failure...
  color  - print success, failure...using colors


We've tried to keep the configuration files as simple as possible.
In simplicity lies the power. If you're a linux guru (or just familiar
with linux) you can modify everything by your own. If you are a linux
newbie, you can use sysconf (or another) configuration tool.
Whats the point of complicating things when they can be left simple ?


We seek help in further developing Decebal Linux.
currently we're looking for :
-graphics (themes for kde, gnome, grub, lilo, homepage...)
-security tips and tricks
-package builds (most important)
-ports (for i586, ppc,...)
-alot of feedback
-financial help (donations or other)
-hardware (old or new, good or bad...)
-web developers (no flash)
-developers (sysconf modules, gtk stuff, anything you can imagine...)


What to expect from Decebal in the future ?

-live cds
-bug fixes
-more packages
-maybe a cd with linux games
-server releases


If you find bugs, have sugestions, want to thank of flame us,

You can find us on irc, on (and undernet)

Remember to visit

Have a lot of fun.

  • What is your reaction?
  • powered by Verysign
  • like
  • unmoved
  • amused
  • excited
  • angry
  • sad
TENDINTA  |  1.000.000 de cursanti inscrisi la cursul gratuit - Introducere in Linux (LF...
Utilizator Linux - Solus OS, pasionat de calatorii.
1639 articole

  • Comenteaza
  • powered by Verysign

Nici un comentariu inca. Fii primul!