探索套件「cuda-repo-ubuntu1404」
原始討論
原始討論「回覆: unmet dependencies && broken packages」。
回覆內容
deb (network)
前置作業
準備工作環境資料夾
mkdir ~/Downloads/cuda_network -p
cd ~/Downloads/cuda_network
下載檔案
下載「cuda-repo-ubuntu1404_7.5-18_amd64.deb」
$ wget -c http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_7.5-18_amd64.deb
檔案訊息
執行
$ dpkg -I cuda-repo-ubuntu1404_7.5-18_amd64.deb
顯示
new debian package, version 2.0.
size 2126 bytes: control archive=553 bytes.
34 bytes, 1 lines conffiles
290 bytes, 12 lines control
220 bytes, 4 lines * postinst #!/bin/sh
63 bytes, 4 lines * postrm #!/bin/sh
Package: cuda-repo-ubuntu1404
Version: 7.5-18
Maintainer: cudatools <cudatools@nvidia.com>
Architecture: amd64
Section: devel
Priority: optional
Installed-Size: 24
Description: CUDA repo configuration files.
Contains configuration files needed to set up access to the
CUDA repository.
執行
$ dpkg -f cuda-repo-ubuntu1404_7.5-18_amd64.deb
顯示
Package: cuda-repo-ubuntu1404
Version: 7.5-18
Maintainer: cudatools <cudatools@nvidia.com>
Architecture: amd64
Section: devel
Priority: optional
Installed-Size: 24
Description: CUDA repo configuration files.
Contains configuration files needed to set up access to the
CUDA repository.
跟上一個指令顯示出來的對照,少了一些訊息。
執行
$ dpkg -c cuda-repo-ubuntu1404_7.5-18_amd64.deb
顯示
drwxr-xr-x root/root 0 2016-01-29 08:35 ./
drwxr-xr-x root/root 0 2016-01-29 08:35 ./etc/
drwxr-xr-x root/root 0 2016-01-29 08:35 ./etc/apt/
drwxr-xr-x root/root 0 2016-01-29 08:35 ./etc/apt/sources.list.d/
-rw-r--r-- root/root 80 2016-01-29 08:35 ./etc/apt/sources.list.d/cuda.list
drwxr-xr-x root/root 0 2016-01-29 08:35 ./usr/
drwxr-xr-x root/root 0 2016-01-29 08:35 ./usr/share/
drwxr-xr-x root/root 0 2016-01-29 08:35 ./usr/share/doc/
drwxr-xr-x root/root 0 2016-01-29 08:35 ./usr/share/doc/cuda-repo-ubuntu1404/
-rw-r--r-- root/root 88 2016-01-29 08:35 ./usr/share/doc/cuda-repo-ubuntu1404/copyright
-rw-r--r-- root/root 164 2016-01-29 08:35 ./usr/share/doc/cuda-repo-ubuntu1404/changelog.Debian.gz
drwxr-xr-x root/root 0 2016-01-29 08:35 ./usr/share/lintian/
drwxr-xr-x root/root 0 2016-01-29 08:35 ./usr/share/lintian/overrides/
-rw-r--r-- root/root 127 2016-01-29 08:35 ./usr/share/lintian/overrides/cuda-repo-ubuntu1404
解開套件
執行
$ dpkg -x cuda-repo-ubuntu1404_7.5-18_amd64.deb cuda-repo-ubuntu1404
會將「cuda-repo-ubuntu1404_7.5-18_amd64.deb」解開到「cuda-repo-ubuntu1404」這個資料夾
觀看「cuda-repo-ubuntu1404」這個資料夾結構
執行
$ tree cuda-repo-ubuntu1404
顯示
cuda-repo-ubuntu1404
├── etc
│ └── apt
│ └── sources.list.d
│ └── cuda.list
└── usr
└── share
├── doc
│ └── cuda-repo-ubuntu1404
│ ├── changelog.Debian.gz
│ └── copyright
└── lintian
└── overrides
└── cuda-repo-ubuntu1404
9 directories, 4 files
可以對照上面「dpkg -c cuda-repo-ubuntu1404_7.5-18_amd64.deb」顯示出來的結果,只是這裡顯示的方式是「樹狀(tree)」。
觀看「cuda-repo-ubuntu1404/etc/apt/sources.list.d/cuda.list」的內容
執行
$ cat cuda-repo-ubuntu1404/etc/apt/sources.list.d/cuda.list
顯示
deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64 /
解開「Control檔」和「MaintainerScripts」。
執行
$ dpkg -e cuda-repo-ubuntu1404_7.5-18_amd64.deb
會產生一個資料夾「DEBIAN」,裡面放的是「Control檔」和「MaintainerScripts」
也可以指定解開到某個資料夾,上面的指令可以改成「dpkg -e cuda-repo-ubuntu1404_7.5-18_amd64.deb cuda-repo-ubuntu1404/debian」
觀看「DEBIAN」資料夾結構
執行
$ tree DEBIAN
顯示
DEBIAN/
├── conffiles
├── control
├── postinst
└── postrm
0 directories, 4 files
或是執行
$ ls DEBIAN/ -1
顯示
conffiles
control
postinst
postrm
執行
$ cat DEBIAN/conffiles
顯示
/etc/apt/sources.list.d/cuda.list
執行
$ cat DEBIAN/control
顯示
Package: cuda-repo-ubuntu1404
Version: 7.5-18
Maintainer: cudatools <cudatools@nvidia.com>
Architecture: amd64
Section: devel
Priority: optional
Installed-Size: 24
Description: CUDA repo configuration files.
Contains configuration files needed to set up access to the
CUDA repository.
可以對照上面「dpkg -I」和「dpkg -f」顯示出來的結果。
執行
$ cat DEBIAN/postinst
顯示
#!/bin/sh
set -e
wget -q -O - http://developer.download.nvidia.com/compute/cuda/repos/GPGKEY | apt-key add - || echo "Failed to add GPGKEY at http://developer.download.nvidia.com/compute/cuda/repos/GPGKEY to apt keys."
執行
$ cat DEBIAN/postrm
顯示
#!/bin/sh
set -e
apt-key remove cudatools >/dev/null 2>&1 ||:
關於「apt-key」的使用方法,可以參考這篇「討論」。
小結
從以上的分析看來,
安裝「cuda-repo-ubuntu1404_7.5-18_amd64.deb」這個套件,
也就是執行「sudo dpkg -i cuda-repo-ubuntu1404_7.5-18_amd64.deb」,
只是幫你把安裝「cuda」的「套件庫來源」。
也就是會在「/etc/apt/sources.list.d/」多放一個檔案「cuda.list」,檔案內容紀錄的就是套件庫來源網址。
然後還會執行「DEBIAN/postinst」,也就是把「apt-key」加進去。
所以安裝完「cuda-repo-ubuntu1404_7.5-18_amd64.deb」這個套件,
要再多執行一個指令「sudo apt-get update」,更新套件庫的套件資訊。
實際安裝
執行
$ sudo dpkg -i cuda-repo-ubuntu1404_7.5-18_amd64.deb
安裝完畢後,
要再執行一個指令「sudo apt-get update」,更新套件庫的套件資訊。
$ sudo apt-get update
可以觀察「/var/lib/apt/lists/」這個資料夾裡的檔案
安裝好「cuda-repo-ubuntu1404_7.5-18_amd64.deb」這個套件,
就可以執行下面的指令
$ dpkg -L cuda-repo-ubuntu1404
顯示
/.
/etc
/etc/apt
/etc/apt/sources.list.d
/etc/apt/sources.list.d/cuda.list
/usr
/usr/share
/usr/share/doc
/usr/share/doc/cuda-repo-ubuntu1404
/usr/share/doc/cuda-repo-ubuntu1404/copyright
/usr/share/doc/cuda-repo-ubuntu1404/changelog.Debian.gz
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/cuda-repo-ubuntu1404
上面這個列表,表示「cuda-repo-ubuntu1404_7.5-18_amd64.deb」這個套件,安裝了那些檔案在系統上。
可以對照上面的「dpkg -c cuda-repo-ubuntu1404_7.5-18_amd64.deb」得到的列表。
或是對照上面的「dpkg -x cuda-repo-ubuntu1404_7.5-18_amd64.deb cuda-repo-ubuntu1404」然後再用「tree cuda-repo-ubuntu1404」得到的結果。
執行
$ ls /var/lib/dpkg/info/cuda-repo-ubuntu1404.*
顯示
/var/lib/dpkg/info/cuda-repo-ubuntu1404.conffiles
/var/lib/dpkg/info/cuda-repo-ubuntu1404.list
/var/lib/dpkg/info/cuda-repo-ubuntu1404.md5sums
/var/lib/dpkg/info/cuda-repo-ubuntu1404.postinst
/var/lib/dpkg/info/cuda-repo-ubuntu1404.postrm
可以對照剛剛使用「dpkg -e cuda-repo-ubuntu1404_7.5-18_amd64.deb
」解開到「DEBIAN」這個資料夾的檔案
- /var/lib/dpkg/info/cuda-repo-ubuntu1404.conffiles <–> DEBIAN/conffiles
- /var/lib/dpkg/info/cuda-repo-ubuntu1404.postinst <–> DEBIAN/postinst
- /var/lib/dpkg/info/cuda-repo-ubuntu1404.postrm <–> DEBIAN/postrm
- /var/lib/dpkg/info/cuda-repo-ubuntu1404.list <–> $ dpkg -L cuda-repo-ubuntu1404
「DEBIAN/control」則可以在下面幾個地方,找到類似的蹤跡,
- 「$ dpkg -s cuda-repo-ubuntu1404」
- 「/var/lib/dpkg/status」
- 「/var/lib/dpkg/available」
- 「$ apt-cache show cuda-repo-ubuntu1404」
- 「/var/lib/apt/lists/developer.download.nvidia.com_compute_cuda_repos_ubuntu1404_x86%5f64_Packages 」