2015年7月6日月曜日

emerge --syncをgitなリポジトリからするようにしてみました [追記あり]

こんにちは。私は元気です。


Gentoo Portageでのemerge --syncをrsyncからgitでやるように変えてみました。なんか最近は/etc/portage/make.confにではなく、/etc/portage/repos.conf/ディレクトリ下に書くみたいですね。

参考にしたもの

それではやったことを残しておきます。


各所mkdirやchownしておきます。

# mkdir -p /etc/portage/repos.conf /var/db/repos/gentoo
# chown portage:portage /var/db/repos/gentoo

なんかこんなふうに書くらしいです。
/etc/portage/repos.conf/gentoo.conf

[gentoo]
location = /var/db/repos/gentoo
sync-type = git
sync-uri = https://github.com/gentoo-mirror/gentoo
auto-sync = yes

gentoo.confのlocationをPOSTDIRが上書きしてしまうので、コメントアウトするか削って下さい。DISTDIRやPKGDIRも合わせて修正して下さい。
/etc/portage/make.conf

--- make.conf.old 2015-07-06 01:41:08.360123296 +0900
+++ make.conf.new 2015-07-06 02:15:56.790163553 +0900
@@ -13,9 +13,9 @@
 USE="bindist mmx mmxext sse sse2 ss3 jpeg png acpi scsi ibus fuse udev udisks upower consolekit policykit session wifi usb cdda dvd alsa cairo opengl cjk ibus nls X libnotify startup-notification gtk gtk3 -gnome -kde dbus pulseaudio bluetooth lm_sensors libav -hddtemp -cups"
 ABI_X86="64"
 CPU_FLAGS_X86="mmx mmxext sse sse2 sse3"
-PORTDIR="/usr/portage"
-DISTDIR="${PORTDIR}/distfiles"
-PKGDIR="${PORTDIR}/packages"
+#PORTDIR="/usr/portage"
+DISTDIR="/usr/portage/distfiles"
+PKGDIR="/usr/portage/packages"

/etc/portage/make.profileのリンクを修正するため、再度eselectでprofileを選びます。ls -lして古いリンクを確認すれば、何を選べばいいか分かると思います。

$ ls -l /etc/portage/make.profile
lrwxrwxrwx 1 root root   59  8月 16  2014 make.profile -> ../../usr/portage/profiles/default/linux/amd64/13.0/desktop
# eselect profile list
Available profile symlink targets:
  [1]   default/linux/amd64/13.0
  [2]   default/linux/amd64/13.0/selinux
  [3]   default/linux/amd64/13.0/desktop
  [4]   default/linux/amd64/13.0/desktop/gnome
  [5]   default/linux/amd64/13.0/desktop/gnome/systemd
  [6]   default/linux/amd64/13.0/desktop/kde
  [7]   default/linux/amd64/13.0/desktop/kde/systemd
  [8]   default/linux/amd64/13.0/desktop/plasma
  [9]   default/linux/amd64/13.0/desktop/plasma/systemd
  [10]  default/linux/amd64/13.0/developer
  [11]  default/linux/amd64/13.0/no-multilib
  [12]  default/linux/amd64/13.0/systemd
  [13]  default/linux/amd64/13.0/x32
  [14]  hardened/linux/amd64
  [15]  hardened/linux/amd64/selinux
  [16]  hardened/linux/amd64/no-multilib
  [17]  hardened/linux/amd64/no-multilib/selinux
  [18]  hardened/linux/amd64/x32
  [19]  hardened/linux/musl/amd64
  [20]  default/linux/uclibc/amd64
  [21]  hardened/linux/uclibc/amd64
# eselect profile set 3

あとはsyncしたりsearchしてみて大丈夫か確かめましょう。

# emerge --sync

大丈夫そうであれば、/usr/portage下のdistfilesやpackages以外のものは消すか、アーカイブしておきましょう。(私の場合は消しちゃいました)

# cd /usr/portage
# ls | grep -vE '^(distfiles|packages)$' | xargs rm -r


自分がやったことを書きつつ他の人向けに修正していますので、なにかおかしいところがあるかもしれません。あったらごめんなさい。

laymanも2.3.0からrepos.confで設定できるみたいですが、アップデートかかるまで気長に待ちます。


[追記: 2015/08/12]
GentooのPortageがgitに移ったらしいので、本家のリポジトリに変更しました


[追記: 2015/08/23]
Gentoo が公式に Git に移行 | wjn's repos' info.
http://gh.asis.li/blog/gentoo-moved-git-officially.htmlによると、
https://anongit.gentoo.org/git/repo/gentoo.git は開発者向けのリポジトリであり、/metadata/md5-cache/*が置かれていないので、依存関係の解決等に時間がかかる不適切な設定でした。誤った情報を記載してしまい、申し訳ありませんでした。

私はただの「OSS使ってる俺カッコいい」と思っているただのコピペマンでした。自分の脳で考えられるよう精進していきたいと思います。お見苦しいものをお見せして申し訳ありませんでした。
僻みすぎました。まあ懲りずに書いていきますので、改善していきたいと思います。