SuSE 的包管理器zypper
能够在 中创建存储库文件/etc/zypp/repos.d/
。
zypper -n rr myrepo
zypper -n ar -f http://path/to/myrepo myrepo
我正在寻找一个等效的工具来为 centos 做同样的事情。我查看了手册页yum
,但似乎yum
无法做到这一点。目前我必须编写以下硬代码来为 centos 创建存储库文件。
echo "[myrepo]
name = My Repository
baseurl = http://path/to/myrepo
proxy = _none_
gpgcheck = 0
metadata_expire = 300
fastestmirror_enabled = 1
failovermethod = roundrobin
priority = 1
enabled = 1
retries = 5
timeout = 10" >/etc/yum.repos.d/myrepo.repo
zypper
如果我能编写两行代码来完成我的工作,那就太好了。
答案1
你说两行?!这是 bash 中的一个单行函数,它可以完成你想要的 99% 的功能:
function add-repo() { reponame=$1; url=$2; echo -e "[$reponame]\nbaseurl=${url}\nenabled=1\n" > /etc/yum.repos.d/$1.repo;}
usage: add-repo repo_name repo_url
或者更人性化易读的格式:
function add-repo() {
reponame=$1
url=$2
echo -e "[$reponame]\nbaseurl=${url}\nenabled=1\n" > \
/etc/yum.repos.d/$reponame.repo;
}
当然,您可以根据需要进行调整。如果您谈论的是维护存储库的另一端,请查看createrepo
。
答案2
查看 rpmforge 上可用的 dag createrepo 包: http://pkgs.repoforge.org/createrepo/
该套件将为您提供满足您需求的所有工具
希望这能有所帮助,
答案3
如果您尝试配置内部存储库(非常典型的情况),那么最好创建一个 RPM 包来部署存储库配置。这是几乎所有其他主要第三方基于 EL(RHEL、CentOS、Scientific Linux)的存储库(包括 epel、remi、ius 和 rpmforge)使用的标准方法。
这是我在内部分发内部存储库以及相关 GPG 签名密钥时使用的相同方法。例如,我有一个用于 EL5 机器的源文件夹:
[linuxadm@machine]# ls -1 /home/linuxadm/rpmbuild/SOURCES/XXXXX-release-5.0.0
XXXXX.repo
RPM-GPG-KEY-XXXXX
repo 文件内容如下:
[linuxadm@machine]# cat /home/linuxadm/rpmbuild/SOURCES/XXXXX-release-5.0.0/XXXXX.repo
[XXXXX]
name=XXXXX
baseurl=http://repo.domain.ext/XXXXX/5/$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-XXXXX
构建整个事物的 SPEC 文件:
Name: XXXXX-release
Version: 5.0.0
Release: 1
Summary: XXXXX repository configuration
Group: System Environment/Base
License: XXXXX
URL: http://www.domain.ext
Source0: %{name}-%{version}.tar.bz2
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildArch: noarch
%description
This package contains the XXXXX repository GPG key as well as configuration for yum.
%prep
%setup -q
%build
%install
rm -rf %{buildroot}
mkdir -p -m 755 %{buildroot}%{_sysconfdir}/pki/rpm-gpg
mkdir -p -m 755 %{buildroot}%{_sysconfdir}/yum.repos.d
install -m 644 XXXXX.repo %{buildroot}%{_sysconfdir}/yum.repos.d/XXXXX.repo
install -m 644 RPM-GPG-KEY-XXXXX %{buildroot}%{_sysconfdir}/pki/rpm-gpg/RPM-GPG-KEY-XXXXX
%clean
rm -rf %{buildroot}
%files
%defattr(-,root,root,-)
%config(noreplace) /etc/yum.repos.d/*
/etc/pki/rpm-gpg/*
%changelog
* Fri Mar 07 2014 First Last <[email protected]> - 5.0.0-1
- Initial Package
获得 RPM 包后,可以将其放入其所属的存储库中。createrepo --update [folder]
根据需要使用重建存储库元数据。之后,您只需安装存储库,rpm -ivh http://repo.domain.ext/path/to/file/XXXXX.rpm
所有配置都会自动放置在系统上。