{"id":385,"date":"2009-09-17T14:10:17","date_gmt":"2009-09-17T12:10:17","guid":{"rendered":"http:\/\/www.lucas-nussbaum.net\/blog\/?p=385"},"modified":"2010-10-07T16:32:42","modified_gmt":"2010-10-07T14:32:42","slug":"bootstrapping-centos-or-fedora-from-debian-or-ubuntu","status":"publish","type":"post","link":"https:\/\/www.lucas-nussbaum.net\/blog\/?p=385","title":{"rendered":"Bootstrapping Centos or Fedora from Debian or Ubuntu"},"content":{"rendered":"<p>Here are some notes about bootstrapping a Centos or Fedora chroot from Debian. It should also work from Ubuntu with minor changes, but I haven&#8217;t checked. The following should really be done in a chroot, since some commands will install files in your \/etc or elsewhere, ignoring the <code>--installroot<\/code> passed to <code>yum<\/code>. The following instructions are for Centos, but replacing all occurences of <code>centos<\/code> with <code>fedora<\/code> should work.<\/p>\n<ul>\n<li><code>apt-get install yum rpm python-m2crypto<\/code>. If at some point, you get error messages about <code>rpmlib(BuiltinLuaScripts)<\/code>, you need to install a newer rpm package (from Debian unstable, for example).<\/li>\n<li><code>mkdir -p \/tmp\/centos\/var\/lib\/rpm<\/code><\/li>\n<li><code>rpm --root \/tmp\/centos --initdb<\/code><\/li>\n<li>Go to <a href=\"http:\/\/rpm.pbone.net\">http:\/\/rpm.pbone.net<\/a> or <a href=\"http:\/\/www.rpmfind.net\">http:\/\/www.rpmfind.net<\/a>, search for centos-release or fedora-release, and download the rpm for the version you want.<\/li>\n<li><code>rpm -ivh --force-debian --nodeps --root \/tmp\/centos centos-release*rpm<\/code> (that populates \/tmp\/centos\/etc with information about the centos repositories)<\/li>\n<li><code>yum --installroot \/tmp\/centos\/ install yum<\/code> . That fails because of missing GPG information in \/etc\/pki. Do <code>ln -s \/tmp\/centos\/etc\/pki \/etc\/pki<\/code>, then again <code>yum --installroot \/tmp\/centos\/ install yum<\/code>.<\/li>\n<li><code>mount -t proc foo \/tmp\/centos\/proc<\/code><\/li>\n<li><code>mount -t sysfs foo \/tmp\/centos\/sys<\/code><\/li>\n<li><code>chroot \/tmp\/centos \/bin\/bash --login<\/code><\/li>\n<\/ul>\n<p>If you get errors about different DB versions between Debian&#8217;s RPM and CentOS&#8217; RPM, you can try, in the CentOS chroot:<\/p>\n<ul>\n<li><code>cd \/var\/lib\/rpm && rm *<\/code> (simplest way to avoid problems between db versions for Debian&#8217;s RPM and centos&#8217; RPM)<\/li>\n<li><code>rpm --initdb<\/code><\/li>\n<li><code>yum install yum<\/code> (again, to restore the rpm db)<\/li>\n<li><code>yum install vim-minimal less<\/code><\/li>\n<li>That&#8217;s all!<\/li>\n<\/ul>\n<p>Update: Jaldhar Vyas pointed me to <b>mach<\/b>, and Paul Wise to <b>mock<\/b>. Both packages are available in Debian, but use config files for each release shipped in the package. Unfortunately, both packages are out of date, and don&#8217;t include Fedora 9 or newer. Also, mock doesn&#8217;t support Centos.<br \/>\nAnyway, both packages could use a new maintainer. Don&#8217;t hesitate to jump in!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Here are some notes about bootstrapping a Centos or Fedora chroot from Debian. It should also work from Ubuntu with minor changes, but I haven&#8217;t checked. The following should really be done in a chroot, since some commands will install files in your \/etc or elsewhere, ignoring the &#8211;installroot passed to yum. The following instructions [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"0","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13,12],"tags":[],"class_list":["post-385","post","type-post","status-publish","format-standard","hentry","category-planetdebian","category-planetubuntu"],"_links":{"self":[{"href":"https:\/\/www.lucas-nussbaum.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/385","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lucas-nussbaum.net\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lucas-nussbaum.net\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lucas-nussbaum.net\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lucas-nussbaum.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=385"}],"version-history":[{"count":11,"href":"https:\/\/www.lucas-nussbaum.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/385\/revisions"}],"predecessor-version":[{"id":587,"href":"https:\/\/www.lucas-nussbaum.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/385\/revisions\/587"}],"wp:attachment":[{"href":"https:\/\/www.lucas-nussbaum.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=385"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lucas-nussbaum.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=385"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lucas-nussbaum.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=385"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}