回答:
コマンドを使用してapt-get source <package>
(sudoを使用しないでください)、パッケージのソースをダウンロードします。
からman apt-get
:
source
source causes apt-get to fetch source packages. APT will examine the
available packages to decide which source package to fetch. It will then
find and download into the current directory the newest available version of
that source package while respect the default release, set with the option
APT::Default-Release, the -t option or per package with the pkg/release
syntax, if possible.
Source packages are tracked separately from binary packages via deb-src type
lines in the sources.list(5) file. This means that you will need to add such
a line for each repository you want to get sources from. If you don't do
this you will properly get another (newer, older or none) source version
than the one you have installed or could install.
If the --compile option is specified then the package will be compiled to a
binary .deb using dpkg-buildpackage, if --download-only is specified then
the source package will not be unpacked.
A specific source version can be retrieved by postfixing the source name
with an equals and then the version to fetch, similar to the mechanism used
for the package files. This enables exact matching of the source package
name and version, implicitly enabling the APT::Get::Only-Source option.
Note that source packages are not tracked like binary packages, they exist
only in the current directory and are similar to downloading source tar
balls.
ソースからパッケージをビルドするには、まずビルドの依存関係をインストールします。
sudo apt-get build-dep <package>
次に、を使用dpkg-buildpackage
して.deb
ファイルを作成します。APTとdpkgクイックリファレンスシート:
dpkg-buildpackage DebianソースツリーからDebianパッケージをビルドします。これを機能させるには、ソースツリーのメインディレクトリにいる必要があります。サンプル使用法:
dpkg-buildpackage -rfakeroot -uc -b
どこに
-rfakeroot
(所有権の目的で)root権限をシミュレートするためのfakerootプログラムを使用するように指示し、-uc
「暗号技術のchangelogに署名しないでください」の略で、-b
「唯一のバイナリパッケージの構築」の略
ターミナルでcd
、パッケージソースを含むディレクトリ(例~/code/hellanzb-0.13
:)に移動し、次のコマンドを実行します。
dpkg-buildpackage -rfakeroot -uc -b
ビルドが成功.deb
すると、親
ディレクトリにファイルが配置されます(例:)~/code/hellanzb_0.13-6.1_all.deb
。
sudo apt-get build-dep <package>
バイナリとして依存関係をインストール?その場合、これはソースからの完全なビルドではありません。build-depをソースから依存関係にインストールする方法は?
一般に、次の手順に従ってインストール済みパッケージのソースを取得できます。
ソースリポジトリを有効にします。ダッシュボード(左上のボタン)を開き、を検索しsources
ます。これは、起動する必要がありSoftware & Updates
、プログラムのことを実行し、あなたが選択した「ソースコード」オプションを持っていることを確認してください。
ターミナルを開き、次のコマンドを実行します。
apt-get source vlc
これにより、vlcのソースが現在のディレクトリにダウンロードされ、いつでも表示できます。
もちろん、の場合はvlc
、videolan.org Webサイトから直接ダウンロードすることもできます:https ://www.videolan.org/vlc/download-sources.html
apt-get source --compile
直接使用できます:
sudo apt-get build-dep <package>
sudo apt-get source --compile <package>
私のために働いた。.debは、コマンドを実行したディレクトリに配置されます。
sudo dpkg -i <package>.deb
アップストリームURLやプロジェクト/プログラムの連絡先など、パッケージに関する詳細情報を入手するには、著作権ファイル(packages.debian.orgから参照)をご覧ください。
パッケージがシステムに含まれてインストールされている場合は、著作権ファイルをで直接読むこともできます/usr/share/doc/$package_or_program_name/copyright
。
hello
パッケージの最小限の例
これらすべての詳細については、https://www.debian.org/doc/manuals/maint-guide/build.en.htmlで説明しています。
まず、ソースを変更するサンプルパッケージを取得します。
sudo apt-get install hello
hello
出力:
Hello, world!
それではハックしましょう。ソースを入手してください:
apt-get source hello
cd hello-*
開いて:
vim src/hello.c
メッセージを次のように変更します。
Hello, world hacked!
それからテストで同じことをしないと、迷惑なテストが失敗し始めます:
vim tests/greeting-1
次に、再構築します。
sudo apt-get install devscripts
sudo apt-get build-dep hello
debuild -b -uc -us
出力の終わり近くで、それは言います:
dpkg-deb: building package 'hello' in '../hello_2.10-1build1_amd64.deb'.
それで、親ディレクトリに.debを作成しました。最後に、変更したパッケージをインストールしてテストします。
sudo dpkg -i ../hello_2.10-1build1_amd64.deb
hello
すると、新しいメッセージが出力されます。
Hello, world hacked!
Ubuntu 18.04でテスト済み。
古いbzr
答え
TODO:これはUbuntu 16.04 Xenialで機能しなくなり、次のエラーで失敗しましたbzr: ERROR: Not a branch: "bzr+ssh://bazaar.launchpad.net/+branch/ubuntu/hello/".
。bzr branch lp:ubuntu/wily/hello
動作し、bzr branch lp:ubuntu/xenial/hello
再び失敗します。何らかの理由でhttps://code.launchpad.net/ubuntu/+source/helloがXenialを表示しない:https ://web.archive.org/save/https://code.launchpad.net/ubuntu/+source /こんにちは
https://askubuntu.com/a/81889/52975で述べたように、Ubuntu固有のアプローチもありbzr
ます。
最新バージョンを入手してください:
bzr branch lp:ubuntu/hello
特定のバージョン:
bzr branch lp:ubuntu/trusty/hello
以下も使用できますpull-lp-source
。
sudo apt-get install ubuntu-dev-tools
pull-lp-source hello
その後、編集できるようになります。
cd hello
vim some_file
再構築:
dch -i
debcommit
bzr bd -- -b -us -uc
そしてインストールします:
sudo dpkg -i ../hello.deb
Ubuntuのパッケージングガイドは、良い情報源です。
bzr branch lp:ubuntu/hello bzr: ERROR: Not a branch: "bzr+ssh://bazaar.launchpad.net/+branch/ubuntu/hello/".
bzr branch lp:ubuntu/xenial/lightdm bzr: ERROR: Not a branch: "bzr+ssh://bazaar.launchpad.net/+branch/ubuntu/xenial/lightdm/".
Ubuntuパッケージングガイド、具体的には4.2。ソースを取得すると言う: bzr branch ubuntu:lightdm lightdm.quickswitch bzr: ERROR: Not a branch: "bzr+ssh://bazaar.launchpad.net/+branch/ubuntu/lightdm/".
なんて混乱。:-(
pull-lp-source
代わりに使用しますが、bzrリポジトリを取得しません。bzr bd -- -b -us -uc
言うbzr: ERROR: Not a branch: "/org/gourichon/localdata/SG/projects/sysadmin/sysadmin_ergozel/2016/2016-08-15/blouarp/lightdm-1.18.3/".
: -任意のヒントについて/ありがとう。
bzr lp:ubuntu/wily/hello
、何らかの理由でxenial
バージョンがありませんか?そして、何も表示されません:code.launchpad.net/ubuntu/+source/hello Go figure。
apt-get
クローズドソースプログラムもサポートしているため、最初の仮定は正しくありません。