## 列出已安装过的软件包
# rpm -qa # 列出已安装过的软件包(RH, SuSE, 基于 RPM 的)
# dpkg -l # Debian, Ubuntu
# pkg_info # 列出所有已安装过的软件包(FreeBSD)
# pkg_info -W smbd # 查看 smbd 安装了那些软件包(FreeBSD)
# pkginfo # Solaris
## 添加/删除软件
前端界面:SuSE 为 yast2/yast,Red Hat 为 redhat-config-packages。
# rpm -i pkgname.rpm # 安装软件包(RH, SuSE, 基于 RPM 的)
# rpm -e pkgname # 删除软件包
### Debian
# apt-get update # 更新源列表
# apt-get install emacs # 安装 emacs 软件包
# dpkg --remove emacs # 删除 emacs 软件包
# dpkg -S file # 查找拥有该 file 的软件包
### Gentoo
Gentoo 使用 emerge 作为 "Portage" 软件包管理系统的核心。
# emerge --sync # 同步更新本地 protage 树
# emerge -u packagename # 安装或更新一个软件包
# emerge -C packagename # 删除软件包
# revdep-rebuild # 修复依赖关系的缺失
### Solaris
<cdrom> 路径通常为 `/cdrom/cdrom0`.
# pkgadd -d <cdrom>/Solaris_9/Product SUNWgtar
# pkgadd -d SUNWgtar # 添加下载的软件包(先要 bunzip2)
# pkgrm SUNWgtar # 删除软件包
### FreeBSD
# pkg_add -r rsync # 获取并安装 rsync
# pkg_delete /var/db/pkg/rsync-xx # 删除 rsync 软件包
可使用 `PACKAGESITE` 环境变量来设置哪里可以获取软件包。举个例子:
# export PACKAGESITE=ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages/Latest/
# or ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6-stable/Latest/
### FreeBSD ports
Port 树 `/usr/ports/` 是一个准备编译和安装的软件集。可用 `portsnap` 工具来跟新 port。
# portsnap fetch extract # 当第一次运行这个命令,会创建 port 树
# portsnap fetch update # 跟新 port 树
# cd /usr/ports/net/rsync/ # 选择软件安装目录
# make install distclean # 安装并清理(也可看 man ports)
# make package # Make 一个二进制软件包
## 库路径
由于复杂的依赖关系和运行时链接,程序难于分发或拷贝到其他系统。不过对于较少依赖关系的小程序,缺失的库可被拷贝过去。运行时库(即缺失的库)可用 `ldd` 和 `ldconfig` 来检查和管理。
# ldd /usr/bin/rsync # 列出所有所需的运行时库
# ldconfig -n /path/to/libs/ # 添加一个路径到共享库目录Add a path to the shared libraries directories
# ldconfig -m /path/to/libs/ # FreeBSD
# LD_LIBRARY_PATH # 设置连接库路径的环境变量