chroot: 換個環境工作


假設你的電腦上分別裝了兩套彼此獨立的 Linux, Ubuntu 裝在 /dev/hda17 而 Mandriva 裝在 /dev/hdb17 。 前者的套件管理採 deb; 後者則採 rpm。 當你在使用 Ubuntu 時, 發現有一個套件很好用, 也想為 Mandriva 安裝。 是否可以不要重新開機, 直接進入 Mandriva 的環境安裝這個套件呢?

        (開機進入 Ubuntu)
        dpkg -i xxx.deb		# 為 Ubuntu 安裝 xxx 套件
        # 嗯, xxx 很好用, 也為 Mandriva 安裝一下吧
        mount /dev/hda17 /mnt/test
        # 下載 xxx.rpm , 放到 /mnt/test/tmp 底下
        chroot /mnt/test
        rpm -U /tmp/xxx.rpm	# 為 Mandriva 安裝 xxx 套件
        exit 或 ^d
        rm /mnt/test/tmp/xxx.rpm

chroot 指令可以將根目錄切換到另外一處。 例如此處下 chroot /mnt/test 之後, 就彷彿你從 /dev/hdb17 開機進入 Mandriva 一樣, 因此必須改用 rpm 管理套件。 注意先前使用 Ubuntu 時, 下載回來的 rpm 檔放在 /mnt/test/tmp 底下; 但 chroot 之後, 所看到的路徑變成了 /tmp 。 在 Mandriva 底下的工作結束之後, 用 exit 或 ^d 跳離, 就又回到 Ubuntu。 注意刪除檔案的指令用的又是原始的路徑。

chroot 還有其他功用...