답변:
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 데비안 소스 트리에서 데비안 패키지를 만듭니다 . 이 작업을 수행하려면 소스 트리의 기본 디렉토리에 있어야합니다. 샘플 사용법 :
dpkg-buildpackage -rfakeroot -uc -b
어디
-rfakeroot
(소유 목적) 루트 권한을 시뮬레이션 할 fakeroot 사용 프로그램을 사용하도록 지시,-uc
"암호 변경 로그에 서명하지 않음"을 의미하고,-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>
종속성을 바이너리로 설치 합니까 ? 그렇다면 소스에서 완전히 빌드 된 것이 아닙니다. 소스에서 빌드-뎁 설치 의존성을 어떻게 만드는가?
일반적으로 다음 절차에 따라 설치된 패키지의 소스를 얻을 수 있습니다.
소스 리포지토리를 활성화하십시오. 대시 보드 (왼쪽 상단 버튼)를 열고을 검색하십시오 sources
. Software & Updates
프로그램을 불러 와서 실행하고 "소스 코드"옵션이 선택되어 있는지 확인하십시오 :
터미널을 열고 다음 명령을 실행하십시오.
apt-get source vlc
그러면 Vlc의 소스가 현재 디렉토리로 다운로드되며 여가 시간에 볼 수 있습니다.
물론의 경우 vlc
videolan.org 웹 사이트 ( 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!
우분투 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 에서 언급했듯이 와 함께 우분투 특정 접근 방식이 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
우분투 포장 가이드는 정보의 좋은 소스입니다.
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/".
우분투 패키징 안내서 , 특히 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
폐쇄 소스 프로그램도 지원하므로 초기 가정이 잘못되었습니다.