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

arch中pacman的使用的更多相关文章

  1. ARCH Linux pacman 包管理器出错总结

    最在使用ARCH的时候使用命令: sudo pacman -S Ruby 终端报错: error: could not open file /var/lib/pacman/sync/apricity- ...

  2. Arch Linux pacman 与其他发行版操作比较

    原文:https://wiki.archlinux.org/index.php/Pacman/Rosettahttps://old-en.opensuse.org/Software_Managemen ...

  3. arch中yaourt的安装和使用

    yaourt-Yet AnOther User Repository Tool Yaourt是archlinux方便使用的关键部件之一,但没有被整合到系统安装中的工具.建议在装完系统重启之后,更新完p ...

  4. vmware10中arch使用遇到的一些问题

    xfce4中安装中文输入法fcitx step 1  #pacman -S fcitx-im setp 2 在~/.xinitrc中添加如下内容: export LC_ALL=zh_CN.UTF-8e ...

  5. Arch Linux之pacman调用axel多线程加速下载

    转载自 奶牛博客 本来感觉Arch Linux用个国内的源就很给力了,可是到了学校移动的cmcc-edu超级不稳定,而且单线程速度就二三十k,无奈,开多线程下载.在Ubuntu下面可以用apt-fas ...

  6. Arch Linux 安装、配置、美化和优化

    国庆假期玩了下Arch Linux,发现这货跟Ubuntu之流相差甚远,甚难调教,而且安裝过程全命令行,会有各种问题,各种知识... --- 安装引导器--- -------------------- ...

  7. vBox Arch UEFI LVM安装

    Table of Contents 介绍 配置 基础 VirtualBox配置 安装准备 基础 分区 格式化 挂载 安装 选择镜像 安装基本系统 配置 fstab chroot 一些配置 lvm2 网 ...

  8. Arch Linux安装后的一些初始设置简介

    配置有线网络. 没网络的时候,可以直接设定ip应急,后面 netctl 才是正规设置: # ip addr add 192.168.0.100/24 dev enp0s4# ip link set d ...

  9. arch linux 安装指南

    (如果不想折腾arch linux,推荐直接使用 manjaro:  https://manjaro.org/ ) 1.安装准备 Arch Linux 能在任何内存空间不小于 512MB 的 x86_ ...

随机推荐

  1. navicat for mysql 10.1.7 注册码

    NAVN-LNXG-XHHX-5NOO名:组织:注册码:均为NAVN-LNXG-XHHX-5NOO 下载地址:http://www.cr173.com/soft/38153.html

  2. 普通用户如何启动WCF服务

    做Winform项目时,部署到客户机上有两个应用程序,Host和Client,在Host上运行着WCF服务供Client调用.平时现在在测试的时候都没发现有问题,但是当安装到客户的正式环境时发现服务启 ...

  3. sql sever误删数据库

    在sql sever 2008 r2中,我想把一个数据库添加到DATA中,结果发现被占用,我就打算解除占用后再进行复制,本来应该先是让数据库脱离,再复制,结果,我自作聪明地右键数据库,选择了删除,结果 ...

  4. java 文件操作知识点

    1.每个文件以一个文件路径和文件名称进行表示,在不同的操作系统环境下,文件路径的表示形式是不一样的,例如在Windows操作系统中一般的表示形式为C:\windows\system,而Unix上的表示 ...

  5. Python2爬虫获取的数据存储到MySQL中时报错"Incorrect string value: '\\xE6\\x96\\xB0\\xE9\\x97\\xBB' for column 'new' at row 1"的解决办法

    由于一直使用python3进行编码,在使用Python2时,将爬虫数据连接数据库进行存储时,出现如上的报错,经查资料 是数据库编码问题. 如下转自:http://www.cnblogs.com/liu ...

  6. 每天网络半小时(MAC数据包在哪里合并的)

    ip_deliver_local函数中函数中完成合并 听过netfilter框架中也会 因为net_filter框架需要感知到第四层的信息,但是单个数据包是无法感知到这些信息的,所以需要在netfil ...

  7. Activiti5工作流笔记三

    组任务 直接指定办理人 流程图如下: import java.util.HashMap; import java.util.List; import java.util.Map; import org ...

  8. (转)如何用U盘创建Linux系统盘

    (转)http://teliute.org/linux/TeUbt/lesson60/lesson60.html 创建一个U盘linux安装盘,用以启动系统并安装: 1.启动盘创建器 1)点击主按钮, ...

  9. 【题解】APIO2018 Duathlon 铁人两项

    首先对于给出的图建立圆方树,然后我们分类讨论每一个点作为中间的中转站出现的情况有多少种,累积到 \(ans\) 中. 对于圆点:在任意两个子树内分别选出一个节点都是合法的. 对于方点:连接向方点的点均 ...

  10. [POI2014]FAR-FarmCraft 树形DP + 贪心思想

    (感觉洛谷上题面那一小段中文根本看不懂啊,好多条件都没讲,直接就是安装也要一个时间啊,,,明明不止啊!还好有百度翻译......) 题意:一棵树,一开始在1号节点(root),边权都为1,每个点有点权 ...