Lưu ý: Bài viết yêu cầu hiểu biết trình apt đơn giản và sử dụng được terminal cơ bản để hiểu bài viết.

Nếu các bạn sử dụng các distro có trình quản lý gói apt như Ubuntu, Debian (bao gồm phần lớn dòng họ của nó) thì việc lệnh apt-key khá quen thuộc. Lý do là ở các trang web tải phần mềm thường sử dụng apt-key để thêm public key vào nguồn apt để nó nhận link repository là đáng tin cậy để cập nhật dữ liệu nguồn apt. Ví dụ dưới đây là hướng dẫn của Monodevelop.

sudo apt install apt-transport-https dirmngr
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/debian vs-buster main" | sudo tee /etc/apt/sources.list.d/mono-official-vs.list
sudo apt update

Lý do là lệnh apt-key này khá dễ dàng sử dụng, apt là trình quản lý đơn giản public key cho nguồn apt. Lệnh này được tích hợp cùng apt khá lâu tuy nhiên nó sẽ chỉ tồn tại tới Debian 11 hoặc Ubuntu 22.04. Và khi sử dụng thì tùy theo lệnh mà nó sẽ báo apt-key không dùng nữa

“Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).”

Lý do là khi sử dụng apt-key thì nó tác động trực tiếp vào file etc/apt/trusted.gdp, và SecureApt sẽ tin tưởng hoàn toàn file key ở etc/apt/trusted.gdp và etc/apt/trusted.d/ và cho nó tác động không chỉ một mình repository của file key đó mà còn tác động tới repository khác, bao gồm repo chính của distro khiến trình chống các package độc hại qua public key không đảm bảo.

Một số nhà cung cấp phần mềm như Microsoft cũng như người dùng khi thấy thông báo apt-key thì bắt đầu thực hiện điều chỉnh cho file key được thêm vào đường dẫn etc/apt/trusted.gdp.d/. Tuy nhiên thư mục đó SecureApt cũng tin tưởng nên nó cũng chả khác gì cái lý do khiến apt-key bị dừng, mặc dù so với apt thì ngườn dùng dễ dàng tương tác file khóa hơn như cài hoặc xóa.

Tóm lại là đừng dùng apt-key, etc/apt/trusted.gdp.d/ hay qua giao diện Software & Update. Dưới đây mình sẽ chỉ cách thay thế.

Thì tóm tắt là mình sẽ thêm file public key vào đường dẫn nào đó trong đường dẫn usr/share/keyrings do nó là đường dẫn chứa public key mặc định, Sau đó thêm đường dẫn repository chỉ định thêm vị trí file key là được.

Lưu ý: Đừng lên cơn chỉnh mấy link repository chính của distro.

Ưu điểm:

  • An toàn hơn so với việc sử dụng apt-key do mình phải chỉ định file public key vào đường dẫn mới sử dụng.
  • Tự mình chủ động điều chỉnh tốt hơn.
  • Khi repository nó có ra một package tương tự repository chính thì ưu tiên bản gốc hơn.

Nhược điểm:

  • Các công cụ GUI cho APT như Software & Update, Synaptic,… không nhận diện được do dựa vào SecureAPT.
  • Không add ppa theo kiểu bình thường mà phải dài dòng do thêm việc chọn key nữa.

Hướng dẫn thêm Repository vào nguồn APT

Bước 1: Kiểm tra

Để bắt đầu thì cần kiểm tra các gói dưới đây đã cài sẵn trong máy chưa, mặc định các distro Debian và Ubuntu có sẵn:

  • gpg
  • dirmngr

Bước 2: Thêm public key vào máy

Ở bước này lấy file public key về máy và cho vào thư mục usr/share/keyrings. Lý do mình nên chọn đường dẫn này vì nó là đường dẫn chứa file key mặc định cho các distro Debian, và file key phải BẮT BUỘC chứa ở trong đó. Và ở các hướng dẫn cài phần mềm cũng thống nhất sử dụng đường dẫn này.

Về cú pháp đặt tên file key thì nên đặt theo cú pháp sau

<tên repository rút gọn>-archive-keyring.gpg

Đối với file key trực tiếp

Để add một file key bạn đã tải về bạn gõ lệnh dưới đây:

sudo gpg --dearmor < myrepository-archive-keyring.gpg > /usr/share/keyrings/myrepository-archive-keyring.gpg

Ví dụ:

sudo gpg --dearmor < microsoft.gpg > /usr/share/keyrings/microsoft.gpg

Cái lệnh này tác dụng cả file OpenGPG có ANCII Armoured và không có ANCII Armoured (không biết dịch sao cho hay nên để yên) nên gộp lại thành một lệnh cho mình đỡ nhầm hơn.

Ngoài ra bạn có thể kết hợp với các lệnh tải để tải trực tiếp như với curl chẳng hạn

curl -s https://example.com/file/myrepository-archive-keyring.gpg | gpg --dearmor | sudo dd of=/usr/share/keyringsmyrepository-archive-keyring.gpg

Hoặc với wget

wget -qO - https://example.com/file/myrepository-archive-keyring.gpg | gpg --dearmor | sudo dd of=/usr/share/keyringsmyrepository-archive-keyring.gpg

Đối với key serser

Đối với key server thì mình thực hiện lệnh như dưới đây,

sudo gpg --no-default-keyring --keyring /usr/share/keyrings/myrepository-archive-keyring.gpg --keyserver hkp://keyserverexample.com --recv-keys <fingerprint>

Ví dụ dưới đây là thêm repository của Mono:

sudo gpg --no-default-keyring --keyring /usr/share/keyrings/mono-archive-keyring.gpg --keyserver keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF

Bước 3: Thêm nguồn repository vào APT

Ở bước này thì bạn thêm repository vào /etc/apt/sources.list.d, lý do cho việc này là để tập trung dễ quản lý và khi xóa hay chỉnh sửa thì nó dễ sửa hơn, ngoài ra cũng để phân biệt repository chính của distro hay bên thứ 3, không lỡ Tết nhậu sếp bắt cài mình nhớ mang máng xực hết /etc/apt/sources.list lúc tính là thấy cảnh, về đặt tên file thì “tên repository rút gọn”.list, ví dụ như myrepository.list

Về đường dẫn repo thì thường khi thấy trên các hướng dẫn thì nó như thế này:

deb https://repository.example.com/debian/ stable main

Thì mình thêm tùy chọn signed-by vào đường dẫn repo ở trước url (nói chung đúng cú pháp Deb822 đừng chế), và có cũng tương tự với deb-src luôn

deb [signed-by=/usr/share/keyrings/myrepository-archive-keyring.gpg] https://repository.example.com/debian/ stable main

Có cách gõ lệnh cho nhanh gọn lẹ khâu này:

echo "deb [signed-by=/usr/share/keyrings/myrepository-archive-keyring.gpg] https://repository.example.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/myrepository.list > /dev/null

Và thế là xong, gõ lệnh sudo apt update khá quen thuộc thôi để cập nhật.

Nội dung mình xin hết, nếu mọi người thấy hay thì có thể donate mình qua link: https://longengie.com/donate/

Leave a Reply

Your email address will not be published.