젠투의 패키지 관리자를 사용하여 git에서 사용자 정의 소스를 설치하는 방법은 무엇입니까?

젠투의 패키지 관리자를 사용하여 git에서 사용자 정의 소스를 설치하는 방법은 무엇입니까?

제 생각에는사용자 정의 소스 설치에서자식저장소이지만내 패키지 관리자 사용(포티지에 나타납니다).

배경

EFI를 사용하여 젠투를 설치했습니다.사카키의 튜토리얼, 그래서 내가 나타났습니다 dev-vcs/git.

내가 원하는 패키지는 설치용입니다.Canonical에서 찍은 사진(배경에서 읽은 내용은 다음과 같습니다.기술 예술) 해당 지침은 다음과 같습니다.

루트 다이어그램

설치하다스냅샷 제한.ebuild그리고snapd.ebuild

'# snapd 시스템 서비스 활성화:

sudo systemctl enable --now snapd.service

시도한 단계가 작동하지 않음

1번 시도

/etc/portage/repos.conf/먼저, 전제 조건인 git .ebuilds를 저장소로 추가하고 이를 내 디렉토리(두 개의 별도 항목) 에 넣어 보았습니다 . 포스팅하겠습니다하나예를 들어:

[zyga-snap-confine]

# Snapd build dependency #1
# Maintainer: obscured

location = /usr/local/portage/zyga-snap-confine
sync-type = git
sync-uri = https://github.com/zyga/snap-confine-gentoo.git
priority = 60
auto-sync = yes

저장소를 동기화한 다음 .을 통해 원하는 패키지를 찾으려고 emaint sync --repo zyga-snap-confine했습니다 . emerge --searcheix불운.

누락된 레이아웃, master = gentoo 항목에 대한 오류가 발생합니다... 메타데이터가 누락되었다는 것을 알고 있지만 큰 기대를 갖고 있습니다.

2번 시도

드디어 참고자료를 찾았습니다무엇ebuild와 관련이 있습니다. 공식적으로젠투 위키및 여기의 다른 게시물(소스에서 Git, Curl 및 Expat 설치) 그리고 여기 (Funtoo/Gentoo에서 소프트웨어를 패키징하는 방법은 무엇입니까?), 나는 다음과 같이 결정합니다.

root@Gentoo ~ # cd /opt
root@Gentoo opt # git clone https://github.com/zyga/snap-confine-gentoo.git
root@Gentoo opt # cd snap-confine-gentoo
root@Gentoo snap-confine-gentoo # ebuild snap-confine-1.0.32.ebuild manifest clean merge

그러나 오류가 반환되었습니다.

Appending / to PORTDIR_OVERLAY...
!!! Repository 'x-' is missing masters attribute in '/metadata/layout.conf'
!!! Set 'masters = gentoo' in this file for future compatibility
ebuild: /opt/snap-confine-gentoo/snap-confine-1.0.32.ebuild: does not seem to have a valid PORTDIR structure

선호하는 솔루션

저는 상대적으로 Gentoo를 처음 접했고 Linux를 스스로 가르치고 있으며 Gentoo 포럼에서 저장소 유지 관리에 대한 튜토리얼을 찾을 수 없습니다.개발자 가이드, 그러나 많은 지식을 가정합니다). 이상적인 대답은 cli 메서드( git clone... 및 ./configure?를 사용한다고 가정)와 패키지 관리자 버전을 제공하는 것입니다.

누락된 메타데이터와 레이아웃 파일을 추가하기 위해 자체 git 저장소를 만들어야 하는 경우에도 이 방법으로 snapd 설치를 관리하는 것을 선호합니다.

답변1

위 @likewhoa의 의견에 따르면 ebuild의 구조를 조정해야 합니다. 제작자는 git 저장소를 생성할 때 최신 포티지 구조를 고려하지 않았습니다.

명령줄의 경우

(포티지 디렉토리 구조가 없는 ebuild)
/usr/local/portage/마음속으로 결심 했어요캡처 한도카테고리에 속함sys-apps

Bash 루트 프롬프트에서:

cd /usr/local/portage
git clone https://github.com/zyga/snap-confine-gentoo.git
cd snap-confine-gentoo
mkdir -pv sys-apps/snap-confine
# the Manifest file will be recreated later
rm -v Manifest
mv -v snap-confine-1.0.32.ebuild sys-apps/snap-confine/
# to avoid errors, you need your masters = gentoo reference
mkdir -v metadata
echo 'masters = gentoo' > metadata/layout.conf 
cd sys-apps/snap-confine
ebuild snap-confine-1.0.32.ebuild manifest clean merge

.ebuild가 올바른 종속성을 올바르게 형성하지 못한 것으로 밝혀졌지만, 이 단계는 다음을 기반으로 하는 좋은 튜토리얼을 제공한다고 생각합니다.

  1. https://wiki.gentoo.org/wiki/Basic_guide_to_write_Gentoo_Ebuilds
  2. https://devmanual.gentoo.org/quickstart/

포티지 관리용

다른 Gentoo 저장소를 기반으로 개발자가 다음을 포함하는 패키지를 만들 것을 권장합니다.캡처 한도그리고스냅 사진ebuild는 패키지 카테고리 sys-appsapp-emulation.

그런 다음 우리는메타데이터/layout.confmasters = gentoo포티지 호환성 불만을 피하기 위해 포함된 파일입니다 . 개발자 가이드에서는 또한구성 파일/repo_name식별된 저장소 이름이 있는 파일입니다. 각 패키지의 폴더에메타데이터.xml파일을 생성한 다음 실행하여 repoman manifest생성합니다.나타나다문서.

마지막으로 사용자는 /etc/portage/repos.conf/다음 지침에 따라 항목을 생성해야 합니다.sakaki-tools github 저장소

관련 정보