FreeBSD12.1重装所有ports

1)列出已安装ports列表,保存在一个文件中

portmaster --list-origins > ~/installed-port-list

2)更新ports tree

portsnap fetch update

3)删除所有ports

root@ywops:~ # portmaster -ty --clean-distfiles
===>>> Gathering distinfo list for all ports
       (This will take several minutes)

root@ywops:~ # portmaster -Faf
===>>> Starting check of installed ports for available updates
===>>> Waiting for 5 distfile fetches to finish
===>>> Distfile fetching is complete

root@ywops:~ # pkg delete -afy
#-a,--all  删除所有已安装的程序包
#-f, --force  强制删除包,尽管仍未解决依赖关系,与-a结合使用
#-y, --yes  在删除包之前被要求确认时自动回答为是

4)如果以下目录有内容,需要先清理

rm -rf /usr/local/lib/compat/pkg

5)备份/usr/local目录下重要文件, 比如/usr/local/etc下的配置文件

tar -czf repos.tar.gz /usr/local/etc/pkg/repos/*
#这个目录主要存放pkg源文件

出现以下错误:

tar: Removing leading '/' from member names

分析原因:tar默认使用的是相对路径,增加P选项强制使用绝对路径
解决方法:

tar czfP repos.tar.gz /usr/local/etc/pkg/repos/*

6)检查/usr/local 和 /var/db/pkg 目录,确保是空的

rm -rf /usr/local/*
rm -rf /var/db/pkg/*

7)安装 ports-mgmt/pkg 和 ports-mgmt/portmaster

cd /usr/ports/ports-mgmt/pkg; make install clean; rehash
cd /usr/ports/ports-mgmt/portmaster; make install clean; rehash

8)从 ~/installed-port-list文件中去除这两个文件,因为已经安装,不用再重复安装

root@ywops:~ # cat installed-port-list 
'''
...
ports-mgmt/pkg  #删除
ports-mgmt/portmaster  #删除
'''

9)用portmaster重新安装 installed-port-list内列出的软件包

portmaster --no-confirm `cat ~/installed-port-list`
#--no-confirm 在安装过程中不需要确认,但还是会提示选择需要的配置项

此过程编译时间很长。推荐使用pkg管理软件包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值