- Notifications
You must be signed in to change notification settings - Fork0
An apt transport for i2p using the built-in HTTP proxy
License
eyedeekay/apt-transport-i2phttp
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This is a simple transport for downloading debian packages from a repositoryover i2p. It uses the built-in HTTP proxy or one you configure. It's amodified version ofdiocles/apt-tranport-http-golang,a plain HTTP Transport for apt.
Besides that, I think most would agree that it is simpler to use an apttransport to detect when a package should be retrieved from an i2p service.Especially in cases where the user is mixing packages from Tor, I2P, andClearnet sources, this process can become confusing and involve configuringmultiple applications along with apt. Instead, apt-transport-i2phttp works withother apt transports like apt-transport-tor and even apt-transport-i2p(A SAMbased alternate i2p transport), requiring no configuration on the vast majorityof systems.
If you're on Ubuntu and want to fetch it from the github release, you can runthese 2 commands.
wget https://github.com/eyedeekay/apt-transport-i2phttp/releases/download/0.4/default.$(lsb_release -s -c)-apt-transport-i2phttp_0.4_amd64.debsudo dpkg -i default.$(lsb_release -s -c)-apt-transport-i2phttp_0.4_amd64.deb
If you're on Debian, you'll need to use this for stable:
wget https://github.com/eyedeekay/apt-transport-i2phttp/releases/download/0.4/default.stable-apt-transport-i2phttp_0.4_amd64.debsudo dpkg -i default.stable-apt-transport-i2phttp_0.4_amd64.deb
this for testing:
wget https://github.com/eyedeekay/apt-transport-i2phttp/releases/download/0.4/default.testing-apt-transport-i2phttp_0.4_amd64.debsudo dpkg -i default.testing-apt-transport-i2phttp_0.4_amd64.deb
and this for sid:
wget https://github.com/eyedeekay/apt-transport-i2phttp/releases/download/0.4/default.unstable-apt-transport-i2phttp_0.4_amd64.debsudo dpkg -i default.unstable-apt-transport-i2phttp_0.4_amd64.deb
Once you've done that, run these 2 commands:
http_proxy=http://127.0.0.1:4444 wget -O - 'http://apt.idk.i2p/key.asc' | sudo apt-key add - echo deb i2p://apt.idk.i2p unstable main | sudo tee /etc/apt/sources.list.d/apt.idk.i2p.list
That will allow you to obtain automatic updates from the in-network apt repository.Note that you will need to visit apt.idk.i2p in an I2P-enabled browser to add thehostname to your address book, otherwise you'll recieveERROR 500: Domain Not Found
when fetching the keys.
As long as you have an i2p router installed the http proxy should be enabledby default.
If you want to build for a system I haven't made a binary for, you can just:
make build && sudo make install
to install ./apt-transport-i2phttp to /usr/lib/apt/methods/i2p, requiring noadditional configuration.
There aren't very many apt repositories inside of I2P yet, the 2 that I knowabout are both operated by me. One is an apt-cacher-ng proxy, which is effectivelya means of fetching clearnet debian packages from with I2P. You can use it with anapt line something like this:
deb i2p://ul5nnihwk5v67iutqn6ac3fdy32acmc7socjjncwyshywmbz36ea.b32.i2p/deb.debian.org/debian stable main
In this case, the caching proxy is the host where you fetch packages from, andthe path is the desired Debian package repository.
Alternatively, there may be actual package repositories inside of I2P you wish touse it, like my experimental packages repository, you would just use the repositoryhostname instead, like this:
deb i2p://apt.idk.i2p unstable main
Of course, to install packages from this repository, you'll need to fetch the repokey.
http_proxy=http://127.0.0.1:4444 wget -O - 'http://apt.idk.i2p/key.asc' | sudo apt-key add -
Building a release is done with pbuilder to avoid building a release withpackages not in the appropriate version of Debian or Ubuntu. Usepbuilder create
to set up the chroot appropriate to your targetdistribution. Then, in the root of the repository directory, run the commanddebuild -s
to generate a .dsc file in the parent directory. Now that youhave the ,dsc file, create a build directory usingmkdir -p deb/targetdistro
and runpbuilder build --buildresult ./deb/stable
to generate your actualdeb packages. Of course, you'll have to adjust the commands to suit the targetdistribution. And you have to do it for every single distribution you want tobuild for.
Youmust have this line specified in your ~/.pbuilderrc file:
PBUILDERSATISFYDEPENDSCMD=/usr/lib/pbuilder/pbuilder-satisfydepends-apt
and, if you wish to build for both Debianand Ubuntu, you must not specify amirror in your ~/.pbuilderrc or the mirror specified by the --mirror flag willnot be honored.
I have the release.sh script in the root of this repothat I use to make my life easier. It should also be pretty easy to understand.From the repository directory, run the script like:
$pathtoscript/release.sh stable
so to build for like a whole bunch of releases(With it installed as release-pdebin /usr/local/bin):
release-pdeb stable release-pdeb testing release-pdeb unstable release-pdeb bionic release-pdeb eoan release-pdeb focal
This software is released in 2 places, an out-of-network source and an in-networksource. The out-of-network source is this github repository's release section.Other mirrors can be made available by others but this is the official one. If youwant to release to your own github mirror, set the USERNAME environment variableand run the commandmake github-release
.
About
An apt transport for i2p using the built-in HTTP proxy