When working with CentOS 5.2 or other RPM-based systems, package dependencies can become crucial for system maintenance. The duplicate entries you're seeing (sqlite-3.3.6-2
appearing twice) might indicate either multiple installations or a display quirk in older RPM versions.
Method 1: Using rpm -qR
rpm -qR sqlite-3.3.6-2
This command shows all direct dependencies for the specified package. The output will list:
- Required libraries (.so files)
- Other RPM packages needed
- Configuration file dependencies
Method 2: Full Dependency Tree with repoquery
yum install yum-utils
repoquery --requires --resolve sqlite
This provides a complete dependency tree, showing both direct and indirect dependencies.
The duplicate entries in rpm -qa
output can occur because:
rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" | grep sqlite
This formatted query will reveal if you're seeing different architectures (i386 vs x86_64) or genuine duplicates.
For deeper analysis, use RPM's query capabilities:
rpm -q --provides sqlite-3.3.6-2 # Shows what capabilities this package provides
rpm -q --whatrequires sqlite # Shows packages depending on SQLite
rpm -q --changelog sqlite # Review package history
Here's a sample bash script to document all dependencies for a package:
#!/bin/bash
PKG="sqlite-3.3.6-2"
echo "Dependency report for $PKG"
echo "=========================="
echo -e "\nDirect dependencies:"
rpm -qR $PKG | sort | uniq
echo -e "\nReverse dependencies (what requires this):"
rpm -q --whatrequires $PKG | sort | uniq
For CentOS 5.2 specifically, consider these additional steps:
up2date --show-deps sqlite # Alternative to yum on RHEL/CentOS 5
rpm -qpR /path/to/sqlite.rpm # For examining uninstalled packages
When running rpm -qa | grep sqlite
on CentOS 5.2, you might notice duplicate entries like:
sqlite-3.3.6-2
sqlite-3.3.6-2
This typically occurs when the package is installed in multiple architectures (e.g., i386 and x86_64) or when there are multiple installation records due to incomplete uninstalls.
To list all dependencies for an installed RPM package, use:
rpm -qR package_name
For your SQLite example:
rpm -qR sqlite-3.3.6-2
This will output all required dependencies including libraries and other packages.
For more detailed analysis, try these commands:
# Show all files in the package
rpm -ql sqlite-3.3.6-2
# Verify package integrity
rpm -V sqlite-3.3.6-2
# Show package info including dependencies
rpm -qi sqlite-3.3.6-2
For recursive dependency listing, you might need to use yum (if available):
yum deplist sqlite
Or with rpm directly:
rpm -q --requires --recursive sqlite | sort | uniq
Here's what you might see for SQLite:
libc.so.6
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)
libc.so.6(GLIBC_2.3)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Understanding dependencies is crucial when:
- Migrating servers
- Troubleshooting missing libraries
- Building container images
- Creating deployment packages