#deb #debian #dpkg #ubuntu #apt

deb-rust

Rust库用于构建和读取Deb软件包

3个版本

0.1.2 2023年2月4日
0.1.1 2023年1月26日
0.1.0 2023年1月25日

#539 in Unix API

每月 28 次下载

GPL-3.0-or-later

56KB
1K SLoC

deb-rust

一个用于构建和读取Deb软件包的纯Rust库。

deb-rust提供了一种易于使用的程序化接口,用于读取和写入Deb软件包。它目前仅支持二进制deb软件包。

您可以通过crates.io使用deb-rust

示例

写入

use std::fs::File;
use deb_rust::*;
use deb_rust::binary::*;

fn main() -> std::io::Result<()> {
    let mut package = DebPackage::new("example");
    
    package = package
        .set_version("0.1.0")
        .set_description("deb-rust example")
        .set_architecture(DebArchitecture::Amd64)
        .with_depend("bash")
        .with_file(DebFile::from_path(
            "target/release/example",
            "/usr/bin/example",
        )?);
        
    package.build()?.write(File::create("example.deb")?)?;
    
    Ok(())
}

读取

use std::fs;
use std::fs::File;
use deb_rust::*;
use deb_rust::binary::*;

fn main() -> std::io::Result<()> {
    let package = DebPackage::from(File::open("example.deb")?)?;
    
    let name = package.name();
    let version = package.version();
    
    for file in package.files() {
        fs::write(file.path(), file.contents())?;
    }
    
    Ok(())
}

读取和写入

use std::fs::File;
use deb_rust::*;
use deb_rust::binary::*;

fn main() -> std::io::Result<()> {
    let mut package = DebPackage::from(File::open("example.deb")?)?;

    package = package
        .set_name("rename")
        .set_description("some example idfk");
        
    package.build()?.write(File::create("new.deb")?)?;
    
    Ok(())
}

依赖项

~8–18MB
~245K SLoC