libalpm
Arch Linux Package Manager Library

Functions to manipulate libalpm transactions More...

Collaboration diagram for Transaction:

Enumerations

enum  alpm_transflag_t {
  ALPM_TRANS_FLAG_NODEPS = 1 , ALPM_TRANS_FLAG_NOSAVE = (1 << 2) , ALPM_TRANS_FLAG_NODEPVERSION = (1 << 3) , ALPM_TRANS_FLAG_CASCADE = (1 << 4) ,
  ALPM_TRANS_FLAG_RECURSE = (1 << 5) , ALPM_TRANS_FLAG_DBONLY = (1 << 6) , ALPM_TRANS_FLAG_NOHOOKS = (1 << 7) , ALPM_TRANS_FLAG_ALLDEPS = (1 << 8) ,
  ALPM_TRANS_FLAG_DOWNLOADONLY = (1 << 9) , ALPM_TRANS_FLAG_NOSCRIPTLET = (1 << 10) , ALPM_TRANS_FLAG_NOCONFLICTS = (1 << 11) , ALPM_TRANS_FLAG_NEEDED = (1 << 13) ,
  ALPM_TRANS_FLAG_ALLEXPLICIT = (1 << 14) , ALPM_TRANS_FLAG_UNNEEDED = (1 << 15) , ALPM_TRANS_FLAG_RECURSEALL = (1 << 16) , ALPM_TRANS_FLAG_NOLOCK = (1 << 17)
}
 Transaction flags. More...
 

Functions

int alpm_trans_get_flags (alpm_handle_t *handle)
 Returns the bitfield of flags for the current transaction.
 
alpm_list_talpm_trans_get_add (alpm_handle_t *handle)
 Returns a list of packages added by the transaction.
 
alpm_list_talpm_trans_get_remove (alpm_handle_t *handle)
 Returns the list of packages removed by the transaction.
 
int alpm_trans_init (alpm_handle_t *handle, int flags)
 Initialize the transaction.
 
int alpm_trans_prepare (alpm_handle_t *handle, alpm_list_t **data)
 Prepare a transaction.
 
int alpm_trans_commit (alpm_handle_t *handle, alpm_list_t **data)
 Commit a transaction.
 
int alpm_trans_interrupt (alpm_handle_t *handle)
 Interrupt a transaction.
 
int alpm_trans_release (alpm_handle_t *handle)
 Release a transaction.
 

Add/Remove packages

These functions remove/add packages to the transactions

int alpm_sync_sysupgrade (alpm_handle_t *handle, int enable_downgrade)
 Search for packages to upgrade and add them to the transaction.
 
int alpm_add_pkg (alpm_handle_t *handle, alpm_pkg_t *pkg)
 Add a package to the transaction.
 
int alpm_remove_pkg (alpm_handle_t *handle, alpm_pkg_t *pkg)
 Add a package removal to the transaction.
 

Detailed Description

Functions to manipulate libalpm transactions

Transactions are the way to add/remove packages to/from the system. Only one transaction can exist at a time.

The basic workflow of a transaction is to:

A transaction can be released at any time. A transaction does not have to be committed.

Enumeration Type Documentation

◆ alpm_transflag_t

Transaction flags.

Enumerator
ALPM_TRANS_FLAG_NODEPS 

Ignore dependency checks.

ALPM_TRANS_FLAG_NOSAVE 

Delete files even if they are tagged as backup.

ALPM_TRANS_FLAG_NODEPVERSION 

Ignore version numbers when checking dependencies.

ALPM_TRANS_FLAG_CASCADE 

Remove also any packages depending on a package being removed.

ALPM_TRANS_FLAG_RECURSE 

Remove packages and their unneeded deps (not explicitly installed).

ALPM_TRANS_FLAG_DBONLY 

Modify database but do not commit changes to the filesystem.

ALPM_TRANS_FLAG_NOHOOKS 

Do not run hooks during a transaction.

ALPM_TRANS_FLAG_ALLDEPS 

Use ALPM_PKG_REASON_DEPEND when installing packages.

ALPM_TRANS_FLAG_DOWNLOADONLY 

Only download packages and do not actually install.

ALPM_TRANS_FLAG_NOSCRIPTLET 

Do not execute install scriptlets after installing.

ALPM_TRANS_FLAG_NOCONFLICTS 

Ignore dependency conflicts.

ALPM_TRANS_FLAG_NEEDED 

Do not install a package if it is already installed and up to date.

ALPM_TRANS_FLAG_ALLEXPLICIT 

Use ALPM_PKG_REASON_EXPLICIT when installing packages.

ALPM_TRANS_FLAG_UNNEEDED 

Do not remove a package if it is needed by another one.

ALPM_TRANS_FLAG_RECURSEALL 

Remove also explicitly installed unneeded deps (use with ALPM_TRANS_FLAG_RECURSE).

ALPM_TRANS_FLAG_NOLOCK 

Do not lock the database during the operation.

Function Documentation

◆ alpm_add_pkg()

int alpm_add_pkg ( alpm_handle_t * handle,
alpm_pkg_t * pkg )

Add a package to the transaction.

If the package was loaded by alpm_pkg_load(), it will be freed upon alpm_trans_release invocation.

Parameters
handlethe context handle
pkgthe package to add
Returns
0 on success, -1 on error (pm_errno is set accordingly)

References _, alpm_trans_t::add, ALPM_ERR_TRANS_DUP_TARGET, ALPM_ERR_TRANS_NOT_INITIALIZED, ALPM_ERR_TRANS_NULL, ALPM_ERR_WRONG_ARGS, alpm_list_add(), ALPM_LOG_DEBUG, ALPM_LOG_WARNING, alpm_pkg_find(), ALPM_PKG_FROM_LOCALDB, ALPM_PKG_REASON_EXPLICIT, ALPM_TRANS_FLAG_DOWNLOADONLY, ALPM_TRANS_FLAG_NEEDED, ASSERT, CHECK_HANDLE, alpm_trans_t::flags, RET_ERR, alpm_trans_t::state, and STATE_INITIALIZED.

