Expand description
§rpm-rs
A library providing API to parse rpms as well as creating rpms from individual files.
§Example
use rpm::{
signature::pgp::{
Signer,
Verifier
}
};
use std::str::FromStr;
let raw_secret_key = std::fs::read("./test_assets/secret_key.asc")?;
let pkg = rpm::RPMBuilder::new("test", "1.0.0", "MIT", "x86_64", "some awesome package")
.compression(rpm::Compressor::from_str("gzip")?)
.with_file(
"./test_assets/awesome.toml",
rpm::RPMFileOptions::new("/etc/awesome/config.toml")
.is_config(),
)?
// file mode is inherited from source file
.with_file(
"./test_assets/awesome.py",
rpm::RPMFileOptions::new("/usr/bin/awesome"),
)?
.with_file(
"./test_assets/awesome.toml",
// you can set a custom mode and custom user too
rpm::RPMFileOptions::new("/etc/awesome/second.toml")
.mode(rpm::FileMode::regular(0o644))
.user("hugo"),
)?
.pre_install_script("echo preinst")
.add_changelog_entry("me", "was awesome, eh?", 123123123)
.add_changelog_entry("you", "yeah, it was", 12312312)
.requires(rpm::Dependency::any("wget"))
.build_and_sign(
Signer::load_from_asc_bytes(&raw_secret_key)?
)?;
let mut f = std::fs::File::create("./target/awesome.rpm")?;
pkg.write(&mut f)?;
// reading
let raw_pub_key = std::fs::read("./test_assets/public_key.asc")?;
let rpm_file = std::fs::File::open("./target/awesome.rpm")?;
let mut buf_reader = std::io::BufReader::new(rpm_file);
let pkg = rpm::RPMPackage::parse(&mut buf_reader)?;
// verifying
pkg.verify_signature(Verifier::load_from_asc_bytes(&raw_pub_key)?)?;
Modules§
Structs§
- Dependency
- Description of a dependency as present in a RPM header record.
- Empty
- Initial empty builder.
- File
Entry - User facing accessor type for a file entry with contextual information
- File
Ownership - User facing accessor type representing ownership of a file
- Header
- Lead
- Lead of an rpm header.
- RPMBuilder
- Builder pattern for a full rpm file.
- RPMFile
Entry - Describes a file present in the rpm file.
- RPMFile
Options - Description of file modes.
- RPMFile
Options Builder - RPMPackage
- A complete rpm file.
- RPMPackage
Metadata - Signature
Header Builder - base signature header builder
- With
Digest - Builder beyond the empty stage, already containing a digest.
- With
Signature - Builder already has a hash and is ready for completion.
Enums§
- Compressor
- File
Category - Declaration what category this file belongs to @todo must be bitflags
- File
Digest - File
Digest Algorithm - File
Mode - Index
Signature Tag - Index
Tag - RPMError
Constants§
- HEADER_
I18NTABLE - HEADER_
IMAGE - HEADER_
IMMUTABLE - HEADER_
MAGIC - header magic recognition (not the lead!)
- HEADER_
REGIONS - HEADER_
SIGBASE - HEADER_
SIGNATURES - HEADER_
TAGBASE - LEAD_
SIZE - lead header size
- PGPHASHALGO_
HAVAL_ 5_ 160 - PGPHASHALGO_
MD2 - PGPHASHALGO_
MD5 - PGPHASHALGO_
RIPEM D160 - PGPHASHALGO_
SHA1 - PGPHASHALGO_
SHA224 - PGPHASHALGO_
SHA256 - PGPHASHALGO_
SHA384 - PGPHASHALGO_
SHA512 - PGPHASHALGO_
TIGE R192 - RPMFILE_
CONFIG - RPMFILE_
DOC - RPMSENSE_
ANY - RPMSENSE_
EQUAL - RPMSENSE_
GREATER - RPMSENSE_
LESS - RPMTAG_
SIG_ BASE - RPM_
MAGIC - rpm magic as part of the lead header
Traits§
- Construction
Stage - A marker trait for builder stages
- Tag
- Header tag.
- Type
Name