---
name: "Debian::Dependency"
section: "3pm"
platform: "linux"
package: "libdebian-source-perl"
version: "0.128"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Debian::Dependency"
---

# Debian::Dependency(3pm)

dependency relationship between Debian packages

## NAME

Debian::Dependency - dependency relationship between Debian packages

## SYNOPSIS

```
                                    # simple dependency
   my $d = Debian::Dependency->new( 'perl' );
                                    # also parses a single argument
   my $d = Debian::Dependency->new('perl (>= 5.10)');
                                    # dependency with a version
   my $d = Debian::Dependency->new( 'perl', '5.10' );
                                    # dependency with version and relation
   my $d = Debian::Dependency->new( 'perl', '>=', '5.10' );
   print $d->pkg;  # 'perl'
   print $d->ver;  # '5.10'
                                    # for people who like to type much
   my $d = Debian::Dependency->new( { pkg => 'perl', ver => '5.10', profile => '!nocheck' } );
   # stringification
   print "$d"      # 'perl (>= 5.10)'
   # 'adding'
   $deps = $dep1 + $dep2;
   $deps = $dep1 + 'foo (>= 1.23)'
```

### CLASS\_METHODS

- **new()**

  Construct a new instance.

- new( { pkg =\> 'package', rel =\> '\>=', ver =\> '1.9', profile =\> '!nocheck' } )

  If a hash reference is passed as an argument, its contents are used to initialize the object. Only `"pkg"` is required.

- new( \[ { pkg =\> 'foo' }, 'bar (\<= 3)' \] );

  If an array reference is passed as an argument, its elements are used for constructing a dependency with alternatives.

- new('foo (= 42)')

  - new('foo (= 42) \| bar')

  If a single argument is given, the construction is passed to the `"parse"` constructor.

- new( 'foo', '1.4' )

  Two arguments are interpreted as package name and version. The relation is assumed to be '\>='.

- new( 'foo', '=', '42' )

  Three arguments are interpreted as package name, relation and version.

- set

  Overrides the set method from Class::Accessor. Used to convert zero versions (for example *0* or *0.000*) to void versions.

- **parse()**

  Takes a single string argument and parses it.

  Examples:

  - perl

    - perl (\>= 5.8)

    - libversion-perl (\<\< 3.4)

    - libfoo (\>= 23) \[amd64\] \<stage1 !cross\>

    ### FIELDS

- pkg

  Contains the name of the package that is depended upon

- rel

  Contains the relation of the dependency. May be any of '\<\<', '\<=', '=', '\>=' or '\>\>'. Default is '\>='.

- ver

  Contains the version of the package the dependency is about. The value is an instance of Dpkg::Version class. If you set it to a scalar value, that is given to Dpkg::Version-\>**new()**.

`"rel"` and `"ver"` are either both present or both missing.

Examples

```
    print $dep->pkg;
    $dep->ver('3.4');
```

- profile

  Contains the "restriction formulas" (build profile) of a dependency; optional.

## METHODS

- satisfies($dep)

  Returns true if *$dep* states a dependency that is already covered by this instance. In other words, if this method returns true, any package satisfying the dependency of this instance will also satisfy *$dep* ($dep is redundant in dependency lists where this instance is already present).

  *$dep* can be either an instance of the Debian::Dependency class, or a plain string.

  ```
      my $dep  = Debian::Dependency->new('foo (>= 2)');
      print $dep->satisfies('foo') ? 'yes' : 'no';             # no
      print $dep->satisfies('bar') ? 'yes' : 'no';             # no
      print $dep->satisfies('foo (>= 2.1)') ? 'yes' : 'no';    # yes
  ```

## SEE ALSO

Debian::Dependencies

## AUTHOR

- Damyan Ivanov \<dmn@debian.org\>

  ## COPYRIGHT & LICENSE

- Copyright (C) 2008,2009,2010 Damyan Ivanov \<dmn@debian.org\>

  - Copyright (C) 2019 gregor herrmann \<gregoa@debian.org\>

  This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