◆ alpm_remove_pkg()

int alpm_remove_pkg ( alpm_handle_t * handle,
alpm_pkg_t * pkg )

Add a package removal to the transaction.

Parameters
handlethe context handle
pkgthe package to uninstall
Returns
0 on success, -1 on error (pm_errno is set accordingly)

References ALPM_ERR_TRANS_NOT_INITIALIZED, ALPM_ERR_TRANS_NULL, ALPM_ERR_WRONG_ARGS, alpm_list_add(), ALPM_LOG_DEBUG, alpm_pkg_find(), ALPM_PKG_FROM_LOCALDB, ASSERT, CHECK_HANDLE, alpm_trans_t::remove, RET_ERR, alpm_trans_t::state, and STATE_INITIALIZED.

◆ alpm_sync_sysupgrade()

int alpm_sync_sysupgrade ( alpm_handle_t * handle,
int enable_downgrade )

Search for packages to upgrade and add them to the transaction.

Parameters
handlethe context handle
enable_downgradeallow downgrading of packages if the remote version is lower
Returns
0 on success, -1 on error (pm_errno is set accordingly)

References alpm_trans_t::add, ALPM_DB_USAGE_UPGRADE, ALPM_ERR_TRANS_NOT_INITIALIZED, ALPM_ERR_TRANS_NULL, alpm_list_add(), alpm_list_join(), ALPM_LOG_DEBUG, alpm_pkg_find(), ASSERT, CHECK_HANDLE, check_literal(), check_replacers(), alpm_list_t::data, alpm_list_t::next, alpm_trans_t::remove, RET_ERR, alpm_trans_t::state, and STATE_INITIALIZED.

◆ alpm_trans_commit()

int alpm_trans_commit ( alpm_handle_t * handle,
alpm_list_t ** data )

◆ alpm_trans_get_add()

alpm_list_t * alpm_trans_get_add ( alpm_handle_t * handle)

Returns a list of packages added by the transaction.

Parameters
handlethe context handle
Returns
a list of alpm_pkg_t structures

References ALPM_ERR_TRANS_NULL, ASSERT, CHECK_HANDLE, and RET_ERR.

◆ alpm_trans_get_flags()

int alpm_trans_get_flags ( alpm_handle_t * handle)

Returns the bitfield of flags for the current transaction.

Parameters
handlethe context handle
Returns
the bitfield of transaction flags

References ALPM_ERR_TRANS_NULL, ASSERT, CHECK_HANDLE, and RET_ERR.

◆ alpm_trans_get_remove()

alpm_list_t * alpm_trans_get_remove ( alpm_handle_t * handle)

Returns the list of packages removed by the transaction.

Parameters
handlethe context handle
Returns
a list of alpm_pkg_t structures

References ALPM_ERR_TRANS_NULL, ASSERT, CHECK_HANDLE, and RET_ERR.

◆ alpm_trans_init()

int alpm_trans_init ( alpm_handle_t * handle,
int flags )

Initialize the transaction.

Parameters
handlethe context handle
flagsflags of the transaction (like nodeps, etc; see alpm_transflag_t)
Returns
0 on success, -1 on error (pm_errno is set accordingly)

References ALPM_ERR_HANDLE_LOCK, ALPM_ERR_MEMORY, ALPM_ERR_TRANS_NOT_NULL, ALPM_TRANS_FLAG_NOLOCK, ASSERT, CALLOC, CHECK_HANDLE, alpm_trans_t::flags, RET_ERR, alpm_trans_t::state, and STATE_INITIALIZED.

◆ alpm_trans_interrupt()

int alpm_trans_interrupt ( alpm_handle_t * handle)

Interrupt a transaction.

Parameters
handlethe context handle
Returns
0 on success, -1 on error (pm_errno is set accordingly)

References ALPM_ERR_TRANS_NULL, ALPM_ERR_TRANS_TYPE, ASSERT, CHECK_HANDLE, RET_ERR_ASYNC_SAFE, alpm_trans_t::state, STATE_COMMITING, and STATE_INTERRUPTED.

◆ alpm_trans_prepare()

int alpm_trans_prepare ( alpm_handle_t * handle,
alpm_list_t ** data )

Prepare a transaction.

Parameters
handlethe context handle
datathe address of an alpm_list where a list of alpm_depmissing_t objects is dumped (conflicting packages)
Returns
0 on success, -1 on error (pm_errno is set accordingly)

References alpm_trans_t::add, ALPM_ERR_PKG_INVALID_ARCH, ALPM_ERR_TRANS_NOT_INITIALIZED, ALPM_ERR_TRANS_NULL, ALPM_ERR_WRONG_ARGS, alpm_list_free(), ALPM_LOG_DEBUG, ALPM_TRANS_FLAG_NODEPS, ASSERT, check_arch(), CHECK_HANDLE, alpm_trans_t::flags, alpm_trans_t::remove, RET_ERR, alpm_trans_t::state, STATE_INITIALIZED, and STATE_PREPARED.

◆ alpm_trans_release()

int alpm_trans_release ( alpm_handle_t * handle)

Release a transaction.

Parameters
handlethe context handle
Returns
0 on success, -1 on error (pm_errno is set accordingly)

References ALPM_ERR_TRANS_NULL, ALPM_TRANS_FLAG_NOLOCK, ASSERT, CHECK_HANDLE, alpm_trans_t::flags, RET_ERR, alpm_trans_t::state, and STATE_IDLE.