zoukankan      html  css  js  c++  java
  • arch中pacman的使用

    Pacman 是archlinux 下的包管理软件。它将一个简单的二进制包格式和易用的构建系统结合了起来。不管软件包是来自官方的 Arch 库还是用户自己创建,Pacman 都能方便得管理。

    pacman -Sy abc                  #和源同步后安装名为abc的包

    pacman -S   abc                 #从本地数据库中得到abc的信息,下载安装abc包
    pacman -Sf abc                  #强制安装包abc
    pacman -Ss abc                 #搜索有关abc信息的包
    pacman -Si abc                  #从数据库中搜索包abc的信息
    pacman -Qi abc                  #列出已安装的包abc的详细信息
    pacman -Syu                      #同步源,并更新系统
    pacman -Sy                        #仅同步源
    pacman -Su                        #更新系统
    pacman -R   abc                  #删除abc包
    pacman -Rc abc                  #删除abc包和依赖abc的包
    pacman -Rsc abc                #删除abc包和abc依赖的包
    pacman -Sc                        #清理/var/cache/pacman/pkg目录下的旧包
    pacman -Scc                      #清除所有下载的包和数据库
    pacman -U   abc                 #安装下载的abs包,或新编译的abc包
    pacman -Sd abc                 #忽略依赖性问题,安装包abc
    pacman pacman -Su --ignore foo   #升级时不升级包foo
    pacman -Sg abc                  #查询abc这个包组包含的软件包

    安装和删除包

          安装和升级软件包前,先让本地的包数据库和远程的软件仓库同步是个好习惯。
      pacman -Syu
      或者
      pacman --sync --refresh
      安装或者升级单个软件包,或者一列软件包(包含依赖包),使用如下命令:
      pacman -S package_name1 package_name2
      有时候在不同的软件仓库中,一个软件包有多个版本(比如extra和testing)。你可以选择一个来安装:
      pacman -S extra/package_name
      pacman -S testing/package_name

      你也可以在一个命令里同步包数据库并且安装一个软件包:
      pacman -Sy package_name
      删除单个软件包,保留其全部已经安装的依赖关系
      pacman -R package_name
      删除指定软件包,及其所有没有被其他已安装软件包使用的依赖关系:

      pacman -Rs package_name  

    升级系统

          Pacman能够只用一个指令来升级系统中所有已安装的包。升级的时间取决于你的系统有多新。
      pacman -Su
      当然,最好做法的是将升级系统和同步仓库数据合成为一条指令:

      pacman -Syu  

    查询包数据库

      Pacman 可以用 -Q 标志搜索和查询本地包数据库。见
      pacman -Q --help
      或者更详细的 pacman(8) manpage。同步数据库可以用 -S 标志搜索和查询。或者见刚提及的 manpage 或者
      pacman -S --help

      查看详情。  

    其它用法

           Pacman是个非常广泛的包管理工具,这里只是它的一些其它主要特性。
      下载包而不安装它:
      pacman -Sw package_name
      安装一个本地包(不从源里):
      pacman -U /path/to/package/package_name-version.pkg.tar.gz
      完全清理包缓存(/var/cache/pacman/pkg):
      pacman -Scc
      重安装包(那些因为依赖关系问题而无法先删除的包):
      pacman -Sf package_name

      要了解更详细的参数开关可以pacman --help或者man pacman。

    Archlinux打包安装方法

    Arch的打包系统和别的Linux发行版不一样,用ABS系统(Arch Build System)把源代码打包成.pkg.tar.gz / .pkg.tar.xz 才能安装。

    首先下载abs(Arch Build System),修改/etc/abs.conf文件,要去掉mirror list里没有的包,一般只有core, community, and extra。然后运行abs(若出错先执行abs core然后执行abs)。

    # pacman -S abs

    # vim /etc/abs.conf

    # abs

    运行后会自动把脚本文件下载到/var/abs中。

    接下来创建一个用于编译包的目录,之所以不在/var下是防止覆盖原脚本。

    创建PKGBUILD文件,也可复制PKGBUILD模板(位于/usr/share/pacman/PKGBUILD.proto)到工作目录或复制一个类似包的PKGBUILD。

    复制要编译的脚本到创建的目录中,修改编译脚本。然后在该目录下运行:

    $ makepkg -s

    makepkg工具会寻找PKGBUILD文件,根据该文件编译并生成一个*.pkg.tar.gz的文件包,Archlinux采用pacman管理安装包。最后用pacman安装编译生成的包。

    # pacman -U  *.pkg.tar.gz

    这样就成功安装自己编译的文件了。要了解具体的编译过程,可以看下makepkg和make的工作原理。

    References.

     

    ArchWiki. Arch Build System. https://wiki.archlinux.org/index.php/Arch_Build_System

    ArchWiki. Creating Packages. https://wiki.archlinux.org/index.php/Creating_Packages

     

    一,pacman参数详细说明

    pacman -h  
    用法:  pacman <操作> [...]  
    操作:  
     pacman {-h --help}       //帮助  
     pacman {-V --version}   //查看版本  
     pacman {-D --database} <选项> <软件包>  //pacman管理数据库选项  
     pacman {-Q --query}    [选项] [软件包]    //查询安装包  
     pacman {-R --remove}   [选项] <软件包>  //删除安装包  
     pacman {-S --sync}     [选项] [软件包]      //安装安装包  
     pacman {-U --upgrade}  [选项] <文件>   //更新安装包  
      
    使用 'pacman {-h --help}' 及某个操作以查看可得的选项 

      1,pacman -D  

    pacman -D --help  
    用法:  pacman {-D --database} <选项> <软件包>  
    选项:  
     --asdeps         标记为非单独指定安装的软件包  
     --asexplicit     标记为单独指定安装的软件包  
     --config <路径>  指定另外的配置文件  
     --logfile <路径> 指定另外的日志文件  
     --noconfirm      不询问确认  
     --noprogressbar  下载文件时不显示进度条  
     --noscriptlet    不执行安装小脚本  
     -v, --verbose        循环执行  
     -- debug        显示除错信息  
     -r, --root <路径>    指定另外的安装根目录  
     -b, --dbpath <路径>  指定另外的数据库位置  
     --cachedir <目录> 指定另外的软件包缓存位置  
     --arch <架构>    设定另外的架构  

    2,pacman -Q

    pacman -Q --help  
    用法:  pacman {-Q --query} [选项] [软件包]  
    选项:  
     -c, --changelog      查看某软件包的更新日志  
     -d, --deps           列出所有作为依赖关系安装的软件包 [过滤器]  
     -e, --explicit       列出所有单独指定安装的软件包 [过滤器]  
     -g, --groups         查看某软件包组所属的所有软件包  
     -i, --info           查看软件包信息 (-ii 查看备份文件)  
     -k, --check          检查该软件包拥有的文件是否存在  
     -l, --list           列出被查询软件包的内容  
     -m, --foreign        列出没有在同步数据库时找到的已安装软件包 [过滤器]  
     -o, --owns <文件>     查询哪个软件包拥有  <文件>  
     -p, --file <软件包> 从某个软件包而不是数据库查询  
     -s, --search <regex> 搜寻符合指定字符串的已安装本地的软件包  
     -t, --unrequired     列出所有不被其他软件包要求的软件包 [过滤器]  
     -u, --upgrades       列出所有可升级的软件包 [过滤器]  
     -q, --quiet          在查询或搜索时显示较少的信息  
     --config <路径>  指定另外的配置文件  
     --logfile <路径> 指定另外的日志文件  
     --noconfirm      不询问确认  
     --noprogressbar  下载文件时不显示进度条  
     --noscriptlet    不执行安装小脚本  
     -v, --verbose        循环执行  
     -- debug        显示除错信息  
     -r, --root <路径>    指定另外的安装根目录  
     -b, --dbpath <路径>  指定另外的数据库位置  
     --cachedir <目录> 指定另外的软件包缓存位置  
     --arch <架构>    设定另外的架构  
    

     3,pacman -R

    pacman -R --help  
    用法:  pacman {-R --remove} [选项] <软件包>    
    选项:  
     -c, --cascade        删除软件包及所有的依赖于此的软件包  
     -d, --nodeps         略过依赖关系检查  
     -k, --dbonly         只删除数据库记录,不删除文件  
     -n, --nosave         同时删除配置文件  
     -s, --recursive      同时删除 (不会破坏其他软件包的) 依赖关系(-ss·也包括单独指定安装的依赖关系)  
     -u, --unneeded       同时删除不需要的 (且不会破坏其他软件包的) 依赖关系  
     --print          仅打印目标而不执行操作  
     --print-format <字符串>指定如何打印目标  
     --config <路径>  指定另外的配置文件  
     --logfile <路径> 指定另外的日志文件  
     --noconfirm      不询问确认  
     --noprogressbar  下载文件时不显示进度条  
     --noscriptlet    不执行安装小脚本  
     -v, --verbose        循环执行  
     -- debug        显示除错信息  
     -r, --root <路径>    指定另外的安装根目录  
     -b, --dbpath <路径>  指定另外的数据库位置  
     --cachedir <目录> 指定另外的软件包缓存位置  
     --arch <架构>    设定另外的架构  
    

    4,pacman -S

     pacman -S --help  
    用法:  pacman {-S --sync} [选项] [软件包]  
    选项:  
     --asdeps         作为非单独指定安装的软件包安装  
     --asexplicit     作为单独指定安装的软件包安装  
     -c, --clean          从缓存目录中删除旧软件包 (-cc 清除所有)  
     -d, --nodeps         略过依赖关系检查  
     -f,  --force          强制安装,覆盖存在冲突的文件  
     -g, --groups         查看某软件包组所属的所有软件包  
     -i, --info           查看软件包信息  
     -l, --list <软件库>    查看在该软件库中的软件包清单  
     -s, --search <regex表达式> 按照指定字符串查询远端软件库  
     -u, --sysupgrade     升级所有已安装的软件包 (-uu 可启用降级)  
     -w, --downloadonly   下载但不安装/升级软件包  
     -y, --refresh        从服务器下载新的软件包数据库  
     --needed         不重新安装已经为最新的软件包  
     --ignore <软件包>   升级时忽略某个软件包 (可多次使用)  
     --ignoregroup <软件包组>升级时忽略某个软件包组 (可多次使用)  
     --print          仅打印目标而不执行操作  
     --print-format <字符串>指定如何打印目标  
     -q, --quiet          在查询或搜索时显示较少的信息  
     --config <路径>  指定另外的配置文件  
     --logfile <路径> 指定另外的日志文件  
     --noconfirm      不询问确认  
     --noprogressbar  下载文件时不显示进度条  
     --noscriptlet    不执行安装小脚本  
     -v, --verbose        循环执行  
     -- debug        显示除错信息  
     -r, --root <路径>    指定另外的安装根目录  
     -b, --dbpath <路径>  指定另外的数据库位置  
     --cachedir <目录> 指定另外的软件包缓存位置  
     --arch <架构>    设定另外的架构
    

     5,pacman -U

    pacman -U --help  
    用法:  pacman {-U --upgrade} [选项] <文件>  
    选项:  
     --asdeps         作为非单独指定安装的软件包安装  
     --asexplicit     作为单独指定安装的软件包安装  
     -d, --nodeps         略过依赖关系检查  
     -f,  --force          强制安装,覆盖存在冲突的文件  
     -k, --dbonly         添加数据库记录,不安装或保持现存文件  
     --print          仅打印目标而不执行操作  
     --print-format <字符串> 指定如何打印目标  
     --config <路径>  指定另外的配置文件  
     --logfile <路径> 指定另外的日志文件  
     --noconfirm      不询问确认  
     --noprogressbar  下载文件时不显示进度条  
     --noscriptlet    不执行安装小脚本  
     -v, --verbose        循环执行  
     -- debug        显示除错信息  
     -r, --root <路径>    指定另外的安装根目录  
     -b, --dbpath <路径>  指定另外的数据库位置  
     --cachedir <目录> 指定另外的软件包缓存位置  
     --arch <架构>    设定另外的架构
    

    从 CD/DVD/ISO 安装软件包

    • 先挂载 CD (如果需要,替换cdromdvd或其他介质):
    # mount /mnt/cdrom
    
    如果使用的是ISO映像,先在 /mnt 建立一个目录:
    # mkdir /mnt/iso
    
    然后挂载镜像:
    # mount -t iso9660 -o ro,loop /path/to/iso /mnt/iso
    
    • 配置pacman:
    # nano -w /etc/pacman.conf
    
    • 将如下仓库信息添加到其他软件仓库(如 extra、core)之前,确保优先使用介质中的软件包:
    # 使用 cdrom 作为仓库
    [custom]
    Server = file:///mnt/cdrom/arch/pkg
    
    如果使用其他介质,记得替换 cdrom

    修改pacman.conf后,更新软件仓库即可。

    参考:

    pacman软件仓库:https://wiki.archlinux.org/index.php/Unofficial_user_repositories

    pkgbuild各个字段含义:https://wiki.archlinux.org/index.php/PKGBUILD_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%29

    pacman创建软件仓库:https://wiki.archlinux.org/index.php/Pacman_tips_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%29#.E8.87.AA.E5.BB.BA.E6.9C.AC.E5.9C.B0.E4.BB.93.E5.BA.93


  • 相关阅读:
    vue全局启用 emulateJSON 选项
    vue全局配置数据接口的根域名
    CSS实现按钮YES-NO按钮+Jquery获取按钮状态。
    Redis命令
    在js中获取 input checkbox里选中的多个值
    Python中常见字符串去除空格的方法总结
    e.target.value和this的区别
    用脚本来运行scrapy crawl ...
    生成器的两种方式
    python中ord()函数,chr()函数,unichr()函数
  • 原文地址:https://www.cnblogs.com/reddusty/p/5098028.html
Copyright © 2011-2022 走看看