【Ubuntu】试图整理关于包管理的模式
总之
是的,我想使用最新的稳定版本包。选择3.1方法进行存储库注册。
否:
所需版本以deb格式存在于存储库中(即使不是官方存储库)。
选择3.2方法进行存储库注册。
否:
这次似乎要使用查找和安装源的方式(源代码:http://nginx.org/en/download.html)。
目标
通过安装Ubuntu上的nginx软件包来理解软件包管理。
简要概述
以下为两种方法:
1. 从源代码进行安装→省略(从源代码安装并编译基本上就可以了)
2. 注册到软件源库
以下是两种使用方式。
1. 注册仓库的方法(基本上应该是做相同的事情):
1.1 使用添加仓库命令(add-apt-repository命令)
1.2 使用vi命令直接写入
1.3 使用aptly命令(https://gihyo.jp/admin/serial/01/ubuntu-recipe/0485)
2.リポジトリ的注册目录
2.1 /etc/apt/sources.list → 添加到现有的仓库列表
2.2 /etc/apt/sources.list.d/hoge.list → 创建一个新的仓库
虽然两种方法都可以,但为了区分与标准(2.1)的区别,推荐使用2.2。
3.从哪里获取存储库的信息?
3.1基于存储库的格式指定官方存储库的位置(deb [ option1=value1 option2=value2 ] uri suite [component1] [component2] […])
3.2使用wget等直接将软件包放置在服务器上,并通过文件方案从存储库中引用
•
•
有多种方法可满足下面参考链接中的方案
https://gihyo.jp/admin/serial/01/ubuntu-recipe/0677#sec2
现在来验证。
方案1(对应3.1)
以下是严格的步骤(http://nginx.org/en/linux_packages.html#Ubuntu)
用gpg命令获取并注册APT存储库的GPG密钥,并解码创建nginx-archive-keyring.gpg文件。需要注意的是,gpg密钥用于验证从已注册的APT存储库下载的软件包的合法性。
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
在中国的本土语言中进行改写:
最好还是创建一个新的sources.list.d(建议如此)。我们选择故意以repository格式来注册到sources.list里。
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/mainline/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list
# リポジトリを追加したのであぷで
apt update
apt list | grep nginx
我在最后一个命令中确认了nginx软件包列表,发现其中包含以下nginx版本:
nginx/stable,now 1.23.3-1~jammy amd64 [residual-config]
只需运行sudo apt install nginx即可安装。
第二种方法(对应于3.2)
这个链接(https://gihyo.jp/admin/serial/01/ubuntu-recipe/0677#sec5)里面的解释更为详细。这次我试着使用nginx_1.21.6-1~jammy_amd64.deb。
sudo mkdir -p /srv/apt/repository/nginx_1.21.6
sudo chown $USER: /srv/apt/repository/nginx_1.21.6
cd /srv/apt/repository/nginx_1.21.6
wget http://nginx.org/packages/mainline/ubuntu/pool/nginx/n/nginx/nginx_1.21.6-1~jammy_amd64.deb
使用以下命令在目标存储库上创建元数据(切换到sudo su)
apt-ftparchive packages . > Packages
echo "deb [trusted=yes] file:///srv/apt/repository/nginx_1.21.6/ ./" \
| sudo tee /etc/apt/sources.list.d/local.list
sudo apt update
我最后一个命令中检查了nginx的软件包列表,发现包括以下nginx版本:
nginx/unknown 1.21.6-1~jammy amd64 [可从1.18.0-6ubuntu14.3升级]
只需执行sudo apt install nginx命令即可安装。
内部方法 (Lǐ
不必特意创建存储库,只需直接安装以下存储库即可使用nginx。
apt install /srv/apt/repository/nginx_1.21.6/nginx_1.21.6-1~jammy_amd64.deb
以下是”上面的命令结果摘录”的本地中文释义。
# aptコマンドで取得するパッケージの一個目を表す
Get:1 /srv/apt/repository/nginx_1.21.6/nginx_1.21.6-1~jammy_amd64.deb nginx amd64 1.21.6-1~jammy [1002 kB]
# nginxをインストールする都合でサービスの設定を一部書き換えている
Service restarts being deferred:
systemctl restart networkd-dispatcher.service
systemctl restart unattended-upgrades.service