一般的centos7安装桌面都是通过组安装的,如果离线安装不太方便。
我不想像大多数人一下,就下载rpm,然后一把梭全部安装。
因此将iso内的group配置成本地的模式
repotrack不仅解决了包的依赖包,还解决了依赖包和依赖包之间的关系
制作本地安装源的iso
准备环境
下载包与所需要的依赖库
cd /root/
yum -y install yum-utils epel-release centos-release-scl wget
mkdir stress-zcloud-x86_64-local
准备手动更新的包列表
如果联网了,yum可以通过更新本地的rpm包来解决间接依赖问题。如果自动扫描依赖不充足,需要手动指定需要准备的依赖包
cat << EOF >rpm_list.txt
# python
python3-pip
# gcc10
devtoolset-10-gcc
# other-tools
yum-utils
createrepo
wget
stress
tree
htop
net-tools
putty
sysstat
gcc-c++
# resolve dependencies
avahi-autoipd
EOF
我这里还夹带的常用工具,其实我实测公司的镜像只需要夹带avahi-autoipd
足够了
保存文件
yum clean all
repotrack -p /root/stress-zcloud-x86_64-local/ $(sed -e '/#/d;/^[ ]*$/d' rpm_list.txt)
获取组rpm包
使用repoquery -g -a
获取所需下载的列表,下面预先填的就是安装gnome必备的一些组
for i in "core" "guest-agents" "guest-desktop-agents" "fonts" "dial-up" "internet-browser" "gnome-desktop";do
repoquery --qf=%{name} -g --list --grouppkgs=all "$i" | \
xargs -I{} repotrack -p /root/stress-zcloud-x86_64-local/ {};
done
获取现有的组配置
下载centos7的iso,CentOS-7-x86_64-Everything-2009.iso
,将其挂载到mnt目录
mount CentOS-7-x86_64-Everything-2009.iso /mnt/
cd /mnt/repodata/
有一个文件名带有c7-x86_64-comps.xml
,即group文件,将其拷贝出来使用。重命名为stress-zcloud-x86_64-local-comps.xml
cp *c7-x86_64-comps.xml /root/stress-zcloud-x86_64-local-comps.xml
安装createrepo,会在指定文件夹下创建repodata/repomd.xml
yum install -y createrepo
createrepo /root/stress-zcloud-x86_64-local/
将group编入repo文件
createrepo -g /root/stress-zcloud-x86_64-local-comps.xml /root/stress-zcloud-x86_64-local/
打包已下载的软件包成iso
mkisofs -o stress-zcloud-x86_64-local.iso -J -R -V zcloud stress-zcloud-x86_64-local
# -r参数 将所有的文件属性设置所有人可读属性
# -o参数 指定光盘名称
# -V参数 后指定光盘集合的ID(Windows上挂载后驱动器的名称)
# -J参数 保持原始文件名
# -R参数 递归,将文件夹下的所有文件打包
使用本地安装源
将文件上传到/var/tmp/目录:scp stress-zcloud-x86_64-local.iso root@192.168.68.13:/var/tmp/stress-zcloud-x86_64-local.iso
参考nvidia使用的目录,挂载到/var/stress-zcloud-x86_64-local/
,用来提供yum install 的服务文件
挂载
mkdir /var/stress-zcloud-x86_64-local/
mount /var/tmp/stress-zcloud-x86_64-local.iso /var/stress-zcloud-x86_64-local/
使用匹配非/etc/yum.repos.d/内cuda与stress的文件,将其移走
find /etc/yum.repos.d/ -type f ! -name 'cuda*' ! -name 'stress*' -name '*.repo' -exec mv {} {}.bk \;
配置本地yum源,关闭gpg检查
cat << EOF >/etc/yum.repos.d/stress-zcloud-x86_64-local.repo
[stress-zcloud-x86_64-local]
name=stress-zcloud-x86_64-local
baseurl=file:///var/stress-zcloud-x86_64-local
enabled=1
gpgcheck=0
EOF
使本地源生效
yum clean all && yum makecache
查看生效的源
yum repolist
yum grouplist
使用
sudo yum groupinstall "GNOME Desktop"
sudo yum install $(sed -e '/#/d;/^[ ]*$/d' rpm_list.txt)
可能会有冲突,人工检查冲突来源,比如尝试使用官方源看是否有冲突,少用--skip-broken
设置默认从桌面启动,然后重启服务器
systemctl set-default graphical
参考:
Possible to download all the packages from "groupinstall" and then run ( yum --nogpgcheck localinstall *.rpm )?
How to Install GNOME Desktop(GUI) on CentOS 7
How to use yum to download a package without installing it
How to create custom package groups from a custom yum repository?
版权属于:寒夜方舟
本文链接:https://www.wnark.com/archives/227.html
本站所有原创文章采用署名-非商业性使用 4.0 国际 (CC BY-NC 4.0)。 您可以自由地转载和修改,但请注明引用文章来源和不可用于商业目的。声明:本博客完全禁止任何商业类网站转载,包括但不限于CSDN,51CTO,百度文库,360DOC,AcFun,哔哩哔哩等网站。