Cách sử dụng Reprepro cho Kho lưu trữ Gói Bảo mật trên Ubuntu 14.04
Giới thiệu về Gói và Kho
Tất cả ta đã ở đó - cần một chương trình - và ta phải làm gì? Hầu hết ta chỉ apt-get install postfix và presto! Kỳ diệu ta đã cài đặt Postfix.
Tuy nhiên, nó không thực sự là ma thuật. Trình quản lý gói apt-get tìm kiếm, download và cài đặt gói cho bạn. Điều này rất tiện lợi, nhưng điều gì sẽ xảy ra nếu apt-get không thể tìm thấy chương trình bạn cần trong danh sách repository tiêu chuẩn của nó? Rất may, apt-get cho phép user chỉ định vị trí download tùy chỉnh (được gọi là repository ).
Trong hướng dẫn này, ta sẽ hướng dẫn cách cài đặt repository an toàn của bạn và công khai cho người khác sử dụng. Ta sẽ tạo repository trên Ubuntu 14.04 LTS Server và thử nghiệm download từ một Server khác có cùng bản phân phối.
Để tận dụng tối đa hướng dẫn này, hãy nhớ xem hướng dẫn quản lý gói bằng apt-get của ta .
Yêu cầu
Hai server Ubuntu 14.04 LTS
Đến cuối hướng dẫn, bạn sẽ có:
- Chuẩn bị và xuất bản khóa ký repository
- Cài đặt repository với Reprepro, trình quản lý repository
- Đặt repository ở chế độ công khai với web server Nginx
- Đã thêm repository trên một server khác
Chuẩn bị và xuất bản khóa ký
Đầu tiên, ta cần một khóa ký gói hợp lệ. Bước này rất quan trọng đối với một repository an toàn, vì ta sẽ ký kỹ thuật số tất cả các gói. Việc ký gói giúp người download tin tưởng rằng nguồn có thể được tin cậy.
Trong phần này, bạn sẽ tạo public key chính được mã hóa và khóa con ký theo các bước sau:
- Tạo khóa chính
- Tạo một khóa con để ký gói
- Tách Master Key khỏi Subkey
Tạo khóa chính
Hãy tạo key chính. Khóa này phải được giữ an toàn và bảo mật vì đây là thứ mà mọi người sẽ tin tưởng.
Trước khi bắt đầu, hãy cài đặt rng-tools mặc dù apt-get :
apt-get install rng-tools
GPG yêu cầu dữ liệu ngẫu nhiên, được gọi là entropy, để tạo khóa. Entropy thường được nhân Linux tạo ra theo thời gian và được lưu trữ trong một group . Tuy nhiên, trên các server cloud (như Server), kernel có thể gặp sự cố khi tạo ra lượng entropy theo yêu cầu của GPG. Để giúp kernel, ta cài đặt chương trình rngd (có trong gói rng-tools). Chương trình này sẽ hỏi server lưu trữ (nơi đặt các server ) cho entropy. Sau khi được truy xuất, rngd
sẽ thêm dữ liệu vào group entropy để các ứng dụng khác như GPG sử dụng.
Nếu bạn nhận được một thông báo như thế này:
Trying to create /dev/hwrng device inode...
Starting Hardware RNG entropy gatherer daemon: (failed).
invoke-rc.d: initscript rng-tools, action "start" failed.
Khởi động daemon rngd theo cách thủ công với:
rngd -r /dev/urandom
Theo mặc định, rngd tìm kiếm một thiết bị đặc biệt để lấy entropy từ / dev / hwrng . Một số Server không có thiết bị này. Để bù đắp, ta sử dụng thiết bị ngẫu nhiên giả / dev / urandom bằng cách chỉ định chỉ thị -r . Để biết thêm thông tin, bạn có thể xem hướng dẫn của ta : Cách cài đặt Entropy bổ sung .
Bây giờ ta có một group entropy, ta có thể tạo khóa chính. Làm điều này bằng cách gọi lệnh gpg . Bạn sẽ thấy một dấu nhắc tương tự như sau:
gpg --gen-key
gpg (GnuPG) 1.4.16; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
Your selection? 1
Chỉ định tùy chọn đầu tiên, “RSA và RSA (mặc định)” 1
, trong dấu nhắc . Việc chọn này sẽ khiến gpg tạo ra trước tiên một khóa ký, sau đó là một khóa con mã hóa (cả hai đều sử dụng thuật toán RSA). Ta không cần khóa mã hóa cho hướng dẫn này, nhưng như một người vĩ đại đã từng nói, “tại sao không?” Không có gì bất lợi khi có cả hai và bạn có thể sử dụng khóa để mã hóa trong tương lai.
Nhấn Enter và bạn sẽ được yêu cầu nhập kích thước phím:
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
Kích thước khóa tương quan trực tiếp đến mức độ an toàn mà bạn muốn khóa chính của bạn . Kích thước bit càng cao, khóa càng an toàn. Dự án Debian khuyến nghị sử dụng 4096 bit cho bất kỳ khóa ký nào, vì vậy tôi sẽ chỉ định 4096 ở đây. Trong 2-5 năm tới, kích thước bit mặc định 2048 là đủ nếu bạn muốn sử dụng. Kích thước 1024 là gần khó chịu vì không an toàn và không nên sử dụng.
Nhấn Enter để có dấu nhắc hết hạn.
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0) 0
Khóa chính thường không có ngày hết hạn, nhưng hãy đặt giá trị này miễn là bạn muốn sử dụng khóa này. Nếu bạn chỉ dự định sử dụng repository này trong 6 tháng tới, bạn có thể chỉ định 6 triệu . 0 sẽ làm cho nó có giá trị mãi mãi.
Nhấn Enter , sau đó nhấn y . Bạn sẽ được yêu cầu tạo “ID user ”. Thông tin này sẽ được người khác và chính bạn sử dụng để xác định khóa này - vì vậy hãy sử dụng thông tin thực!
You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
Real name: Mark Lopez
Email address: mark.lopez@example.com
Comment:
You selected this USER-ID:
"Mark Lopez <mark.lopez@example.com>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
Nếu thông tin chính xác, nhấn o và Enter . Ta cần thêm password đảm bảo rằng chỉ bạn mới có quyền truy cập vào khóa này. Đảm bảo ghi nhớ password này vì không có cách nào để khôi phục password khóa gpg (một điều tốt).
You need a Passphrase to protect your secret key.
Enter passphrase: (hidden)
Repeat passphrase: (hidden)
Bây giờ để một số phép thuật (toán học) xảy ra. Quá trình này có thể mất một chút thời gian, vì vậy hãy ngồi lại hoặc lấy một cốc đồ uống yêu thích của bạn.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
Not enough random bytes available. Please do some other work to give
the OS a chance to collect more entropy! (Need 300 more bytes)
+++++
................+++++
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
..+++++
+++++
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key 10E6133F marked as ultimately trusted
public and secret key created and signed.
gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
pub 4096R/10E6133F 2014-08-16
Key fingerprint = 1CD3 22ED 54B8 694A 0975 7164 6C1D 28A0 10E6 133F
uid Mark Lopez <mark.lopez@example.com>
sub 4096R/7B34E07C 2014-08-16
Bây giờ ta có một khóa chính. Kết quả cho thấy ta đã tạo một khóa chính để ký (` 0E6133F trên dòng pub ở trên). Khóa của bạn sẽ có các ID khác nhau. Ghi lại ID khóa ký của bạn (ví dụ sử dụng 10E6133F ). Ta cần thông tin đó trong các bước tiếp theo khi tạo một khóa con khác để ký.
Tạo một khóa con để ký gói
Bây giờ ta sẽ tạo khóa ký thứ hai để ta không cần khóa chính trên server này. Hãy coi khóa chính là quyền root cấp quyền cho các khóa con. Nếu user tin tưởng khóa chính, thì việc tin tưởng vào khóa con được ngụ ý.
Trong terminal thực thi:
gpg --edit-key 10E6133F
Thay thế ID mẫu bằng ID khóa của bạn. Lệnh này đưa ta vào môi trường gpg . Tại đây, ta có thể chỉnh sửa khóa mới và thêm khóa con. Bạn sẽ thấy kết quả sau:
gpg (GnuPG) 1.4.16; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Secret key is available.
pub 4096R/10E6133F created: 2014-08-16 expires: never usage: SC
trust: ultimate validity: ultimate
sub 4096R/7B34E07C created: 2014-08-16 expires: never usage: E
[ultimate] (1). Mark Lopez <mark.lopez@example.com>
gpg>
Tại dấu nhắc , nhập addkey
:
addkey
Nhấn Enter . GPG sẽ nhắc nhập password của bạn. Nhập password bạn đã sử dụng để mã hóa khóa này.
Key is protected.
You need a passphrase to unlock the secret key for
user: "Mark Lopez <mark.lopez@example.com>"
4096-bit RSA key, ID 10E6133F, created 2014-08-16
gpg: gpg-agent is not available in this session
Enter passphrase: <hidden>
Bạn sẽ thấy dấu nhắc sau cho loại khóa.
Please select what kind of key you want:
(3) DSA (sign only)
(4) RSA (sign only)
(5) Elgamal (encrypt only)
(6) RSA (encrypt only)
Your selection? 4
Ta muốn tạo khóa con <i> ký tên </i>, vì vậy hãy chọn “RSA (chỉ ký)” 4
. RSA nhanh hơn cho client , trong khi DSA nhanh hơn cho server . Ta chọn RSA trong trường hợp này vì đối với mỗi chữ ký mà ta thực hiện trên một gói hàng, có thể hàng trăm khách hàng cần xác minh nó. Hai loại đều an toàn như nhau.
, ta được yêu cầu về kích thước khóa.
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
Hướng dẫn này sử dụng 4096 để tăng cường bảo mật.
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0) 1y
Ta đã có khóa chính, vì vậy thời gian hết hạn cho khóa con ít quan trọng hơn. Một năm là một khung thời gian tốt.
Nhấn Enter, rồi nhập y (yes) hai lần cho hai dấu nhắc tiếp theo. Một số phép toán sẽ tạo ra một khóa khác.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
............+++++
.+++++
pub 4096R/10E6133F created: 2014-08-16 expires: never usage: SC
trust: ultimate validity: ultimate
sub 4096R/7B34E07C created: 2014-08-16 expires: never usage: E
sub 4096R/A72DB3EF created: 2014-08-16 expires: 2015-08-16 usage: S
[ultimate] (1). Mark Lopez <mark.lopez@example.com>
gpg>
Nhập lưu tại dấu nhắc .
save
Trong kết quả ở trên, SC từ khóa chính của ta cho ta biết rằng khóa chỉ dùng để ký và chứng nhận. Chữ E nghĩa là khóa chỉ được dùng để mã hóa. Khóa ký của ta có thể được nhìn thấy chính xác chỉ với S.
Lưu ý ID của khóa ký mới của bạn (ví dụ hiển thị A72DB3EF trên dòng phụ thứ hai ở trên). ID khóa của bạn sẽ khác.
Nhập lưu để quay lại terminal và để lưu khóa mới của bạn.
save
Tách khóa chính khỏi khóa con
Điểm mấu chốt của việc tạo khóa con là vì vậy ta không cần khóa chính trên server của bạn , điều này làm cho nó an toàn hơn. Bây giờ ta sẽ tách khóa chính khỏi khóa phụ của ta . Ta cần xuất khóa chính và khóa con, sau đó xóa các khóa khỏi bộ nhớ của GPG, sau đó chỉ nhập lại khóa con.
Đầu tiên, hãy sử dụng các lệnh –export-secret-key và –export để xuất toàn bộ khóa. Hãy nhớ sử dụng ID của khóa chính của bạn!
gpg --export-secret-key 10E6133F > private.key
gpg --export 10E6133F >> private.key
Theo mặc định –export-secret-key và –export sẽ in khóa vào console của ta , vì vậy thay vào đó ta chuyển kết quả vào một file mới ( private.key ). Đảm bảo chỉ định ID khóa chính của bạn , như đã lưu ý ở trên.
Quan trọng: Tạo một bản sao của file private.key ở một nơi an toàn (không phải trên server ). Các vị trí có thể có trên đĩa mềm hoặc ổ USB. Tệp này chứa private key của bạn, public key , khóa con mã hóa và khóa con ký của bạn.
Sau khi bạn đã backup file này vào một vị trí an toàn, hãy xóa file :
#back up the private.key file before running this# rm private.key
Bây giờ xuất public key và khóa con của bạn. Đảm bảo thay đổi ID để trùng với khóa chính và khóa con thứ hai mà bạn đã tạo (không sử dụng khóa con đầu tiên).
gpg --export 10E6133F > public.key
gpg --export-secret-subkeys A72DB3EF > signing.key
Bây giờ ta đã có bản backup các khóa của bạn , ta có thể xóa khóa chính khỏi server của bạn .
gpg --delete-secret-key 10E6133F
Chỉ nhập lại khóa con ký của ta .
gpg --import public.key signing.key
Kiểm tra đảm bảo rằng ta không còn khóa chính trên server của bạn :
gpg --list-secret-keys
sec# 4096R/10E6133F 2014-08-16
uid Mark Lopez <mark.lopez@example.com>
ssb 4096R/7B34E07C 2014-08-16
ssb 4096R/A72DB3EF 2014-08-16
Chú ý dấu # sau giây . Điều này nghĩa là khóa chính của ta chưa được cài đặt. Server chỉ chứa khóa con ký của ta .
Dọn dẹp key của bạn:
rm public.key signing.key
Điều cuối cùng bạn cần làm là xuất bản khóa ký của bạn .
gpg --keyserver keyserver.ubuntu.com --send-key 10E6133F
Lệnh này xuất bản khóa của bạn lên kho public key - trong trường hợp này là server private key của Ubuntu. Điều này cho phép người khác download khóa của bạn và dễ dàng xác minh các gói của bạn.
Cài đặt repository bằng Reprepro
Bây giờ ta hãy đi vào vấn đề của hướng dẫn này: tạo một repository apt-get. Kho Apt-get không phải là thứ dễ quản lý nhất. Rất may R. Bernhard đã tạo ra Reprepro, người đã từng “sản xuất, quản lý và đồng bộ hóa một repository local của các gói Debian” ( còn gọi là Mirrorer). Reprepro theo giấy phép GNU và hoàn toàn là open-souce .
Cài đặt và cấu hình Reprepro
Reprepro có thể được cài đặt từ repository mặc định của Ubuntu.
apt-get update
apt-get install reprepro
Cấu hình cho Reprepro dành riêng cho repository , nghĩa là bạn có thể có các cấu hình khác nhau nếu bạn tạo nhiều repository . Đầu tiên ta hãy tạo một ngôi nhà cho repository của ta .
Tạo một folder dành riêng cho kho này và chuyển đến đó.
mkdir -p /var/repositories/
cd /var/repositories/
Tạo folder cấu hình.
mkdir conf
cd conf/
Tạo hai file cấu hình trống ( tùy chọn và bản phân phối ).
touch options distributions
Mở file tùy chọn trong editor yêu thích của bạn ( nano được cài đặt theo mặc định).
nano options
Tệp này chứa các tùy chọn cho Reprepro và sẽ được đọc mỗi khi Reprepro chạy. Có một số tùy chọn mà bạn có thể chỉ định ở đây. Xem hướng dẫn cho các tùy chọn khác.
Trong editor của bạn, hãy thêm phần sau.
ask-passphrase
Lệnh hỏi-mật khẩu yêu cầu Reprepro yêu cầu password GPG khi ký. Nếu ta không thêm điều này vào các tùy chọn, Reprepro sẽ chết nếu khóa của ta được mã hóa (đúng như vậy).
Ctrl + x rồi đến y và Enter sẽ lưu các thay đổi của ta và quay lại console .
Mở file phân phối .
nano distributions
Tệp này có bốn chỉ thị bắt buộc. Thêm những thứ này vào file .
Codename: trusty
Components: main
Architectures: i386 amd64
SignWith: A72DB3EF
Chỉ thị Codename liên quan trực tiếp đến tên mã của các bản phân phối Debian đã phát hành và là bắt buộc. Đây là tên mã cho bản phân phối sẽ download các gói và không nhất thiết phải trùng với bản phân phối của server này. Ví dụ: bản phát hành Ubuntu 14.04 LTS được gọi là tin cậy , Ubuntu 12.04 LTS được gọi là chính xác và Debian 7.6 được gọi là wheezy . Kho lưu trữ này dành cho Ubuntu 14.04 LTS vì vậy tin cậy nên được đặt ở đây.
Trường Thành phần là bắt buộc. Đây chỉ là một repository đơn giản nên hãy đặt main
ở đây. Có các không gian tên khác như “không miễn phí” hoặc “đóng góp” - hãy tham khảo apt-get để biết các schemas đặt tên phù hợp.
Kiến trúc là một lĩnh vực bắt buộc khác. Trường này liệt kê các kiến trúc binary trong repository lưu trữ này được phân tách bằng dấu cách. Kho lưu trữ này sẽ là các gói lưu trữ cho server 32 bit và 64 bit, vì vậy i386 amd64 được đặt ở đây. Thêm hoặc xóa kiến trúc khi bạn cần.
Để chỉ định cách các máy tính khác sẽ xác minh các gói của ta , ta sử dụng chỉ thị SignWith . Đây là chỉ thị tùy chọn, nhưng bắt buộc phải ký. Khóa ký trước đó trong ví dụ này có ID A72DB3EF , do đó, khóa đó được đặt ở đây. Thay đổi trường này để trùng với ID của khóa con mà bạn đã tạo.
Lưu và thoát khỏi file bằng Ctrl + `x rồi đến y và Enter.
Đến đây bạn đã cài đặt cấu trúc cần thiết cho Reprepro.
Thêm một gói với Reprepro
Đầu tiên, hãy thay đổi folder của ta thành một vị trí tạm thời.
mkdir -p /tmp/debs
cd /tmp/debs
Ta cần một số gói ví dụ để làm việc với - wget chúng với:
wget https://github.com/Silvenga/examples/raw/master/example-helloworld_1.0.0.0_amd64.deb
wget https://github.com/Silvenga/examples/raw/master/example-helloworld_1.0.0.0_i386.deb
Các gói này được tạo hoàn toàn cho hướng dẫn này và chứa một tập lệnh bash đơn giản để chứng minh chức năng của repository của ta . Bạn có thể sử dụng các gói khác nhau nếu bạn muốn.
Chạy chương trình ls
nên cung cấp cho ta bố trí này:
ls
example-helloworld_1.0.0.0_amd64.deb example-helloworld_1.0.0.0_i386.deb
Bây giờ ta có hai gói ví dụ. Một cho máy tính 32-bit (i386), một cho máy tính 64-bit (amd64). Bạn có thể thêm cả hai vào repository của ta với:
reprepro -b /var/repositories includedeb trusty example-helloworld_1.0.0.0_*
Đối số -b chỉ định folder “(b) ase” cho repository . Lệnh includedeb yêu cầu hai đối số - < distribution code name > and < file path(s) >
. Reprepro sẽ nhắc nhập mật mã khóa con của ta hai lần.
Exporting indices...
C3D099E3A72DB3EF Mark Lopez <mark.lopez@example.com> needs a passphrase
Please enter passphrase: < hidden >
C3D099E3A72DB3EF Mark Lopez <mark.lopez@example.com> needs a passphrase
Please enter passphrase: < hidden >
Sự thành công!
Liệt kê và Xóa
Ta có thể liệt kê các gói được quản lý bằng lệnh danh sách theo sau là tên mã. Ví dụ:
reprepro -b /var/repositories/ list trusty
trusty|main|i386: example-helloworld 1.0.0.0
trusty|main|amd64: example-helloworld 1.0.0.0
Để xóa một gói, hãy sử dụng lệnh xóa . Lệnh remove yêu cầu tên mã của gói và tên gói. Ví dụ:
reprepro -b /var/repositories/ remove trusty example-helloworld
Đặt repository ở chế độ công khai
Bây giờ ta có một repository local với một vài gói. Tiếp theo, ta sẽ cài đặt Nginx làm web server để đặt repository này ở chế độ công khai.
Cài đặt Nginx
apt-get update
apt-get install nginx
Nginx được cài đặt với cấu hình ví dụ mặc định. Tạo một bản sao của file trong trường hợp bạn muốn xem nó vào lúc khác.
mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
touch /etc/nginx/sites-available/default
Bây giờ ta có một file cấu hình trống, ta có thể bắt đầu cấu hình server Nginx để lưu trữ repository mới của ta .
Mở file cấu hình bằng editor yêu thích của bạn.
nano /etc/nginx/sites-available/default
Và thêm các chỉ thị cấu hình sau:
server {
## Let your repository be the root directory
root /var/repositories;
## Always good to log
access_log /var/log/nginx/repo.access.log;
error_log /var/log/nginx/repo.error.log;
## Prevent access to Reprepro's files
location ~ /(db|conf) {
deny all;
return 404;
}
}
Nginx có một số mặc định khá lành mạnh. Tất cả những gì ta cần để cấu hình là folder root , trong khi từ chối quyền truy cập vào các file của Reprepro. Xem các comment trong dòng để biết thêm chi tiết.
Khởi động lại dịch vụ Nginx để tải các cấu hình mới này.
service nginx restart
Kho lưu trữ Ubuntu công khai của bạn đã sẵn sàng để sử dụng!
Bạn cần địa chỉ IP của Server để cho user biết vị trí của repository . Nếu bạn không biết địa chỉ công cộng của Server, bạn có thể tìm địa chỉ đó bằng ifconfig .
ifconfig eth0
eth0 Link encap:Ethernet HWaddr 04:01:23:f9:0e:01
inet addr:198.199.114.168 Bcast:198.199.114.255 Mask:255.255.255.0
inet6 addr: fe80::601:23ff:fef9:e01/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:16555 errors:0 dropped:0 overruns:0 frame:0
TX packets:16815 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:7788170 (7.7 MB) TX bytes:3058446 (3.0 MB)
Trong ví dụ trên, địa chỉ của server là 198.199.114.168. Của bạn sẽ khác.
Với địa chỉ IP của server Reprepro của bạn, bây giờ bạn có thể thêm repository này vào bất kỳ server thích hợp nào khác.
Cài đặt gói từ Kho lưu trữ mới của ta
Nếu bạn chưa có, hãy tạo một Server khác với Ubuntu 14.04 LTS, để bạn có thể thực hiện cài đặt thử nghiệm từ repository mới của bạn .
Trên server mới, download public key của bạn để xác minh các gói từ repository của bạn. Nhớ lại rằng bạn đã xuất bản khóa của bạn lên keyerver.ubuntu.com .
Điều này được thực hiện với lệnh apt-key .
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 10E6133F
Lệnh này download khóa được chỉ định và thêm khóa vào database apt-get. Lệnh adv yêu cầu apt-key sử dụng GPG để download khóa. Hai đối số khác được chuyển trực tiếp đến GPG. Vì bạn đã tải khóa của bạn lên “ keyerver.ubuntu.com ”, hãy sử dụng lệnh –keyserver keyerver.ubuntu.com để lấy lại khóa từ cùng một vị trí. Lệnh –recv-keys <key ID> chỉ định khóa chính xác để thêm.
Bây giờ hãy thêm địa chỉ của repository để apt-get tìm thấy. Bạn cần địa chỉ IP của server repository của bạn từ bước trước. Điều này có thể dễ dàng thực hiện với chương trình add-apt-repository .
add-apt-repository "deb http://198.199.114.168/ trusty main"
Lưu ý chuỗi mà ta cung cấp cho add-apt-repository . Hầu hết các kho Debian có thể được thêm vào với định dạng chung sau:
deb (repository location) (current distribution code name) (the components name)
Vị trí repository phải được đặt thành vị trí của server của bạn. Ta có một server HTTP nên giao thức là http: // . Vị trí của ví dụ là 198.199.114.168 . Tên mã của server của ta là tin cậy . Đây là một repository đơn giản, vì vậy ta gọi thành phần là "chính".
Sau khi ta thêm repository , hãy đảm bảo chạy bản cập nhật apt-get . Lệnh này sẽ kiểm tra tất cả các repository đã biết để cập nhật và thay đổi (bao gồm cả kho bạn vừa thực hiện).
apt-get update
Sau khi cập nhật apt-get, bây giờ bạn có thể cài đặt gói mẫu từ repository của bạn . Sử dụng lệnh apt-get bình thường.
apt-get install example-helloworld
Nếu mọi thứ thành công, bây giờ bạn có thể thực thi example-helloworld và xem:
Hello, World!
This package was successfully installed!
Xin chúc mừng! Bạn vừa cài đặt một gói từ repository mà bạn đã tạo!
Để loại bỏ gói ví dụ, hãy chạy lệnh sau:
apt-get remove example-helloworld
Thao tác này sẽ xóa gói ví dụ mà bạn vừa cài đặt.
Kết luận
Trong hướng dẫn này, bạn đã cài đặt để tạo một repository APT an toàn. Bạn đã học cách tạo khóa an toàn để ký gói; cách tạo và quản lý repository với Reprepro; và cách thêm kho này vào server khác. Hãy xem các hướng dẫn khác tại đây để nâng cao hơn nữa kiến thức của bạn về những điều thú vị mà Mã nguồn mở và Linux cho phép bạn làm.
Các tin liên quan
Cách cài đặt Discourse trên Ubuntu 14.042014-09-10
Cách sử dụng Foreman để quản lý các node puppet trên Ubuntu 14.04
2014-09-08
Cách sử dụng phân phối giám sát mở với Check_MK trên Ubuntu 14.04
2014-09-08
Cách cài đặt và cấu hình một Daemon và Ứng dụng khách SNMP trên Ubuntu 14.04
2014-08-18
Giới thiệu về cách sử dụng Consul, Hệ thống khám phá dịch vụ, trên Ubuntu 14.04
2014-08-15
Cách cấu hình Lãnh sự trong Môi trường Sản xuất trên Ubuntu 14.04
2014-08-15
Cách bảo mật lãnh sự bằng mã hóa TLS trên Ubuntu 14.04
2014-08-15
Cách tạo một cụm RethinkDB được chia nhỏ trên Ubuntu 14.04
2014-08-08
Cách cấu hình Varnish Cache 4.0 với SSL Termination trên Ubuntu 14.04
2014-08-07
Giới thiệu về Ganglia trên Ubuntu 14.04
2014-08-05