たとえば、AMD64にJessieの最新のDebianパッケージ「libgcc1」をインストールするとします。
https://packages.debian.org からダウンロードする正しいURLを決定するにはどうすればよいですか?
たとえば、この場合、 https://packages.debian.org Webサイトを手動でクリックすると、最終的に正しいダウンロードが表示されます。
http://ftp.us.debian.org/debian/pool/main/g/gcc-4.9/libgcc1_4.9.2-10_AMD64.deb
重要な注意:私は利用可能なaptを持っていません。依存関係名を.debパッケージから手動で抽出するコードを書いていますが、次のステップを実行しようとしてスタックしました。これは、パッケージ名の正しい実際の.debパッケージを取得することです。
したがって、たとえば、これらの情報から移動する必要があります。
に:
http://ftp.us.debian.org/debian/pool/main/g/gcc-4.9/libgcc1_4.9.2-10_AMD64.deb
この関係をどのように判断できますか?
編集:「なぜaptを使用しないのですか?」と尋ねるすべての人々にとって、答えは私が解決しようとしている中心的な問題はaptをインストールすることであるということです。 aptをインストールしようとしているため、aptを使用できません。
ありがとう
ええと、もしあなたがaptを利用できたら...
apt-get -y install --print-uris $PACKAGE | cut -f 2 -d \' | grep \.deb
実際にインストールするのに必要なすべてのパッケージを提供します。
user@darkstar:~/ $ apt-get -y install --print-uris audacity | cut -f 2 -d \' | grep \.deb
http://archive.ubuntu.com/ubuntu/pool/universe/libs/libsbsms/libsbsms10_2.0.2-1_AMD64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/s/serd/libserd-0-0_0.22.0~dfsg0-2_AMD64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/s/sord/libsord-0-0_0.14.0~dfsg0-1_AMD64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/s/sratom/libsratom-0-0_0.4.6~dfsg0-1_AMD64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/s/suil/libsuil-0-0_0.8.2~dfsg0-1_AMD64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/a/audacity/audacity-data_2.1.2-1_all.deb
http://archive.ubuntu.com/ubuntu/pool/main/f/flac/libflac++6v5_1.3.1-4_AMD64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/libi/libid3tag/libid3tag0_0.15.1b-11_AMD64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/l/lilv/liblilv-0-0_0.22.0~dfsg0-1_AMD64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/p/portsmf/libportsmf0v5_0.1~svn20101010-4ubuntu1_AMD64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/v/vamp-plugin-sdk/libvamp-hostsdk3v5_2.6~repack0-2_AMD64.deb
http://archive.ubuntu.com/ubuntu/pool/universe/a/audacity/audacity_2.1.2-1_AMD64.deb
そうではないので、 http://ftp.us.debian.org/debian/dists/stable/main/binary-adm64 を見て、そこでPackages.gzファイルのコピーを入手してください。よく見ると、パッケージ名が次のように表示されます。
Package: audacity
その数行後に、
Filename: pool/main/a/audacity/audacity_2.0.6-2_AMD64.deb
そして、やった!残念ながら、行番号は一貫していません。
apt
が利用できない場合は、基本的にapt
の再実装に行き詰まります。単にapt
を取得するほうが理にかなっています。しかし、あなたがしなければならないなら...
apt
自体と同じように開始します。/etc/apt/sources.list
など、http://ftp.us.debian.org/debian/
で指定されたURLから開始します。更新、security.debian.org、そして場合によってはバックポートのために、そのリストにあるかもしれない追加のエントリを考慮に入れることを忘れないでください。
/etc/apt/preferences{,.d}
のルールを評価して、特定のパッケージがどのソースからのものであるかを知る必要があります。また、バージョン番号の比較を行い、ピン留めルールを評価する必要があります。
それから完全なURLを作成します。
http://ftp.us.debian.org/debian/dists/<name>/<section>/binary-<architecture>/Packages.gz
このファイルには、個々のパッケージすべてへの相対URLが含まれています。
また、ファイルのハッシュを確認して整合性をチェックするには、次のファイルも必要です。
http://ftp.us.debian.org/debian/dists/jessie/Release
http://ftp.us.debian.org/debian/dists/jessie/Release.gpg
...そしてそれを確認できる/etc/apt/trusted*
の公開鍵。 Release
ファイルには、他のすべてのファイルのハッシュが含まれているため、確認する必要があります。
Debianパッケージリポジトリのフォーマットとレイアウトに関する他の微妙なルールを考慮に入れるのを忘れてしまいます。
ご覧のとおり、aptを使用するだけの方がはるかに優れています。
apt
をインストールして使用することをお勧めします。
パッケージをダウンロードするには、次のコマンドを実行します。
apt-get download libgcc1
.deb
パッケージへのパスを取得するには、次のコマンドを実行します。
apt-cache show libgcc1 | grep Filename
サンプルの送信:
Filename: pool/main/g/gcc-4.9/libgcc1_4.9.2-10_AMD64.deb