我正在使用 Raspberry Pi B+ 和 Raspbian 5/5/2015 以及一些已有几年历史的指南。我有一个外部 NTFS HDD 连接到 Pi。由于文章的年代,常见的做法已经发生了变化,事实证明某些包和特性和功能现在是内置的和/或自动的。
例如,我发现 Raspbian 将处理 NTFS 驱动器/卷的自动挂载如果你只安装ntfs-3g。我能找到的所有说明和指导(IRC、树莓派论坛和我认识的一个 Linux 家伙)都非常技术化,对我的系统做了谁知道的事情来试图帮助我,而实际上我们都被自动功能绊倒了没有人知道或考虑去检查。我已经将 Raspbian 全新安装到新的 SD 卡上,到目前为止刚刚打开 SSH,更新了 apt-get,并安装了 ntfs-3g。
我的下一步是启动并运行 Samba。是的,我知道 Linux 用户讨厌 Windows,但我是一个 Windows 用户,所以在我对 Linux 有足够的了解并可以将 Linux 系统作为我的后备之前,Windows 机器是我的后备。最终,这个 Raspberry Pi 将配备一个多 TB 的驱动器,尽管目前只有几 GB;这就是为什么它需要是 NTFS。
我想检查 Samba 是否已安装,因为我的说明中的下一步告诉我如何安装和配置它。我尝试了一些命令,但不确定如何处理结果或如何使用它们。我在这里搜索,技术细节超出了我的能力范围,我认为它们不能满足我看似简单的需求,即查明软件包是否已安装。
我试过:
apt-cache dump
这给了我太多的数据。它向下滚动了几分钟。我从《Raspberry Pi 手册第三版》中得到了这个(链接 - 亚马逊)
我试过
apt-cache showpkg samba
Package: samba
Versions:
2:3.6.6-6+deb7u5 (/var/lib/apt/lists/mirrordirector.raspbian.org_raspbian_dists_ wheezy_main_binary-armhf_Packages)
Description Language:
File: /var/lib/apt/lists/mirrordirector.raspbian.org_raspbian_d ists_wheezy_main_binary-armhf_Packages
MD5: 0122ac62ef5f4ae21eb2e195eb45ad1d
Reverse Depends:
winbind,samba 2.2.3-2
task-file-server,samba
swat,samba 2:3.6.6-6+deb7u5
smbclient,samba 2.999+3.0.alpha21-4
samba4-common-bin,samba 2:3.3.0~rc2-5
samba4,samba 2:3.3.0~rc2-5
samba-dbg,samba 2:3.6.6-6+deb7u5
samba-common-bin,samba 3.0.20b-1
samba-common,samba 3.0.20b-1
qtsmbstatus-server,samba
qemu-system,samba
nautilus-share,samba 3.0.27a
libwbclient0,samba 2:3.4.1
libpam-winbind,samba 2.2.3-2
libpam-smbpass,samba
libnss-winbind,samba 2.2.3-2
gadmin-samba,samba
education-main-server,samba
dpsyco-samba,samba
Dependencies:
2:3.6.6-6+deb7u5 - samba-common (5 2:3.6.6-6+deb7u5) libwbclient0 (5 2:3.6.6-6+d eb7u5) libacl1 (2 2.2.51-8) libattr1 (2 1:2.4.46-8) libc6 (2 2.13-28) libcap2 (2 2.10) libcomerr2 (2 1.01) libcups2 (2 1.4.0) libgcc1 (2 1:4.4.0) libgssapi-krb5 -2 (2 1.10+dfsg~) libk5crypto3 (2 1.6.dfsg.2) libkrb5-3 (2 1.10+dfsg~) libldap-2 .4-2 (2 2.4.7) libpam0g (2 0.99.7.1) libpopt0 (2 1.14) libtalloc2 (2 2.0.4~git20 101213) libtdb1 (2 1.2.7+git20101214) zlib1g (2 1:1.1.4) debconf (18 0.5) debcon f-2.0 (0 (null)) libpam-runtime (2 1.0.1-11) libpam-modules (0 (null)) lsb-base (2 3.2-13) procps (0 (null)) update-inetd (0 (null)) adduser (0 (null)) dpkg (2 1.15.7.2) openbsd-inetd (16 (null)) inet-superserver (0 (null)) smbldap-tools (0 (null)) ldb-tools (0 (null)) ctdb (0 (null)) logrotate (0 (null)) tdb-tools (0 (null)) samba4 (3 4.0.0~alpha6-2) samba-common (1 2.0.5a-2)
Provides:
2:3.6.6-6+deb7u5 -
Reverse Provides:
pi@raspberrypi ~ $ apt-cache showpkg ntfs-3g
Package: ntfs-3g
Versions:
1:2012.1.15AR.5-2.1+deb7u2 (/var/lib/apt/lists/mirrordirector.raspbian.org_raspbian_dists_wheezy_main_binary-armhf_Packages) (/var/lib/dpkg/status)
Description Language:
File: /var/lib/apt/lists/mirrordirector.raspbian.org_raspbian_dists_wheezy_main_binary-armhf_Packages
MD5: b2df024e8627b5d253b85f35263376ef
Reverse Depends:
udisks,ntfs-3g
ntfsprogs,ntfs-3g
ntfs-config,ntfs-3g
ntfs-3g-dev,ntfs-3g 1:2012.1.15AR.5-2.1+deb7u2
ntfs-3g-dbg,ntfs-3g 1:2012.1.15AR.5-2.1+deb7u2
kvpm,ntfs-3g
fsarchiver,ntfs-3g
Dependencies:
1:2012.1.15AR.5-2.1+deb7u2 - debconf (18 0.5) debconf-2.0 (0 (null)) libc6 (2 2.13-28) libfuse2 (2 2.8.1) libgcc1 (2 1:4.4.0) libgcrypt11 (2 1.4.5) libgnutls26 (2 2.12.17-0) multiarch-support (0 (null)) fuse (0 (null)) libntfs-3g75 (0 (null)) ntfsprogs (3 1:2011.10.9AR.1-3~) libntfs-3g75 (0 (null)) ntfsprogs (0 (null))
Provides:
1:2012.1.15AR.5-2.1+deb7u2 -
Reverse Provides:
pi@raspberrypi ~ $ apt-cache showpkg ntfsprogs
Package: ntfsprogs
Versions:
1:2012.1.15AR.5-2.1+deb7u2 (/var/lib/apt/lists/mirrordirector.raspbian.org_raspbian_dists_wheezy_main_binary-armhf_Packages)
Description Language:
File: /var/lib/apt/lists/mirrordirector.raspbian.org_raspbian_dists_wheezy_main_binary-armhf_Packages
MD5: 95f41af9cf1d0b5b66afb7d2a9e7c75d
Reverse Depends:
partitionmanager,ntfsprogs
ntfs-3g,ntfsprogs
ntfs-3g,ntfsprogs 1:2011.10.9AR.1-3~
gparted,ntfsprogs
fsarchiver,ntfsprogs
fai-setup-storage,ntfsprogs
Dependencies:
1:2012.1.15AR.5-2.1+deb7u2 - ntfs-3g (0 (null))
Provides:
1:2012.1.15AR.5-2.1+deb7u2 -
Reverse Provides:
但我不知道如何看待结果。我不知道它是要 apt-get 服务器并获取信息,还是从我的系统中提取信息。
我试过 :
dpkg --get-selections
我从这里得到的: http://www.howtogeek.com/howto/linux/show-the-list-of-installed-packages-on-ubuntu-or-debian/?PageSpeed=noscript 但我想我遇到了同样的问题。自 2007 年以来,语法似乎已经发生了变化。手册页/帮助文件似乎让我相信该命令应该可以工作
Usage: dpkg [<option> ...] <command>
--get-selections [<pattern> ...] Get list of selections to stdout.
但我收到错误:
dpkg –get-selections samba
dpkg: error: need an action option
我在这里发现了一些相关的问题,但没有给我我正在寻找的东西。我只想知道安装了什么,但我想这是另一个问题的主题。
答案1
apt-cache showpkg
显示有关可能安装的软件包的详细信息。它确实表明该软件包是否已安装,但不是以一种非常可读的方式:
Versions:
2:3.6.6-6+deb7u5 (/var/lib/apt/lists/mirrordirector.raspbian.org_raspbian_dists_wheezy_main_binary-armhf_Packages)
如果安装了该软件包,您会(/var/lib/dpkg/status)
在该行的末尾看到。然而,这并不完全可靠,因为如果您的系统已知该软件包但尚未完全安装,您也会看到此指示,例如,如果它处于“软件包已卸载但配置文件保留”状态。
一个更有用的apt-cache
子命令是apt-cache policy
.它清楚地显示了已安装的版本(如果有)和可用版本。例如,以下是已samba
安装但尚未安装的计算机的输出samba-dev
:
samba:
Installed: 2:4.1.17+dfsg-2
Candidate: 2:4.1.17+dfsg-2
Version table:
*** 2:4.1.17+dfsg-2 0
500 http://ftp.fr.debian.org/debian/ jessie/main amd64 Packages
100 /var/lib/dpkg/status
samba-dev:
Installed: (none)
Candidate: 2:4.1.17+dfsg-2
Version table:
2:4.1.17+dfsg-2 0
500 http://ftp.fr.debian.org/debian/ jessie/main amd64 Packages
或者,您可以使用该dpkg
命令获取有关当前系统的信息。 APT 是管理包下载、依赖性分析等的软件。Dpkg 是执行包文件实际安装的低级软件。
dpkg -l samba
i
如果安装了软件包,则显示以 开头的行;如果未安装软件包,则显示以u
或开头的行p
,或者根本不显示任何内容。
$ dpkg -l samba samba-dev
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-==============-============-============-=================================
ii samba 2:4.1.17+dfs amd64 SMB/CIFS file, print, and login s
dpkg-query: no packages found matching samba-dev
(dpkg-query
是dpkg
返回有关包数据库信息的子命令。)
请注意,如果您只想确保安装了某个软件包,您只需运行
apt-get install samba
如果您的发行版中可用的最新版本的软件包已安装,则这不会执行任何操作。如果尚未安装,它将安装该软件包;如果您有旧版本,它将升级它。
答案2
dpkg -l | grep -e package1 -e package2 ....
将列出您感兴趣的软件包及其当前的安装状态。输出将是这样的
bala@bala-laptop:~$ dpkg -l | grep apache2
ii apache2 2.4.10-10 amd64 Apache HTTP Server
前 2 个字符表示状态 - ii 这里表示第一个 i - 标记为安装 第二个 i - 已成功安装
还有其他状态代码,例如 r 表示标记为删除,p 表示标记为清除等。
答案3
对我来说
dpkg-query -s <pkg>
可能比其他选项更简单。
该命令通过忽略输出来与脚本测试兼容:
dpkg-query -s <pkg> >/dev/null 2>&1
如果安装了该软件包,则返回 0;如果未安装,则返回 1。
答案4
aptitude show foo
将显示包裹的状态
root@srv:# aptitude 显示 python-jmespath 包:python-jmespath 版本:0.9.0-2 状态:未安装 优先级:可选 部分: 蟒蛇 维护者:Debian Python 模块团队[电子邮件受保护] 架构:全部 未压缩大小:97.3 k 取决于: python (>= 2.7) 描述:JSON 匹配表达式 (Python 2) JMESPath 是 python 库,它允许您以声明方式指定如何从 JSON 文档中提取元素。 该软件包包含 Python 2 的模块。 主页:https://github.com/boto/jmespath 根@cx-ops02:#