pkgwatch - 一个包管理包装器
介绍
在过去我正在尝试许多不同的Linux发行版。 每个都有自己的软件包管理系统:debian有apt,mandrake有urpmi,黄狗有一个适用于rpm的前端,suse有yast ...虽然他们都很相似,不难使用,我发现我经常做因为我经常忘记我使用的系统和该系统上的确切命令。 另一个问题是我希望我可以跟踪我如何安装/删除这些包。 所以我为各种包管理系统写了一个简单的包装器。 它有两个目的:
- 让我不记得不同系统的确切命令
- 帮助我跟踪我安装的软件包
例如,当我需要安装例如vim时,我总是说pkg-install vim
,包装器会根据当前的系统调用aptitude,apt-get或者yum。
安装
- 从http://download.river-valley.com/pkgwatch/pkgwatch-1.0.tgz下载
- 解压缩并运行安装程序(以root用户身份):
bash INSTALL.sh
- 编辑
/ etc / pkgwatchrc
以适应您的系统。 您必须设置PWTOOL
和PWDIR
:-
PWTOOL
是您的系统上的包管理系统的名称。 它必须是以下之一:aptitude-deb
apt-deb
urpm
yast-rpm
yum-rpm
fink-deb
macports-port
-
-
PWDIR
是一个目录,用于跟踪程序包的安装/删除。 - 因为我主要使用基于debian的系统,所以我设置默认值如下:
PWTOOL=aptitude-deb PWDIR=/root/config/pkgwatch
用法示例
描述我最常使用的命令和每个命令的效果,而不是列出所有的细节。
pkg-update
更新包管理:
- 在一个基于apt的系统上,这类似于
apt-get更新
- 在yum系统上,这类似于
yum更新
- 在macports(macosx)这类似于
端口自身更新
pkg-install vim
安装包vim
。 稍后将说明该命令的细节。
pkg-remove vim
删除包vim
。
pkg-list
列出我系统上的所有安装的软件包:
- 在基于deb的系统上,这类似于
dpkg --get-choices
- 在基于rpm的系统上,这类似于
rpm -qa
pkg-file vim
列出所有属于软件包vim的
文件。
- 在基于deb的系统上,这类似于
dpkg -L vim
- 在基于rpm的系统上,这类似于
rpm -ql vim
pkg-own /usr/bin/vim
查找哪个包拥有文件/ usr / bin / vim
:
- 在deb系统上,这类似于
dpkg -S / usr / bin / vim
- 在基于rpm的系统上,这类似于
rpm -qf / usr / bin / vim
pkg-info vim
显示有关package vim的
信息:
- 在基于deb的系统上,这类似于
dpkg -p vim
- 在基于rpm的系统上,这类似于
rpm -qi vim
pkg-check vim
检查我的系统上是否已经安装了vim
包
- 在基于deb的系统上,这类似于
dpkg -s vim
- 在基于rpm的系统上,这类似于
rpm -q vim
pkg-search vim
搜索包含vim
的所有包名称:
- 在apt-based系统上,这类似于
apt-cache pkgnames vim
- 在基于yum的系统上,这与
yum list vim
类似
以上命令不涵盖所有内容,但是我发现它们足够经常使用。 如果我需要更具体的东西,那么我别无选择,只能使用底层系统的精确命令,比如apt。
跟踪已安装的软件包
我们再来用例子来说明事情。假设我们有一个新的基于debian的系统。在我们的/ etc / pkgwatchrc中
我们有:
PWTOOL=aptitude-deb
PWDIR=/root/config/pkgwatch
- 我们来安装vim:
pkg-install vim
。 这将调用aptitude install vim
来安装vim
,然后创建以下文件:-
/root/config/pkgwatch/pkglist.0
:在安装vim之前系统上已安装的软件包列表。 只有当我们第一次运行pkg-install
时才会发生这种情况。 -
/root/config/pkgwatch/pkglist.1:aptitude安装
的软件包列表:+ vim + vim-runtime
-
-
/root/config/pkgwatch/pkglist.vim
:符号链接到pkglist.0
- 我们来试试删除vim:
pkg-remove vim
。 这将调用aptitude purge vim
,加上:- 创建一个文件
/root/config/pkgwatch/pkglist.2
:由aptitude删除的包的列表:- vim - vim-runtime
- 创建一个文件
- 删除符号链接
/root/config/pkgwatch/pkglist.vim
虽然看起来有点混乱,但是这个概念真的很简单:每当我们运行pkg-install
或者pkg-remove
,一个新的文件pkglist,
将会创建一个<number>
,每个运行后增加一个数字。 该文件的内容是在该运行期间安装或删除的包的列表。 标有+的软件包是已安装的软件包,标记为- 的软件包是已被删除的软件包。 除此之外,在安装期间创建了一个符号链接pkglist。<package-name>
,并在删除期间删除该符号链接。
因此,包装器在安装/删除的包的列表上有点像一个糟糕的版本控制。 通过检查pkglist。*
文件,很容易找出我做了什么。
进一步说明
- 包装是相当微不足道的,有太多的东西要改进和错误修复。 但是我觉得我的需要足够好。 如果要改进脚本,请继续。
- 添加对新系统的支持也很容易。 我在macosx上使用fink和macports进行了这个尝试,并且花费了很少的努力让pkgwatch在macosx上工作。
- 一些后端是过时的,因为我不再使用底层系统了:urpmi,yast或者yum。